lyfO_o
2021-04-22 a061540bf4c2bdb81edc3898cd27f4ba18512846
实验室库存导出
已修改6个文件
141 ■■■■■ 文件已修改
src/main/java/com/nanometer/smartlab/controller/LaboratoryStockMngController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/dao/OpeReagentStatusDao.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/dao/OpeReagentStatusDao.xml 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/OpeReagentStatusService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/OpeReagentStatusServiceImpl.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/laboratory_stock_mng.xhtml 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
    }
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);
}
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>
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;
}
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);
    }
}
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>