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