From c9944fa15889ef97236960fcc9370a582cd86267 Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期二, 17 三月 2026 14:37:34 +0800
Subject: [PATCH] 1.wcs下发出库任务方式需更改,先采集数据再一次性下发:下发组batch和序号batch_seq 2.库位分配逻辑需优化,目前分配单个巷道 3.

---
 src/main/java/com/zy/asrs/controller/OpenController.java |   73 ++++++++++++++++++++++++++++++++++--
 1 files changed, 69 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index 60af588..deba829 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -7,12 +7,15 @@
 import com.core.annotations.AppAuth;
 import com.core.common.*;
 import com.core.exception.CoolException;
+import com.google.common.collect.Lists;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.*;
 import com.zy.asrs.service.LocDetlService;
 import com.zy.asrs.service.OpenService;
 import com.zy.asrs.service.WaitPakinService;
 import com.zy.asrs.service.WrkDetlService;
+import com.zy.asrs.service.WrkMastLogService;
+import com.zy.asrs.service.WrkMastService;
 import com.zy.common.model.DetlDto;
 import com.zy.common.model.LocDetlDto;
 import com.zy.common.model.enums.WorkNoType;
@@ -48,6 +51,10 @@
     private WaitPakinService waitPakinService;
     @Autowired
     private WrkDetlService wrkDetlService;
+    @Autowired
+    private WrkMastService wrkMastService;
+    @Autowired
+    private WrkMastLogService wrkMastLogService;
 
 //    @PostMapping("/order/matSync/default/v1")
 ////    @AppAuth(memo = "鍟嗗搧淇℃伅鍚屾鎺ュ彛")
@@ -423,6 +430,8 @@
      */
     @PostMapping("/comb/auth")
     public synchronized R comb(@RequestBody ArrayList<MesToCombParam> param){
+        List<MesToCombParam> errorComb = Lists.newArrayList();
+        List<MesToCombParam> validComb = Lists.newArrayList();
         for (MesToCombParam mesToCombParam : param) {
 //            if (mesToCombParam.getPalletId().length() != 8) {
 //                return R.error(mesToCombParam.getPalletId()+"-璇ユ墭鐩樼爜涓嶄负8浣�");
@@ -435,16 +444,23 @@
             int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet", mesToCombParam.getPalletId()));
 //        int countwait = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet",param.getPalletId()));
             if (countLoc > 0 || countWrk > 0) {
-                return R.error(mesToCombParam.getPalletId()+"-宸ヤ綔妗�/搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�");
+                errorComb.add(mesToCombParam);
+//                return R.error(mesToCombParam.getPalletId()+"-宸ヤ綔妗�/搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�");
+                continue;
             }
             // 鍒ゆ柇鏄惁鏈夌浉鍚屾潯鐮佺殑鏁版嵁
             if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>().
                     eq("zpallet", mesToCombParam.getPalletId()).eq("io_status", "N")) > 0) {
                 waitPakinService.delete(new EntityWrapper<WaitPakin>().eq("zpallet", mesToCombParam.getPalletId()));
             }
+            validComb.add(mesToCombParam);
         }
-        for (MesToCombParam mesToCombParam : param) {
+        for (MesToCombParam mesToCombParam : validComb) {
             openService.mesToComb(mesToCombParam);
+        }
+        // TODO:寰呮祴璇�
+        if(errorComb.size() > 0) {
+            return R.error("鎵樼洏宸插湪搴撳瓨涓�/宸插紑濮嬪叆搴�").add(errorComb);
         }
 
         return R.ok();
@@ -456,9 +472,58 @@
 
     @PostMapping("/outOrder")
     public synchronized R outOrder (@RequestBody ArrayList<OutTaskParam> params){
-        for (OutTaskParam outTaskParam : params) {
-            openService.outOrder(outTaskParam);
+        if (Cools.isEmpty(params)) {
+            return R.error("璇锋眰鍙傛暟涓嶈兘涓虹┖");
         }
+        Set<String> orderIds = new LinkedHashSet<>();
+        for (OutTaskParam outTaskParam : params) {
+            if (Cools.isEmpty(outTaskParam) || Cools.isEmpty(outTaskParam.getOrderId())) {
+                return R.error("鍑哄簱鍗曞彿涓嶈兘涓虹┖");
+            }
+            orderIds.add(outTaskParam.getOrderId());
+        }
+        if (!orderIds.isEmpty()) {
+            Set<String> existedOrderIds = new LinkedHashSet<>();
+            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().in("user_no", orderIds));
+            for (WrkMast wrkMast : wrkMasts) {
+                if (!Cools.isEmpty(wrkMast.getUserNo())) {
+                    existedOrderIds.add(wrkMast.getUserNo());
+                }
+            }
+            List<WrkMastLog> wrkMastLogs = wrkMastLogService.selectList(new EntityWrapper<WrkMastLog>().in("user_no", orderIds));
+            for (WrkMastLog wrkMastLog : wrkMastLogs) {
+                if (!Cools.isEmpty(wrkMastLog.getUserNo())) {
+                    existedOrderIds.add(wrkMastLog.getUserNo());
+                }
+            }
+            if (!existedOrderIds.isEmpty()) {
+                return R.error("鍑哄簱鍗曞彿宸插瓨鍦ㄤ换鍔℃。鎴栦换鍔″巻鍙叉。锛�" + String.join("锛�", existedOrderIds));
+            }
+        }
+
+        List<OutTaskParam> errorOutOrders = Lists.newArrayList();
+        List<OutTaskParam> validOutOrders = Lists.newArrayList();
+        for (OutTaskParam outTaskParam : params) {
+            // TODO:寰呮脯瑭︼紝鏍¢搴瓨淇℃伅锛屼笉瀛樺湪鍓囪繑鍥�
+            int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", outTaskParam.getPalletId()));
+            if (countLoc == 0){
+                errorOutOrders.add(outTaskParam);
+                continue;
+            }
+            validOutOrders.add(outTaskParam);
+        }
+
+        for (OutTaskParam outTaskParam : validOutOrders) {
+            R r = openService.outOrder(outTaskParam);
+            if (!r.get("code").equals(200)){
+                return r;
+            }
+        }
+
+        if(errorOutOrders.size() > 0) {
+            return R.error("搴撳瓨涓笉瀛樺湪璇ユ墭鐩�").add(errorOutOrders);
+        }
+
         return R.ok();
     }
 

--
Gitblit v1.9.1