From 12714c71c7737e21c3268b44a39f8f02befc5cb5 Mon Sep 17 00:00:00 2001 From: gdg <764716047@qq.com> Date: 星期一, 18 一月 2021 09:55:45 +0800 Subject: [PATCH] 模块:仓库库存管理 修改:订单入库流程 提出:秦老师 --- src/main/java/com/nanometer/smartlab/service/OpeApplyServiceImpl.java | 69 ++++++++++++++++++++++++++++++++++ 1 files changed, 69 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/nanometer/smartlab/service/OpeApplyServiceImpl.java b/src/main/java/com/nanometer/smartlab/service/OpeApplyServiceImpl.java index 1f61365..b056160 100644 --- a/src/main/java/com/nanometer/smartlab/service/OpeApplyServiceImpl.java +++ b/src/main/java/com/nanometer/smartlab/service/OpeApplyServiceImpl.java @@ -3,6 +3,7 @@ import com.nanometer.smartlab.dao.OpeApplyDao; import com.nanometer.smartlab.entity.OpeApply; import com.nanometer.smartlab.entity.OpeApplyReserve; +import com.nanometer.smartlab.entity.OpeOrder; import com.nanometer.smartlab.entity.SysUser; import com.nanometer.smartlab.entity.enumtype.ApplyStatus; import com.nanometer.smartlab.entity.enumtype.SeeFlag; @@ -40,6 +41,12 @@ @Resource(name = "opeApplyDao") OpeApplyDao opeApplyDao; + @Resource + OpeOrderService opeOrderService; + @Resource + OpeReagentStatusService opeReagentStatusService; + @Resource + OpeWarehouseReserveService opeWarehouseReserveService; @Resource private SysUserService sysUserService; @@ -633,4 +640,66 @@ params.put("oldReId",oldReId); this.opeApplyDao.updateByReId(params); } + + @Override + public OpeApplyReserve getOpeApplyDetail(String id) { + return opeApplyDao.getOpeApplyDetail(id); + } + + @Override + public void updateOpeApplyInfo(ApplyStatus storage, String consigneeId, Timestamp arrivalTime, String applyId) { + Map<String,Object> params = new HashMap(); + params.put("status", storage); + params.put("consigneeId", consigneeId); + params.put("arrivalTime", arrivalTime); + params.put("applyId", applyId); + opeApplyDao.updateOpeApplyInfo(params); + } + + @Override + @Transactional + public void orderInputWarehouse(List<OpeApplyReserve> opeApplyList,String consigneeId,Timestamp arrivalTime) { + for (OpeApplyReserve opeApplyReserve:opeApplyList) { + //0.1获取该申购单的订单 + OpeOrder oo = opeOrderService.getOrder(opeApplyReserve.getId()); + if (oo == null) { + throw new BusinessException(ExceptionEnumCode.ORDER_ERROR,"订单不存在"); + } + //0.2检查条码->得到试剂条码列表 + List<String> codeList = opeReagentStatusService + .checkReagentCode(opeApplyReserve.getStartReagentCode2(), opeApplyReserve.getEndReagentCode2(), opeApplyReserve.getArrivalNum()); + //1.入库 + if (codeList == null){ + //无条码入库 不需要增加状态和流向 + //1.1库存表增加 + opeWarehouseReserveService.insertOpeWarehouseReserve2(opeApplyReserve, oo); + }else{ + //条码入库 + assert codeList.size() > 0; + //1.1入库(库存表增加) + opeWarehouseReserveService.insertOpeWarehouseReserve2(opeApplyReserve, oo); + //1.2试剂状态表增加,流向增加 + opeReagentStatusService.orderInputWarehouseReagentStatusAndUseFlow(opeApplyReserve,consigneeId,codeList,oo); + } + //2.更改申购单所属订单状态(判断子订单是否全部完成) + //2.1更改该申购单的状态,收货人和到货时间 + this.updateOpeApplyInfo(ApplyStatus.STORAGE,consigneeId,arrivalTime, opeApplyReserve.getId()); + //2.2更改订单状态 + List<OpeApply> oas = opeOrderService.getOpeApplyListByOrder(oo.getId()); + assert oas.size() > 0; + //子订单是否全部入库,是则父单为完成,否则未完成 + boolean flag = oas.stream().allMatch(oa -> oa.getStatus() == ApplyStatus.STORAGE); + oo.setConsigneeUserId(consigneeId); + oo.setArrivalTime(arrivalTime); + if (flag){ + oo.setStatus(ApplyStatus.FINISHED); + opeOrderService.updateOpeOrderStatus(oo); + }else{ + oo.setStatus(ApplyStatus.UNCOMPLETED); + opeOrderService.updateOpeOrder(oo); + } + + } + } + } -- Gitblit v1.9.2