From be5373a650a8a40e808ab1664e59c60807809a7c Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期日, 21 十二月 2025 08:50:58 +0800
Subject: [PATCH] 1

---
 src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java |  273 ++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 261 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
index 6b0c862..b19268d 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -99,6 +99,9 @@
     @Autowired
     private ApiLogService apiLogService;
 
+    @Autowired
+    private WrkDetlLogService wrkDetlLogService;
+
     @Resource
     private MatMapper matMapper;
 
@@ -116,6 +119,14 @@
 
     @Resource
     private BasCrnpMapper basCrnpMapper;
+
+    @Resource
+    private ReviewService reviewService;
+
+
+    @Resource
+    private ReviewDetlService reviewDetlService;
+
 
     @Override
     @Transactional
@@ -1145,12 +1156,12 @@
     public R kthl(KthlParam param) {
 
         // 鑾峰彇妯″紡涓虹數鑴戞ā寮忥紝鏃犱换鍔$殑鍫嗗灈鏈哄垪琛�:闃叉鍒嗛厤鍒板爢鍨涙満涓嶅彲鐢�
-        List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts",3)
-                .eq("wrk_no",0).eq("in_enable","Y").eq("out_enable","Y"));
+        List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts", 3)
+                .eq("wrk_no", 0).eq("in_enable", "Y").eq("out_enable", "Y"));
         if (basCrnps.isEmpty()) {
             // 閮芥湁浠诲姟鍒欒幏鍙栫數鑴戞ā寮忕殑鍫嗗灈鏈哄垪琛�
-            basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts",3).eq("in_enable","Y")
-                    .eq("out_enable","Y"));
+            basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts", 3).eq("in_enable", "Y")
+                    .eq("out_enable", "Y"));
         }
         WrkMast exist = wrkMastService.selectOne(
                 new EntityWrapper<WrkMast>()
@@ -1194,7 +1205,7 @@
             throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
         }
         // 杩斿洖GWCS鐩爣淇℃伅
-        pushStaNoToGwcs(param.getPalletizingNo(),wrkMast.getSourceStaNo(),workNo,param.getBarcode(),"浜屾ゼ绌烘墭鍥炴祦鎺ㄩ�乬wcs");
+        pushStaNoToGwcs(param.getPalletizingNo(), wrkMast.getSourceStaNo(), workNo, param.getBarcode(), "浜屾ゼ绌烘墭鍥炴祦鎺ㄩ�乬wcs");
 
         return R.ok("绌烘墭鍥炴祦璇锋眰鎴愬姛");
     }
@@ -1227,7 +1238,7 @@
 
     @Override
     @Transactional
