From eaa43b12bfe9185b4f0b8f09d9ca081895a4d185 Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期四, 12 三月 2026 21:27:44 +0800
Subject: [PATCH] 1.任务下发失败提醒 2.针对订单出库循环堵塞问题优化

---
 src/main/java/com/zy/asrs/task/WorkMastScheduler.java |  148 +++++++++++++++++++++++++++++--------------------
 1 files changed, 88 insertions(+), 60 deletions(-)

diff --git a/src/main/java/com/zy/asrs/task/WorkMastScheduler.java b/src/main/java/com/zy/asrs/task/WorkMastScheduler.java
index efe8e29..4ce13b4 100644
--- a/src/main/java/com/zy/asrs/task/WorkMastScheduler.java
+++ b/src/main/java/com/zy/asrs/task/WorkMastScheduler.java
@@ -8,9 +8,7 @@
 import com.zy.api.service.WcsApiService;
 import com.zy.asrs.entity.LocAroundBind;
 import com.zy.asrs.entity.LocMast;
-import com.zy.asrs.entity.Task;
 import com.zy.asrs.entity.WrkMast;
-import com.zy.asrs.mapper.TaskMapper;
 import com.zy.asrs.service.LocAroundBindService;
 import com.zy.asrs.service.TaskService;
 import com.zy.asrs.service.WrkMastService;
@@ -88,78 +86,108 @@
         }
         Collections.shuffle(wrkMasts);
         for (WrkMast wrkMast : wrkMasts) {
-            //鏌ョ湅涓嬪彂浠诲姟鏄惁涓哄喕缁撳簱浣嶏紝鏄喕缁撳簱浣嶅垯璺宠繃涓嬪彂浠诲姟
-            LocAroundBind locAroundBind = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>()
-                    .eq("b_loc_no", wrkMast.getLocNo())
-                    .eq("freeze", 1));
-            if (Cools.isEmpty(locAroundBind)) {
-                locAroundBind = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>()
-                        .eq("b_loc_no", wrkMast.getSourceLocNo())
+            try {
+                //鏌ョ湅涓嬪彂浠诲姟鏄惁涓哄喕缁撳簱浣嶏紝鏄喕缁撳簱浣嶅垯璺宠繃涓嬪彂浠诲姟
+                LocAroundBind locAroundBind = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>()
+                        .eq("b_loc_no", wrkMast.getLocNo())
                         .eq("freeze", 1));
-                if (!Cools.isEmpty(locAroundBind)) {
+                if (Cools.isEmpty(locAroundBind)) {
+                    locAroundBind = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>()
+                            .eq("b_loc_no", wrkMast.getSourceLocNo())
+                            .eq("freeze", 1));
+                    if (!Cools.isEmpty(locAroundBind)) {
+                        markPublishError(wrkMast.getWrkNo(), String.valueOf("婧愬簱浣嶈鍐荤粨"));
+                        continue;
+                    }
+                } else {
+                    markPublishError(wrkMast.getWrkNo(), String.valueOf("鐩爣搴撲綅琚喕缁�"));
                     continue;
                 }
-            }else {
-                continue;
-            }
 //            Integer crnNo = wrkMast.getCrnNo();
 //            //璇ュ爢鍨涙満宸茬粡涓嬪彂浠诲姟缁檞cs鍚庝笉鍐嶄笅鍙戞柊鐨勬惉杩愪换鍔�
 //            List<WrkMast> wrkMasts1 = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("crn_no", crnNo).in("wrk_sts", Arrays.asList(2L, 12L)));
 //            if (!wrkMasts1.isEmpty()) {
 //                continue;
 //            }
-            //婧愬簱浣嶄负鍐荤粨搴撲綅鏃剁姝笅鍙戞惉杩愪换鍔$粰鍫嗗灈鏈�
-            if (!Cools.isEmpty(wrkMast.getSourceLocNo())){
-                LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
-                        .eq("loc_no", wrkMast.getSourceLocNo())
-                        .eq("frozen",0));
-                if (Cools.isEmpty(locMast)) {
-                    continue;
+                //婧愬簱浣嶄负鍐荤粨搴撲綅鏃剁姝笅鍙戞惉杩愪换鍔$粰鍫嗗灈鏈�
+                if (!Cools.isEmpty(wrkMast.getSourceLocNo())) {
+                    LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
+                            .eq("loc_no", wrkMast.getSourceLocNo())
+                            .eq("frozen", 0));
+                    if (Cools.isEmpty(locMast)) {
+                        continue;
+                    }
                 }
-            }
 
-            //鐩爣搴撲綅涓哄喕缁撳簱浣嶆椂绂佹涓嬪彂鎼繍浠诲姟缁欏爢鍨涙満
-            if (!Cools.isEmpty(wrkMast.getLocNo())){
-                LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
-                        .eq("loc_no", wrkMast.getLocNo())
-                        .eq("frozen",0));
-                if (Cools.isEmpty(locMast)) {
-                    continue;
+                //鐩爣搴撲綅涓哄喕缁撳簱浣嶆椂绂佹涓嬪彂鎼繍浠诲姟缁欏爢鍨涙満
+                if (!Cools.isEmpty(wrkMast.getLocNo())) {
+                    LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
+                            .eq("loc_no", wrkMast.getLocNo())
+                            .eq("frozen", 0));
+                    if (Cools.isEmpty(locMast)) {
+                        continue;
+                    }
                 }
-            }
 
