From a061540bf4c2bdb81edc3898cd27f4ba18512846 Mon Sep 17 00:00:00 2001
From: lyfO_o <764716047@qq.com>
Date: 星期四, 22 四月 2021 11:47:43 +0800
Subject: [PATCH] 实验室库存导出

---
 src/main/java/com/nanometer/smartlab/dao/OpeReagentStatusDao.java                 |    2 
 src/main/java/com/nanometer/smartlab/dao/OpeReagentStatusDao.xml                  |   73 ++++++++++++++++++++++++
 src/main/java/com/nanometer/smartlab/controller/LaboratoryStockMngController.java |   13 ++++
 src/main/webapp/laboratory_stock_mng.xhtml                                        |    5 +
 src/main/java/com/nanometer/smartlab/service/OpeReagentStatusServiceImpl.java     |   43 ++++++++++++++
 src/main/java/com/nanometer/smartlab/service/OpeReagentStatusService.java         |    5 +
 6 files changed, 140 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/nanometer/smartlab/controller/LaboratoryStockMngController.java b/src/main/java/com/nanometer/smartlab/controller/LaboratoryStockMngController.java
index 8fd719b..f0cd689 100644
--- a/src/main/java/com/nanometer/smartlab/controller/LaboratoryStockMngController.java
+++ b/src/main/java/com/nanometer/smartlab/controller/LaboratoryStockMngController.java
@@ -165,6 +165,19 @@
 		return reagentStoreDataModel;
 	}
 
+
+	public void exportLabStock() {
+		try {
+			List<Map> list = opeReagentStatusService.selectExportList(reagentId, null,
+					ArrivalStatus.LABORATORY.getKey(), reagentCode, getUserId());
+			opeReagentStatusService.exportLabStock2Excel(list);
+			FacesUtils.info("导出成功");
+		}catch (Exception e){
+			e.printStackTrace();
+			FacesUtils.warn("导出失败");
+		}
+	}
+
 	public int getAction() {
 		return action;
 	}
diff --git a/src/main/java/com/nanometer/smartlab/dao/OpeReagentStatusDao.java b/src/main/java/com/nanometer/smartlab/dao/OpeReagentStatusDao.java
index af8b446..eb44d68 100644
--- a/src/main/java/com/nanometer/smartlab/dao/OpeReagentStatusDao.java
+++ b/src/main/java/com/nanometer/smartlab/dao/OpeReagentStatusDao.java
@@ -57,4 +57,6 @@
     int countReagentByArticleAndWarehouse(Map params);
 
     void updateArticleNumberByRCode(String code, String articleNumber);
+
+    List<Map> selectExportList(Map params);
 }
diff --git a/src/main/java/com/nanometer/smartlab/dao/OpeReagentStatusDao.xml b/src/main/java/com/nanometer/smartlab/dao/OpeReagentStatusDao.xml
index 52a4829..ca34508 100644
--- a/src/main/java/com/nanometer/smartlab/dao/OpeReagentStatusDao.xml
+++ b/src/main/java/com/nanometer/smartlab/dao/OpeReagentStatusDao.xml
@@ -557,4 +557,77 @@
 			and house_id = #{warehouseId}
 		</if>
 	</select>