-    public R gwmsGenerateInventory(GwmsGenerateInventoryDto param) {
+    public synchronized R gwmsGenerateInventory(GwmsGenerateInventoryDto param) {
 
         if (Cools.isEmpty(param)) {
             throw new CoolException("璇锋眰鍙傛暟鏈夎锛�" + param);
@@ -1241,6 +1252,62 @@
             int barcodeCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("barcode", param.getBarcode()));
             if (barcodeCount > 0) {
                 throw new CoolException("宸ヤ綔妗e凡瀛樺湪璇ユ墭鐩樼爜锛�" + param.getBarcode());
+            }
+            if (!Cools.isEmpty(param.getMatList())) {
+                HashMap<String, Object> xx = new HashMap<>();
+                List<GwmsGenerateInventoryDto.MatList> matList = param.getMatList();
+                for (GwmsGenerateInventoryDto.MatList obj : matList) {
+                    int barcodeCount2 = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("brand", obj.getPackageGroupNo()));
+                    if (barcodeCount2 > 0) {
+                        throw new CoolException("鍖呰缁勫彿宸插瓨鍦ㄥ伐浣滄。锛堣緭閫佺嚎锛夛細" + obj.getPackageGroupNo());
+                    }
+                    int zpalletCount2 = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("brand", obj.getPackageGroupNo()));
+                    if (zpalletCount2 > 0) {
+                        throw new CoolException("鍖呰缁勫彿宸插瓨鍦細" + obj.getPackageGroupNo());
+                    }
+
+                    // 鍗峰彿
+                    HashMap<String, Object> yy = new HashMap<>();
+                    // 绠卞彿
+                    HashMap<String, Object> zz = new HashMap<>();
+                    List<GwmsGenerateInventoryDto.Rolls> rolls = obj.getRolls();
+                    for (GwmsGenerateInventoryDto.Rolls roll : rolls) {
+                        barcodeCount2 = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("model", roll.getRollNo()));
+                        if (barcodeCount2 > 0) {
+                            throw new CoolException("鍗峰彿宸插瓨鍦ㄥ伐浣滄。锛堣緭閫佺嚎锛夛細" + roll.getRollNo());
+                        }
+                        zpalletCount2 = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("model", roll.getRollNo()));
+                        if (zpalletCount2 > 0) {
+                            throw new CoolException("鍗峰彿宸插瓨鍦ㄥ簱瀛橈細" + roll.getRollNo());
+                        }
+
+                        barcodeCount2 = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("unit", roll.getBoxNo()));
+                        if (barcodeCount2 > 0) {
+                            throw new CoolException("绠卞彿宸插瓨鍦ㄥ伐浣滄。锛堣緭閫佺嚎锛夛細" + roll.getBoxNo());
+                        }
+                        zpalletCount2 = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("unit", roll.getBoxNo()));
+                        if (zpalletCount2 > 0) {
+                            throw new CoolException("绠卞彿宸插瓨鍦ㄥ簱瀛橈細" + roll.getBoxNo());
+                        }
+
+                        if (yy.get(roll.getRollNo()) != null) {
+                            throw new CoolException("鏄庣粏涓瓨鍦�2鏉$浉鍚岀殑鍗峰彿锛�" + roll.getRollNo());
+                        } else {
+                            yy.put(roll.getRollNo(), roll.getRollNo());
+                        }
+
+                        if (zz.get(roll.getBoxNo()) != null) {
+                            throw new CoolException("鏄庣粏涓瓨鍦�2鏉$浉鍚岀殑绠卞彿锛�" + roll.getBoxNo());
+                        } else {
+                            zz.put(roll.getBoxNo(), roll.getBoxNo());
+                        }
+                    }
+                    if (xx.get(obj.getPackageGroupNo()) != null) {
+                        throw new CoolException("鏄庣粏涓瓨鍦�2鏉$浉鍚岀殑鍖呰缁勫彿锛�" + obj.getPackageGroupNo());
+                    } else {
+                        xx.put(obj.getPackageGroupNo(), obj);
+                    }
+                }
             }
         }
         LocTypeDto locTypeDto = new LocTypeDto();
@@ -1364,7 +1431,7 @@
         if (wrkMast == null) {
             throw new CoolException("涓嶅瓨鍦ㄨ宸ヤ綔鍙凤細" + param.getWorkNo());
         }
-        if (wrkMast.getWrkSts() == 3||wrkMast.getWrkSts() == 4) {
+        if (wrkMast.getWrkSts() == 3 || wrkMast.getWrkSts() == 4) {
             throw new CoolException("宸ヤ綔妗g姸鎬佷笉瀵癸細" + param.getWorkNo());
         }
         wrkMast.setWrkSts(2L);
@@ -1516,7 +1583,7 @@
         return "鍑哄簱缁撴灉涓婃姤鎴愬姛";
     }
 
