李宇
2021-01-15 61de83f769642ff7da3d7f32b39c5014167a2950
修改试剂库、库存查询,登录超时,导出订单领取
已修改20个文件
已添加3个文件
594 ■■■■ 文件已修改
src/main/java/com/nanometer/smartlab/api/ApiAction.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/controller/ReagentMngController.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java 198 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/dao/OpeApplyDao.xml 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/dao/OpeWarehouseReserveDao.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/dao/SysReagentDao.xml 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/dao/SysUserDao.xml 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/entity/OpeApplyReserve.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/entity/enumtype/ApplyStatusVo.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/OpeApplyService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/OpeApplyServiceImpl.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveServiceImpl.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/SysReagentService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/SysReagentServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/SysUserService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/SysUserServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/WEB-INF/ehcache.xml 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/WEB-INF/spring-ehcache.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/WEB-INF/spring-shiro.xml 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/reagent_mng.xhtml 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/warehouse_reagent_direct_store.xhtml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/warehouse_stock_mng.xhtml 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/api/ApiAction.java
@@ -1400,6 +1400,7 @@
                lr.setValidFlag(ValidFlag.VALID);
                opeLaboratoryReserveService.insert(lr);
                opeReagentStatus.setStatus(ArrivalStatus.NOREGISTER);
                opeReagentStatus.setUserId(reagentReceiving.getApplyUserId());
                opeReagentStatus.setHouseId(reagentReceiving.getLabId());
                opeReagentStatus.setContainerId(reagentReceiving.getLabContainerId());
