From 98d33bd648770ce2f81a25d5fb16ead6610e3774 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期四, 17 七月 2025 10:39:43 +0800
Subject: [PATCH] #pda支持取消组托

---
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java |   96 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 95 insertions(+), 1 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 dd58017..5918f7c 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -27,6 +27,7 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -78,6 +79,8 @@
     private ManLocDetlService manLocDetlService;
     @Autowired
     private ManLocDetlMapper manLocDetlMapper;
+    @Autowired
+    private ReportToThirdService reportToThirdService;
 
     @Autowired
     private InventoryCheckOrderService inventoryCheckOrderService;
@@ -713,6 +716,53 @@
 
     }
 
+    @Override
+    public void combCancel(CombCancelParam param, Long userId) {
+        if (Cools.isEmpty(param.getBarcode())) {
+            throw new CoolException(BaseRes.PARAM);
+        }
+
+        List<WaitPakin> waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().
+                eq("zpallet", param.getBarcode()));
+        if (waitPakins.isEmpty()) {
+            throw new CoolException("鎵樼洏鏈粍鎵�");
+        }
+
+        for (WaitPakin waitPakin : waitPakins) {
+            if (!Cools.isEmpty(waitPakin.getOrderNo())) {
+                Order order = OrderInAndOutUtil.selectByNo(Boolean.TRUE, waitPakin.getOrderNo());
+                if (Cools.isEmpty(order)) {
+                    throw new CoolException("鍗曟嵁缂栧彿涓嶅瓨鍦�");
+                }
+
+                if (order.getSettle() > 2) {
+                    throw new CoolException("鍗曟嵁缂栧彿宸蹭綔涓氬畬鎴�");
+                }
+
+                // 璁㈠崟鏄庣粏鏁伴噺鏍¢獙
+                OrderDetl orderDetl = OrderInAndOutUtil.selectItem(Boolean.TRUE, order.getId(), waitPakin.getMatnr(), waitPakin.getBatch(), waitPakin.getBrand(), waitPakin.getStandby1(), waitPakin.getStandby2(), waitPakin.getStandby3(),
+                        waitPakin.getBoxType1(), waitPakin.getBoxType2(), waitPakin.getBoxType3());
+                if (orderDetl == null) {
+                    continue;
+                }
+
+                Double workQty = orderDetl.getWorkQty();
+                BigDecimal workQtyDecimal = new BigDecimal(workQty);
+                workQtyDecimal = workQtyDecimal.subtract(BigDecimal.valueOf(waitPakin.getAnfme()));
+
+                double newWorkQty = workQtyDecimal.doubleValue();
+                if (newWorkQty <= 0) {
+                    newWorkQty = 0D;
+                }
+                orderDetl.setWorkQty(newWorkQty);
+                orderDetlService.updateById(orderDetl);
+            }
+        }
+
+        waitPakinService.delete(new EntityWrapper<WaitPakin>()
+                .eq("zpallet", param.getBarcode()));
+    }
+
     // 鍟嗗搧涓婃灦
     @Override
     public void onSale(CombParam param) {
@@ -851,7 +901,10 @@
         List<WrkDetl> paramWrkDetls = JSON.parseArray(JSON.toJSONString(param.getWrkDetls()), WrkDetl.class);
         for (WrkDetl wrkDetl : paramWrkDetls) {
             String locNo = Cools.isEmpty(wrkMast.getLocNo()) ? wrkMast.getSourceLocNo() : wrkMast.getLocNo();
-            List<InventoryCheckOrderDetl> checkOrderDetls = inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>().eq("loc_no", locNo));
+            List<InventoryCheckOrderDetl> checkOrderDetls = inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>()
+                    .eq("loc_no", locNo)
+                    .eq("area", wrkDetl.getWrkNo())
+            );
             for (InventoryCheckOrderDetl checkOrderDetl : checkOrderDetls) {
                 if (wrkDetl.getMatnr().equals(checkOrderDetl.getMatnr()) && Cools.eq(wrkDetl.getBatch(), checkOrderDetl.getBatch())) {
                     checkOrderDetl.setCheckAnfme(wrkDetl.getAnfme());
@@ -1182,4 +1235,45 @@
             throw new CoolException(locDetl.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
         }
     }
+
+    @Override
+    public void checkOutSubmit(Integer orderId, Long userId) {
+        InventoryCheckOrder inventoryCheckOrder = inventoryCheckOrderService.selectOne(new EntityWrapper<InventoryCheckOrder>()
+                .eq("id", orderId));
+        if (inventoryCheckOrder == null) {
+            throw new CoolException("鐩樼偣鍗曚笉瀛樺湪");
+        }
+
+        if (!inventoryCheckOrder.getStatus().equals("1")) {
+            throw new CoolException("鐩樼偣鍗曠姸鎬佸凡涓婃姤");
+        }
+
+        List<InventoryCheckOrderDetl> checkOrderDetlList = inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>()
+                .eq("order_no", inventoryCheckOrder.getOrderNo())
+        );
+        if (checkOrderDetlList.isEmpty()) {
+            throw new CoolException("鐩樼偣鍗曟棤鐗╂枡鏄庣粏");
+        }
+        InventoryCheckOrderDetl orderDetl = checkOrderDetlList.get(0);
+
+        List<InventoryCheckOrderDetl> checkOrderDetls = inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>()
+                .eq("matnr", orderDetl.getMatnr())
+                .eq("batch", orderDetl.getBatch())
+        );
+
+        boolean complete = true;
+        for (InventoryCheckOrderDetl checkOrderDetl : checkOrderDetls) {
+            if (!checkOrderDetl.getStatus().equals("2")) {
+                complete = false;
+            }
+        }
+        if (complete) {
+            boolean result = reportToThirdService.reportCheckOrder(orderDetl.getMatnr(), orderDetl.getBatch());
+            if (!result) {
+                throw new CoolException("鐩樼偣鍗曚笂鎶ュけ璐�");
+            }
+        }else {
+            throw new CoolException("鐩樼偣鏈畬鎴愭棤娉曚笂鎶�");
+        }
+    }
 }

--
Gitblit v1.9.1