-    private void ckjgsbPushMes(WrkMast wrkMast, List<WrkDetl> wrkDetls) {
+    public void ckjgsbPushMes(WrkMast wrkMast, List<WrkDetl> wrkDetls) {
         GwmsGenerateInventoryDto gwmsGenerateInventoryDto = new GwmsGenerateInventoryDto();
         gwmsGenerateInventoryDto.setWarehouseType(4);
         gwmsGenerateInventoryDto.setBarcode(wrkMast.getBarcode());
@@ -1543,8 +1610,8 @@
                 matList.setStockType(wrkMast.getStaNo() == 2041 ? "杩斾慨鍑哄簱" : "鎴愬搧鍑哄簱");
                 matList.setBoxType(wrkDetl.getColor());
                 matList.setRollType(wrkDetl.getManu());
-                matList.setWideInWidth(wrkDetl.getSku());
-                matList.setThickness(wrkDetl.getItemNum());
+                matList.setWideInWidth(wrkDetl.getItemNum());
+                matList.setThickness(wrkDetl.getSku());
                 List<GwmsGenerateInventoryDto.Rolls> rollsList = new ArrayList<>();
                 GwmsGenerateInventoryDto.Rolls roll = new GwmsGenerateInventoryDto.Rolls(wrkDetl.getModel(),
                         wrkDetl.getUnit(), wrkDetl.getMaktx(), wrkDetl.getLength(),
@@ -1626,7 +1693,7 @@
         // 瀵绘壘绌烘墭鐩樺簱浣嶏紝鍏堟壘娴呭簱浣�
         List<LocMast> locMasts;
         locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "D")
-                .orderAsc(Arrays.asList("row1", "lev1", "bay1")).in("crn_no", crnNoList).in("row1", 3, 4, 6, 7, 10, 11, 14, 15, 18, 19, 22, 23));
+                .orderAsc(Arrays.asList("row1", "lev1", "bay1")).in("crn_no", crnNoList).in("row1", 2, 3, 6, 7, 10, 11, 14, 15, 18, 19, 22, 23));
         if (locMasts.isEmpty()) {
             locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "D")
                     .orderAsc(Arrays.asList("row1", "lev1", "bay1")).in("crn_no", crnNoList).in("row1", 1, 4, 5, 8, 9, 12, 13, 16, 17, 20, 21, 24));
@@ -1654,7 +1721,7 @@
         wrkMast.setIoTime(now);
         wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
         wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱
-        wrkMast.setIoPri(10D);
+        wrkMast.setIoPri(14D);
         wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
         wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
         wrkMast.setCrnNo(locMast.getCrnNo());
@@ -2293,6 +2360,9 @@
             order.setStatus(Integer.valueOf(param.getGroupStatus()));
             orderMapper.updateById(order);
         }
+        orderDetlMapper.delete(
+                new EntityWrapper<OrderDetl>().eq("order_no", param.getGroupOrderNumber())
+        );
 
         // 2. 涓�涓�瀵瑰簲閬嶅巻
         List<GroupOrderConfirmParam.PackageGroupNo> pkgList = param.getPackageGroupNos();
@@ -2324,7 +2394,186 @@
     }
 
 
