add
gdg
2021-01-26 2de091af749c000cad15288a72938fd57e25d262
add
已修改10个文件
218 ■■■■ 文件已修改
src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.xml 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/dao/OpeWarehouseReserveDao.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/dao/OpeWarehouseReserveDao.xml 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/entity/OpeApply.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/entity/OpeWarehouseReserve.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveServiceImpl.java 69 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/warehouse_reagent_use.xhtml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/warehouse_reagent_use_person.xhtml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java
@@ -1,15 +1,12 @@
package com.nanometer.smartlab.controller;
import com.nanometer.smartlab.dao.BaseMetaDao;
import com.nanometer.smartlab.dao.OpeApplyDao;
import com.nanometer.smartlab.dao.OpeReagentStatusDao;
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.ApplyStatus;
import com.nanometer.smartlab.entity.enumtype.ArrivalStatus;
import com.nanometer.smartlab.entity.enumtype.SeeFlag;
import com.nanometer.smartlab.entity.enumtype.ValidFlag;
import com.nanometer.smartlab.entity.enumtype.*;
import com.nanometer.smartlab.exception.BusinessException;
import com.nanometer.smartlab.exception.ExceptionEnumCode;
import com.nanometer.smartlab.service.*;
@@ -74,6 +71,8 @@
    private SysSupplierService sysSupplierService;
    @Resource
    private OpeOrderService opeOrderService;
    @Resource
    private BaseMetaDao baseMetaDao;
    @Resource
    private MenuController menuController;
@@ -1148,7 +1147,7 @@
                this.opeWarehouseReserveService.reagentDStore3(opeList,userId);
                //扣库存
                opeWarehouseReserveService.btWarehouseReserveReduce(list2);
                opeWarehouseReserveService.btWarehouseReserveReduce(list2,userId);
            }
            for(int i=0;i<list2.size();i++){
@@ -1550,8 +1549,38 @@
                }
                this.opeWarehouseReserveService.reagentDStore4(opeList,userId);
                for(int i=0;i<list2.size();i++){
                    List<String> reagentCodes = opeReagentStatusService
                            .generateReagentCode(list2.get(i).getStartReagentCode2(), list2.get(i).getEndReagentCode2());
                    Integer selectNum = list2.get(i).getSelectNum();
                    for (int j = 0;j<selectNum;j++){
                        // 试剂使用情况入库insert
                        OpeUseFlow opeUseFlow = new OpeUseFlow();
                        opeUseFlow.setReagentCode(reagentCodes.get(0));
                        opeUseFlow.setStatus(ArrivalStatus.WAREHOUSE);
                        //仓库信息
                        List<OpeWarehouseReserve> warehouseReserveInfo = opeWarehouseReserveService
                                .selectWarehouseByRidAndArticleNumberAndWarehouse(list2.get(i).getReagent().getId()
                                        , list2.get(i).getArticleNumber()
                                        , list2.get(i).getWarehouseId());
                        opeUseFlow.setHouseId(list2.get(i).getWarehouseId());
                        opeUseFlow.setContainerId(warehouseReserveInfo.get(0).getContainerId());
                        opeUseFlow.setCreateTime(warehouseReserveInfo.get(0).getUpdateTime());
                        opeUseFlow.setUserId(userId);
                        opeUseFlow.setRemainder(list2.get(i).getReagent().getMainMetering()!=null?list2.get(i).getReagent().getMainMetering():new BigDecimal(0));
                        opeUseFlow.setStoreType(StoreType.DIRECTSTORE);
                        Map<String, String> metaMap = new HashMap<>();
                        metaMap.put("groupId", "operate_status");
                        metaMap.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEIN.getKey()));
                        List<BaseMeta> baseMetaList = baseMetaDao.getBaseMetaList(metaMap);
                        opeUseFlow.setOperateState(baseMetaList.get(0).getId());
                        this.opeUseFlowService.insertOpeUseFlow(opeUseFlow);
                        reagentCodes.remove(0);
                    }
                    list2.get(i).setReserve(list2.get(i).getReserve()-list2.get(i).getSelectNum());
                    opeWarehouseReserveDao.updateOpeWarehouseReserve(list2.get(i));
                    opeWarehouseReserveDao.updateOpeWarehouseReserve2(list2.get(i));
                }
