| | |
| | | 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.*; |
| | |
| | | private SysSupplierService sysSupplierService; |
| | | @Resource |
| | | private OpeOrderService opeOrderService; |
| | | @Resource |
| | | private BaseMetaDao baseMetaDao; |
| | | |
| | | @Resource |
| | | private MenuController menuController; |
| | |
| | | this.opeWarehouseReserveService.reagentDStore3(opeList,userId); |
| | | |
| | | //扣库存 |
| | | opeWarehouseReserveService.btWarehouseReserveReduce(list2); |
| | | opeWarehouseReserveService.btWarehouseReserveReduce(list2,userId); |
| | | } |
| | | |
| | | for(int i=0;i<list2.size();i++){ |
| | |
| | | } |
| | | 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)); |
| | | } |
| | | |
| | | |
| | |
| | | //{ |
| | | // 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; |
| | |
| | | } |
| | | |
| | | public String getLaboratoryContainerId() { |
| | | |
| | | return laboratoryContainerId; |
| | | } |
| | | |
| | |
| | | </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 |
| | |
| | | |
| | | int updateOpeWarehouseReserve(OpeWarehouseReserve opeWarehouseReserve); |
| | | |
| | | int updateOpeWarehouseReserve2(OpeWarehouseReserve opeWarehouseReserve); |
| | | |
| | | OpeWarehouseReserve getOpeWarehouseReserve(OpeWarehouseReserve opeWarehouseReserve); |
| | | |
| | | List<OpeWarehouseReserve> selectByReId(String id); |
| | |
| | | <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> |
| | | |
| | |
| | | </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> |
| | | |
| | |
| | | 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 |
| | |
| | | private BigDecimal applyPrice; |
| | | private int stockFlag; |
| | | private String stockFlagValue; |
| | | //用于存放仓库 和仓库货柜的id |
| | | private String warehouseId; |
| | | private String warehouseContainerId; |
| | | |
| | | public String getStockFlagValue() { |
| | | return stockFlagValue; |
| | |
| | | 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; |
| | |
| | | private String endReagentCode2; |
| | | private String applyCode; |
| | | private String orderCode; |
| | | //新增 货柜id |
| | | private String containerId; |
| | | |
| | | |
| | | /** |
| | | * 补贴条码的暂存领用数量 |
| | |
| | | this.useNum = useNum; |
| | | } |
| | | |
| | | public String getContainerId() { |
| | | return containerId; |
| | | } |
| | | |
| | | public void setContainerId(String containerId) { |
| | | this.containerId = containerId; |
| | | } |
| | | } |
| | |
| | | |
| | | 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); |
| | | |
| | |
| | | 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()); |
| | |
| | | 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()); |
| | |
| | | ope.setReserve(opeApplyReserve.getArrivalNum()); |
| | | //仓库 |
| | | ope.setWarehouseId(opeApplyReserve.getHouseId()); |
| | | //仓库的货柜号 |
| | | ope.setContainerId(opeApplyReserve.getContainerId()); |
| | | //试剂 |
| | | ope.setReagentId(opeApplyReserve.getReagent().getId()); |
| | | //订单编号 |
| | |
| | | } |
| | | |
| | | @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) { |
| | |
| | | List<OpeWarehouseReserve> reserveList = opeWarehouseReserveService |
| | | .selectWarehouseByRidAndArticleNumberAndWarehouse(reagentId, owr.getArticleNumber(), owr.getWarehouseId()); |
| | | Integer numLeave = owr.getUseNum(); |
| | | |
| | | for (OpeWarehouseReserve warehouseReserve:reserveList){ |
| | | //库存大于剩余领用-》直接扣完 |
| | | int usedNum = 0; |
| | |
| | | // 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) { |
| | |
| | | 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())) { |
| | |
| | | |
| | | <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()}" /> |
| | |
| | | </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;"> |
| | |
| | | </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()}" /> |
| | |
| | | </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;"> |