+    @Override
+    @Transactional
+    public R groupOrderConfirmV2(GroupOrderConfirmParam param) {
+        // 1. 鏌ヨ鍗曟嵁鏄惁瀛樺湪
+        String time = DateUtils.convert(new Date(), DateUtils.yyyyMMddHHmmss_F);
+        Review review = reviewService.selectOne(new EntityWrapper<Review>().eq("order_no", param.getGroupOrderNumber()));
+        if (review == null) {
+            review = new Review();
+            review.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
+            review.setOrderNo(param.getGroupOrderNumber());
+            review.setOrderTime(time);
+            review.setDefNumber("绯荤粺鍚屾");
+            review.setSettle(1L);
+            review.setStatus(1);
+            review.setCreateBy(9527L);
+            review.setCreateTime(new Date());
 
+            reviewService.insert(review);
+            review = reviewService.selectOne(new EntityWrapper<Review>().eq("order_no", param.getGroupOrderNumber()));
+        } else {
+            // 1.2 瀛樺湪锛屾洿鏂板崟鎹姸鎬�
+            review.setSettle(1L);
+            reviewService.updateById(review);
+        }
+        reviewService.delete(
+                new EntityWrapper<Review>().eq("order_no", param.getGroupOrderNumber())
+        );
+
+        // 2. 涓�涓�瀵瑰簲閬嶅巻
+        List<GroupOrderConfirmParam.PackageGroupNo> pkgList = param.getPackageGroupNos();
+        List<GroupOrderConfirmParam.VolumeNumber> volList = param.getVolumeNumbers();
+
+        int size = Math.min(pkgList.size(), volList.size()); // 闃叉瓒婄晫
+        for (int i = 0; i < size; i++) {
+            GroupOrderConfirmParam.PackageGroupNo pg = pkgList.get(i);
+            GroupOrderConfirmParam.VolumeNumber vn = volList.get(i);
+
+            // 鏌ヨ鏄惁宸插瓨鍦ㄨ detl
+            ReviewDetl detl = reviewDetlService.selectOne(new EntityWrapper<ReviewDetl>().eq("order_no", param.getGroupOrderNumber()).eq("brand", pg.getPackageGroupNo()).eq("model", vn.getVolumeNumber()));
+
+            if (detl == null) {
+                List<WrkDetlLog> wrkDetlLogs = wrkDetlLogService.selectList(new EntityWrapper<WrkDetlLog>().eq("brand", pg.getPackageGroupNo()).eq("model", vn.getVolumeNumber()));
+                detl = new ReviewDetl();
+                if (wrkDetlLogs != null && !wrkDetlLogs.isEmpty() && wrkDetlLogs.size() >= 1) {
+                    detl.setSpecs(wrkDetlLogs.get(0).getSpecs());
+                    detl.setBatch(wrkDetlLogs.get(0).getBatch());
+                    detl.setAnfme(wrkDetlLogs.get(0).getAnfme());
+                    detl.setMatnr(wrkDetlLogs.get(0).getMatnr());
+                    detl.setMaktx(wrkDetlLogs.get(0).getMaktx());
+                    detl.setUnit(wrkDetlLogs.get(0).getUnit());
+                    detl.setDeadTime(wrkDetlLogs.get(0).getModiTime$());
+                }
+                detl.setOrderId(review.getId());
+                detl.setOrderNo(param.getGroupOrderNumber());
+                detl.setCreateTime(new Date());
+                detl.setBrand(pg.getPackageGroupNo());   // 鍖呰缁勫彿
+                detl.setModel(vn.getVolumeNumber());     // 鍗峰彿
+                reviewDetlService.insert(detl);
+            }
+        }
+        return R.ok("缁勮揣纭鎴愬姛");
+    }
+
+
+    @Override
+    @Transactional
+    public R returnOrder(ReturnOrderConfirmParam param) {
+        if (Cools.isEmpty(param.getOrderNumber())) {
+            param.setOrderNumber("THCK" + DateUtils.convert(new Date(), DateUtils.yyyyMMdd));
+        }
+        // 1. 鏌ヨ鍗曟嵁鏄惁瀛樺湪
+        Order order = orderMapper.selectOrderByOrderNo(param.getOrderNumber());
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+        if (order == null) {
+            // 1.1 涓嶅瓨鍦紝鏂板缓鍗曟嵁
+            order = new Order();
+            order.setOrderNo(param.getOrderNumber());
+            order.setStatus(1);
+            order.setOrderTime(sdf.format(new Date()));
+            order.setCreateTime(new Date());
+            order.setSettle(1L);
+            order.setDocType(26L);
+            order.setMemo(param.getMemo());
+            orderMapper.insert(order);
+        } else {
+            // 1.2 瀛樺湪锛屾洿鏂板崟鎹姸鎬�
+            if (order.getStatus() == 4) {
+                order.setStatus(2);
+            }
+            orderMapper.updateById(order);
+        }
+
+
+        // 2. 涓�涓�瀵瑰簲閬嶅巻
+        List<ReturnOrderConfirmParam.VolumeNumber> volList = param.getVolumeNumbers();
+
+        for (int i = 0; i < volList.size(); i++) {
+            ReturnOrderConfirmParam.VolumeNumber vn = volList.get(i);
+
+            // 鏌ヨ鏄惁宸插瓨鍦ㄨ detl
+            OrderDetl detl = orderDetlMapper.selectByOrderNoAndPkgGroupNoAndVolumeNo(
+                    param.getOrderNumber(), param.getPackageGroupNo(), vn.getVolumeNumber()
+            );
+
+            if (detl == null) {
+                detl = new OrderDetl();
+                detl.setOrderId(order.getId());
+                detl.setOrderNo(param.getOrderNumber());
+                detl.setCreateTime(new Date());
+                detl.setAnfme(1.0);
+                detl.setBrand(param.getPackageGroupNo());   // 鍖呰缁勫彿
+                detl.setModel(vn.getVolumeNumber());     // 鍗峰彿
+                detl.setMemo(param.getMemo());
+                orderDetlMapper.insert(detl);
+            } else {
+                throw new RuntimeException("璇ュ崟鎹殑鍗峰彿宸插瓨鍦�," + vn.getVolumeNumber());
+            }
+        }
+
+        return R.ok("缁勮揣纭鎴愬姛");
+    }
+
+    @Override
+    @Transactional
+    public R unQualifiedOrder(UnQualifiedOrderConfirmParam param) {
+        if (Cools.isEmpty(param.getOrderNumber())) {
+            param.setOrderNumber("UQCK" + DateUtils.convert(new Date(), DateUtils.yyyyMMdd));
+        }
+        // 1. 鏌ヨ鍗曟嵁鏄惁瀛樺湪
+        Order order = orderMapper.selectOrderByOrderNo(param.getOrderNumber());
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+        if (order == null) {
+            // 1.1 涓嶅瓨鍦紝鏂板缓鍗曟嵁
+            order = new Order();
+            order.setOrderNo(param.getOrderNumber());
+            order.setStatus(1);
+            order.setOrderTime(sdf.format(new Date()));
+            order.setCreateTime(new Date());
+            order.setSettle(1L);
+            order.setDocType(27L);
+            order.setMemo(param.getMemo());
+            orderMapper.insert(order);
+        } else {
+            // 1.2 瀛樺湪锛屾洿鏂板崟鎹姸鎬�
+            if (order.getStatus() == 4) {
+                order.setStatus(2);
+            }
+            orderMapper.updateById(order);
+        }
+
+
+        // 2. 涓�涓�瀵瑰簲閬嶅巻
+        List<UnQualifiedOrderConfirmParam.VolumeNumber> volList = param.getVolumeNumbers();
+
+        for (int i = 0; i < volList.size(); i++) {
+            UnQualifiedOrderConfirmParam.VolumeNumber vn = volList.get(i);
+
+            // 鏌ヨ鏄惁宸插瓨鍦ㄨ detl
+            OrderDetl detl = orderDetlMapper.selectByOrderNoAndVolumeNo(
+                    param.getOrderNumber(), vn.getVolumeNumber()
+            );
+
+            if (detl == null) {
+                detl = new OrderDetl();
+                detl.setOrderId(order.getId());
+                detl.setOrderNo(param.getOrderNumber());
+                detl.setCreateTime(new Date());
+                detl.setAnfme(1.0);
+                detl.setModel(vn.getVolumeNumber());     // 鍗峰彿
+                detl.setMemo(param.getMemo());
+                orderDetlMapper.insert(detl);
+            } else {
+                throw new RuntimeException("璇ュ崟鎹殑鍗峰彿宸插瓨鍦�," + vn.getVolumeNumber());
+            }
+        }
+
+        return R.ok("缁勮揣纭鎴愬姛");
+    }
 
     /*...........................涓婇ザ姹熼摐..............浠ヤ笂.............寰愬伐姹変簯...........................*/
 }

--
Gitblit v1.9.1