From b67bafd95dc17136ac0eab068ba51cd55e1669f3 Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期五, 13 六月 2025 20:08:12 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java |  111 ++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 88 insertions(+), 23 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index 2238830..596b72d 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -13,11 +13,12 @@
 import com.zy.asrs.mapper.LocMastMapper;
 import com.zy.asrs.mapper.ManLocDetlMapper;
 import com.zy.asrs.service.*;
+import com.zy.asrs.utils.MathUtils;
 import com.zy.asrs.utils.OrderInAndOutUtil;
 import com.zy.common.model.DetlDto;
 import com.zy.common.model.enums.WorkNoType;
 import com.zy.common.service.CommonService;
-import com.zy.nc.entity.NccJcQilibcBarcodeflowWms;
+import com.zy.common.utils.Synchro;
 import com.zy.nc.service.NccJcQilibcBarcodeflowWmsService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,6 +27,7 @@
 
 import javax.annotation.Resource;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 绉诲姩绔湇鍔℃牳蹇冪被
@@ -47,6 +49,8 @@
     private BasDevpService basDevpService;
     @Autowired
     private WrkMastService wrkMastService;
+    @Autowired
+    private WorkService workService;
     @Autowired
     private WrkDetlService wrkDetlService;
     @Autowired
@@ -73,6 +77,12 @@
     private ManLocDetlService manLocDetlService;
     @Autowired
     private ManLocDetlMapper manLocDetlMapper;
+
+    @Autowired
+    private InventoryCheckOrderService inventoryCheckOrderService;
+
+    @Autowired
+    private InventoryCheckOrderDetlService inventoryCheckOrderDetlService;
 
     @Autowired
     private AdjDetlService adjDetlService;
@@ -523,7 +533,7 @@
         ArrayList<PickMatParam> maps = new ArrayList<>();
         for (OrderDetl orderDetl : list) {
             //鍓╀綑鍙敤鏁伴噺
-            double count = orderDetl.getAnfme() - orderDetl.getWorkQty();
+            double count = MathUtils.subtract(orderDetl.getAnfme(), orderDetl.getWorkQty());
             if (count <= 0) {
                 continue;
             }
@@ -546,9 +556,15 @@
         if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) {
             throw new CoolException(BaseRes.PARAM);
         }
-//        if (param.getCombMats().size() > 1) {
+        List<String> codes = param.getCombMats().stream().map(CombParam.CombMat::getTiaoma).collect(Collectors.toList());
+        Set<String> sets = new HashSet<>();
+        if (codes.stream().anyMatch(item -> !sets.add(item))) {
+            throw new CoolException("鏉$爜閲嶅鎵爜浜�");
+        }
+        //        if (param.getCombMats().size() > 1) {
 //            throw new CoolException("璇锋彁鍙栦竴涓晢鍝侊紝鎴栬�呭埛鏂伴噸鏂扮粍鎵橈紒");
 //        }
