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