From d6c65a4e3d1ca7d9a7bd6806c99fee035d0a44eb Mon Sep 17 00:00:00 2001
From: 李宇 <986321569@qq.com>
Date: 星期三, 27 一月 2021 16:54:34 +0800
Subject: [PATCH] 合并

---
 src/main/java/com/nanometer/smartlab/service/OpeApplyServiceImpl.java |   86 ++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 84 insertions(+), 2 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..4f09cda 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;
@@ -519,12 +526,15 @@
 	}
 
     @Override
-    public int getOpeApplyReserveTotalCountByNameFor(String id,String reagentName, String personName) {
+    public int getOpeApplyReserveTotalCountByNameFor(String id,String reagentName, String personName,String productSn,String applyCode,Integer status) {
         try {
             Map<String, Object> params = new HashMap<String, Object>();
             params.put("reagentName", reagentName);
             params.put("personName", personName);
             params.put("userId",id);
+            params.put("productSn",productSn);
+            params.put("applyCode",applyCode);
+            params.put("status",status);
             return this.opeApplyDao.getOpeApplyReserveTotalCountFor(params);
         } catch (DataAccessException e) {
             logger.error(e.getMessage(), e);
@@ -534,7 +544,7 @@
     }
     @Override
     public List<OpeApplyReserve> getOpeApplyReserveListByNameFor(String id,String reagentName, String personName, Integer first,
-                                                              Integer pageSize) {
+                                                              Integer pageSize,String productSn,String applyCode,Integer status) {
         try {
             Map<String, Object> params = new HashMap<String, Object>();
             params.put("reagentName", reagentName);
@@ -542,6 +552,9 @@
             params.put("userId",id);
             params.put("first", first);
             params.put("pageSize", pageSize);
+            params.put("productSn",productSn);
+            params.put("applyCode",applyCode);
+            params.put("status",status);
             return this.opeApplyDao.getOpeApplyReserveListFor(params);
         } catch (DataAccessException e) {
             logger.error(e.getMessage(), e);
@@ -633,4 +646,73 @@
         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.STORAGE);
+                opeOrderService.updateOpeOrderStatus(oo);
+            }else{
+                oo.setStatus(ApplyStatus.UNCOMPLETED);
+                opeOrderService.updateOpeOrder(oo);
+            }
+
+        }
+    }
+    /**
+    * 补贴条码更新订单的领用数量
+    */
+    @Override
+    public void btUpdateApplyAndOrder(List<OpeApply> opeList) {
+
+    }
+
 }

--
Gitblit v1.9.2