@@ -1439,7 +1440,7 @@
                return  ResponseModel.getErrInstance("账户名为空");
            }
            HazardousWasteUser sysUser = sysUserService.getUserByAccount(account);
            HazardousWasteUser sysUser = sysUserService.getUserByAccount(account,null);
            if (sysUser == null){
                return  ResponseModel.getErrInstance("账户名不存在");
            }else{
@@ -1540,8 +1541,8 @@
            hazardousWaste.setTid(sdf.format(new Date()));
            hazardousWaste.setCreateTime(new Date());
            hazardousWaste.setStatus("待确认");
            HazardousWasteUser sysUser = sysUserService.getUserByAccount(hazardousWaste.getApplyPerson());
            hazardousWaste.setUnit( sysUser.getCompany());
            HazardousWasteUser sysUser = sysUserService.getUserByAccount(null,hazardousWaste.getApplyPerson());
            hazardousWaste.setUnit(sysUser.getCompany());
            if (hazardousWaste.getAcid()== null){
                hazardousWaste.setAcid(new BigDecimal(0));
            }
src/main/java/com/nanometer/smartlab/controller/ReagentMngController.java
@@ -67,6 +67,7 @@
    private String cas;
    private List<SysSupplier> supplierSelectList;
    private List<Type> typeList;
    private String productSn;
    public List<Type> getTypeList() {
        if (this.typeList == null) {
@@ -798,10 +799,10 @@
                public List<SysReagent> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, Object> filters) {
                    List<SysReagent> list = null;
                    try {
                        int count = sysReagentService.getSysReagentTotalCountNew(name, cas, supplierId,getType());
                        int count = sysReagentService.getSysReagentTotalCountNew(name, cas, supplierId,getType(),productSn);
                        this.setRowCount(count);
                        if (count > 0) {
                            list = sysReagentService.getSysReagentListNew(name, cas, supplierId,getType(), first, pageSize);
                            list = sysReagentService.getSysReagentListNew(name, cas, supplierId,getType(), first, pageSize,productSn);
                        }
                    } catch (Exception e) {
                        logger.error(e);
@@ -897,4 +898,12 @@
    public void setDangerousFlagSelectList(List<DangerousFlag> dangerousFlagSelectList) {
        this.dangerousFlagSelectList = dangerousFlagSelectList;
    }
    public String getProductSn() {
        return productSn;
    }
    public void setProductSn(String productSn) {
        this.productSn = productSn;
    }
}
src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java
@@ -5,6 +5,7 @@
import com.nanometer.smartlab.dao.OpeWarehouseReserveDao;
import com.nanometer.smartlab.entity.*;
import com.nanometer.smartlab.entity.dto.ApplyListDto;
import com.nanometer.smartlab.entity.enumtype.ApplyStatusVo;
import com.nanometer.smartlab.entity.enumtype.ArrivalStatus;
import com.nanometer.smartlab.entity.enumtype.SeeFlag;
import com.nanometer.smartlab.entity.enumtype.ValidFlag;
@@ -204,6 +205,10 @@
    private OpeApply reagentDStore;
    private String applyNewReagentName;
    private String applyNewCas;
    private String productSn;
    private String applyCode;
    private Integer status;
    private List<ApplyStatusVo> statusSelectList;
    private List<SysWarehouse> warehouseList;
    private List<SysWarehouseContainer> warehouseContainerList;
@@ -1204,11 +1209,11 @@
                        Map<String, Object> filters) {
                    List<OpeWarehouseReserve> list = null;
                    try {
                        int count = opeWarehouseReserveService.getOpeWarehouseReserveTotalCountByName(reagentId, supplierId);
                        int count = opeWarehouseReserveService.getOpeWarehouseReserveTotalCountByName(reagentId, supplierId,productSn);
                        this.setRowCount(count);
                        if (count > 0) {
                            list = opeWarehouseReserveService.getOpeWarehouseReserveListByName(reagentId, supplierId, first,
                                    pageSize);
                                    pageSize,productSn);
                        }
                    } catch (Exception e) {
                        logger.error(e);
@@ -1254,12 +1259,11 @@
                    }
                    try {
                        int count = opeApplyService.getOpeApplyReserveTotalCountByNameFor(id,reagentId, userName);
                        int count = opeApplyService.getOpeApplyReserveTotalCountByNameFor(id,reagentId, userName,productSn,applyCode,status);
                        this.setRowCount(count);
                        if (count > 0) {
                            list = opeApplyService.getOpeApplyReserveListByNameFor(id,reagentId, userName, first,
                                    pageSize);
                                    pageSize,productSn,applyCode,status);
                        }
                    } catch (Exception e) {
                        logger.error(e);
@@ -1328,6 +1332,130 @@
        }
        return reagentStatusDataModel;
    }
    public void onExportFileBtnClickOrder(){
        ServletOutputStream out = null;
        InputStream is = null;
        try {
            FacesContext ctx = FacesContext.getCurrentInstance();
            ctx.responseComplete();
            String contentType = "application/x-download";
            HttpServletResponse response = (HttpServletResponse) ctx
                    .getExternalContext().getResponse();
            response.setContentType(contentType);
            StringBuffer contentDisposition = new StringBuffer();
            contentDisposition.append("attachment;");
            contentDisposition.append("filename=\"");
            contentDisposition.append("订单领取导出.xls");
            contentDisposition.append("\"");
            response.setHeader(
                    "Content-Disposition",
                    new String(contentDisposition.toString().getBytes(
                            System.getProperty("file.encoding")), "ISO8859-1"));
            out = response.getOutputStream();
            Map<String, Integer> tempMap = new HashMap<String,Integer>();
            List<OpeApplyReserve> realDataList = new ArrayList<>();
            //map=null;
            SysUser loginUser = getUser();
            String id="";
            if(loginUser.getSeeFlag()==SeeFlag.MANAGE){
            }else {
                //userName=loginUser.getName();
                id=loginUser.getId();
            }
            if(selectedListForPerson!=null&&selectedListForPerson.size()>0){
                realDataList=selectedListForPerson;
            }else {
                realDataList = opeApplyService.getOpeApplyReserveListByNameFor(id,reagentId, userName, null,
                        null,productSn,applyCode,status);
            }
            List<String> headerList = new ArrayList<>();
            headerList.add("申购编号");
            headerList.add("产品编号");
            headerList.add("试剂名称");
            headerList.add("管制品");
            headerList.add("规格型号");
            headerList.add("包装");
            headerList.add("价格");
            headerList.add("CAS");
            headerList.add("危险性质");
            headerList.add("厂家");
            headerList.add("申请数量");
            headerList.add("已领用数量");
            headerList.add("申领人");
            headerList.add("订单状态");
            headerList.add("课题组");
            headerList.add("课题组负责人");
            HSSFWorkbook hssfWorkbook =exportExcelOrder(headerList, realDataList);
            hssfWorkbook.write(out);
            out.flush();
            ctx.responseComplete();
        }catch (Exception e) {
            if(is!=null){
                try {
                    is.close();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
            }
            if(out!=null){
                try {
                    out.close();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
            }
            e.printStackTrace();
        }finally {
            if (is != null) {
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (out != null) {
                try {
                    out.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    public  HSSFWorkbook exportExcelOrder(List<String> headerList, List<OpeApplyReserve> dataList){
        HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
        Integer total = null;
        HSSFSheet sheet = hssfWorkbook.createSheet("订单领取导出");
        HSSFRow titlerRow = sheet.createRow(0);
        for(int i = 0; i < headerList.size(); i++) {
            titlerRow.createCell(i).setCellValue(headerList.get(i));
        }
        for (int i = 0; i < dataList.size(); i++) {
            HSSFRow dataRow = sheet.createRow(i + 1);
            dataRow.createCell(0).setCellValue(dataList.get(i).getApplyCode()== null ? "": String.valueOf(dataList.get(i).getApplyCode()));
            dataRow.createCell(1).setCellValue(dataList.get(i).getReagent().getProductSn()== null ? "": String.valueOf(dataList.get(i).getReagent().getProductSn()));
            dataRow.createCell(2).setCellValue(dataList.get(i).getReagent().getName()== null ? "": String.valueOf(dataList.get(i).getReagent().getName()));
            dataRow.createCell(3).setCellValue(dataList.get(i).getReagent().getControlProducts()== null ? "": String.valueOf(dataList.get(i).getReagent().getControlProducts()));
            dataRow.createCell(4).setCellValue(dataList.get(i).getReagent().getReagentFormat()== null ? "": String.valueOf(dataList.get(i).getReagent().getReagentFormat()));
            dataRow.createCell(5).setCellValue(dataList.get(i).getReagent().getMainMetering()== null ? "": String.valueOf(dataList.get(i).getReagent().getMainMetering()));
            dataRow.createCell(6).setCellValue(dataList.get(i).getReagent().getPrice()== null ? "": String.valueOf(dataList.get(i).getReagent().getPrice()));
            dataRow.createCell(7).setCellValue(dataList.get(i).getReagent().getCas()== null ? "": String.valueOf(dataList.get(i).getReagent().getCas()));
            dataRow.createCell(8).setCellValue(dataList.get(i).getReagent().getReagentCharacter()== null ? "": String.valueOf(dataList.get(i).getReagent().getReagentCharacter()));
            dataRow.createCell(9).setCellValue(dataList.get(i).getReagent().getProductHomeName()== null ? "":  String.valueOf(dataList.get(i).getReagent().getProductHomeName()));
            dataRow.createCell(10).setCellValue(dataList.get(i).getNum()== null ? "": String.valueOf(dataList.get(i).getNum()));
            dataRow.createCell(11).setCellValue(dataList.get(i).getUsed()== null ? "": String.valueOf(dataList.get(i).getUsed()));
            dataRow.createCell(12).setCellValue(dataList.get(i).getApplyUserId()== null ? "": String.valueOf(dataList.get(i).getApplyUserId()));
            dataRow.createCell(13).setCellValue(dataList.get(i).getStatus()== null ? "": String.valueOf(dataList.get(i).getStatus().getText()));
            dataRow.createCell(14).setCellValue(dataList.get(i).getProject()== null ? "": String.valueOf(dataList.get(i).getProject()));
            dataRow.createCell(15).setCellValue(dataList.get(i).getProjectManage()== null ? "": String.valueOf(dataList.get(i).getProjectManage()));
        }
        return hssfWorkbook;
    }
    public void onExportFileBtnClickNew(){
        ServletOutputStream out = null;
        InputStream is = null;
@@ -1355,10 +1483,11 @@
                realDataList=selectedList;
            }else {
                realDataList = opeWarehouseReserveService.getOpeWarehouseReserveListByName(reagentId, supplierId, null,
                        null);
                        null,productSn);
            }
                List<String> headerList = new ArrayList<>();
                headerList.add("试剂名称");
                headerList.add("产品编号");
                headerList.add("cas");
                headerList.add("厂家");
                headerList.add("供应商");
@@ -1409,8 +1538,6 @@
    public  HSSFWorkbook exportExcelNew(List<String> headerList, List<OpeWarehouseReserve> dataList) {
        HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
        Integer total = null;
        HSSFSheet sheet = hssfWorkbook.createSheet("仓库库存");
        HSSFRow titlerRow = sheet.createRow(0);
@@ -1420,15 +1547,16 @@
        for (int i = 0; i < dataList.size(); i++) {
            HSSFRow dataRow = sheet.createRow(i + 1);
            dataRow.createCell(0).setCellValue(dataList.get(i).getReagent().getName()== null ? "": String.valueOf(dataList.get(i).getReagent().getName()));
            dataRow.createCell(1).setCellValue(dataList.get(i).getReagent().getCas()== null ? "": String.valueOf(dataList.get(i).getReagent().getCas()));
            dataRow.createCell(2).setCellValue(dataList.get(i).getReagent().getProductHomeName()== null ? "":  String.valueOf(dataList.get(i).getReagent().getProductHomeName()));
            dataRow.createCell(3).setCellValue(dataList.get(i).getReagent().getSupplierName()== null ? "": String.valueOf(dataList.get(i).getReagent().getSupplierName()));
            dataRow.createCell(4).setCellValue(dataList.get(i).getReagent().getReagentFormat()== null ? "": String.valueOf(baseMetaService.getBaseMetaValue(dataList.get(i).getReagent().getReagentFormat())));
            dataRow.createCell(5).setCellValue(dataList.get(i).getReagent().getMainMetering()== null ? "": String.valueOf(dataList.get(i).getReagent().getMainMetering())+baseMetaService.getBaseMetaValue(dataList.get(i).getReagent().getReagentUnit()));
            dataRow.createCell(6).setCellValue(dataList.get(i).getReagent().getPrice()== null ? "": String.valueOf(dataList.get(i).getReagent().getPrice()));
            dataRow.createCell(7).setCellValue(dataList.get(i).getArticleNumber()== null ? "": String.valueOf(dataList.get(i).getArticleNumber()));
            dataRow.createCell(8).setCellValue(dataList.get(i).getReserve()== null ? "": String.valueOf(dataList.get(i).getReserve()));
            dataRow.createCell(9).setCellValue(dataList.get(i).getWarehouseName()== null ? "": String.valueOf(dataList.get(i).getWarehouseName()));
            dataRow.createCell(1).setCellValue(dataList.get(i).getReagent().getProductSn()== null ? "": String.valueOf(dataList.get(i).getReagent().getProductSn()));
            dataRow.createCell(2).setCellValue(dataList.get(i).getReagent().getCas()== null ? "": String.valueOf(dataList.get(i).getReagent().getCas()));
            dataRow.createCell(3).setCellValue(dataList.get(i).getReagent().getProductHomeName()== null ? "":  String.valueOf(dataList.get(i).getReagent().getProductHomeName()));
            dataRow.createCell(4).setCellValue(dataList.get(i).getReagent().getSupplierName()== null ? "": String.valueOf(dataList.get(i).getReagent().getSupplierName()));
            dataRow.createCell(5).setCellValue(dataList.get(i).getReagent().getReagentFormat()== null ? "": String.valueOf(baseMetaService.getBaseMetaValue(dataList.get(i).getReagent().getReagentFormat())));
            dataRow.createCell(6).setCellValue(dataList.get(i).getReagent().getMainMetering()== null ? "": String.valueOf(dataList.get(i).getReagent().getMainMetering())+baseMetaService.getBaseMetaValue(dataList.get(i).getReagent().getReagentUnit()));
            dataRow.createCell(7).setCellValue(dataList.get(i).getReagent().getPrice()== null ? "": String.valueOf(dataList.get(i).getReagent().getPrice()));
            dataRow.createCell(8).setCellValue(dataList.get(i).getArticleNumber()== null ? "": String.valueOf(dataList.get(i).getArticleNumber()));
            dataRow.createCell(9).setCellValue(dataList.get(i).getReserve()== null ? "": String.valueOf(dataList.get(i).getReserve()));
            dataRow.createCell(10).setCellValue(dataList.get(i).getWarehouseName()== null ? "": String.valueOf(dataList.get(i).getWarehouseName()));
        }
        return hssfWorkbook;
@@ -1966,10 +2094,10 @@
                public List<SysReagent> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, Object> filters) {
                    List<SysReagent> list = null;
                    try {
                        int count = sysReagentService.getSysReagentTotalCountNew(applyNewReagentName, applyNewCas, null,null);
                        int count = sysReagentService.getSysReagentTotalCountNew(applyNewReagentName, applyNewCas, null,null,productSn);
                        this.setRowCount(count);
                        if (count > 0) {
                            list = sysReagentService.getSysReagentListNew(applyNewReagentName, applyNewCas, null,null, first, pageSize);
                            list = sysReagentService.getSysReagentListNew(applyNewReagentName, applyNewCas, null,null, first, pageSize,productSn);
                        }
                    } catch (Exception e) {
                        logger.error(e);
@@ -2231,4 +2359,36 @@
    public void setTabValue(Integer tabValue) {
        this.tabValue = tabValue;
    }
    public void setProductSn(String productSn) {
        this.productSn = productSn;
    }
    public String getProductSn() {
        return productSn;
    }
    public String getApplyCode() {
        return applyCode;
    }
    public void setApplyCode(String applyCode) {
        this.applyCode = applyCode;
    }
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
    public List<ApplyStatusVo> getStatusSelectList() {
        if (this.statusSelectList == null) {
            this.statusSelectList = Arrays.asList(ApplyStatusVo.values());
        }
        return statusSelectList;
    }
}
src/main/java/com/nanometer/smartlab/dao/OpeApplyDao.xml
@@ -62,6 +62,8 @@
    <result property="used" column="used"></result>
       <result property="status" column="status" typeHandler="com.nanometer.smartlab.entity.handler.ApplyStatusHandler"></result>
    <result property="applyUserId" column="apply_user_id"></result>
    <result property="projectManage" column="projectManage"/>
    <result property="project" column="project"/>
    <association property="reagent" javaType="com.nanometer.smartlab.entity.SysReagent">
      <id property="id" column="reagent_id"></id>
      <result property="name" column="reagentName"></result>
@@ -322,6 +324,12 @@
        <if test="status != null and status != ''">
            and oa.status =#{status}
        </if>
        <if test="productSn != null and productSn != ''">
            and sr.product_sn like concat('%',#{productSn},'%')
        </if>
        <if test="applyCode != null and applyCode != ''">
            and oa.apply_code = #{applyCode}
        </if>
    </sql>
    <select id="getOpeApplyReserveTotalCount" parameterType="java.util.Map"
@@ -336,10 +344,21 @@
    <select id="getOpeApplyReserveTotalCountFor" parameterType="java.util.Map"
            resultType="int">
        select count(1)
        from
        (select count(1)
        from ope_apply as oa
        <include refid="getOpeApplyReserveList_queryJoins1" />
        LEFT JOIN sys_reagent sr ON sr.id = oa.reagent_id
        LEFT JOIN sys_user su ON su.id = oa.apply_user_id
        LEFT JOIN base_meta AS bm2 ON sr.control_products = bm2.id
        LEFT JOIN base_meta AS bm3 ON sr.reagent_format = bm3.id
        LEFT JOIN base_meta AS bm4 ON sr.reagent_character = bm4.id
        LEFT JOIN base_meta AS bm1 ON sr.product_home = bm1.id
        LEFT JOIN sys_project as project on project.project = su.project
        LEFT JOIN sys_user as su1 on su1.id = project.sys_user_id
        where oa.valid_flag = 1 and (oa.status=4 or oa.status=6)
        <include refid="getOpeApplyReserveList_queryWhereSql" />
        GROUP BY oa.id
        )as oaa
    </select>
    <select id="getOpeApplyReserveList" parameterType="java.util.Map"
@@ -350,7 +369,7 @@
        <include refid="getOpeApplyReserveList_queryJoins2" />
        where oa.valid_flag = 1
        <include refid="getOpeApplyReserveList_queryWhereSql" />
        GROUP BY oa.id
        order by oa.update_time desc
        <if test="first != null and pageSize != null">
            limit #{first}, #{pageSize}
@@ -359,13 +378,40 @@
    <select id="getOpeApplyReserveListFor" parameterType="java.util.Map"
            resultMap="OpeApplyReserve">
        <include refid="getOpeApplyReserveList_queryColumns" />
        from ope_apply as oa
        <include refid="getOpeApplyReserveList_queryJoins1" />
        <include refid="getOpeApplyReserveList_queryJoins2" />
        SELECT
        oa.id,
        oa.apply_code,
        sr.id reagent_id,
        oa. STATUS,
        sr.product_sn reagentProductSn,
        sr.`name` reagentName,
        bm2.meta_value controlProducts,
        bm3.meta_value reagentFormat,
        sr.main_metering reagentMainMetering,
        sr.price reagentPrice,
        sr.cas reagentCas,
        oa.article_number articleNumber,
        bm4.meta_value reagentCharacter,
        bm1.meta_value productHome,
        sr.dangerous_flag,
        oa.num,
        oa.used,
        su.`name` apply_user_id,
        su.project,
        su1.`name` as projectManage
        FROM
        ope_apply AS oa
        LEFT JOIN sys_reagent sr ON sr.id = oa.reagent_id
        LEFT JOIN sys_user su ON su.id = oa.apply_user_id
        LEFT JOIN base_meta AS bm2 ON sr.control_products = bm2.id
        LEFT JOIN base_meta AS bm3 ON sr.reagent_format = bm3.id
        LEFT JOIN base_meta AS bm4 ON sr.reagent_character = bm4.id
        LEFT JOIN base_meta AS bm1 ON sr.product_home = bm1.id
        LEFT JOIN sys_project as project on project.project = su.project
        LEFT JOIN sys_user as su1 on su1.id = project.sys_user_id
        where oa.valid_flag = 1 and (oa.status=4 or oa.status=6)
        <include refid="getOpeApplyReserveList_queryWhereSql" />
        GROUP BY oa.id
        order by oa.update_time desc
        <if test="first != null and pageSize != null">
            limit #{first}, #{pageSize}
src/main/java/com/nanometer/smartlab/dao/OpeWarehouseReserveDao.xml
@@ -29,7 +29,8 @@
        <result property="updateTime" column="update_time"></result>
        <result property="supplierName" column="supplierName"></result>
        <result property="productHome" column="product_home"></result>
            <result property="productHomeName" column="productHomeName"></result>
        <result property="productHomeName" column="productHomeName"></result>
        <result property="productSn" column="product_sn"/>
    </association>
  </resultMap>
@@ -49,9 +50,12 @@
    <if test="reagentName != null and reagentName != ''">
      and sr.name like concat('%',#{reagentName},'%')
    </if>
      <if test="warehouseId != null and warehouseId != ''">
          and oa.warehouseId=#{warehouseId}
      </if>
    <if test="warehouseId != null and warehouseId != ''">
        and oa.warehouseId=#{warehouseId}
    </if>
    <if test="productSn != null and productSn != ''">
        and sr.product_sn like concat('%',#{productSn},'%')
    </if>
  </sql>
  <sql id="queryColumns">
src/main/java/com/nanometer/smartlab/dao/SysReagentDao.xml
@@ -261,6 +261,9 @@
    <if test="type != null">
      and sr.type = #{type}
    </if>
    <if test="productSn != null and productSn != ''">
      and sr.product_sn like concat("%", #{productSn} ,"%")
    </if>
    ORDER BY sr.create_time desc
    <if test="first != null and pageSize != null">
      limit #{first}, #{pageSize}
@@ -321,7 +324,9 @@
    <if test="type != null">
      and sr.type = #{type}
    </if>
    <if test="productSn != null and productSn != ''">
      and sr.product_sn like concat("%", #{productSn} ,"%")
    </if>
  </select>
  <select id="getReagentUnitByReagentId" parameterType="java.lang.String" resultType="java.lang.String">
src/main/java/com/nanometer/smartlab/dao/SysUserDao.xml
@@ -218,7 +218,7 @@
    WHERE su.valid_flag = 1
    and sl.valid_flag = 1
    and slc.valid_flag = 1
    ORDER BY su.`name` asc
    </select>
    <select id="getUserListByProject" parameterType="java.util.Map" resultMap="SysUser">
@@ -244,9 +244,15 @@
    FROM sys_user AS su
    LEFT JOIN base_meta bm ON su.department = bm.id
    LEFT JOIN base_meta com on com.id = su.company
    WHERE
    <where>
        su.valid_flag = 1
    AND su.account = #{account}
        <if test="account != null and account !=''">
            AND su.account = #{account}
        </if>
        <if test="name != null and name !=''">
            AND su.name = #{name}
        </if>
    </where>
    </select>
    <select id="getUserByProject" resultType="com.nanometer.smartlab.entity.dto.LaboratoryVo$LaboratoryUser">
    SELECT
src/main/java/com/nanometer/smartlab/entity/OpeApplyReserve.java
@@ -32,6 +32,9 @@
    private Integer flag;
    private ApplyStatus status;
    private String project;
    private String projectManage;
    public ApplyStatus getStatus() {
        return status;
    }
@@ -165,4 +168,20 @@
    public void setSelectNum(Integer selectNum) {
        this.selectNum = selectNum;
    }
    public String getProject() {
        return project;
    }
    public void setProject(String project) {
        this.project = project;
    }
    public String getProjectManage() {
        return projectManage;
    }
    public void setProjectManage(String projectManage) {
        this.projectManage = projectManage;
    }
}
src/main/java/com/nanometer/smartlab/entity/enumtype/ApplyStatusVo.java
对比新文件
@@ -0,0 +1,39 @@
package com.nanometer.smartlab.entity.enumtype;
import java.util.HashMap;
public enum ApplyStatusVo {
    STORAGE(4, "已入库"),SUPPLIER_CONFIRM(6,"已确认");
    private int key;
    private String text;
    private ApplyStatusVo(int key, String text) {
        this.key = key;
        this.text = text;
    }
    public int getKey() {
        return key;
    }
    public String getText() {
        return text;
    }
    private static HashMap<Integer,ApplyStatusVo> map = new HashMap<Integer,ApplyStatusVo>();
    static {
        for(ApplyStatusVo d : ApplyStatusVo.values()){
            map.put(d.key, d);
        }
    }
    public static ApplyStatusVo parse(Integer index) {
        if(map.containsKey(index)){
            return map.get(index);
        }
        return null;
    }
}
src/main/java/com/nanometer/smartlab/service/OpeApplyService.java
@@ -53,9 +53,9 @@
    int getOpeApplyReserveTotalCountByName(String id,String reagentName, String personName);
    List<OpeApplyReserve> getOpeApplyReserveListByName(String id,String reagentName, String personName, Integer first,
            Integer pageSize);
    int getOpeApplyReserveTotalCountByNameFor(String id,String reagentName, String personName);
    int getOpeApplyReserveTotalCountByNameFor(String id,String reagentName, String personName,String productSn,String applyCode,Integer status);
    List<OpeApplyReserve> getOpeApplyReserveListByNameFor(String id,String reagentName, String personName, Integer first,
                                                       Integer pageSize);
                                                       Integer pageSize,String productSn,String applyCode,Integer status);
    public boolean updaetOpeApplyPrice(BigDecimal applyPrice,String id);
    public boolean updaetOpeApplyStockFlag(int stockFlag,String id);
    public boolean cancelApply(ApplyStatus status,String id);
src/main/java/com/nanometer/smartlab/service/OpeApplyServiceImpl.java
@@ -519,12 +519,15 @@
    }
    @Override
    public int getOpeApplyReserveTotalCountByNameFor(String id,String reagentName, String personName) {
    public int getOpeApplyReserveTotalCountByNameFor(String id,String reagentName, String personName,String productSn,String applyCode,Integer status) {
        try {
            Map<String, Object> params = new HashMap<String, Object>();
            params.put("reagentName", reagentName);
            params.put("personName", personName);
            params.put("userId",id);
            params.put("productSn",productSn);
            params.put("applyCode",applyCode);
            params.put("status",status);
            return this.opeApplyDao.getOpeApplyReserveTotalCountFor(params);
        } catch (DataAccessException e) {
            logger.error(e.getMessage(), e);
@@ -534,7 +537,7 @@
    }
    @Override
    public List<OpeApplyReserve> getOpeApplyReserveListByNameFor(String id,String reagentName, String personName, Integer first,
                                                              Integer pageSize) {
                                                              Integer pageSize,String productSn,String applyCode,Integer status) {
        try {
            Map<String, Object> params = new HashMap<String, Object>();
            params.put("reagentName", reagentName);
@@ -542,6 +545,9 @@
            params.put("userId",id);
            params.put("first", first);
            params.put("pageSize", pageSize);
            params.put("productSn",productSn);
            params.put("applyCode",applyCode);
            params.put("status",status);
            return this.opeApplyDao.getOpeApplyReserveListFor(params);
        } catch (DataAccessException e) {
            logger.error(e.getMessage(), e);
src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveService.java
@@ -15,8 +15,8 @@
                                                         Integer pageSize);
    int getOpeWarehouseReserveTotalCount(String reagentId, String supplierId);
    List<OpeWarehouseReserve> getOpeWarehouseReserveListByName(String reagentId, String supplierId, Integer first,
            Integer pageSize);
    int getOpeWarehouseReserveTotalCountByName(String reagentId, String supplierId);
            Integer pageSize,String productSn);
    int getOpeWarehouseReserveTotalCountByName(String reagentId, String supplierId,String productSn);
    OpeWarehouseReserve getOpeWarehouseReserve(String reagentId, String articleNumber);
    OpeWarehouseReserve getOpeWarehouseReserve2(String reagentId, String articleNumber,String warehouseId);
    OpeWarehouseReserve getOpeWarehouseReserveBy(String reagentId, String articleNumber);
src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveServiceImpl.java
@@ -88,13 +88,14 @@
    @Transactional(propagation = Propagation.REQUIRED)
    public List<OpeWarehouseReserve> getOpeWarehouseReserveListByName(String reagentId, String supplierId, Integer first,
            Integer pageSize) {
            Integer pageSize,String productSn) {
        try {
            Map<String, Object> params = new HashMap<String, Object>();
            params.put("reagentName", reagentId);
            params.put("supplierId", supplierId);
            params.put("first", first);
            params.put("pageSize", pageSize);
            params.put("productSn", productSn);
            return this.opeWarehouseReserveDao.getOpeWarehouseReserveList(params);
        } catch (DataAccessException e) {
            logger.error(e.getMessage(), e);
@@ -104,11 +105,12 @@
    }
    @Transactional(propagation = Propagation.REQUIRED)
    public int getOpeWarehouseReserveTotalCountByName(String reagentId, String supplierId) {
    public int getOpeWarehouseReserveTotalCountByName(String reagentId, String supplierId,String productSn) {
        try {
            Map<String, Object> params = new HashMap<String, Object>();
            params.put("reagentName", reagentId);
            params.put("supplierId", supplierId);
            params.put("productSn", productSn);
            return this.opeWarehouseReserveDao.getOpeWarehouseReserveTotalCount(params);
        } catch (DataAccessException e) {
            logger.error(e.getMessage(), e);
@@ -325,7 +327,7 @@
            for (int i = 0; i < len; i++) {
                temp += "0";
            }
            for (BigInteger i = startReagentCode; i.compareTo(endReagentCode) < 1; i = i.add(BigInteger.ONE)) {
             for (BigInteger i = startReagentCode; i.compareTo(endReagentCode) < 1; i = i.add(BigInteger.ONE)) {
                reagentCode = temp + String.valueOf(i);
                if (this.opeReagentStatusService.isOpeReagentStatusExist(reagentCode)) {//条码存在
                    //throw new BusinessException(ExceptionEnumCode.REAGENT_CODE_EXIST, "入库试剂:" + opeApply.getReagent().getName() + "的试剂条形码[" + reagentCode + "]已存在。");
src/main/java/com/nanometer/smartlab/service/SysReagentService.java
@@ -20,12 +20,12 @@
    public int insertSysReagentList(List<SysReagent> sysReagentList);
    public int insertSysReagentList2(List<SysReagent> sysReagentList);
    int getSysReagentTotalCountNew(String name, String cas, String supplierId, Integer type);
    int getSysReagentTotalCountNew(String name, String cas, String supplierId, Integer type,String productSn);
    public List<SysReagent> query();
    Map getReagentDetail(String id);
    public List<SysReagent> getSysReagentListNew(String name, String cas, String supplierId, Integer type, Integer first, Integer pageSize);
    public List<SysReagent> getSysReagentListNew(String name, String cas, String supplierId, Integer type, Integer first, Integer pageSize,String productSn);
    int favorCount(SysUser user, String name, String cas, String supplierId, String productSn,Integer favorFlag);
src/main/java/com/nanometer/smartlab/service/SysReagentServiceImpl.java
@@ -61,7 +61,7 @@
        }
    }
    public List<SysReagent> getSysReagentListNew(String name, String cas, String supplierId,Integer type, Integer first, Integer pageSize) {
    public List<SysReagent> getSysReagentListNew(String name, String cas, String supplierId,Integer type, Integer first, Integer pageSize,String productSn) {
        try {
            Map<String, Object> params = new HashMap<String, Object>();
            params.put("name", name);
@@ -70,6 +70,7 @@
            params.put("type", type);
            params.put("first", first);
            params.put("pageSize", pageSize);
            params.put("productSn", productSn);
            return this.sysReagentDao.getSysReagentListNew(params);
        } catch (DataAccessException e) {
            logger.error(e.getMessage(), e);
@@ -176,13 +177,14 @@
    }
    public int getSysReagentTotalCountNew(String name, String cas, String supplierId,Integer type) {
    public int getSysReagentTotalCountNew(String name, String cas, String supplierId,Integer type,String productSn) {
        try {
            Map<String, Object> params = new HashMap<String, Object>();
            params.put("name", name);
            params.put("cas", cas);
            params.put("type", type);
            params.put("supplierId", supplierId);
            params.put("productSn", productSn);
            return this.sysReagentDao.getSysReagentTotalCountNew(params);
        } catch (DataAccessException e) {
            logger.error(e.getMessage(), e);
src/main/java/com/nanometer/smartlab/service/SysUserService.java
@@ -41,7 +41,7 @@
    List<SysUserDto> getUserInfo();
    HazardousWasteUser getUserByAccount(String account);
    HazardousWasteUser getUserByAccount(String account,String name);
    List<LaboratoryVo.LaboratoryUser> getUserByProject(String project);
}
src/main/java/com/nanometer/smartlab/service/SysUserServiceImpl.java
@@ -353,9 +353,10 @@
    }
    @Override
    public HazardousWasteUser getUserByAccount(String account) {
    public HazardousWasteUser getUserByAccount(String account,String name) {
        Map<String, String> params = new HashMap<>();
        params.put("account", account);
        params.put("name", name);
        return sysUserDao.getUserByAccount(params);
    }
src/main/webapp/WEB-INF/ehcache.xml
对比新文件
@@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8"?>
<ehcache updateCheck="false" dynamicConfig="false">
    <diskStore path="java.io.tmpdir"/>
   <cache name="authorizationCache"
           maxEntriesLocalHeap="2000"
           eternal="false"
           timeToIdleSeconds="43200"
           timeToLiveSeconds="43200"
           overflowToDisk="false"
           statistics="true">
    </cache>
    <cache name="authenticationCache"
           maxEntriesLocalHeap="2000"
           eternal="false"
           timeToIdleSeconds="43200"
           timeToLiveSeconds="43200"
           overflowToDisk="false"
           statistics="true">
    </cache>
    <cache name="activeSessionCache"
           maxEntriesLocalHeap="2000"
           eternal="false"
           timeToIdleSeconds="43200"
           timeToLiveSeconds="43200"
           overflowToDisk="false"
           statistics="true">
    </cache>
    <!-- 缓存5min -->
    <cache name="fivMin"
           maxElementsInMemory="10000"
           maxElementsOnDisk="100000"
           eternal="false"
           timeToIdleSeconds="300"
           timeToLiveSeconds="300"
           overflowToDisk="false"
           diskPersistent="false" />
    <!-- 缓存半小时 -->
    <cache name="halfHour"
        maxElementsInMemory="10000"
        maxElementsOnDisk="100000"
        eternal="false"
        timeToIdleSeconds="1800"
        timeToLiveSeconds="1800"
        overflowToDisk="false"
        diskPersistent="false" />
    <!-- 缓存一小时 -->
    <cache name="hour"
        maxElementsInMemory="10000"
        maxElementsOnDisk="100000"
        eternal="false"
        timeToIdleSeconds="3600"
        timeToLiveSeconds="3600"
        overflowToDisk="false"
        diskPersistent="false" />
    <!-- 缓存一天 -->
    <cache name="oneDay"
        maxElementsInMemory="10000"
        maxElementsOnDisk="100000"
        eternal="false"
        timeToIdleSeconds="43200"
        timeToLiveSeconds="43200"
        overflowToDisk="false"
        diskPersistent="false" />
    <!--
        name:缓存名称。
        maxElementsInMemory:缓存最大个数。
        eternal:对象是否永久有效,一但设置了,timeout将不起作用。
        timeToIdleSeconds:设置对象在失效前的允许闲置时间(单位:秒)。仅当eternal=false对象不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大。
        timeToLiveSeconds:设置对象在失效前允许存活时间(单位:秒)。最大时间介于创建时间和失效时间之间。仅当eternal=false对象不是永久有效时使用,默认是0.,也就是对象存活时间无穷大。
        overflowToDisk:当内存中对象数量达到maxElementsInMemory时,Ehcache将会对象写到磁盘中。
        diskSpoolBufferSizeMB:这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区。
        maxElementsOnDisk:硬盘最大缓存个数。
        diskPersistent:是否缓存虚拟机重启期数据 Whether the disk store persists between restarts of the Virtual Machine. The default value is false.
        diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是120秒。
        memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。默认策略是LRU(最近最少使用)。你可以设置为FIFO(先进先出)或是LFU(较少使用)。
        clearOnFlush:内存数量最大时是否清除。
    -->
    <defaultCache name="defaultCache"
        maxElementsInMemory="10000"
        eternal="false"
        timeToIdleSeconds="120"
        timeToLiveSeconds="120"
        overflowToDisk="false"
        maxElementsOnDisk="100000"
        diskPersistent="false"
        diskExpiryThreadIntervalSeconds="120"
        memoryStoreEvictionPolicy="LRU"/>
</ehcache>
src/main/webapp/WEB-INF/spring-ehcache.xml
对比新文件
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:cache="http://www.springframework.org/schema/cache"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/cache
       http://www.springframework.org/schema/cache/spring-cache.xsd">
    <!-- Spring提供的基于的Ehcache实现的缓存管理器 -->
    <!-- 如果有多个ehcacheManager要在bean加上p:shared="true" -->
    <bean id="cacheManager1" class="org.springframework.cache.ehcache.EhCacheCacheManager">
        <property name="cacheManager" ref="ehcacheManager"/>
        <property name="transactionAware" value="true"/>
    </bean>
    <!-- cache注解,和spring-redis.xml中的只能使用一个 -->
    <cache:annotation-driven cache-manager="cacheManager1" proxy-target-class="true"/>
</beans>
src/main/webapp/WEB-INF/spring-shiro.xml
@@ -60,7 +60,14 @@
    </bean>
    <!-- Cache Manager -->
    <bean id="cacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager"></bean>
    <bean id="cacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager">
        <property name="cacheManager" ref="ehcacheManager"/>
    </bean>
    <!-- 如果有多个ehcacheManager要在bean加上p:shared="true" -->
    <bean id="ehcacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
        <property name="configLocation" value="WEB-INF/ehcache.xml"/>
    </bean>
    <!--session manager-->
    <bean id="sessionManager"
@@ -77,6 +84,13 @@
    <!--自定义 Realm-->
    <bean id="authorizationRealm" class="com.nanometer.smartlab.realm.AuthorizationRealm">
        <property name="credentialsMatcher" ref="md5Matcher"/>
        <!-- 启用身份验证缓存,即缓存AuthenticationInfo信息,默认false -->
        <property name="authenticationCachingEnabled" value="true"/>
        <!-- 缓存AuthenticationInfo信息的缓存名称 -->
        <property name="authenticationCacheName" value="authenticationCache"/>
        <!-- 缓存AuthorizationInfo信息的缓存名称 -->
        <property name="authorizationCacheName" value="authorizationCache"/>
    </bean>
    <!-- Security Manager -->
@@ -95,4 +109,4 @@
        <property name="securityManager" ref="securityManager"/>
    </bean>
</beans>
</beans>
src/main/webapp/reagent_mng.xhtml
@@ -15,7 +15,7 @@
        <p:panel styleClass="center-header">
            <p:outputLabel styleClass="title" value="试剂管理"></p:outputLabel>
            <p:panelGrid styleClass="filter" columns="9">
            <p:panelGrid styleClass="filter" columns="12">
                <p:outputLabel value="名称:"></p:outputLabel>
                <p:inputText value="#{reagentMngController.name}"></p:inputText>
                <p:outputLabel value="CAS:"></p:outputLabel>
@@ -31,6 +31,10 @@
                    <f:selectItems value="#{reagentMngController.typeList}" var="item"
                                   itemLabel="#{item.text}" itemValue="#{item.key}"></f:selectItems>
                </p:selectOneMenu>
                <p:outputLabel value="产品编号:"></p:outputLabel>
                <p:inputText value="#{reagentMngController.productSn}"></p:inputText>
                <p:commandLink styleClass="search" process="@form" update="@form"></p:commandLink>
            </p:panelGrid>
        </p:panel>
@@ -52,7 +56,7 @@
                    <p:confirm header="确认" message="确认操作?"></p:confirm>
                </p:commandButton>
                <p:commandButton value="试剂导入" styleClass="import-btn" onclick="importReagent()"
            ></p:commandButton>
                ></p:commandButton>
                <p:commandButton value="耗材导入" styleClass="import-btn" onclick="importReagent2()"
                ></p:commandButton>
                <script>
@@ -86,6 +90,9 @@
                <p:column headerText="名称">
                    <h:outputText value="#{row.name}"></h:outputText>
                </p:column>
                <p:column headerText="产品编号">
                    <h:outputText value="#{row.productSn}"></h:outputText>
                </p:column>
                <p:column headerText="CAS">
                    <h:outputText value="#{row.cas}"></h:outputText>
                </p:column>
src/main/webapp/warehouse_reagent_direct_store.xhtml
@@ -51,6 +51,10 @@
                        <h:outputText value="#{row.reagent!=null?row.reagent.name:''}"></h:outputText>
                    </p:column>
                    <p:column headerText="产品编号">
                        <h:outputText value="#{row.reagent.productSn}"/>
                    </p:column>
                    <p:column headerText="CAS" width="80">
                        <h:outputText value="#{row.reagent!=null?row.reagent.cas:''}"></h:outputText>
                    </p:column>
@@ -199,6 +203,9 @@
                        <p:column headerText="试剂名称">
                            <h:outputText value="#{row.name}"></h:outputText>
                        </p:column>
                        <p:column headerText="产品编号">
                            <h:outputText value="#{row.productSn}"/>
                        </p:column>
                        <p:column headerText="CAS">
                            <h:outputText value="#{row.cas}"></h:outputText>
                        </p:column>
src/main/webapp/warehouse_stock_mng.xhtml
@@ -37,6 +37,10 @@
                                <h:outputText value="#{row.reagent.name}"/>
                            </p:column>
                            <p:column headerText="产品编号">
                                <h:outputText value="#{row.reagent.productSn}"/>
                            </p:column>
                            <p:column headerText="CAS">
                                <h:outputText value="#{row.reagent.cas}"/>
                            </p:column>
@@ -75,7 +79,7 @@
            <br/>
            <h:form id="warehouseStockMngForm">
                <p:panel styleClass="center-header">
                    <p:panelGrid styleClass="filter" columns="5">
                    <p:panelGrid styleClass="filter" columns="7">
                        <p:outputLabel value="试剂名称:"></p:outputLabel>
                        <p:inputText value="#{warehouseStockMngController.reagentId}"></p:inputText>
@@ -86,6 +90,9 @@
                            <f:selectItems value="#{warehouseStockMngController.supplierSelectList}"
                                           var="item" itemLabel="#{item.name}" itemValue="#{item.id}"></f:selectItems>
                        </p:selectOneMenu>
                        <p:outputLabel value="产品编号:"></p:outputLabel>
                        <p:inputText value="#{warehouseStockMngController.productSn}"></p:inputText>
                        <p:commandLink styleClass="search" process="@form" update="@form"></p:commandLink>
                    </p:panelGrid>
@@ -131,6 +138,10 @@
                        <p:column selectionMode="multiple" style="width: 30px;text-align: center;" />
                        <p:column headerText="试剂名称">
                            <h:outputText value="#{row.reagent.name}"></h:outputText>
                        </p:column>
                        <p:column headerText="产品编号">
                            <h:outputText value="#{row.reagent.productSn}"/>
                        </p:column>
                        <p:column headerText="CAS">
@@ -245,12 +256,22 @@
            </div>
            <h:form id="warehouseStockMngFormForPerson">
                <p:panel styleClass="center-header" style="border-bottom:none;">
                    <p:panelGrid styleClass="filter" columns="5">
                    <p:panelGrid styleClass="filter" columns="12">
                        <p:outputLabel value="试剂名称:"></p:outputLabel>
                        <p:inputText value="#{warehouseStockMngController.reagentId}"></p:inputText>
                        <p:outputLabel value="申领人:"></p:outputLabel>
                        <p:inputText value="#{warehouseStockMngController.userName}"></p:inputText>
                        <p:outputLabel value="申购编号:"></p:outputLabel>
                        <p:inputText value="#{warehouseStockMngController.applyCode}"></p:inputText>
                        <p:outputLabel value="产品编号:"></p:outputLabel>
                        <p:inputText value="#{warehouseStockMngController.productSn}"></p:inputText>
                        <p:outputLabel value="状态:"></p:outputLabel>
                        <p:selectOneMenu value="#{warehouseStockMngController.status}">
                            <f:selectItem itemLabel="全部" noSelectionOption="true"></f:selectItem>
                            <f:selectItems value="#{warehouseStockMngController.statusSelectList}" var="item"
                                           itemLabel="#{item.text}" itemValue="#{item.key}"></f:selectItems>
                        </p:selectOneMenu>
                        <p:commandLink styleClass="search" process="@form" update="@form"></p:commandLink>
                    </p:panelGrid>
@@ -266,6 +287,8 @@
                                         oncomplete="$('#showTabOrder').css('display','block');"
                                         update="@(.tmpOrder)"
                        ></p:commandButton>
                        <p:commandButton update=":centerRootPanel" actionListener="#{warehouseStockMngController.onExportFileBtnClickOrder}"
                                         ajax="false" value="导出" styleClass="new-btn" />
                    </p:panelGrid>
                    <p:dataTable id="warehouseStockMngDataTableForPerson" styleClass="data-table"
@@ -331,6 +354,12 @@
                        <p:column headerText="订单状态">
                            <h:outputText value="#{row.status!=null?row.status.text:''}"></h:outputText>
                        </p:column>
                        <p:column headerText="课题组">
                            <h:outputText value="#{row.project}" />
                        </p:column>
                        <p:column headerText="课题组负责人">
                            <h:outputText value="#{row.projectManage}" />
                        </p:column>
                    </p:dataTable>
                </p:panel>
            </h:form>