-            String wcsSourceLocNo = Cools.isEmpty(wrkMast.getSourceLocNo()) ? "" : Utils.WMSLocToWCSLoc(wrkMast.getSourceLocNo());
-            String wcsLocNo = Cools.isEmpty(wrkMast.getLocNo()) ? "" : Utils.WMSLocToWCSLoc(wrkMast.getLocNo());
-            WorkTaskParams params = new WorkTaskParams();
-            //鍑哄簱鍜岀Щ搴�
-            if((wrkMast.getIoType()==101||wrkMast.getIoType()==110)&&!Cools.isEmpty(wrkMast.getStaNo())&& !wrkMast.getStaNo().equals("0")) {
-                params.setType("out")
-                        .setTaskNo(wrkMast.getWrkNo()+"")
-                        .setSourceLocNo(wcsSourceLocNo)
-                        .setLocNo(wcsLocNo)
-                        .setStaNo(wrkMast.getStaNo())
-                        .setTaskPri(wrkMast.getIoPri().intValue())
-                        .setBarcode(wrkMast.getBarcode());
-            }else if(wrkMast.getIoType()==2&& !Cools.isEmpty(wrkMast.getSourceStaNo())){
-                params.setType("in")
-                        .setTaskNo(wrkMast.getWrkNo()+"")
-                        .setSourceStaNo(wrkMast.getSourceStaNo())
-                        .setStaNo(wrkMast.getStaNo())
-                        .setLocNo(wcsLocNo)
-                        .setTaskPri(wrkMast.getIoPri().intValue())
-                        .setBarcode(wrkMast.getBarcode());
-            } else {
-                params.setType("move")
-                        .setTaskNo(wrkMast.getWrkNo()+"")
-                        .setSourceLocNo(wcsSourceLocNo)
-                        .setLocNo(wcsLocNo)
-                        .setBarcode(wrkMast.getBarcode());
+                String wcsSourceLocNo = Cools.isEmpty(wrkMast.getSourceLocNo()) ? "" : Utils.WMSLocToWCSLoc(wrkMast.getSourceLocNo());
+                String wcsLocNo = Cools.isEmpty(wrkMast.getLocNo()) ? "" : Utils.WMSLocToWCSLoc(wrkMast.getLocNo());
+                Integer taskPri = wrkMast.getIoPri() == null ? null : wrkMast.getIoPri().intValue();
+                WorkTaskParams params = new WorkTaskParams();
+                //鍑哄簱鍜岀Щ搴�
+                if ((wrkMast.getIoType() == 101 || wrkMast.getIoType() == 110) && !Cools.isEmpty(wrkMast.getStaNo()) && !wrkMast.getStaNo().equals("0")) {
+                    params.setType("out")
+                            .setTaskNo(wrkMast.getWrkNo() + "")
+                            .setSourceLocNo(wcsSourceLocNo)
+                            .setLocNo(wcsLocNo)
+                            .setStaNo(wrkMast.getStaNo())
+                            .setTaskPri(taskPri)
+                            .setBarcode(wrkMast.getBarcode());
+                } else if (wrkMast.getIoType() == 2 && !Cools.isEmpty(wrkMast.getSourceStaNo())) {
+                    params.setType("in")
+                            .setTaskNo(wrkMast.getWrkNo() + "")
+                            .setSourceStaNo(wrkMast.getSourceStaNo())
+                            .setStaNo(wrkMast.getStaNo())
+                            .setLocNo(wcsLocNo)
+                            .setTaskPri(taskPri)
+                            .setBarcode(wrkMast.getBarcode());
+                } else {
+                    params.setType("move")
+                            .setTaskNo(wrkMast.getWrkNo() + "")
+                            .setSourceLocNo(wcsSourceLocNo)
+                            .setLocNo(wcsLocNo)
+                            .setBarcode(wrkMast.getBarcode());
+                }
+                R r = wcsApiService.pubWrkToWcs(params);
+                if (isSuccess(r)) {
+                    clearPublishError(wrkMast.getWrkNo());
+                    break;
+                }
+                markPublishError(wrkMast.getWrkNo(), String.valueOf(r.get("msg")));
+            } catch (Exception e) {
+                log.error("宸ヤ綔妗wrkNo={}]涓嬪彂浠诲姟寮傚父", wrkMast.getWrkNo(), e);
+                markPublishError(wrkMast.getWrkNo(), e.getMessage());
             }
-            R r = wcsApiService.pubWrkToWcs(params);
-            if (r.get("code").equals(200)){
-                break;
-            }
-        };
+        }
+    }
+
+    private boolean isSuccess(R r) {
+        return r != null && "200".equals(String.valueOf(r.get("code")));
+    }
+
+    private void markPublishError(Integer wrkNo, String msg) {
+        if (wrkMastService.updatePublishError(wrkNo, "X", new Date(), buildPublishErrorMsg(msg)) <= 0) {
+            log.error("宸ヤ綔妗wrkNo={}]鍥炲啓涓嬪彂寮傚父澶辫触", wrkNo);
+        }
+    }
+
+    private void clearPublishError(Integer wrkNo) {
+        if (wrkMastService.updatePublishError(wrkNo, null, null, null) <= 0) {
+            log.error("宸ヤ綔妗wrkNo={}]娓呯悊涓嬪彂寮傚父澶辫触", wrkNo);
+        }
+    }
+
+    private String buildPublishErrorMsg(String msg) {
+        return Cools.isEmpty(msg) || "null".equalsIgnoreCase(msg) ? "涓嬪彂浠诲姟澶辫触" : "涓嬪彂浠诲姟澶辫触锛�" + msg;
     }
 
     /**

--
Gitblit v1.9.1