+	<select id="selectExportList" resultType="java.util.Map">
+		select oa.article_number articleNumber,
+		oa.reagent_code reagentCode,
+		oa.remainder,
+		bm1.meta_value productHome,
+		bm2.meta_value reagentFomart,
+		sr.name reagentName,
+		sr.cas cas,
+		<if test="status != null">
+			<choose>
+				<when test="status == 1 or status == 2">
+					swc.container_code as containerCode,
+					sw.name as houseName,
+				</when>
+			</choose>
+		</if>
+		ss.name as supplierName
+		from ope_reagent_status as oa
+		left join sys_reagent sr on oa.reagent_id = sr.id
+		left join base_meta bm1 on bm1.id = sr.product_home
+		left join base_meta bm2 on bm2.id = sr.reagent_format
+		left join sys_supplier as ss on sr.supplier_id = ss.id
+		left join sys_user as su on oa.user_id = su.id
+		<if test="status != null">
+			<choose>
+				<when test="status == 1">
+					left join sys_warehouse as sw on sw.id = oa.house_id
+					left join sys_warehouse_container as swc on swc.id = oa.container_id
+				</when>
+				<when test="status == 2">
+					left join sys_laboratory as sw on sw.id = oa.house_id
+					left join sys_laboratory_container as swc on swc.id = oa.container_id
+				</when>
+			</choose>
+		</if>
+		where oa.valid_flag = 1
+		<if test="reagentId != null and reagentId != ''">
+			and oa.reagent_id = #{reagentId}
+		</if>
+		<if test="userId != null and userId != ''">
+			and oa.user_id = #{userId}
+		</if>
+		<if test="department != null and department != ''">
+			and sw.department = #{department}
+		</if>
+		<if test="departmentUserIds != null">
+			and oa.user_id in
+			<foreach collection="departmentUserIds" item="item" index="index" open="(" separator="," close=")">
+				#{item}
+			</foreach>
+		</if>
+		<if test="articleNumber != null and articleNumber != ''">
+			and oa.article_number = #{articleNumber}
+		</if>
+		<if test="editId != null and editId != ''">
+			and oa.id != #{editId}
+		</if>
+		<if test="reagentCode != null and reagentCode != ''">
+			and oa.reagent_code like  concat("%",#{reagentCode},"%")
+		</if>
+		<if test="status != null">
+			and oa.status = #{status}
+		</if>
+		<if test="name != null and name != ''">
+			and sr.name like concat("%",#{name},"%")
+		</if>
+		<choose>
+			<when test="status == 2 and project != null and project != ''">
+				and sw.project like concat("%",#{project},"%")
+			</when>
+		</choose>
+		order by oa.reagent_code asc
+	</select>
 </mapper>
diff --git a/src/main/java/com/nanometer/smartlab/service/OpeReagentStatusService.java b/src/main/java/com/nanometer/smartlab/service/OpeReagentStatusService.java
index 700b8c3..3b30d16 100644
--- a/src/main/java/com/nanometer/smartlab/service/OpeReagentStatusService.java
+++ b/src/main/java/com/nanometer/smartlab/service/OpeReagentStatusService.java
@@ -7,6 +7,7 @@
 import java.util.Date;
 import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * Created by maweiqing on 17/12/12.
@@ -107,4 +108,8 @@
 
 	int getReagentNumInWarehouse(String id, String articleNumber, String warehouseId);
 
+    List<Map> selectExportList(String name, String articleNumber, Integer status,
+							   String reagentCode, String userId);
+
+	void exportLabStock2Excel(List<Map> list) throws Exception;
 }
diff --git a/src/main/java/com/nanometer/smartlab/service/OpeReagentStatusServiceImpl.java b/src/main/java/com/nanometer/smartlab/service/OpeReagentStatusServiceImpl.java
index 8b14efa..b2245e9 100644
--- a/src/main/java/com/nanometer/smartlab/service/OpeReagentStatusServiceImpl.java
+++ b/src/main/java/com/nanometer/smartlab/service/OpeReagentStatusServiceImpl.java
@@ -11,6 +11,7 @@
 import com.nanometer.smartlab.entity.*;
 import com.nanometer.smartlab.entity.dto.PersonUseDetail;
 import com.nanometer.smartlab.entity.enumtype.ValidFlag;
+import com.nanometer.smartlab.util.ExcelUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
 import org.springframework.context.annotation.Lazy;
@@ -1084,4 +1085,46 @@
 	}
 
 
+	/**
+	 * @Description: 导出
+	 * @date 2021/4/22 10:33
+	 */
+	@Override
+	public List<Map> selectExportList(String name, String articleNumber, Integer status, String reagentCode, String userId) {
+
+		Map<String, Object> params = new HashMap<>();
+		params.put("name", name);
+		params.put("articleNumber", articleNumber);
+		params.put("status", status);
+		if (StringUtils.isNotBlank(userId)) {
+			SysUser sysUser = sysUserService.getSysUser(userId);
+			BaseRole baseRole = baseRoleService.getBaseRole(sysUser.getRoleId());
+			//不是系统管理员 根据用户的课题组判断可视(用户所在课题组是否 在实验室的课题组下)
+			if (!"系统管理员".equals(baseRole.getName())) {
+				if (StringUtils.isBlank(sysUser.getProject())) {
+					return null;
+				}
+				params.put("project", sysUser.getProject());
+			}
+		}
+		params.put("reagentCode", reagentCode);
+		return opeReagentStatusDao.selectExportList(params);
+	}
+
+	@Override
+	public void exportLabStock2Excel(List<Map> list) throws Exception {
+		Map<String, String> map = new LinkedHashMap<>();
+		map.put("houseName", "实验室名称");
+		map.put("containerCode", "临时存储库条码");
+		map.put("reagentName", "试剂名称");
+		map.put("reagentCode", "试剂条形码");
+		map.put("articleNumber", "批号");
+		map.put("cas", "cas");
+		map.put("productHome", "厂家");
+		map.put("supplierName", "供应商");
+		map.put("remainder", "残存量");
+		ExcelUtils.export2Excel(list,"实验室库存",map);
+	}
+
+
 }
diff --git a/src/main/webapp/laboratory_stock_mng.xhtml b/src/main/webapp/laboratory_stock_mng.xhtml
index c85d79c..18e57d6 100644
--- a/src/main/webapp/laboratory_stock_mng.xhtml
+++ b/src/main/webapp/laboratory_stock_mng.xhtml
@@ -15,7 +15,7 @@
 		<p:panel styleClass="center-header">
 			<p:outputLabel styleClass="title" value="实验室库存管理"></p:outputLabel>
 			<p:panel styleClass="center-header">
-				<p:panelGrid styleClass="filter" columns="7">
+				<p:panelGrid styleClass="filter" columns="8">
 
 					<p:outputLabel value="试剂名称:"></p:outputLabel>
 					<p:inputText value="#{laboratoryStockMngController.reagentId}"></p:inputText>
@@ -32,6 +32,9 @@
 
 					<p:commandLink styleClass="search" process="@form" update="@form"></p:commandLink>
 
+					<p:commandButton value="导出" styleClass="store-btn" ajax="false" actionListener="#{laboratoryStockMngController.exportLabStock}"
+									 update=":centerRootPanel"></p:commandButton>
+
 					<p:commandButton value="临时存放" styleClass="store-btn" process="@form" actionListener="#{laboratoryStockMngController.onStoreBtnClick}"
 					update=":centerRootPanel"></p:commandButton>
 				</p:panelGrid>

--
Gitblit v1.9.2