+
         // 鍒ゆ柇鏄惁鏈夌浉鍚屾潯鐮佺殑鏁版嵁
         if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>().
                 eq("zpallet", param.getBarcode()).eq("io_status", "N")) > 0) {
@@ -572,13 +588,14 @@
         Date now = new Date();
 
         // 鏃犲崟缁勬墭
-        if (Cools.isEmpty(param.getOrderNo())) {
+        if (Cools.isEmpty(param.getCombMats().get(0).getOrderNo())) {
 
             // 鐢熸垚鍏ュ簱閫氱煡妗�
             List<DetlDto> detlDtos = new ArrayList<>();
             param.getCombMats().forEach(elem -> {
                 DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getBrand(), elem.getStandby1(), elem.getStandby2(), elem.getStandby3(),
                         elem.getBoxType1(), elem.getBoxType2(), elem.getBoxType3(), elem.getAnfme());
+                detlDto.setWeight(elem.getWeight());
                 if (DetlDto.has(detlDtos, detlDto)) {
                     DetlDto one = DetlDto.findDto(detlDtos, detlDto);
                     assert one != null;
@@ -596,6 +613,7 @@
                 }
                 WaitPakin waitPakin = new WaitPakin();
                 waitPakin.sync(mat);
+                waitPakin.setWeight(detlDto.getWeight());
                 waitPakin.setBatch(detlDto.getBatch());
                 waitPakin.setZpallet(param.getBarcode());   // 鎵樼洏鐮�
                 waitPakin.setIoStatus("N");     // 鍏ュ嚭鐘舵��
@@ -605,6 +623,15 @@
                 waitPakin.setAppeTime(now);
                 waitPakin.setModiUser(userId);
                 waitPakin.setModiTime(now);
+                waitPakin.setBoxType1(detlDto.getBoxType1());
+                waitPakin.setBoxType2(detlDto.getBoxType2());
+                waitPakin.setBoxType3(detlDto.getBoxType3());
+                waitPakin.setStandby1(detlDto.getStandby1());
+                waitPakin.setStandby2(detlDto.getStandby2());
+                waitPakin.setStandby3(detlDto.getStandby3());
+                if ("Y".equals(param.getTkFlag())) {
+                    waitPakin.setTkFlag(detlDto.getTkFlag());
+                }
                 if (!waitPakinService.insert(waitPakin)) {
                     throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
                 }
@@ -612,18 +639,20 @@
             // 鍏宠仈缁勬墭
         } else {
 //            Order order = orderService.selectByNo(param.getOrderNo());
-            Order order = OrderInAndOutUtil.selectByNo(Boolean.TRUE, param.getOrderNo());
-            if (Cools.isEmpty(order) || order.getSettle() > 2) {
-                throw new CoolException("鍗曟嵁缂栧彿宸茶繃鏈�");
-            }
+
             // 鐢熸垚鍏ュ簱閫氱煡妗�
             List<DetlDto> detlDtos = new ArrayList<>();
 
             param.getCombMats().forEach(elem -> {
-
+                Order order = OrderInAndOutUtil.selectByNo(Boolean.TRUE, elem.getOrderNo());
+                if (Cools.isEmpty(order)) {
+                    throw new CoolException("鍗曟嵁缂栧彿涓嶅瓨鍦�");
+                }
+                if (order.getSettle() > 2) {
+                    throw new CoolException("鍗曟嵁缂栧彿宸蹭綔涓氬畬鎴�");
+                }
 
                 // 璁㈠崟鏄庣粏鏁伴噺鏍¢獙
-//                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), elem.getBatch());
                 OrderDetl orderDetl = OrderInAndOutUtil.selectItem(Boolean.TRUE, order.getId(), elem.getMatnr(), elem.getBatch(), elem.getBrand(), elem.getStandby1(), elem.getStandby2(), elem.getStandby3(),
                         elem.getBoxType1(), elem.getBoxType2(), elem.getBoxType3());
                 if (elem.getAnfme() > orderDetl.getEnableQty()) {
@@ -637,6 +666,8 @@
                         elem.getBoxType1(), elem.getBoxType2(), elem.getBoxType3(), elem.getAnfme());
                 DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getBrand(), elem.getStandby1(), elem.getStandby2(), elem.getStandby3(),
                         elem.getBoxType1(), elem.getBoxType2(), elem.getBoxType3(), elem.getAnfme());
+                detlDto.setOrderNo(elem.getOrderNo());
+                detlDto.setWeight(elem.getWeight());
                 if (DetlDto.has(detlDtos, detlDto)) {
                     DetlDto one = DetlDto.findDto(detlDtos, detlDto);
                     assert one != null;
@@ -644,6 +675,8 @@
                 } else {
                     detlDtos.add(detlDto);
                 }
+
+                OrderInAndOutUtil.updateOrder(Boolean.TRUE, order.getId(), 2L, userId);
             });
             for (DetlDto detlDto : detlDtos) {
                 Mat mat = matService.selectByMatnr(detlDto.getMatnr());
@@ -652,7 +685,7 @@
                 }
                 WaitPakin waitPakin = new WaitPakin();
                 waitPakin.sync(mat);
-                waitPakin.setOrderNo(order.getOrderNo());   // 鍗曟嵁缂栧彿
+                waitPakin.setOrderNo(detlDto.getOrderNo());   // 鍗曟嵁缂栧彿
                 waitPakin.setBatch(detlDto.getBatch());     // 搴忓垪鐮�
                 waitPakin.setZpallet(param.getBarcode());   // 鎵樼洏鐮�
                 waitPakin.setIoStatus("N");     // 鍏ュ嚭鐘舵��
@@ -662,12 +695,19 @@
                 waitPakin.setAppeTime(now);
                 waitPakin.setModiUser(userId);
                 waitPakin.setModiTime(now);
+                waitPakin.setBoxType1(detlDto.getBoxType1());
+                waitPakin.setBoxType2(detlDto.getBoxType2());
+                waitPakin.setBoxType3(detlDto.getBoxType3());
+                waitPakin.setStandby1(detlDto.getStandby1());
+                waitPakin.setStandby2(detlDto.getStandby2());
+                waitPakin.setStandby3(detlDto.getStandby3());
+                waitPakin.setWeight(detlDto.getWeight());
                 if (!waitPakinService.insert(waitPakin)) {
                     throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
                 }
             }
 //            orderService.updateSettle(order.getId(), 2L, userId);
-            OrderInAndOutUtil.updateOrder(Boolean.TRUE, order.getId(), 2L, userId);
+
         }
 
     }
