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 | 121 ++++++++++++++++++++++++++++++++++++++++
1 files changed, 120 insertions(+), 1 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 cf507db..b47a30e 100644
--- a/src/main/java/com/zy/asrs/task/handler/AutomaticallyIssueWCSTasksHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/AutomaticallyIssueWCSTasksHandler.java
@@ -1,20 +1,139 @@
package com.zy.asrs.task.handler;
import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.WrkMastService;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
+import com.zy.common.utils.HttpHandler;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.concurrent.TimeUnit;
@Slf4j
@Service
@Transactional
public class AutomaticallyIssueWCSTasksHandler extends AbstractHandler<String> {
+ @Value("${wcs.switch}")
+ private String switchValue;
+ @Value("${wcs.address.URL}")
+ private String urlValue;
+ @Value("${wcs.address.createInTask}")
+ private String createInTaskValue;
+ @Value("${wcs.address.createOutTask}")
+ private String createOutTaskValue;
+ @Value("${wcs.address.createLocMoveTask}")
+ private String createLocMoveTaskValue;
+ public ReturnT<String> start(List<WrkMast> wrkMast) {
+ try {
+ if (!Boolean.parseBoolean(String.valueOf(switchValue))) {
+ return SUCCESS;
+ }
+ if (wrkMast == null || wrkMast.isEmpty()) {
+ return SUCCESS;
+ }
+ List<WrkMast> toSend = new ArrayList<>();
+ for (WrkMast m : wrkMast) {
+ if (m == null) { continue; }
+ if (Objects.equals(m.getWrkSts(), 11L)) {
+ if (m.getUpdMk() != null && "WCS_SENT".equalsIgnoreCase(m.getUpdMk())) {
+ continue;
+ }
+ toSend.add(m);
+ }
+ }
+ if (toSend.isEmpty()) {
+ return SUCCESS;
+ }
- public ReturnT<String> start(WrkMast wrkMast) {
+ Map<String, List<WrkMast>> groupByUserNo = new HashMap<>();
+ for (WrkMast m : toSend) {
+ String key = m.getUserNo();
+ if (key == null || key.trim().isEmpty()) {
+ key = "_NO_USER_";
+ }
+ List<WrkMast> list = groupByUserNo.get(key);
+ if (list == null) {
+ list = new ArrayList<>();
+ groupByUserNo.put(key, list);
+ }
+ list.add(m);
+ }
+ List<WrkMast> successList = new ArrayList<>();
+ boolean hasError = false;
+
+ 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 : successList) {
+ m.setUpdMk("WCS_SENT");
+ m.setModiTime(now);
+ m.setWrkSts(12L);
+ }
+ WrkMastService wrkMastService = com.core.common.SpringUtils.getBean(WrkMastService.class);
+ for (WrkMast m : successList) {
+ try {
+ wrkMastService.updateById(m);
+ } catch (Exception ignore) {}
+ }
+ } catch (Exception e) {
+ log.error("WCS鍑哄簱浠诲姟涓嬪彂寮傚父", e);
+ return FAIL.setMsg(e.getMessage());
+ }
return SUCCESS;
}
}
--
Gitblit v1.9.1