@@ -2664,8 +2693,9 @@
                //{
                //    this.oriLaboratoryId = this.laboratory.get(0).getId();
                //}
                this.laboratoryId=this.laboratory.get(0).getId();
                this.laboratoryContainers = this.sysLaboratoryContainerService.getSysLaboratoryContainerList(this.laboratory.get(0).getId());
                this.laboratoryId= laboratoryId==null?this.laboratory.get(0).getId():laboratoryId;
                this.laboratoryContainers = this.sysLaboratoryContainerService.getSysLaboratoryContainerList(laboratoryId);
            }else {
                this.oriLaboratoryId = null;
                this.laboratoryContainers = null;
@@ -2704,6 +2734,7 @@
    }
    public String getLaboratoryContainerId() {
        return laboratoryContainerId;
    }
src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.xml
@@ -116,9 +116,29 @@
    </sql>
    <select id="getOpeUseFlowList" parameterType="java.util.Map" resultMap="OpeUseFlow">
        <include refid="queryColumns"/>
        select oa.*,
        sr.*,
        ors.article_number as articleNumber,
        sr.id as reagentId,
        su.name as userName,
        ss.name as supplierName,
        l.name as laboratoryName,
        w.name as warehouseName,
        lc.name as warehouseContainerName,
        wc.name as laboratoryContainerName,
        lc.container_code as warehouseContainerCode,
        wc.container_code as laboratoryContainerCode,
        bm1.meta_value as operatestateName
        from ope_use_flow as oa
       <include refid="queryJoins"/>
        left join ope_reagent_status ors on ors.reagent_code = oa.reagent_code
        left join sys_reagent sr on ors.reagent_id = sr.id
        left join sys_supplier as ss on sr.supplier_id = ss.id
        left join sys_user as su on oa.user_id = su.id
        left join sys_warehouse_container wc on wc.id = oa.container_id
        left join sys_warehouse w on w.id = wc.warehouse_id
        left join sys_laboratory_container lc on lc.id = oa.container_id
        left join sys_laboratory l on l.id = lc.laboratory_id
        left join base_meta bm1 on bm1.id = oa.operatestate
        where oa.valid_flag = 1
        <include refid="queryWhereSql"/>
           order by oa.create_time desc
src/main/java/com/nanometer/smartlab/dao/OpeWarehouseReserveDao.java
@@ -24,6 +24,8 @@
    int updateOpeWarehouseReserve(OpeWarehouseReserve opeWarehouseReserve);
    int updateOpeWarehouseReserve2(OpeWarehouseReserve opeWarehouseReserve);
    OpeWarehouseReserve getOpeWarehouseReserve(OpeWarehouseReserve opeWarehouseReserve);
    List<OpeWarehouseReserve> selectByReId(String id);
src/main/java/com/nanometer/smartlab/dao/OpeWarehouseReserveDao.xml
@@ -7,6 +7,7 @@
    <result property="reserve" column="reserve"></result>
    <result property="updateTime" column="update_time"></result>
      <result property="warehouseId" column="warehouseId"></result>
      <result property="containerId" column="container_id"></result>
      <result property="warehouseName" column="warehouseName"></result>
    <result property="validFlag" column="valid_flag" typeHandler="com.nanometer.smartlab.entity.handler.ValidFlagHandler"></result>
