From b7380ff70bcc962494cd6640fcc3eac21aaab0a1 Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期四, 15 一月 2026 08:09:29 +0800
Subject: [PATCH] 1.自动下发出库任务给wcs 2.wcs申请入库

---
 src/main/java/com/zy/asrs/task/handler/AutomaticallyIssueWCSTasksHandler.java |   83 +++++++++++++++++++++++++++--------------
 1 files changed, 55 insertions(+), 28 deletions(-)

diff --git a/src/main/java/com/zy/asrs/task/handler/AutomaticallyIssueWCSTasksHandler.java b/src/main/java/com/zy/asrs/task/handler/AutomaticallyIssueWCSTasksHandler.java
index 76018f9..b47a30e 100644
--- a/src/main/java/com/zy/asrs/task/handler/AutomaticallyIssueWCSTasksHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/AutomaticallyIssueWCSTasksHandler.java
@@ -57,48 +57,75 @@
             if (toSend.isEmpty()) {
                 return SUCCESS;
             }
-            List<Map<String, Object>> tasks = new ArrayList<>();
+
+            Map<String, List<WrkMast>> groupByUserNo = new HashMap<>();
             for (WrkMast m : toSend) {
-                Map<String, Object> t = new HashMap<>();
-                t.put("taskNo", String.valueOf(m.getWrkNo()));
-                t.put("staNo", String.valueOf(m.getStaNo()));
-                t.put("locNo", m.getSourceLocNo());
-                if (m.getIoPri() != null) {
-                    t.put("taskPri", m.getIoPri().intValue());
+                String key = m.getUserNo();
+                if (key == null || key.trim().isEmpty()) {
+                    key = "_NO_USER_";
                 }
-                t.put("seq",m.getPltType());
-                t.put("orderId",m.getUserNo());
-                tasks.add(t);
+                List<WrkMast> list = groupByUserNo.get(key);
+                if (list == null) {
+                    list = new ArrayList<>();
+                    groupByUserNo.put(key, list);
+                }
+                list.add(m);
             }
-            Map<String, Object> payload = new HashMap<>();
-            payload.put("tasks", tasks);
 
-            String response = new HttpHandler.Builder()
-                    .setUri(urlValue)
-                    .setPath(createOutTaskValue)
-                    .setHttps(urlValue != null && urlValue.startsWith("https://"))
-                    .setTimeout(10, TimeUnit.SECONDS)
-                    .setJson(JSON.toJSONString(payload))
-                    .build()
-                    .doPost();
+            List<WrkMast> successList = new ArrayList<>();
+            boolean hasError = false;
 
-            JSONObject jsonObject = JSON.parseObject(response == null ? "{}" : response);
-            Integer code = jsonObject.getInteger("code");
-            if (code == null || !Objects.equals(code, 200)) {
-                log.error("WCS涓嬪彂鍑哄簱浠诲姟澶辫触, url:{}, path:{}, request:{}, response:{}",
-                        urlValue, createOutTaskValue, JSON.toJSONString(payload), response);
+            for (Map.Entry<String, List<WrkMast>> entry : groupByUserNo.entrySet()) {
+                List<Map<String, Object>> tasks = new ArrayList<>();
+                for (WrkMast m : entry.getValue()) {
+                    Map<String, Object> t = new HashMap<>();
+                    t.put("taskNo", String.valueOf(m.getWrkNo()));
+                    t.put("staNo", String.valueOf(m.getStaNo()));
+                    t.put("locNo", m.getSourceLocNo());
+                    if (m.getIoPri() != null) {
+                        t.put("taskPri", m.getIoPri().intValue());
+                    }
+                    t.put("batchSeq", m.getPltType());
+                    if (m.getUserNo() != null) {
+                        t.put("batch", m.getUserNo());
+                    }
+                    tasks.add(t);
+                }
+                Map<String, Object> payload = new HashMap<>();
+                payload.put("tasks", tasks);
+
+                String response = new HttpHandler.Builder()
+                        .setUri(urlValue)
+                        .setPath(createOutTaskValue)
+                        .setHttps(urlValue != null && urlValue.startsWith("https://"))
+                        .setTimeout(10, TimeUnit.SECONDS)
+                        .setJson(JSON.toJSONString(payload))
+                        .build()
+                        .doPost();
+
+                JSONObject jsonObject = JSON.parseObject(response == null ? "{}" : response);
+                Integer code = jsonObject.getInteger("code");
+                if (code == null || !Objects.equals(code, 200)) {
+                    hasError = true;
+                    log.error("WCS涓嬪彂鍑哄簱浠诲姟澶辫触, url:{}, path:{}, userNo:{}, request:{}, response:{}",
+                            urlValue, createOutTaskValue, entry.getKey(), JSON.toJSONString(payload), response);
+                    continue;
+                }
+                successList.addAll(entry.getValue());
+            }
+
+            if (successList.isEmpty()) {
                 return FAIL.setMsg("WCS涓嬪彂鍑哄簱浠诲姟澶辫触");
             }
 
             Date now = new Date();
-            for (WrkMast m : toSend) {
+            for (WrkMast m : successList) {
                 m.setUpdMk("WCS_SENT");
                 m.setModiTime(now);
                 m.setWrkSts(12L);
             }
-            // 寤惰繜娉ㄥ叆锛岄伩鍏嶅惊鐜緷璧�
             WrkMastService wrkMastService = com.core.common.SpringUtils.getBean(WrkMastService.class);
-            for (WrkMast m : toSend) {
+            for (WrkMast m : successList) {
                 try {
                     wrkMastService.updateById(m);
                 } catch (Exception ignore) {}

--
Gitblit v1.9.1