@@ -731,14 +771,14 @@
     @Override
     @Transactional
     public void adjust(MobileAdjustParam param, Long userId) {
-        BasDevp basDevp = basDevpService.selectById(param.getStaNo());
-        if (null == basDevp || basDevp.getWrkNo() == null) {
-            throw new CoolException(param.getStaNo() + "鐩樼偣绔欐棤鏁�");
-        }
-        if (!param.getWrkNo().equals(basDevp.getWrkNo())) {
-            throw new CoolException(param.getStaNo() + "鐩樼偣绔欐洿鏂帮紝璇烽噸鏂版绱�");
-        }
-        WrkMast wrkMast = wrkMastService.selectById(param.getWrkNo());
+//        BasDevp basDevp = basDevpService.selectById(param.getStaNo());
+//        if (null == basDevp || basDevp.getWrkNo() == null) {
+//            throw new CoolException(param.getStaNo() + "鐩樼偣绔欐棤鏁�");
+//        }
+//        if (!param.getWrkNo().equals(basDevp.getWrkNo())) {
+//            throw new CoolException(param.getStaNo() + "鐩樼偣绔欐洿鏂帮紝璇烽噸鏂版绱�");
+//        }
+        WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarcode());
         if (wrkMast.getWrkSts() < 10) {
             throw new CoolException("鐩樼偣鏃犳晥锛屼换鍔″凡鐩樼偣鍐嶅叆搴�");
         }
@@ -746,7 +786,10 @@
         List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
 
         List<WrkDetl> list = param.getWrkDetls();
+        LocDetlAdjustParam adjustParam = new LocDetlAdjustParam();
+        List<LocDetlAdjustParam.LocDetlAdjust> locDetlAdjusts = new ArrayList<>();
 
+        adjustParam.setLocNo(wrkMast.getSourceLocNo());
         // 淇敼鏁伴噺
         Iterator<WrkDetl> iterator = wrkDetls.iterator();
         while (iterator.hasNext()) {
@@ -765,6 +808,7 @@
                             throw new CoolException(wrkMast.getWrkNo() + "鐩樼偣浠诲姟锛�" + wrkDetl.getMatnr() + "鍟嗗搧锛�" + wrkDetl.getBatch() + "鎵瑰彿淇敼鏁伴噺澶辫触");
                         }
                     }
+                    //濡傛灉宸茬粡鎷f枡鍥炲簱锛屽氨闇�瑕佸彇locNo瀛楁
                     iterator.remove();
                     iterator1.remove();
                 }
@@ -796,15 +840,36 @@
             if (!wrkDetlService.insert(wrkDetl)) {
                 throw new CoolException("娣诲姞" + wrkMast.getWrkNo() + "鐩樼偣浠诲姟锛�" + wrkDetl.getMatnr() + "鍟嗗搧锛�" + wrkDetl.getBatch() + "鎵瑰彿浠诲姟鏄庣粏澶辫触");
             }
+            String locNo = Cools.isEmpty(wrkMast.getLocNo()) ? wrkMast.getSourceLocNo() : wrkMast.getLocNo();
+            List<InventoryCheckOrderDetl> checkOrderDetls = inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>().eq("loc_no", locNo));
+            for (InventoryCheckOrderDetl checkOrderDetl : checkOrderDetls) {
+                if (wrkDetl.getMatnr().equals(checkOrderDetl.getMatnr()) && Cools.eq(wrkDetl.getBatch(), checkOrderDetl.getBatch())) {
+                    checkOrderDetl.setCheckAnfme(wrkDetl.getAnfme());
+                    checkOrderDetl.setStatus("2");
+                } else {
+                    InventoryCheckOrderDetl newDetl = new InventoryCheckOrderDetl();
+                    Synchro.Copy(wrkDetl, newDetl);
+                    newDetl.setAnfme(0D);
+                    newDetl.setCheckAnfme(wrkDetl.getAnfme());
+                    newDetl.setOrderNo(checkOrderDetl.getOrderNo());
+                    newDetl.setStatus("2");
+                }
+            }
         }
-
+        List<WrkDetl> wrkDetls1 = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
+        for (WrkDetl wrkDetl : wrkDetls1) {
+            LocDetlAdjustParam.LocDetlAdjust locDetlAdjust = new LocDetlAdjustParam.LocDetlAdjust(wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme());
+            locDetlAdjusts.add(locDetlAdjust);
+        }
         // 淇敼鐩樼偣浠诲姟涓绘。鐘舵��
-        wrkMast.setFullPlt(wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()).size() != 0 ? "Y" : "N");
+        wrkMast.setFullPlt(wrkDetls1.size() != 0 ? "Y" : "N");
         wrkMast.setModiTime(now);
         wrkMast.setModiUser(userId);
         if (!wrkMastService.updateById(wrkMast)) {
             throw new CoolException("淇敼鐩樼偣浠诲姟涓绘。澶辫触");
         }
+        adjustParam.setList(locDetlAdjusts);
+        workService.adjustLocDetl2(adjustParam, userId);
 
     }
 
@@ -1012,7 +1077,7 @@
                 }
 
                 //鍙嚭搴撴暟閲� = 璁㈠崟鏁伴噺 - 浣滀笟涓暟閲�
-                Double outQty = orderDetl.getAnfme() - orderDetl.getWorkQty();
+                Double outQty = MathUtils.subtract(orderDetl.getAnfme(), orderDetl.getWorkQty());
                 if (outQty <= 0) {
                     break;
                 }

--
Gitblit v1.9.1