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/WorkMastHandler.java |  139 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 139 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
index 164d81d..7e2a3df 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -9,6 +9,7 @@
 import com.zy.asrs.task.core.ReturnT;
 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 org.springframework.transaction.interceptor.TransactionAspectSupport;
@@ -24,6 +25,15 @@
 @Service
 @Transactional
 public class WorkMastHandler extends AbstractHandler<String> {
+
+    @Value("${erp.address.URL}")
+    private String erpBaseUrl;
+
+    @Value("${erp.address.Inaddress}")
+    private String erpInAddress;
+
+    @Value("${erp.address.Outaddress}")
+    private String erpOutAddress;
 
     @Autowired
     private WrkMastService wrkMastService;
@@ -570,4 +580,133 @@
         return SUCCESS;
     }
 
+    /**
+     * wcs涓婃姤浠诲姟瀹屾垚鍚庯紝灏嗕换鍔′笂鎶ョ粰erp
+     * 2.鍏ュ簱涓婃姤
+     * 13.鍑哄簱涓婃姤
+     */
+    public ReturnT<String> start1(WrkMast wrkMast) {
+        // 2.鍏ュ簱涓婃姤
+        if (wrkMast.getWrkSts() == 2) {
+            return ErpdoIn(wrkMast);
+            // 13.鍑哄簱涓婃姤
+        } else  if (wrkMast.getWrkSts() == 13) {
+            return ErpdoOut(wrkMast);
+        }
+        return SUCCESS;
+    }
+
+    private ReturnT<String> ErpdoOut(WrkMast wrkMast){
+        try {
+            com.zy.common.utils.HttpHandler.Builder builder = new com.zy.common.utils.HttpHandler.Builder();
+            if (Cools.isEmpty(erpBaseUrl) || Cools.isEmpty(erpOutAddress)) {
+                return FAIL.setMsg("ERP鍑哄簱涓婃姤鍦板潃鏈厤缃甗erp.address.URL / erp.address.Outaddress]");
+            }
+            java.util.List<WrkDetl> wrkDetls = wrkDetlService.selectList(
+                    new com.baomidou.mybatisplus.mapper.EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())
+            );
+            if (wrkDetls == null || wrkDetls.isEmpty()) {
+                return FAIL.setMsg("ERP鍑哄簱涓婃姤澶辫触, 鏈壘鍒板伐浣滄槑缁哰workNo=" + wrkMast.getWrkNo() + "]");
+            }
+
+            java.util.Map<String, Object> payload = new java.util.HashMap<>();
+            payload.put("palletId", wrkMast.getBarcode());
+            payload.put("anfme", wrkDetls.get(0).getAnfme());
+            payload.put("locId", wrkMast.getSourceLocNo());
+            payload.put("weight", wrkMast.getScWeight());
+            payload.put("photos", new java.util.ArrayList<String>());
+            if (wrkMast.getModiTime() != null) {
+                payload.put("createTime", new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(wrkMast.getModiTime()));
+            } else {
+                payload.put("createTime", new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new java.util.Date()));
+            }
+            payload.put("BizNo", String.valueOf(wrkDetls.get(0).getThreeCode()));
+
+            String uri = erpBaseUrl;
+            String response = builder
+                    .setUri(uri)
+                    .setPath(erpOutAddress)
+                    .setHttps(uri != null && uri.startsWith("https://"))
+                    .setTimeout(10, java.util.concurrent.TimeUnit.SECONDS)
+                    .setJson(com.alibaba.fastjson.JSON.toJSONString(payload))
+                    .build()
+                    .doPost();
+
+            com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSON.parseObject(response == null ? "{}" : response);
+            Integer code = jsonObject.getInteger("code");
+            if (code == null || code != 0) {
+                String msg = jsonObject.getString("msg");
+                return FAIL.setMsg(Cools.isEmpty(msg) ? "ERP鍑哄簱涓婃姤澶辫触" : msg);
+            }
+            wrkMast.setWrkSts(wrkMast.getWrkSts() + 1);
+            wrkMast.setModiTime(new java.util.Date());
+            if (!wrkMastService.updateById(wrkMast)) {
+                return FAIL.setMsg("ERP鍑哄簱涓婃姤鎴愬姛浣嗘洿鏂板伐浣滅姸鎬佸け璐�; [workNo=" + wrkMast.getWrkNo() + "]");
+            }
+        } catch (Exception e) {
+            return FAIL.setMsg(e.getMessage());
+        }
+        return SUCCESS;
+    }
+
+    private ReturnT<String> ErpdoIn(WrkMast wrkMast){
+        try {
+            com.zy.common.utils.HttpHandler.Builder builder = new com.zy.common.utils.HttpHandler.Builder();
+            if (Cools.isEmpty(erpBaseUrl) || Cools.isEmpty(erpInAddress)) {
+                return FAIL.setMsg("ERP鍏ュ簱涓婃姤鍦板潃鏈厤缃甗erp.address.URL / erp.address.Inaddress]");
+            }
+
+            java.util.Map<String, Object> payload = new java.util.HashMap<>();
+            payload.put("palletId", wrkMast.getBarcode());
+            java.util.List<WrkDetl> wrkDetls = wrkDetlService.selectList(
+                    new com.baomidou.mybatisplus.mapper.EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())
+            );
+            if (wrkDetls == null || wrkDetls.isEmpty()) {
+                return FAIL.setMsg("ERP鍏ュ簱涓婃姤澶辫触, 鏈壘鍒板伐浣滄槑缁哰workNo=" + wrkMast.getWrkNo() + "]");
+            }
+            double anfme = 0D;
+            for (WrkDetl d : wrkDetls) {
+                if (d != null && d.getAnfme() != null) {
+                    anfme += d.getAnfme();
+                }
+            }
+            payload.put("anfme", anfme);
+            payload.put("locId", wrkMast.getLocNo());
+            payload.put("weight", wrkMast.getScWeight());
+            payload.put("photos", new java.util.ArrayList<String>());
+            if (wrkMast.getModiTime() != null) {
+                payload.put("createTime", new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(wrkMast.getModiTime()));
+            } else {
+                payload.put("createTime", new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new java.util.Date()));
+            }
+            payload.put("BizNo", String.valueOf(wrkDetls.get(0).getThreeCode()));
+
+            String uri = erpBaseUrl;
+
+            String response = builder
+                    .setUri(uri)
+                    .setPath(erpInAddress)
+                    .setHttps(uri != null && uri.startsWith("https://"))
+                    .setTimeout(10, java.util.concurrent.TimeUnit.SECONDS)
+                    .setJson(com.alibaba.fastjson.JSON.toJSONString(payload))
+                    .build()
+                    .doPost();
+
+            com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSON.parseObject(response == null ? "{}" : response);
+            Integer code = jsonObject.getInteger("code");
+            if (code == null || code != 0) {
+                String msg = jsonObject.getString("msg");
+                return FAIL.setMsg(Cools.isEmpty(msg) ? "ERP鍏ュ簱涓婃姤澶辫触" : msg);
+            }
+            wrkMast.setWrkSts(wrkMast.getWrkSts() + 1);
+            wrkMast.setModiTime(new java.util.Date());
+            if (!wrkMastService.updateById(wrkMast)) {
+                return FAIL.setMsg("ERP鍏ュ簱涓婃姤鎴愬姛浣嗘洿鏂板伐浣滅姸鎬佸け璐�; [workNo=" + wrkMast.getWrkNo() + "]");
+            }
+        } catch (Exception e) {
+            return FAIL.setMsg(e.getMessage());
+        }
+        return SUCCESS;
+    }
+
 }

--
Gitblit v1.9.1