@@ -102,16 +103,23 @@
  </select>
    <insert id="insertOpeWarehouseReserve" parameterType="com.nanometer.smartlab.entity.OpeWarehouseReserve">
        insert into ope_warehouse_reserve(id, reagent_id, article_number, reserve, valid_flag, update_time,warehouseId)
        values (#{id}, #{reagentId}, #{articleNumber}, #{reserve}, 1, now(),#{warehouseId})
        insert into ope_warehouse_reserve(id, reagent_id, article_number, reserve, valid_flag, update_time,warehouseId,container_id)
        values (#{id}, #{reagentId}, #{articleNumber}, #{reserve}, 1, now(),#{warehouseId},#{containerId})
    </insert>
    <insert id="insertOpeWarehouseReserve2" parameterType="com.nanometer.smartlab.entity.OpeWarehouseReserve">
        insert into ope_warehouse_reserve(id, reagent_id, article_number, reserve, valid_flag, update_time,warehouseId,apply_code,order_code)
        values (#{id}, #{reagentId}, #{articleNumber}, #{reserve}, 1, now(),#{warehouseId},#{applyCode},#{orderCode})
        insert into ope_warehouse_reserve(id, reagent_id, article_number, reserve, valid_flag, update_time,warehouseId,apply_code,order_code,container_id)
        values (#{id}, #{reagentId}, #{articleNumber}, #{reserve}, 1, now(),#{warehouseId},#{applyCode},#{orderCode},#{containerId})
    </insert>
    <update id="updateOpeWarehouseReserve" parameterType="com.nanometer.smartlab.entity.OpeWarehouseReserve">
        update ope_warehouse_reserve set reagent_id=#{reagentId},warehouseId=#{warehouseId}, article_number=#{articleNumber}, reserve=#{reserve}, update_time=now()
        update ope_warehouse_reserve set reagent_id=#{reagentId},warehouseId=#{warehouseId}, article_number=#{articleNumber}, reserve=#{reserve}, update_time=now(),
        container_id=#{containerId}
        where id=#{id}
    </update>
    <update id="updateOpeWarehouseReserve2" parameterType="com.nanometer.smartlab.entity.OpeWarehouseReserve">
        update ope_warehouse_reserve
         set reserve=#{reserve}
        where id=#{id}
    </update>
@@ -150,7 +158,9 @@
        owr.warehouseId,
        sw.NAME warehouseName,
        owr.reserve,
        owr.article_number
        owr.article_number,
        owr.container_id,
        owr.update_time
        FROM
        ope_warehouse_reserve owr
        LEFT JOIN sys_warehouse sw ON sw.id = owr.warehouseId
src/main/java/com/nanometer/smartlab/entity/OpeApply.java
@@ -99,6 +99,9 @@
    private BigDecimal applyPrice;
    private int stockFlag;
    private String stockFlagValue;
    //用于存放仓库 和仓库货柜的id
    private String warehouseId;
    private String warehouseContainerId;
    public String getStockFlagValue() {
        return stockFlagValue;
@@ -356,7 +359,23 @@
        this.ownerDepartment = ownerDepartment;
    }
    @Override
    public String getWarehouseId() {
        return warehouseId;
    }
    public void setWarehouseId(String warehouseId) {
        this.warehouseId = warehouseId;
    }
    public String getWarehouseContainerId() {
        return warehouseContainerId;
    }
    public void setWarehouseContainerId(String warehouseContainerId) {
        this.warehouseContainerId = warehouseContainerId;
    }
    @Override
    public int compareTo(OpeApply o) {
        if(this.projectOwner == null || o.getProjectOwner() == null){
            return 1;
src/main/java/com/nanometer/smartlab/entity/OpeWarehouseReserve.java
@@ -30,6 +30,9 @@
    private String endReagentCode2;
    private String applyCode;
    private String orderCode;
    //新增 货柜id
    private String containerId;
    /**
     * 补贴条码的暂存领用数量
@@ -189,5 +192,11 @@
        this.useNum = useNum;
    }
    public String getContainerId() {
        return containerId;
    }
    public void setContainerId(String containerId) {
        this.containerId = containerId;
    }
}
src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveService.java
@@ -42,7 +42,7 @@
    List<OpeWarehouseReserve> selectWarehouseByReagentIdAndArticleNumber(String id,String articleNumber,boolean flag);
    void btWarehouseReserveReduce(List<OpeApplyReserve> opeList);
    void btWarehouseReserveReduce(List<OpeApplyReserve> opeList,String userId);
    List<OpeWarehouseReserve> selectWarehouseByRidAndArticleNumberAndWarehouse(String id, String articleNumber, String warehouseId);
src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveServiceImpl.java
@@ -508,23 +508,7 @@
                    opeReagentStatus.setStoreType(StoreType.DIRECTSTORE);
                    this.opeReagentStatusService.insertOpeReagentStatus(opeReagentStatus);
                    // 试剂使用情况入库insert
                    OpeUseFlow opeUseFlow = new OpeUseFlow();
                    opeUseFlow.setReagentCode(opeReagentStatus.getReagentCode());
                    opeUseFlow.setStatus(opeReagentStatus.getStatus());
                    opeUseFlow.setHouseId(opeReagentStatus.getHouseId());
                    opeUseFlow.setContainerId(opeReagentStatus.getContainerId());
                    opeUseFlow.setUserId(opeReagentStatus.getUserId());
                    opeUseFlow.setPlace(opeReagentStatus.getPlace());
                    opeUseFlow.setRemainder(opeApply.getReagent().getMainMetering()!=null?opeApply.getReagent().getMainMetering():new BigDecimal(0));
                    opeUseFlow.setStoreType(StoreType.DIRECTSTORE);
                    Map<String, String> metaMap = new HashMap<>();
                    metaMap.put("groupId", "operate_status");
                    metaMap.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEIN.getKey()));
                    List<BaseMeta> baseMetaList = baseMetaDao.getBaseMetaList(metaMap);
                    opeUseFlow.setOperateState(baseMetaList.get(0).getId());
                    this.opeUseFlowService.insertOpeUseFlow(opeUseFlow);
                    // 试剂使用情况领用insert
                    OpeUseFlow ouf=new OpeUseFlow();
                    ouf.setReagentCode(opeReagentStatus.getReagentCode());
@@ -572,23 +556,7 @@
                    opeReagentStatus.setStoreType(StoreType.DIRECTSTORE);
                    this.opeReagentStatusService.insertOpeReagentStatus(opeReagentStatus);
                    // 试剂使用情况入库insert
                    OpeUseFlow opeUseFlow = new OpeUseFlow();
                    opeUseFlow.setReagentCode(opeReagentStatus.getReagentCode());
                    opeUseFlow.setStatus(opeReagentStatus.getStatus());
                    opeUseFlow.setHouseId(opeReagentStatus.getHouseId());
                    opeUseFlow.setContainerId(opeReagentStatus.getContainerId());
                    opeUseFlow.setUserId(opeReagentStatus.getUserId());
                    opeUseFlow.setPlace(opeReagentStatus.getPlace());
                    opeUseFlow.setRemainder(opeApply.getReagent().getMainMetering()!=null?opeApply.getReagent().getMainMetering():new BigDecimal(0));
                    opeUseFlow.setStoreType(StoreType.DIRECTSTORE);
                    Map<String, String> metaMap = new HashMap<>();
                    metaMap.put("groupId", "operate_status");
                    metaMap.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEIN.getKey()));
                    List<BaseMeta> baseMetaList = baseMetaDao.getBaseMetaList(metaMap);
                    opeUseFlow.setOperateState(baseMetaList.get(0).getId());
                    this.opeUseFlowService.insertOpeUseFlow(opeUseFlow);
                    // 试剂使用情况领用insert
                    OpeUseFlow ouf=new OpeUseFlow();
                    ouf.setReagentCode(opeReagentStatus.getReagentCode());
@@ -637,6 +605,8 @@
            ope.setReserve(opeApplyReserve.getArrivalNum());
            //仓库
            ope.setWarehouseId(opeApplyReserve.getHouseId());
            //仓库的货柜号
            ope.setContainerId(opeApplyReserve.getContainerId());
            //试剂
            ope.setReagentId(opeApplyReserve.getReagent().getId());
            //订单编号
@@ -705,13 +675,13 @@
    }
    @Override
    public void btWarehouseReserveReduce(List<OpeApplyReserve> opeList) {
    public void btWarehouseReserveReduce(List<OpeApplyReserve> opeList,String userId) {
        if (opeList.size() < 1) {
            return;
        }
        for (OpeApplyReserve oar : opeList) {
            String reagentId = oar.getReagent().getId();
            List<String> reagentCodes = new ArrayList<>(oar.getReagentCode());
            //开始库存扣除
            List<OpeWarehouseReserve> cacheUpdateList = oar.getCacheUpdateList();
            for (OpeWarehouseReserve owr : cacheUpdateList) {
@@ -719,6 +689,7 @@
                List<OpeWarehouseReserve> reserveList = opeWarehouseReserveService
                        .selectWarehouseByRidAndArticleNumberAndWarehouse(reagentId, owr.getArticleNumber(), owr.getWarehouseId());
                Integer numLeave = owr.getUseNum();
                for (OpeWarehouseReserve warehouseReserve:reserveList){
                    //库存大于剩余领用-》直接扣完
                    int usedNum = 0;
@@ -731,6 +702,35 @@
                    //    warehouseReserve.setReserve(0);
                        usedNum =  warehouseReserve.getReserve();
                    }
                    //更新流向,加入一条
                    if (usedNum > 0) {
                        for (int i = 0; i < usedNum; i++) {
                            // 试剂使用情况入库insert TODO 流向需要当时的时间和地点
                            OpeUseFlow opeUseFlow = new OpeUseFlow();
                            opeUseFlow.setReagentCode(reagentCodes.get(0));
                            opeUseFlow.setStatus(ArrivalStatus.WAREHOUSE);
                            opeUseFlow.setUserId(userId);
                            //仓库地点
                            opeUseFlow.setHouseId(warehouseReserve.getWarehouseId());
                            opeUseFlow.setContainerId(warehouseReserve.getContainerId());
                            opeUseFlow.setRemainder(oar.getReagent().getMainMetering()!=null?oar.getReagent().getMainMetering():new BigDecimal(0));
                            //入库时间
                            opeUseFlow.setCreateTime(warehouseReserve.getUpdateTime());
                            opeUseFlow.setStoreType(StoreType.DIRECTSTORE);
                            Map<String, String> metaMap = new HashMap<>();
                            metaMap.put("groupId", "operate_status");
                            metaMap.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEIN.getKey()));
                            List<BaseMeta> baseMetaList = baseMetaDao.getBaseMetaList(metaMap);
                            opeUseFlow.setOperateState(baseMetaList.get(0).getId());
                            this.opeUseFlowService.insertOpeUseFlow(opeUseFlow);
                            reagentCodes.remove(0);
                        }
                    }
                    //更新库存
                    opeWarehouseReserveService.updateBtReserve(warehouseReserve.getId(),usedNum);
                    if (numLeave < 1) {
@@ -826,6 +826,7 @@
                opeWarehouseReserve.setArticleNumber(opeApply.getArticleNumber());
                opeWarehouseReserve.setReserve(0);
                opeWarehouseReserve.setWarehouseId(opeApply.getHouseId());
                opeWarehouseReserve.setContainerId(opeApply.getContainerId());
            }
            opeWarehouseReserve.setReserve(opeWarehouseReserve.getReserve() + opeApply.getArrivalNum());
            if (StringUtils.isBlank(opeWarehouseReserve.getId())) {
src/main/webapp/warehouse_reagent_use.xhtml
@@ -205,15 +205,15 @@
    <p:dialog id="apply-ui" header="领用单" widgetVar="printDialog" appendTo="@(body)" modal="true" resizable="false">
        <div id="printTarget">
            <div style=" margin: 10mm 10mm 0mm 2mm;">
            <div style="margin: 11mm 27mm 0mm 30mm;">
        <h:form id="printDialog" style="width: 1100px">
            <p:outputPanel style="text-align: center;font-size: 14px;font-weight: 700;">#{warehouseStockMngController.printTable['head']}</p:outputPanel>
            <p:outputPanel style="text-align: center;font-size: 15px;margin: 20px;font-weight: 700;">#{warehouseStockMngController.printTable['title']}</p:outputPanel>
            <div>
                <div style="display: flex;flex-direction: row;justify-content: flex-end;margin-right: 17px;">
                    <div style="width: 100px;">单据编号:</div>
                    <div>
                <div style="display: flex;flex-direction: row;justify-content: flex-end;width: 1081px;">
                    <div style="width: 98px;">单据编号:</div>
                    <div style="width:183px;">
                        <!--                                <input style="border: 0;" value="#{warehouseStockMngController.printTable['receiptNumber']}"/>-->
                        <p:inputText value="#{warehouseStockMngController.receiptNumber}" valueChangeListener="#{warehouseStockMngController.receiptNumberChange}">
                            <p:ajax event="valueChange" listener="#{warehouseStockMngController.receiptNumberChange()}"  />
@@ -273,7 +273,7 @@
        </p:column>
        <p:column headerText="包装" width="90px;" style="text-align: center;">
            <h:outputText value="#{row.mainMetering==null?'':row.mainMetering}" />
            <h:outputText value="#{row.mainMetering==null?'':row.mainMetering.replace('null','')}" />
        </p:column>
        <p:column headerText="数量" width="90px;" style="text-align: center;">
src/main/webapp/warehouse_reagent_use_person.xhtml
@@ -115,15 +115,15 @@
    </h:form>
    <p:dialog id="apply-ui" header="领用单" widgetVar="printDialog" appendTo="@(body)" modal="true" resizable="false">
        <div id="printTarget">
            <div style=" margin: 10mm 10mm 0mm 2mm;">
            <div style=" margin: 11mm 27mm 0mm 30mm;">
                <h:form id="printDialog" style="width: 1100px">
                    <p:outputPanel style="text-align: center;font-size: 14px;font-weight: 700;">#{warehouseStockMngController.printTable['head']}</p:outputPanel>
                    <p:outputPanel style="text-align: center;font-size: 15px;margin: 20px;font-weight: 700;">#{warehouseStockMngController.printTable['title']}</p:outputPanel>
                    <div>
                        <div style="display: flex;flex-direction: row;justify-content: flex-end;margin-right: 17px;">
                            <div style="width: 100px;">单据编号:</div>
                            <div>
                        <div style="display: flex;flex-direction: row;justify-content: flex-end;width: 1081px;">
                            <div style="width: 98px;">单据编号:</div>
                            <div style="width: 183px;">
<!--                                <input style="border: 0;" value="#{warehouseStockMngController.printTable['receiptNumber']}"/>-->
                                <p:inputText value="#{warehouseStockMngController.receiptNumber}" valueChangeListener="#{warehouseStockMngController.receiptNumberChange}">
                                    <p:ajax event="valueChange" listener="#{warehouseStockMngController.receiptNumberChange()}"  />
@@ -184,7 +184,7 @@
                        </p:column>
                        <p:column headerText="包装" width="90px;" style="text-align: center;">
                            <h:outputText value="#{row.mainMetering==null?'':row.mainMetering}" />
                            <h:outputText value="#{row.mainMetering==null?'':row.mainMetering.replace('null','')}" />
                        </p:column>
                        <p:column headerText="数量" width="90px;" style="text-align: center;">