gdg
2021-01-29 31ffbaf322685984516cfb284fa58741debf4e96
Merge remote-tracking branch 'remotes/origin/yufei' into master

# Conflicts:
# src/main/java/com/nanometer/smartlab/dao/OpeWarehouseReserveDao.xml
已修改34个文件
已添加1个文件
1042 ■■■■■ 文件已修改
src/main/java/com/nanometer/smartlab/api/ApiAction.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/controller/LaboratoryContainerMngController.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/controller/LaboratoryMngController.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/controller/OpeUseFlowInfoController.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/controller/OrderMngController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/controller/PersonalUseInfoController.java 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/controller/ProjectMngController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/controller/UserMngController.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.xml 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/dao/OpeWarehouseReserveDao.xml 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/dao/SysLaboratoryContainerDao.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/dao/SysLaboratoryDao.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/dao/SysUserDao.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/entity/OpeUseFlow.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/entity/dto/PersonUseDetail.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/OpeUseFlowService.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/OpeUseFlowServiceImpl.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/SysLaboratoryContainerService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/SysLaboratoryContainerServiceImpl.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/SysLaboratoryService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/SysLaboratoryServiceImpl.java 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/SysProjectServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/SysUserService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/SysUserServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/WEB-INF/config-mybatis.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/laboratory_container_mng.xhtml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/laboratory_mng.xhtml 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/personal_use_info.xhtml 278 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/reagent_user_flow_info.xhtml 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/user_mng.xhtml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/warehouse_stock_mng.xhtml 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/api/ApiAction.java
@@ -567,7 +567,7 @@
        logger.info("getUserInfo start...");
        List<SysUser> userList = sysUserService.getSysUserInfoList(startTime, endTime);
        List<SysLaboratoryContainer> allLaboratoryContainerList = sysLaboratoryContainerService.getSysLaboratoryContainerList(null,null,null,null,null);
        List<SysLaboratoryContainer> allLaboratoryContainerList = sysLaboratoryContainerService.getSysLaboratoryContainerList(null,null,null,null,null,null,null);
        List<SysWarehouseContainer> allWarehouseContainerList = sysWarehouseContainerService.getSysWarehouseContainerList(null,null,null,null,null);
        List<String> containerCodeList = new ArrayList<String>();
src/main/java/com/nanometer/smartlab/controller/LaboratoryContainerMngController.java
@@ -72,6 +72,8 @@
    private String laboratoryType;
    private String laboratoryName;
    private String project;
    private String controllerName;
    private int action;
@@ -384,11 +386,11 @@
                    List<SysLaboratoryContainer> list = null;
                    try {
                        int count = sysLaboratoryContainerService.getSysLaboratoryContainerTotalCount(laboratoryType,
                                laboratoryName,null);
                                laboratoryName,null,project,controllerName);
                        this.setRowCount(count);
                        if (count > 0) {
                            list = sysLaboratoryContainerService.getSysLaboratoryContainerList(laboratoryType,
                                    laboratoryName,null, first, pageSize);
                                    laboratoryName,null,project,controllerName, first, pageSize);
                        }
                    } catch (Exception e) {
                        logger.error(e);
@@ -471,4 +473,19 @@
        this.controllers = controllers;
    }
    public String getProject() {
        return project;
    }
    public void setProject(String project) {
        this.project = project;
    }
    public String getControllerName() {
        return controllerName;
    }
    public void setControllerName(String controllerName) {
        this.controllerName = controllerName;
    }
}
src/main/java/com/nanometer/smartlab/controller/LaboratoryMngController.java
@@ -60,6 +60,7 @@
    private List<SysLaboratory> selectedList;
    private String type;
    private String name;
    private String project;
    private int action;
@@ -279,10 +280,10 @@
                        Map<String, Object> filters) {
                    List<SysLaboratory> list = null;
                    try {
                        int count = sysLaboratoryService.getSysLaboratoryTotalCount(type, name);
                        int count = sysLaboratoryService.getSysLaboratoryTotalCount(type, name,project);
                        this.setRowCount(count);
                        if (count > 0) {
                            list = sysLaboratoryService.getSysLaboratoryList(type, name, first, pageSize);
                            list = sysLaboratoryService.getSysLaboratoryList(type, name,project, first, pageSize);
                        }
                    } catch (Exception e) {
                        logger.error(e);
@@ -344,4 +345,12 @@
    public void setType(String type) {
        this.type = type;
    }
    public String getProject() {
        return project;
    }
    public void setProject(String project) {
        this.project = project;
    }
}
src/main/java/com/nanometer/smartlab/controller/OpeUseFlowInfoController.java
@@ -47,6 +47,8 @@
    private Hashtable printTable;
    private String containerCode;
    public String getHouseName() {
        return houseName;
    }
@@ -98,10 +100,10 @@
                        Map<String, Object> filters) {
                    List<OpeUseFlow> list = null;
                    try {
                        int count = opeUseFlowService.getOpeUseFlowTotalCountByName(houseName,reagentId, reagentCode, null, getUserId(),startDate,endDate);
                        int count = opeUseFlowService.getOpeUseFlowTotalCountByName(houseName,reagentId, reagentCode, containerCode,null, getUserId(),startDate,endDate);
                        this.setRowCount(count);
                        if (count > 0) {
                            list = opeUseFlowService.getOpeUseFlowListByName(houseName,reagentId, reagentCode, null, getUserId(),startDate,endDate, first, pageSize);
                            list = opeUseFlowService.getOpeUseFlowListByName(houseName,reagentId, reagentCode, containerCode,null, getUserId(),startDate,endDate, first, pageSize);
                        }
                    } catch (Exception e) {
                        logger.error(e);
@@ -227,4 +229,12 @@
    public void setPrintTable(Hashtable printTable) {
        this.printTable = printTable;
    }
    public String getContainerCode() {
        return containerCode;
    }
    public void setContainerCode(String containerCode) {
        this.containerCode = containerCode;
    }
}
src/main/java/com/nanometer/smartlab/controller/OrderMngController.java
@@ -63,7 +63,7 @@
    private Map<String, List<SysWarehouseContainer>> warehouseIdContainerMap;
    public void initRukuPage() {
        this.userSelectList = this.sysUserService.getSysUserList(null, null, null, null, null);
        this.userSelectList = this.sysUserService.getSysUserList(null, null, null, null, null,null,null);
        //将admin置于首位
        for (int i = 0; i < userSelectList.size(); i++) {
            if ("admin".equals(userSelectList.get(i).getAccount())){
src/main/java/com/nanometer/smartlab/controller/PersonalUseInfoController.java
@@ -1,16 +1,22 @@
package com.nanometer.smartlab.controller;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.text.SimpleDateFormat;
import java.util.*;
import javax.annotation.Resource;
import com.nanometer.smartlab.entity.OpeUseFlow;
import com.nanometer.smartlab.entity.SysLaboratory;
import com.nanometer.smartlab.entity.dto.ApplyListDto;
import com.nanometer.smartlab.entity.dto.PersonUseDetail;
import com.nanometer.smartlab.service.SysLaboratoryService;
import com.nanometer.smartlab.util.FacesUtils;
import com.nanometer.smartlab.util.Utils;
import org.apache.log4j.Logger;
import org.primefaces.context.RequestContext;
import org.primefaces.model.LazyDataModel;
import org.primefaces.model.SortOrder;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
@@ -38,6 +44,10 @@
    @Resource
    private SysReagentService sysReagentService;
    @Resource
    private SysLaboratoryService sysLaboratoryService;
    @Value("${institute.name}")
    String instituteName;
    /**
     * 数据源
@@ -48,6 +58,13 @@
    private String applyPerson;
    private Date startTime;
    private Date endTime;
    private String project;
    private String department;
    private String receiptNumber;
    private LazyDataModel<OpeUseFlow> dataModel2;
    private OpeUseFlow selectOne;
    private List<PersonUseDetail> personUseDetail;
    private Hashtable<String,Object> printTable;
    private List<OpeReagentStatus> selectedList;
    private List<SysReagent> reagentSelectList;
@@ -109,7 +126,75 @@
    }
    /**
    * 生成领用单
    */
    public void generateReceipt() {
        if (this.selectOne == null) {
            FacesUtils.warn("请选择数据");
            return;
        }
        printTable = new Hashtable<>();
        printTable.put("head", instituteName);
        printTable.put("title", "领用单");
        printTable.put("applyPerson", selectOne.getUserName());
        printTable.put("department", selectOne.getDepartment());
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        printTable.put("date", dateFormat.format(selectOne.getCreateTime()));
        printTable.put("phone", selectOne.getPhone());
        printTable.put("receiptNumber", selectOne.getReceiptNumber());
        printTable.put("project", selectOne.getProject());
        SysLaboratory sysLaboratory = sysLaboratoryService.getSysLaboratory(selectOne.getHouseId());
        printTable.put("lab", sysLaboratory.getName());
        //整理数据
        List<PersonUseDetail> applyInfo = opeUseFlowService.getApplyInfo(selectOne.getReceiptNumber());
        assert applyInfo.size() > 0;
        List<ApplyListDto> applyList = new ArrayList<>();
        Map<String, Integer> map = new HashMap<>();
        for (PersonUseDetail pud : applyInfo) {
            if (map.containsKey(pud.getReagentId())) {
                map.put(pud.getReagentId(), map.get(pud.getReagentId()) + 1);
            }else{
                map.put(pud.getReagentId(), 1);
            }
        }
        int sum = 0;
        for (Map.Entry<String,Integer> entry : map.entrySet()) {
            ApplyListDto apply = new ApplyListDto();
            for (PersonUseDetail pud : applyInfo) {
                if (entry.getKey().equals(pud.getReagentId())) {
                    apply.setControlProducts(pud.getControlProducts());
                    apply.setMainMetering(pud.getPerInfo());
                    apply.setNum(entry.getValue().toString());
                    apply.setProductCode(pud.getProductSn());
                    apply.setProductName(pud.getReagentName());
                    apply.setReagentFormat(pud.getReagentFormat());
                    applyList.add(apply);
                    sum += entry.getValue();
                    break;
                }
            }
        }
        applyList.add(new ApplyListDto("合计", "", "", "", "", String.valueOf(sum), ""));
        printTable.put("applyList", applyList);
        RequestContext.getCurrentInstance().execute("PF('printDialog').show()");
    }
    /**
    * 查看详情
    */
    public void detailInfo() {
        if (this.selectOne == null) {
            FacesUtils.warn("请选择数据");
        }
        personUseDetail = opeUseFlowService.getApplyInfo(selectOne.getReceiptNumber());
    }
    @SuppressWarnings("serial")
    public LazyDataModel<OpeReagentStatus> getDataModel() {
@@ -151,6 +236,45 @@
        return dataModel;
    }
    public LazyDataModel<OpeUseFlow> getDataModel2() {
        if (this.dataModel2 == null) {
            this.dataModel2 = new LazyDataModel<OpeUseFlow>() {
                @Override
                public List<OpeUseFlow> load(int first, int pageSize, String sortField, SortOrder sortOrder,
                                                   Map<String, Object> filters) {
                    List<OpeUseFlow> list = null;
                    try {
                        int count = opeUseFlowService.getPersonalUseInfoCount(reagentCode, getUserId(),startTime,endTime,receiptNumber,department,project);
                        this.setRowCount(count);
                        if (count > 0) {
                            list = opeUseFlowService.getPersonalUseInfoList
                                    (reagentCode,  getUserId(),startTime,endTime ,receiptNumber,department,project,first,pageSize);
                        }
                    } catch (Exception e) {
                        logger.error(e);
                    }
                    return list;
                }
                @Override
                public OpeUseFlow getRowData(String rowKey) {
                    Iterator<OpeUseFlow> iterator = this.iterator();
                    if (iterator != null) {
                        OpeUseFlow su = null;
                        while (iterator.hasNext()) {
                            su = iterator.next();
                            if (rowKey.equals(su.getReceiptNumber())) {
                                return su;
                            }
                        }
                    }
                    return null;
                }
            };
        }
        return dataModel2;
    }
    public String getReagentId() {
        return reagentId;
    }
@@ -191,4 +315,54 @@
    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }
    public String getProject() {
        return project;
    }
    public void setProject(String project) {
        this.project = project;
    }
    public String getDepartment() {
        return department;
    }
    public void setDepartment(String department) {
        this.department = department;
    }
    public String getReceiptNumber() {
        return receiptNumber;
    }
    public void setReceiptNumber(String receiptNumber) {
        this.receiptNumber = receiptNumber;
    }
    public OpeUseFlow getSelectOne() {
        return selectOne;
    }
    public void setSelectOne(OpeUseFlow selectOne) {
        this.selectOne = selectOne;
    }
    public List<PersonUseDetail> getPersonUseDetail() {
        return personUseDetail;
    }
    public void setPersonUseDetail(List<PersonUseDetail> personUseDetail) {
        this.personUseDetail = personUseDetail;
    }
    public Hashtable getPrintTable() {
        return printTable;
    }
    public void setPrintTable(Hashtable printTable) {
        this.printTable = printTable;
    }
}
src/main/java/com/nanometer/smartlab/controller/ProjectMngController.java
@@ -73,7 +73,7 @@
    private void initUserSelectList() {
        logger.info("WarehouseStockMngController initUserSelectList start");
        this.setUserSelectList(this.sysUserService.getSysUserList(null, null, null, null, null));
        this.setUserSelectList(this.sysUserService.getSysUserList(null, null, null, null, null,null,null));
    }
    public void setUserSelectList(List<SysUser> userSelectList) {
        this.userSelectList = userSelectList;
src/main/java/com/nanometer/smartlab/controller/UserMngController.java
@@ -71,6 +71,8 @@
    private List<BaseMeta> codeList;
    private List<BaseRole> roleList;
    private List<Waster> wasterSelectList;
    private String project;
    private String company;
    public List<BaseRole> getRoleList() {
        return roleList;
@@ -493,10 +495,10 @@
                public List<SysUser> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, Object> filters) {
                    List<SysUser> list = null;
                    try {
                        int count = sysUserService.getSysUserTotalCount(arp, name,departmentName);
                        int count = sysUserService.getSysUserTotalCount(arp, name,departmentName,project,company);
                        this.setRowCount(count);
                        if (count > 0) {
                            list = sysUserService.getSysUserList(arp, name,departmentName, first, pageSize);
                            list = sysUserService.getSysUserList(arp, name,departmentName,project,company, first, pageSize);
                        }
                    } catch (Exception e) {
                        logger.error(e);
@@ -622,4 +624,20 @@
    public void setDepartmentName(String departmentName) {
        this.departmentName = departmentName;
    }
    public String getProject() {
        return project;
    }
    public void setProject(String project) {
        this.project = project;
    }
    public String getCompany() {
        return company;
    }
    public void setCompany(String company) {
        this.company = company;
    }
}
src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java
@@ -163,6 +163,7 @@
    private String endReagentCode;
    private String startReagentCodeForPerson;
    private String endReagentCodeForPerson;
    private String warehouseName;
    private Integer editFlag;
    private StreamedContent file;
@@ -373,7 +374,7 @@
    private void initUserSelectList() {
        logger.info("WarehouseStockMngController initUserSelectList start");
        this.setUserSelectList(this.sysUserService.getSysUserList(null, null, null, null, null));
        this.setUserSelectList(this.sysUserService.getSysUserList(null, null, null, null, null,null,null));
        /**if(sysUserService.getSysUser(userId) == null)
        {
            this.laboratory = this.sysLaboratoryService.getSysLaboratoryListByDep(this.getUserDepartment());
@@ -1658,11 +1659,11 @@
                        Map<String, Object> filters) {
                    List<OpeWarehouseReserve> list = null;
                    try {
                        int count = opeWarehouseReserveService.getOpeWarehouseReserveTotalCountByName(reagentId, supplierId,productSn);
                        int count = opeWarehouseReserveService.getOpeWarehouseReserveTotalCountByName(reagentId, supplierId,productSn,warehouseName);
                        this.setRowCount(count);
                        if (count > 0) {
                            list = opeWarehouseReserveService.getOpeWarehouseReserveListByName(reagentId, supplierId, first,
                                    pageSize,productSn);
                                    pageSize,productSn,warehouseName);
                        }
                    } catch (Exception e) {
                        logger.error(e);
@@ -1934,7 +1935,7 @@
                realDataList=selectedList;
            }else {
                realDataList = opeWarehouseReserveService.getOpeWarehouseReserveListByName(reagentId, supplierId, null,
                        null,productSn);
                        null,productSn,warehouseName);
            }
                List<String> headerList = new ArrayList<>();
                headerList.add("试剂名称");
@@ -2535,7 +2536,7 @@
                list.add(sysUser);
                applyUserSelectList = list;
            } else {
                applyUserSelectList = this.sysUserService.getSysUserList(null, null, null, null, null);
                applyUserSelectList = this.sysUserService.getSysUserList(null, null, null, null, null,null,null);
            }
        }
        return applyUserSelectList;
@@ -2682,7 +2683,9 @@
    public List<SysLaboratory> getLaboratory() {
        if(userId != null && userId.trim().length() > 0)
        {
            this.laboratory = this.sysLaboratoryService.getSysLaboratoryListByDep(sysUserService.getSysUser(userId).getDepartment());
            //Todo 修改申领人的实验室显示信息
            this.laboratory = this.sysLaboratoryService.getSysLaboratoryListByUserId(userId);
            if(this.laboratory != null && this.laboratory.size() > 0)
            {
                //flag =true;
@@ -2862,7 +2865,7 @@
    }
    public List getConsignee() {
        List<SysUser> dataList = this.sysUserService.getSysUserList(null, null, null, null, null);
        List<SysUser> dataList = this.sysUserService.getSysUserList(null, null, null, null, null,null,null);
        //将admin置于首位
        for (int i = 0; i < dataList.size(); i++) {
            if ("admin".equals(dataList.get(i).getAccount())){
@@ -3000,4 +3003,12 @@
    public void setReceiptNumber(String receiptNumber) {
        this.receiptNumber = receiptNumber;
    }
    public String getWarehouseName() {
        return warehouseName;
    }
    public void setWarehouseName(String warehouseName) {
        this.warehouseName = warehouseName;
    }
}
src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.java
@@ -1,6 +1,7 @@
package com.nanometer.smartlab.dao;
import com.nanometer.smartlab.entity.OpeUseFlow;
import com.nanometer.smartlab.entity.dto.PersonUseDetail;
import org.apache.ibatis.annotations.Param;
import org.springframework.dao.DataAccessException;
@@ -35,4 +36,10 @@
    List<Map> getRegentInfoFromReceiptNumber(String receiptNumber);
    Map getUserIdByReagentCode(String reagentCode, String id);
    int countPersonalUseInfo(Map params);
    List<OpeUseFlow> selectPersonalUseInfo(Map params);
    List<PersonUseDetail> getApplyInfo(Map params);
}
src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.xml
@@ -85,6 +85,10 @@
    <if test="endDate != null and endDate !=''">
        and oa.create_time &lt;= #{endDate}
    </if>
    <if test="containerCode != null and containerCode !=''">
        and wc.container_code = #{containerCode}
        or lc.container_code =#{containerCode}
    </if>
  </sql>
    <sql id="queryColumns">
@@ -179,6 +183,113 @@
        and valid_flag = 1
        limit 1
    </select>
    <select id="countPersonalUseInfo" resultType="java.lang.Integer">
      select count(0) from (
      SELECT count(0)
        FROM
        ope_use_flow  ouf
        LEFT JOIN sys_user su on su.id = ouf.user_id
        LEFT JOIN base_meta bm on bm.id = ouf.operatestate
        LEFT JOIN ope_reagent_status ors on ors.reagent_code = ouf.reagent_code
        LEFT JOIN sys_reagent sr on sr.id = ors.reagent_id
        left join base_meta bm1 on bm1.id = su.department
        <if test="userId !=null and userId != ''">
            LEFT JOIN sys_reagent sr2 on sr2.id = ouf.user_id
        </if>
        WHERE ouf.operatestate = #{operatestate}
        and   LENGTH(trim(ouf.receipt_number))>0
        <if test="reagentCode !=null and reagentCode != ''">
            and ouf.reagent_code like concat("%",#{reagentCode},"%")
        </if>
        <if test="startTime !=null and startTime != ''">
            and ouf.create_time &gt;#{startTime}
        </if>
        <if test="endTime !=null and endTime != ''">
            and ouf.create_time &lt;#{endTime}
        </if>
        <if test="project !=null and project != ''">
            and su.project like concat("%",#{project},"%")
        </if>
        <if test="department !=null and department != ''">
            and su.bm1.meta_value like concat("%",#{department},"%")
        </if>
        <if test="receiptNumber !=null and receiptNumber != ''">
            and ouf.receipt_number like concat("%",#{receiptNumber},"%")
        </if>
        group by ouf.receipt_number) a
    </select>
    <select id="selectPersonalUseInfo" resultType="com.nanometer.smartlab.entity.OpeUseFlow">
        SELECT ouf.receipt_number receiptNumber,
        count(ouf.reagent_code) applyNum,
        su.name username,
        su.project ,
        su.phone,
        bm1.meta_value department,
        sl.name laboratoryName,
        ouf.create_time createTime,
        ouf.house_id houseId
        FROM
        ope_use_flow  ouf
        LEFT JOIN sys_user su on su.id = ouf.user_id
        LEFT JOIN base_meta bm on bm.id = ouf.operatestate
        LEFT JOIN ope_reagent_status ors on ors.reagent_code = ouf.reagent_code
        LEFT JOIN sys_reagent sr on sr.id = ors.reagent_id
        left join base_meta bm1 on bm1.id = su.department
        left join sys_laboratory sl on sl.id = ouf.house_id
        <if test="userId !=null and userId != ''">
            LEFT JOIN sys_reagent sr2 on sr2.id = ouf.user_id
        </if>
        WHERE ouf.operatestate = #{operatestate}
        and   LENGTH(trim(ouf.receipt_number))>0
        <if test="reagentCode !=null and reagentCode != ''">
            and ouf.reagent_code like concat("%",#{reagentCode},"%")
        </if>
        <if test="startTime !=null and startTime != ''">
            and ouf.create_time &gt;#{startTime}
        </if>
        <if test="endTime !=null and endTime != ''">
            and ouf.create_time &lt;#{endTime}
        </if>
        <if test="project !=null and project != ''">
            and su.project like concat("%",#{project},"%")
        </if>
        <if test="department !=null and department != ''">
            and su.bm1.meta_value like concat("%",#{department},"%")
        </if>
        <if test="receiptNumber !=null and receiptNumber != ''">
            and ouf.receipt_number like concat("%",#{receiptNumber},"%")
        </if>
        group by ouf.receipt_number
        ORDER BY ouf.create_time desc
        <if test="first != null and pageSize != null">
            limit #{first}, #{pageSize}
        </if>
    </select>
    <select id="getApplyInfo" resultType="com.nanometer.smartlab.entity.dto.PersonUseDetail">
        SELECT
        ors.reagent_id reagentId,
        ors.article_number articleNumber,
        ouf.reagent_code reagentCode,
        sr.product_sn productSn,
        sr.NAME reagentName,
        bm1.meta_value  reagentFormat,
        CONCAT(sr.per_box,bm1.meta_value) perInfo,
        bm2.meta_value productHome,
        bm3.meta_value controlProducts
        from `ope_use_flow` ouf
        LEFT JOIN ope_reagent_status ors ON ors.reagent_code = ouf.reagent_code
        LEFT join sys_reagent sr ON ors.reagent_id = sr.id
        LEFT JOIN base_meta bm ON bm.id = sr.reagent_format
        LEFT JOIN base_meta bm1 on bm1.id = sr.reagent_unit
        LEFT JOIN base_meta bm2 on bm2.id = sr.product_home
        LEFT JOIN base_meta bm3 on bm3.id = sr.control_products
        WHERE ouf.operatestate = #{operatestate}
        and ouf.receipt_number = #{receiptNumber}
    </select>
    <insert id="insertOpeUseFlow" parameterType="com.nanometer.smartlab.entity.OpeUseFlow">
    insert into ope_use_flow(id, reagent_code, status, house_id, container_id, user_id, remainder, place, store_type, valid_flag, create_time, realstatus, operatestate)
    values (#{id}, #{reagentCode}, #{status}, #{houseId}, #{containerId}, #{userId}, #{remainder}, #{place}, #{storeType}, 1, #{createTime}, #{realstatus},#{operateState})
src/main/java/com/nanometer/smartlab/dao/OpeWarehouseReserveDao.xml
@@ -57,6 +57,9 @@
    <if test="productSn != null and productSn != ''">
        and sr.product_sn like concat('%',#{productSn},'%')
    </if>
      <if test="warehouseName != null and warehouseName != ''">
          and sw.name like concat('%',#{warehouseName},'%')
      </if>
  </sql>
  <sql id="queryColumns">
@@ -135,7 +138,6 @@
         set reserve=#{reserve}
        where id=#{id}
    </update>
    <select id="selectByReId" resultMap="OpeWarehouseReserve">
        select * from ope_warehouse_reserve where reagent_id=#{id}
src/main/java/com/nanometer/smartlab/dao/SysLaboratoryContainerDao.xml
@@ -77,6 +77,12 @@
    <if test="laboratoryName != null and laboratoryName != ''">
      and ss.name like #{laboratoryName}
    </if>
    <if test="project != null and project != ''">
      and su.project like concat("%",#{project},"%")
    </if>
    <if test="controllerName != null and controllerName != ''">
      and sc.controller_name like concat("%",#{controllerName},"%")
    </if>
    order by ss.name ASC,sc.controller_name,su.container_code,su.name
    <if test="first != null and pageSize != null">
      limit #{first}, #{pageSize}
@@ -137,6 +143,12 @@
    <if test="editId != null and editId != ''">
      and su.id != #{editId}
    </if>
    <if test="project != null and project != ''">
      and su.project like concat("%",#{project},"%")
    </if>
    <if test="controllerName != null and controllerName != ''">
      and sc.controller_name like concat("%",#{controllerName},"%")
    </if>
  </select>
  <insert id="insertSysLaboratoryContainer" parameterType="com.nanometer.smartlab.entity.SysLaboratoryContainer">
src/main/java/com/nanometer/smartlab/dao/SysLaboratoryDao.xml
@@ -31,6 +31,9 @@
    <if test="department != null and department != ''">
      and su.department = #{department}
    </if>
    <if test="project != null and project != ''">
      and su.project like concat("%",#{project},"%")
    </if>
  </sql>
  <select id="getSysLaboratory" parameterType="java.lang.String"  resultMap="SysLaboratory" >
src/main/java/com/nanometer/smartlab/dao/SysUserDao.xml
@@ -74,6 +74,12 @@
    <if test="waster != null">
        and su.waster = #{waster}
    </if>
    <if test="project != null and project != ''">
        and su.project like concat("%",#{project},"%")
    </if>
    <if test="company != null and company != ''">
         and bm1.meta_value like concat("%",#{company},"%")
    </if>
  </sql>
  <select id="getSysUser" parameterType="java.lang.String"  resultMap="SysUser" >
@@ -117,6 +123,7 @@
    select su.*, br.name as roleName from sys_user as su
    left join base_role as br on su.role_id = br.id
      left join base_meta bm on su.department = bm.id
      left join base_meta bm1 on bm1.id = su.company
    where su.valid_flag = 1
      <if test="departmentNameLike != null and departmentNameLike != ''">
          and bm.meta_value  like #{departmentNameLike}
@@ -150,7 +157,9 @@
  </select>
  <select id="getSysUserTotalCount" parameterType="java.util.Map" resultType="int">
    select count(1) from sys_user as su left join base_meta bm on su.department = bm.id
    select count(1) from sys_user as su
    left join base_meta bm on su.department = bm.id
    left join base_meta bm1 on bm1.id = su.company
    where su.valid_flag = 1
      <if test="departmentNameLike != null and departmentNameLike != ''">
          and bm.meta_value  like #{departmentNameLike}
src/main/java/com/nanometer/smartlab/entity/OpeUseFlow.java
@@ -30,19 +30,25 @@
    private SysReagent reagent;
    private String userName;
    private String articleNumber;
    private String laboratoryName;
    private String warehouseName;
    private String warehouseContainerName;
    private String laboratoryContainerName;
    private String warehouseContainerCode;
    private String laboratoryContainerCode;
    private String operatestateName;
    private String operateState;
    private String receiptNumber;
    //人员信息
    private String project;
    private String phone;
    private String department;
    private Integer applyNum;
    public String getWarehouseContainerCode() {
@@ -238,4 +244,38 @@
    public void setReceiptNumber(String receiptNumber) {
        this.receiptNumber = receiptNumber;
    }
    public Integer getApplyNum() {
        return applyNum;
    }
    public void setApplyNum(Integer applyNum) {
        this.applyNum = applyNum;
    }
    public String getProject() {
        return project;
    }
    public void setProject(String project) {
        this.project = project;
    }
    public String getDepartment() {
        return department;
    }
    public void setDepartment(String department) {
        this.department = department;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
}
src/main/java/com/nanometer/smartlab/entity/dto/PersonUseDetail.java
对比新文件
@@ -0,0 +1,98 @@
package com.nanometer.smartlab.entity.dto;
import java.io.Serializable;
public class PersonUseDetail implements Serializable {
    private String reagentId;
    private String articleNumber;
    private String productSn;
    private String reagentName;
    private String reagentFormat;
    private String perInfo;
    private String productHome;
    private String controlProducts;
    private String reagentCode;
    public String getReagentId() {
        return reagentId;
    }
    public void setReagentId(String reagentId) {
        this.reagentId = reagentId;
    }
    public String getArticleNumber() {
        return articleNumber;
    }
    public void setArticleNumber(String articleNumber) {
        this.articleNumber = articleNumber;
    }
    public String getProductSn() {
        return productSn;
    }
    public void setProductSn(String productSn) {
        this.productSn = productSn;
    }
    public String getReagentName() {
        return reagentName;
    }
    public void setReagentName(String reagentName) {
        this.reagentName = reagentName;
    }
    public String getReagentFormat() {
        return reagentFormat;
    }
    public void setReagentFormat(String reagentFormat) {
        this.reagentFormat = reagentFormat;
    }
    public String getPerInfo() {
        return perInfo;
    }
    public void setPerInfo(String perInfo) {
        this.perInfo = perInfo;
    }
    public String getProductHome() {
        return productHome;
    }
    public void setProductHome(String productHome) {
        this.productHome = productHome;
    }
    public String getControlProducts() {
        return controlProducts;
    }
    public void setControlProducts(String controlProducts) {
        this.controlProducts = controlProducts;
    }
    public String getReagentCode() {
        return reagentCode;
    }
    public void setReagentCode(String reagentCode) {
        this.reagentCode = reagentCode;
    }
}
src/main/java/com/nanometer/smartlab/service/OpeUseFlowService.java
@@ -3,7 +3,7 @@
import com.nanometer.smartlab.entity.OpeApplyReserve;
import com.nanometer.smartlab.entity.OpeUseFlow;
import com.nanometer.smartlab.entity.OpeWarehouseReserve;
import com.nanometer.smartlab.entity.SysReagent;
import com.nanometer.smartlab.entity.dto.PersonUseDetail;
import java.text.ParseException;
import java.util.Date;
@@ -23,10 +23,10 @@
    int getOpeUseFlowTotalCount(String reagentId, String reagentCode, Integer status, String userId);
    List<OpeUseFlow> getOpeUseFlowListByName(String houseName,String reagentId, String reagentCode, Integer status, String userId, Date startDate,Date endDate,
    List<OpeUseFlow> getOpeUseFlowListByName(String houseName,String reagentId, String reagentCode,String containerCode, Integer status, String userId, Date startDate,Date endDate,
            Integer first, Integer pageSize);
    int getOpeUseFlowTotalCountByName(String houseName, String reagentId, String reagentCode, Integer status, String userId, Date startDate,Date endDate);
    int getOpeUseFlowTotalCountByName(String houseName, String reagentId, String reagentCode,String containerCode, Integer status, String userId, Date startDate,Date endDate);
    boolean update(OpeUseFlow opeUseFlow);
@@ -47,4 +47,11 @@
    Map<String,String>  getApplyUserByReagentCode(String reagentCode);
    void updateReceiptNumberByCode2(List<OpeWarehouseReserve> codeTmp, String receiptNumber);
    int getPersonalUseInfoCount(String reagentCode,String userId, Date startTime, Date endTime, String receiptNumber, String department, String project);
    List<OpeUseFlow> getPersonalUseInfoList(String reagentCode,String userId, Date startTime, Date endTime, String receiptNumber, String department, String project, int first, int pageSize);
    List<PersonUseDetail> getApplyInfo(String receiptNumber);
}
src/main/java/com/nanometer/smartlab/service/OpeUseFlowServiceImpl.java
@@ -12,6 +12,7 @@
import com.nanometer.smartlab.dao.SysLaboratoryContainerDao;
import com.nanometer.smartlab.dao.SysWarehouseContainerDao;
import com.nanometer.smartlab.entity.*;
import com.nanometer.smartlab.entity.dto.PersonUseDetail;
import com.nanometer.smartlab.entity.enumtype.OperateStatus;
import com.nanometer.smartlab.util.Constants;
import org.apache.commons.lang.StringUtils;
@@ -135,7 +136,7 @@
    }
    @Transactional(propagation = Propagation.REQUIRED)
    public List<OpeUseFlow> getOpeUseFlowListByName(String houseName,String reagentId, String reagentCode, Integer status, String userId,
    public List<OpeUseFlow> getOpeUseFlowListByName(String houseName,String reagentId, String reagentCode,String containerCode, Integer status, String userId,
                                                    Date startDate,Date endDate,Integer first, Integer pageSize) {
        try {
            Map<String, Object> params = new HashMap<String, Object>();
@@ -175,6 +176,7 @@
            params.put("status", status);
            params.put("houseName", houseName);
            params.put("containerCode", containerCode);
            addParamByUserId(userId, params);
            params.put("first", first);
@@ -188,7 +190,7 @@
    }
    @Transactional(propagation = Propagation.REQUIRED)
    public int getOpeUseFlowTotalCountByName(String houseName,String reagentId, String reagentCode, Integer status, String userId,Date startDate,Date endDate) {
    public int getOpeUseFlowTotalCountByName(String houseName,String reagentId, String reagentCode,String containerCode, Integer status, String userId,Date startDate,Date endDate) {
        try {
            Map<String, Object> params = new HashMap<String, Object>();
            params.put("reagentName", reagentId);
@@ -226,6 +228,7 @@
            }
            params.put("houseName", houseName);
            params.put("containerCode", containerCode);
            addParamByUserId(userId, params);
            params.put("status", status);
@@ -454,4 +457,64 @@
        }
    }
    @Override
    public int getPersonalUseInfoCount(String reagentCode,String userId, Date startTime, Date endTime, String receiptNumber, String department, String project) {
        Map<String,Object> params = new HashMap<>();
        params.put("userId", userId);
        params.put("startTime", startTime);
        params.put("endTime", endTime);
        params.put("receiptNumber", receiptNumber);
        params.put("department", department);
        params.put("project", project);
        params.put("reagentCode", reagentCode);
        //操作状态位仓库领取
        Map<String, String> metaMap2 = new HashMap<>();
        metaMap2.put("groupId", "operate_status");
        metaMap2.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEOUT.getKey()));
        List<BaseMeta> baseMetas = baseMetaDao.getBaseMetaList(metaMap2);
        params.put("operatestate", baseMetas.get(0).getId());
        addParamByUserId(userId, params);
        return opeUseFlowDao.countPersonalUseInfo(params);
    }
    @Override
    public List<OpeUseFlow> getPersonalUseInfoList(String reagentCode,String userId, Date startTime, Date endTime, String receiptNumber, String department, String project, int first, int pageSize) {
        Map<String, Object> params = new HashMap<>();
        params.put("userId", userId);
        params.put("startTime", startTime);
        params.put("endTime", endTime);
        params.put("receiptNumber", receiptNumber);
        params.put("department", department);
        params.put("project", project);
        params.put("reagentCode", reagentCode);
        //操作状态位仓库领取
        Map<String, String> metaMap2 = new HashMap<>();
        metaMap2.put("groupId", "operate_status");
        metaMap2.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEOUT.getKey()));
        List<BaseMeta> baseMetas = baseMetaDao.getBaseMetaList(metaMap2);
        params.put("operatestate", baseMetas.get(0).getId());
        params.put("first", first);
        params.put("pageSize", pageSize);
        addParamByUserId(userId, params);
        return opeUseFlowDao.selectPersonalUseInfo(params);
    }
    @Override
    public List<PersonUseDetail> getApplyInfo(String receiptNumber) {
        Map<String,Object> params = new HashMap<>();
        Map<String, String> metaMap2 = new HashMap<>();
        metaMap2.put("groupId", "operate_status");
        metaMap2.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEOUT.getKey()));
        List<BaseMeta> baseMetas = baseMetaDao.getBaseMetaList(metaMap2);
        params.put("operatestate", baseMetas.get(0).getId());
        params.put("receiptNumber", receiptNumber);
        return  opeUseFlowDao.getApplyInfo(params);
    }
}
src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveService.java
@@ -16,8 +16,8 @@
                                                         Integer pageSize);
    int getOpeWarehouseReserveTotalCount(String reagentId, String supplierId);
    List<OpeWarehouseReserve> getOpeWarehouseReserveListByName(String reagentId, String supplierId, Integer first,
            Integer pageSize,String productSn);
    int getOpeWarehouseReserveTotalCountByName(String reagentId, String supplierId,String productSn);
            Integer pageSize,String productSn,String warehouseName);
    int getOpeWarehouseReserveTotalCountByName(String reagentId, String supplierId,String productSn,String warehouseName);
    OpeWarehouseReserve getOpeWarehouseReserve(String reagentId, String articleNumber);
    OpeWarehouseReserve getOpeWarehouseReserve2(String reagentId, String articleNumber,String warehouseId);
src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveServiceImpl.java
@@ -94,7 +94,7 @@
    @Transactional(propagation = Propagation.REQUIRED)
    public List<OpeWarehouseReserve> getOpeWarehouseReserveListByName(String reagentId, String supplierId, Integer first,
            Integer pageSize,String productSn) {
            Integer pageSize,String productSn,String warehouseName) {
        try {
            Map<String, Object> params = new HashMap<String, Object>();
            params.put("reagentName", reagentId);
@@ -102,6 +102,7 @@
            params.put("first", first);
            params.put("pageSize", pageSize);
            params.put("productSn", productSn);
            params.put("warehouseName", warehouseName);
            return this.opeWarehouseReserveDao.getOpeWarehouseReserveList(params);
        } catch (DataAccessException e) {
            logger.error(e.getMessage(), e);
@@ -111,12 +112,13 @@
    }
    @Transactional(propagation = Propagation.REQUIRED)
    public int getOpeWarehouseReserveTotalCountByName(String reagentId, String supplierId,String productSn) {
    public int getOpeWarehouseReserveTotalCountByName(String reagentId, String supplierId,String productSn,String warehouseName) {
        try {
            Map<String, Object> params = new HashMap<String, Object>();
            params.put("reagentName", reagentId);
            params.put("supplierId", supplierId);
            params.put("productSn", productSn);
            params.put("warehouseName", warehouseName);
            return this.opeWarehouseReserveDao.getOpeWarehouseReserveTotalCount(params);
        } catch (DataAccessException e) {
            logger.error(e.getMessage(), e);
src/main/java/com/nanometer/smartlab/service/SysLaboratoryContainerService.java
@@ -11,9 +11,10 @@
 */
public interface SysLaboratoryContainerService {
    List<SysLaboratoryContainer> getSysLaboratoryContainerList(String laboratoryType, String laboratoryName, String laboratoryId, Integer first, Integer pageSize);
    List<SysLaboratoryContainer> getSysLaboratoryContainerList(String laboratoryType, String laboratoryName, String laboratoryId
            ,String project,String controllerName, Integer first, Integer pageSize);
    List<SysLaboratoryContainer> getSysLaboratoryContainerList(String laboratoryId);
    int getSysLaboratoryContainerTotalCount(String laboratoryType, String laboratoryName,String laboratoryId);
    int getSysLaboratoryContainerTotalCount(String laboratoryType, String laboratoryName,String laboratoryId,String project,String controllerName);
    SysLaboratoryContainer getSysLaboratoryContainer(String id);
    SysLaboratoryContainer getSysLaboratoryContainerByContainerCode(String containerCode);
    SysLaboratoryContainer insertSysLaboratoryContainer(SysLaboratoryContainer sysLaboratory);
src/main/java/com/nanometer/smartlab/service/SysLaboratoryContainerServiceImpl.java
@@ -38,7 +38,7 @@
    @Transactional(propagation = Propagation.REQUIRED)
    public List<SysLaboratoryContainer> getSysLaboratoryContainerList(String laboratoryType, String laboratoryName,
            String laboratoryId, Integer first, Integer pageSize) {
            String laboratoryId,String project,String controllerName, Integer first, Integer pageSize) {
        try {
            Map<String, Object> params = new HashMap<String, Object>();
            if (StringUtils.isNotBlank(laboratoryType)) {
@@ -50,6 +50,8 @@
            if (StringUtils.isNotBlank(laboratoryId)) {
                params.put("laboratoryId", laboratoryId);
            }
            params.put("project", project);
            params.put("controllerName", controllerName);
            params.put("first", first);
            params.put("pageSize", pageSize);
            return this.sysLaboratoryContainerDao.getSysLaboratoryContainerList(params);
@@ -63,11 +65,11 @@
    @Transactional(propagation = Propagation.REQUIRED)
    public List<SysLaboratoryContainer> getSysLaboratoryContainerList(
            String laboratoryId) {
         return getSysLaboratoryContainerList(null,null,laboratoryId,null,null);
         return getSysLaboratoryContainerList(null,null,laboratoryId,null,null,null,null);
    }
    @Transactional(propagation = Propagation.REQUIRED)
    public int getSysLaboratoryContainerTotalCount(String laboratoryType, String laboratoryName, String laboratoryId) {
    public int getSysLaboratoryContainerTotalCount(String laboratoryType, String laboratoryName, String laboratoryId,String project,String controllerName) {
        try {
            Map<String, Object> params = new HashMap<String, Object>();
            if (StringUtils.isNotBlank(laboratoryType)) {
@@ -79,6 +81,8 @@
            if (StringUtils.isNotBlank(laboratoryId)) {
                params.put("laboratoryId", laboratoryId);
            }
            params.put("project", project);
            params.put("controllerName", controllerName);
            return this.sysLaboratoryContainerDao.getSysLaboratoryContainerTotalCount(params);
        } catch (DataAccessException e) {
            logger.error(e.getMessage(), e);
src/main/java/com/nanometer/smartlab/service/SysLaboratoryService.java
@@ -11,13 +11,13 @@
 */
public interface SysLaboratoryService {
    List<SysLaboratory> getSysLaboratoryList(String type, String name, Integer first, Integer pageSize);
    List<SysLaboratory> getSysLaboratoryList(String type, String name, String project, Integer first, Integer pageSize);
    List<SysLaboratory> getAllSysLaboratoryList();
    List<SysLaboratory> getSysLaboratoryListByDep(String depId);
    int getSysLaboratoryTotalCount(String type, String name);
    int getSysLaboratoryTotalCount(String type, String name,String project);
    boolean isSysLaboratoryExist(String barCode, String editId);
@@ -38,4 +38,8 @@
    List<Map> exportLabList(String type, String name);
    List<LaboratoryVo.Laboratory> getLaboratoryByProject(String project);
    List<SysLaboratory> getSysLaboratoryListByUserId(String userId);
}
src/main/java/com/nanometer/smartlab/service/SysLaboratoryServiceImpl.java
@@ -1,7 +1,9 @@
package com.nanometer.smartlab.service;
import com.nanometer.smartlab.dao.SysLaboratoryDao;
import com.nanometer.smartlab.dao.SysUserDao;
import com.nanometer.smartlab.entity.SysLaboratory;
import com.nanometer.smartlab.entity.SysUser;
import com.nanometer.smartlab.entity.dto.LaboratoryVo;
import com.nanometer.smartlab.exception.AlarmCode;
import com.nanometer.smartlab.exception.AlarmException;
@@ -38,9 +40,11 @@
    @Resource(name = "sysLaboratoryDao")
    SysLaboratoryDao sysLaboratoryDao;
    @Resource
    SysUserDao sysUserDao;
    @Transactional(propagation = Propagation.REQUIRED)
    public List<SysLaboratory> getSysLaboratoryList(String type, String name, Integer first, Integer pageSize) {
    public List<SysLaboratory> getSysLaboratoryList(String type, String name,String project,Integer first, Integer pageSize) {
        try {
            Map<String, Object> params = new HashMap<String, Object>();
            if (StringUtils.isNotBlank(type)) {
@@ -49,6 +53,7 @@
            if (StringUtils.isNotBlank(name)) {
                params.put("name", "%" + name + "%");
            }
            params.put("project", project);
            params.put("first", first);
            params.put("pageSize", pageSize);
            return this.sysLaboratoryDao.getSysLaboratoryList(params);
@@ -60,7 +65,7 @@
    }
    @Transactional(propagation = Propagation.REQUIRED)
    public int getSysLaboratoryTotalCount(String type, String name) {
    public int getSysLaboratoryTotalCount(String type, String name,String project) {
        try {
            Map<String, Object> params = new HashMap<String, Object>();
            if (StringUtils.isNotBlank(type)) {
@@ -69,6 +74,7 @@
            if (StringUtils.isNotBlank(name)) {
                params.put("name", "%" + name + "%");
            }
            params.put("project", project);
            return this.sysLaboratoryDao.getSysLaboratoryTotalCount(params);
        } catch (DataAccessException e) {
            logger.error(e.getMessage(), e);
@@ -257,7 +263,22 @@
        return sysLaboratoryDao.getLaboratoryByProject(project);
    }
    @Override
    @Override
    public List<SysLaboratory> getSysLaboratoryListByUserId(String userId) {
        //1.根据用户的课题组获取实验室,没有就按照部门
        SysUser user = sysUserDao.getSysUser(userId);
        Map<String,Object> params = new HashMap<>();
        params.put("project", user.getProject());
        List<SysLaboratory> list = sysLaboratoryDao.getSysLaboratoryList(params);
        if (list.size() < 1) {
            return this.getSysLaboratoryListByDep(user.getDepartment());
        }else{
            return list;
        }
    }
    @Override
    @Transactional(propagation = Propagation.REQUIRED)
    public List<SysLaboratory> getSysLaboratoryListByDep(String depId) {
        try {
src/main/java/com/nanometer/smartlab/service/SysProjectServiceImpl.java
@@ -163,7 +163,7 @@
    @Transactional
    public void importProject(FileUploadEvent event,SysUser currentUser) throws Exception {
        List<SysUser> userList = sysUserService.getSysUserList(null, null, null, null, null);
        List<SysUser> userList = sysUserService.getSysUserList(null, null, null, null, null,null,null);
        List<SysProject> sysProjectList = sysProjectDao.getSysProjectList(new HashMap());
        Map<String,String> userMap = new HashMap();
        Map<String,String> projectMap = new HashMap();
src/main/java/com/nanometer/smartlab/service/SysUserService.java
@@ -14,8 +14,8 @@
 */
public interface SysUserService {
    List<SysUser> getSysUserList(String arp, String name,String departmentName, Integer first, Integer pageSize);
    int getSysUserTotalCount(String arp, String name,String departmentName);
    List<SysUser> getSysUserList(String arp, String name,String departmentName,String project,String company,Integer first, Integer pageSize);
    int getSysUserTotalCount(String arp, String name,String departmentName,String project,String company);
    SysUser getSysUser(String id);
    SysUser getSysUserForSuppllier(String id);
    SysUser getSysUserByAccount(String account);
src/main/java/com/nanometer/smartlab/service/SysUserServiceImpl.java
@@ -43,7 +43,7 @@
    SysUserDao sysUserDao;
    @Transactional(propagation = Propagation.REQUIRED)
    public List<SysUser> getSysUserList(String arp, String name,String departmentName, Integer first, Integer pageSize) {
    public List<SysUser> getSysUserList(String arp, String name,String departmentName,String project,String company, Integer first, Integer pageSize) {
        try {
            Map<String, Object> params = new HashMap<String, Object>();
            if (StringUtils.isNotBlank(arp)) {
@@ -55,6 +55,8 @@
            if (StringUtils.isNotBlank(departmentName)) {
                params.put("departmentNameLike", "%" + departmentName + "%");
            }
            params.put("project", project);
            params.put("company", company);
            params.put("first", first);
            params.put("pageSize", pageSize);
            return this.sysUserDao.getSysUserList(params);
@@ -64,7 +66,7 @@
        }
    }
    @Transactional(propagation = Propagation.REQUIRED)
    public int getSysUserTotalCount(String arp, String name,String departmentName) {
    public int getSysUserTotalCount(String arp, String name,String departmentName,String project,String company) {
        try {
            Map<String, Object> params = new HashMap<String, Object>();
            if (StringUtils.isNotBlank(arp)) {
@@ -76,6 +78,8 @@
            if (StringUtils.isNotBlank(departmentName)) {
                params.put("departmentNameLike", "%" + departmentName + "%");
            }
            params.put("project", project);
            params.put("company", company);
            return this.sysUserDao.getSysUserTotalCount(params);
        } catch (DataAccessException e) {
            logger.error(e.getMessage(), e);
src/main/webapp/WEB-INF/config-mybatis.xml
@@ -15,7 +15,7 @@
        <setting name="useGeneratedKeys" value="false"/>
        <setting name="defaultExecutorType" value="SIMPLE"/>
        <setting name="defaultStatementTimeout" value="25000"/>
        <setting name="logImpl" value="STDOUT_LOGGING" />
        <setting name="logImpl" value="LOG4J" />
    </settings>
    <typeHandlers>
src/main/webapp/laboratory_container_mng.xhtml
@@ -12,7 +12,7 @@
    <h:form id="laboratoryContainerMngForm">
        <p:panel styleClass="center-header">
            <p:outputLabel styleClass="title" value="实验室临时存储库管理"></p:outputLabel>
            <p:panelGrid styleClass="filter" columns="5">
            <p:panelGrid styleClass="filter" columns="9">
                <p:outputLabel value="实验室类型:"></p:outputLabel>
                <p:selectOneMenu value="#{laboratoryContainerMngController.laboratoryType}">
                    <f:selectItem itemLabel="全部" itemValue="#{null}" noSelectionOption="true"></f:selectItem>
@@ -24,6 +24,12 @@
                <p:outputLabel value="实验室名:"></p:outputLabel>
                <p:inputText value="#{laboratoryContainerMngController.laboratoryName}"></p:inputText>
                <p:outputLabel value="课题名称:"></p:outputLabel>
                <p:inputText value="#{laboratoryContainerMngController.project}"></p:inputText>
                <p:outputLabel value="主控名称:"></p:outputLabel>
                <p:inputText value="#{laboratoryContainerMngController.controllerName}"></p:inputText>
                <p:commandLink styleClass="search" process="@form" update="@form"></p:commandLink>
            </p:panelGrid>
        </p:panel>
src/main/webapp/laboratory_mng.xhtml
@@ -12,7 +12,7 @@
    <h:form id="laboratoryMngForm">
        <p:panel styleClass="center-header">
            <p:outputLabel styleClass="title" value="实验室管理"></p:outputLabel>
            <p:panelGrid styleClass="filter" columns="5">
            <p:panelGrid styleClass="filter" columns="7">
                <p:outputLabel value="实验室类型:"></p:outputLabel>
                <p:selectOneMenu value="#{laboratoryMngController.type}">
                    <f:selectItem itemLabel="全部" itemValue="#{null}" noSelectionOption="true"></f:selectItem>
@@ -24,6 +24,9 @@
                <p:outputLabel value="实验室名:"></p:outputLabel>
                <p:inputText value="#{laboratoryMngController.name}"></p:inputText>
                <p:outputLabel value="课题组:"></p:outputLabel>
                <p:inputText value="#{laboratoryMngController.project}"></p:inputText>
                <p:commandLink styleClass="search" process="@form" update="@form"></p:commandLink>
            </p:panelGrid>
        </p:panel>
src/main/webapp/personal_use_info.xhtml
@@ -50,84 +50,272 @@
            <p:panel styleClass="center-header">
                <p:panelGrid styleClass="filter" columns="13">
                    <p:outputLabel value="试剂名称:"></p:outputLabel>
                    <p:inputText value="#{personalUseInfoController.reagentId}"></p:inputText>
                    <p:outputLabel value="单据编号:"/>
                    <p:inputText value="#{personalUseInfoController.receiptNumber}"/>
                    <p:outputLabel value="条形码:"></p:outputLabel>
                    <p:inputText value="#{personalUseInfoController.reagentCode}"></p:inputText>
                    <p:outputLabel value="申领人:"/>
                    <p:inputText value="#{personalUseInfoController.applyPerson}"/>
                    <p:outputLabel value="课题组:"/>
                    <p:inputText value="#{personalUseInfoController.project}"/>
                    <p:outputLabel value="部门:"/>
                    <p:inputText value="#{personalUseInfoController.department}"/>
                    <p:outputLabel for="startTime" value="开始时间:" />
                    <p:calendar id="startTime" value="#{personalUseInfoController.startTime}" pattern="yyyy-MM-dd HH:mm" />
                    <p:outputLabel for="endTime" value="截止时间:" />
                    <p:calendar id="endTime" value="#{personalUseInfoController.endTime}" pattern="yyyy-MM-dd HH:mm" />
                    <p:commandLink styleClass="search" process="@form" update="@form"></p:commandLink>
                    <p:commandButton value="更新时间" styleClass="store-btn" process="@form" actionListener="#{personalUseInfoController.updateTimeByCode}"
                    update="@form"></p:commandButton>
                    <p:commandButton value="取消领用" style="background: #b94a48; border: 1px solid #b94a48" styleClass="store-btn" process="@form" actionListener="#{personalUseInfoController.reagentReturn}"
                                     update="@form"></p:commandButton>
                </p:panelGrid>
                    <p:commandLink styleClass="search" process="@form" update="@form"/>
                    <p:commandButton value="生成领用单"
                                     style="background: #b94a48; border: 1px solid #b94a48"
                                     styleClass="store-btn"
                                     process="@form"
                                     actionListener="#{personalUseInfoController.generateReceipt}"
                                     update="printDialog"/>
                    <p:commandButton value="查看详情"
                                     styleClass="store-btn"
                                     update=":dialog,:dialogForm"
                                     actionListener="#{personalUseInfoController.detailInfo}"
                                     oncomplete="PF('dialog').show()"/>
            </p:panelGrid>
            </p:panel>
        </p:panel>
        <style>
        <style type="text/css">
            .ui-datatable tbody td{
                white-space: normal;
                word-break: break-all;
            }
        </style>
        <p:panel styleClass="center-body">
            <p:dataTable id="personalUseInfoDataTable" styleClass="data-table" resizableColumns="true"
                paginator="true" paginatorAlwaysVisible="false" paginatorPosition="bottom"
                lazy="true" value="#{personalUseInfoController.dataModel}" var="row"
                rowKey="#{row.id}" emptyMessage="无数据" rows="20" pageLinks="5" selection="#{personalUseInfoController.selectedList}">
                <p:column selectionMode="multiple" style="width: 30px;text-align: center;"/>
                <p:column headerText="试剂名称">
                    <h:outputText value="#{row.reagent.name}"></h:outputText>
            <p:dataTable id="personalUseInfoDataTable"
                         styleClass="data-table"
                         resizableColumns="true"
                         paginator="true"
                         paginatorAlwaysVisible="false"
                         paginatorPosition="bottom"
                         lazy="true"
                         value="#{personalUseInfoController.dataModel2}"
                         var="row"
                         rowKey="#{row.receiptNumber}"
                         selectionMode="single"
                         emptyMessage="无数据"
                         selection="#{personalUseInfoController.selectOne}"
                         rows="20" pageLinks="5">
<!--                <p:column selectionMode="multiple" style="width: 30px;text-align: center;"/>-->
                <p:column headerText="单据编号">
                    <h:outputText value="#{row.receiptNumber}"/>
                </p:column>
                <p:column headerText="试剂条形码">
                    <h:outputText value="#{row.reagentCode}"></h:outputText>
                <p:column headerText="申领人" width="80">
                    <h:outputText value="#{row.userName}"/>
                </p:column>
                <p:column headerText="厂家">
                    <h:outputText value="#{baseMetaService.getBaseMetaValue(row.reagent.productHome)}"></h:outputText>
                </p:column>
                <!--<p:column headerText="供应商">-->
                    <!--<h:outputText value="#{row.reagent.supplierName}"></h:outputText>-->
                <!--</p:column>-->
                <p:column headerText="规格">
                    <h:outputText
                        value="#{baseMetaService.getBaseMetaValue(row.reagent.reagentFormat)}"></h:outputText>
                <p:column headerText="领用数量" width="50">
                    <h:outputText value="#{row.applyNum}"/>
                </p:column>
                <p:column headerText="包装">
                    <h:outputText
                        value="#{''.concat(row.reagent.mainMetering).concat(baseMetaService.getBaseMetaValue(row.reagent.reagentUnit))}"></h:outputText>
                <p:column headerText="课题组">
                    <h:outputText value="#{row.project}"/>
                </p:column>
                <p:column headerText="批号">
                    <h:outputText value="#{row.articleNumber}"></h:outputText>
                <p:column headerText="部门">
                    <h:outputText value="#{row.department}"/>
                </p:column>
<!--                <p:column headerText="残存量">-->
<!--                    <h:outputText value="#{row.remainder}"></h:outputText>-->
<!--                </p:column>-->
                <p:column headerText="申领人">
                    <h:outputText value="#{row.userName}" />
                <p:column headerText="地点">
                    <h:outputText value="#{row.laboratoryName}"/>
                </p:column>
                <p:column headerText="领用时间">
                    <h:outputText value="#{row.updateTime}">
                        <f:convertDateTime pattern="yyyy-MM-dd HH:mm:ss" locale="zh_CN"></f:convertDateTime>
                    <h:outputText value="#{row.createTime}">
                        <f:convertDateTime pattern="yyyy-MM-dd HH:mm" locale="zh_CN"/>
                    </h:outputText>
                </p:column>
            </p:dataTable>
        </p:panel>
    </h:form>
    <p:dialog modal="true" header="试剂详情页面" appendTo="@(body)"
              id="dialog" widgetVar="dialog"
              resizable="false" width="1000">
        <h:form id="dialogForm">
            <p:dataTable styleClass="data-table"
                         paginator="true" paginatorAlwaysVisible="false" paginatorPosition="bottom"
                         value="#{personalUseInfoController.personUseDetail}" var="row" rowKey="#{row.id}"
                         emptyMessage="无数据"
                         style="margin:50px 0 80px 0"
                         rows="5" pageLinks="5">
                <p:column headerText="产品编号">
                    <h:outputText value="#{row.productSn}"/>
                </p:column>
                <p:column headerText="试剂名称">
                    <h:outputText value="#{row.reagentName}"/>
                </p:column>
                <p:column headerText="试剂条形码">
                    <h:outputText value="#{row.reagentCode}"/>
                </p:column>
                <p:column headerText="管制品">
                    <h:outputText value="#{row.controlProducts}"/>
                </p:column>
                <p:column headerText="规格型号">
                    <h:outputText value="#{row.reagentFormat}"/>
                </p:column>
                <p:column headerText="包装">
                    <h:outputText value="#{row.perInfo}"/>
                </p:column>
                <p:column headerText="厂家">
                    <h:outputText value="#{row.productHome}"/>
                </p:column>
                <p:column headerText="批号">
                    <h:outputText value="#{row.articleNumber}"/>
                </p:column>
            </p:dataTable>
            <p:panel styleClass="btn" style="text-align: right">
            </p:panel>
        </h:form>
    </p:dialog>
    <p:dialog id="apply-ui" header="领用单" widgetVar="printDialog" appendTo="@(body)" modal="true" resizable="false"
              width="1380">
        <div id="printTarget">
            <div style=" margin: 20mm 27mm 0mm 30mm;">
                <h:form id="printDialog" style="width: 1100px">
                    <p:outputPanel style="text-align: center;font-size: 14px;font-weight: 700;">#{personalUseInfoController.printTable['head']}</p:outputPanel>
                    <p:outputPanel style="text-align: center;font-size: 15px;margin: 20px;font-weight: 700;">#{personalUseInfoController.printTable['title']}</p:outputPanel>
                    <div>
                        <div style="display: flex;flex-direction: row;justify-content: flex-end;width: 1081px;">
                            <div style="width: 98px;">单据编号:</div>
                            <div style="width: 183px;">#{personalUseInfoController.printTable['receiptNumber']}</div>
                        </div>
                    </div>
                    <div style="margin: 10px 0;">
                        <div style="display: inline-flex;">
                            <div style="width: 100px;margin-left: 10px;">部门:</div>
                            <div style="width: 300px;">#{personalUseInfoController.printTable['department']}</div>
                        </div>
                        <div style="display: inline-flex;">
                            <div style="width: 100px;">申购人:</div>
                            <div style="width: 200px;padding-top: 1px;">#{personalUseInfoController.printTable['applyPerson']}</div>
                        </div>
                        <div style="display: inline-flex;float: right;">
                            <div style="width: 100px;">日期:</div>
                            <div style="width: 200px;padding-top: 1px;">#{personalUseInfoController.printTable['date']}</div>
                        </div>
                    </div>
                    <div style="margin-bottom: 20px;">
                        <div style="display: inline-flex;">
                            <div style="width: 100px;margin-left: 10px;">课题组</div>
                            <div style="width: 300px;">#{personalUseInfoController.printTable['project']}</div>
                        </div>
                        <div style="display: inline-flex;">
                            <div style="width: 100px;">使用地点:</div>
                            <div style="width: 200px;padding-top: 1px;">#{personalUseInfoController.printTable['lab']}</div>
                        </div>
                        <div style="display: inline-flex;float: right;">
                            <div style="width: 100px;">联系方式:</div>
                            <div style="width: 200px;">#{personalUseInfoController.printTable['phone']}</div>
                        </div>
                    </div>
                    <p:dataTable id="printTB" styleClass="apply-list"
                                 value="#{personalUseInfoController.printTable['applyList']}" var="row" >
                        <p:column headerText="产品编号" width="150px;" style="text-align: center;">
                            <h:outputText value="#{row.productCode}" />
                        </p:column>
                        <p:column headerText="产品名称" width="150px;" style="text-align: center;">
                            <h:outputText value="#{row.productName}" />
                        </p:column>
                        <p:column headerText="管制品" width="100px;" style="text-align: center;">
                            <h:outputText value="#{row.controlProducts}" />
                        </p:column>
                        <p:column headerText="规格型号" width="160px;" style="text-align: center;">
                            <h:outputText value="#{row.reagentFormat}" />
                        </p:column>
                        <p:column headerText="包装" width="90px;" style="text-align: center;">
                            <h:outputText value="#{row.mainMetering==null?'':row.mainMetering.replace('null','')}" />
                        </p:column>
                        <p:column headerText="数量" width="90px;" style="text-align: center;">
                            <h:outputText value="#{row.num}" />
                        </p:column>
                        <p:column headerText="备注" width="170px;" style="text-align: center;">
                            <h:outputText value="#{row.memo}" />
                        </p:column>
                    </p:dataTable>
                    <div style="margin-top: 20px;margin-right: 94px;">
                        <div style="display: flex;flex-direction: row;justify-content: flex-end;">
                            <div style="width: 100px">签收人:</div>
                            <div style="width: 100px"></div>
                        </div>
                    </div>
                    <div style="margin: 10px 94px 10px 0;">
                        <div style="display: flex;flex-direction: row;justify-content: flex-end;">
                            <div style="width: 100px">日期:</div>
                            <div style="width: 100px"></div>
                        </div>
                    </div>
                    <p:panel styleClass="btn  no-print">
                        <div class="div-btn cancel" id="cancel">关闭</div>
                        <div class="div-btn print" id="print">打印</div>
                        <script type="text/javascript" src="resources/js/print.js"/>
                        <script type="text/javascript">
                            $(function () {
                                $("#print").on("click", function () {
                                    jQuery.print('#printTarget')
                                })
                                $("#cancel").on("click", function () {
                                    $("#apply-ui a").click();
                                })
                            })
                        </script>
                    </p:panel>
                </h:form>
            </div>
        </div>
        <script type="text/javascript" src="resources/js/print.js"/>
        <script type="text/javascript">
            $(function () {
                $("#print").on("click", function () {
                    jQuery.print('#printTarget');
                });
                $("#cancel").on("click", function () {
                    $("#reagentUseFlowInfoForm\\:apply-ui a").click();
                })
            })
        </script>
    </p:dialog>
</ui:composition>
</html>
src/main/webapp/reagent_user_flow_info.xhtml
@@ -14,7 +14,7 @@
            <p:outputLabel styleClass="title" value="试剂流向追踪"></p:outputLabel>
            <p:panel styleClass="center-header">
                <p:panelGrid styleClass="filter" columns="11">
                <p:panelGrid styleClass="filter" columns="13">
                    <p:outputLabel value="开始时间:"></p:outputLabel>
                    <p:calendar value="#{opeUseFlowInfoController.startDate}"></p:calendar>
@@ -27,6 +27,9 @@
                    <p:outputLabel value="条形码:"></p:outputLabel>
                    <p:inputText value="#{opeUseFlowInfoController.reagentCode}"></p:inputText>
                    <p:outputLabel value="柜号:"></p:outputLabel>
                    <p:inputText value="#{opeUseFlowInfoController.containerCode}"></p:inputText>
                    <p:outputLabel value="场所名:"></p:outputLabel>
                    <p:inputText value="#{opeUseFlowInfoController.houseName}"></p:inputText>
                    <p:commandLink styleClass="search" process="@form" update="@form"></p:commandLink>
src/main/webapp/user_mng.xhtml
@@ -15,16 +15,22 @@
        <p:panel styleClass="center-header">
            <p:outputLabel styleClass="title" value="用户管理"></p:outputLabel>
            <p:panelGrid styleClass="filter" columns="7">
            <p:panelGrid styleClass="filter" columns="11">
                <p:outputLabel value="ARP号:"></p:outputLabel>
                <p:inputText value="#{userMngController.arp}"></p:inputText>
                <p:outputLabel value="姓名:"></p:outputLabel>
                <p:inputText value="#{userMngController.name}"></p:inputText>
                <p:outputLabel value="课题组:"></p:outputLabel>
                <p:inputText value="#{userMngController.project}"></p:inputText>
                <p:outputLabel value="部门:"></p:outputLabel>
                <p:inputText value="#{userMngController.departmentName}"></p:inputText>
                <p:outputLabel value="单位:"></p:outputLabel>
                <p:inputText value="#{userMngController.company}"></p:inputText>
                <p:commandLink styleClass="search" process="@form" update="@form"></p:commandLink>
            </p:panelGrid>
        </p:panel>
src/main/webapp/warehouse_stock_mng.xhtml
@@ -79,7 +79,7 @@
            <br/>
            <h:form id="warehouseStockMngForm">
                <p:panel styleClass="center-header">
                    <p:panelGrid styleClass="filter" columns="7">
                    <p:panelGrid styleClass="filter" columns="9">
                        <p:outputLabel value="试剂名称:"></p:outputLabel>
                        <p:inputText value="#{warehouseStockMngController.reagentId}"></p:inputText>
@@ -91,6 +91,9 @@
                                           var="item" itemLabel="#{item.name}" itemValue="#{item.id}"></f:selectItems>
                        </p:selectOneMenu>
                        <p:outputLabel value="仓库名:"></p:outputLabel>
                        <p:inputText value="#{warehouseStockMngController.warehouseName}"></p:inputText>
                        <p:outputLabel value="产品编号:"></p:outputLabel>
                        <p:inputText value="#{warehouseStockMngController.productSn}"></p:inputText>