From 6cd08fe4de88df0a21851f96bdc4e617c5d92e36 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期三, 29 四月 2026 11:57:31 +0800
Subject: [PATCH] 工单相关功能完善

---
 src/main/java/com/zy/asrs/task/handler/OrderPakoutSyncHandler.java |  119 +++++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 103 insertions(+), 16 deletions(-)

diff --git a/src/main/java/com/zy/asrs/task/handler/OrderPakoutSyncHandler.java b/src/main/java/com/zy/asrs/task/handler/OrderPakoutSyncHandler.java
index 18b0996..0ac88e7 100644
--- a/src/main/java/com/zy/asrs/task/handler/OrderPakoutSyncHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/OrderPakoutSyncHandler.java
@@ -3,10 +3,9 @@
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import com.zy.asrs.entity.DocType;
-import com.zy.asrs.entity.OrderDetlPakin;
-import com.zy.asrs.entity.OrderDetlPakout;
-import com.zy.asrs.entity.OrderPakout;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.zy.asrs.entity.*;
+import com.zy.asrs.mapper.OrderDetlPakoutMapper;
 import com.zy.asrs.service.ApiLogService;
 import com.zy.asrs.service.DocTypeService;
 import com.zy.asrs.service.OrderDetlPakoutService;
@@ -22,6 +21,8 @@
 
 import javax.annotation.Resource;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * Created by vincent on 2020/7/7
@@ -66,21 +67,21 @@
         String nameSpaces = "鍑哄簱鍗曚笂鎶�";
         try {
 
-//            response = new HttpHandler.Builder()
-//                    .setUri(loadingConfigTimer.getErpReportURL())
-//                    .setPath(loadingConfigTimer.getErpOutReportPath())
-//                    .setJson(requestJson)
-//                    .build()
-//                    .doPost();
-//            JSONObject jsonObject = JSON.parseObject(response);
-//            if (jsonObject.getString("code") != null && jsonObject.getString("code").equals("200")) {
+            response = new HttpHandler.Builder()
+                    .setUri(loadingConfigTimer.getErpReportURL())
+                    .setPath(loadingConfigTimer.getErpOutReportPath())
+                    .setJson(requestJson)
+                    .build()
+                    .doPost();
+            JSONObject jsonObject = JSON.parseObject(response);
+            if (jsonObject.getString("code") != null && jsonObject.getString("code").equals("200")) {
                 orderPakoutService.updateSettle(order.getId(), 6L, null);
                 log.info("鍑哄簱鍗曟嵁涓婃姤鎴愬姛锛屽崟鎹紪鍙凤細{}", order.getOrderNo());
                 success = true;
-//            } else {
-//                errorMsg = response;
-//                log.error(nameSpaces + "璋冪敤澶栭儴鎺ュ彛澶辫触锛寀rl锛歿}锛宺equest锛歿}锛宺esponse锛歿}", url, requestJson, response);
-//            }
+            } else {
+                errorMsg = response;
+                log.error(nameSpaces + "璋冪敤澶栭儴鎺ュ彛澶辫触锛寀rl锛歿}锛宺equest锛歿}锛宺esponse锛歿}", url, requestJson, response);
+            }
         } catch (Exception e) {
             errorMsg = e.getMessage();
             log.error(nameSpaces + "璋冪敤澶栭儴鎺ュ彛寮傚父锛寀rl锛歿}锛宺equest锛歿}锛宺esponse锛歿}", url, requestJson, response, e);
@@ -102,4 +103,90 @@
         }
     }
 
+    @Resource
+    private OrderDetlPakoutMapper orderDetlPakoutMapper;
+
+    public void completeOrderReport() {
+        List<OrderPakout> orderPakouts = orderPakoutService.selectList(new EntityWrapper<OrderPakout>().where("settle = 4"));
+
+        // 浣跨敤 removeIf 绠�鍖栦唬鐮�
+        orderPakouts.removeIf(orderPakout -> orderDetlPakoutMapper.selectReportComplete(orderPakout.getId()) == 0);
+
+        // 瀵瑰墿浣欐暟鎹繘琛宻ettle璁剧疆
+        orderPakouts.forEach(orderPakin -> orderPakin.setSettle(6L));
+
+        // 鎵归噺鏇存柊
+        if (!orderPakouts.isEmpty()) {
+            orderPakoutService.updateBatchById(orderPakouts);
+        }
+    }
+
+    public void reportOutStockOrders(List<OrderDetlPakout> orderDetlPakoutList) {
+        // 鎸夎鍗曞垎缁�
+        Map<String, List<OrderDetlPakout>> listMap = orderDetlPakoutList.stream().collect(Collectors.groupingBy(OrderDetlPakout::getOrderNo));
+
+        // 鏋勯�犺姹備綋
+        JSONArray param = new JSONArray();
+        for (Map.Entry<String, List<OrderDetlPakout>> entry : listMap.entrySet()) {
+            JSONObject object = new JSONObject();
+            object.put("orderNo", entry.getKey());
+            List<OrderDetlPakout> orderDetlPakouts = entry.getValue();
+            JSONArray detl = new JSONArray();
+            for (OrderDetlPakout orderDetlPakout : orderDetlPakouts) {
+                JSONObject detlObject = new JSONObject();
+                detlObject.put("sku", orderDetlPakout.getSku());
+                detlObject.put("standby1", orderDetlPakout.getStandby1());
+                detlObject.put("matnr", orderDetlPakout.getMatnr());
+                detlObject.put("batch", orderDetlPakout.getBatch());
+                detlObject.put("anfme", orderDetlPakout.getQty() - orderDetlPakout.getUnits() );
+                detl.add(detlObject);
+            }
+            object.put("matList", detl);
+            param.add(object);
+        }
+
+        String response = "";
+        boolean success = false;
+        String errorMsg = null;
+        String requestJson = param.toJSONString();
+        String url = loadingConfigTimer.getErpReportURL() + loadingConfigTimer.getErpOutReportPath();
+        String nameSpaces = "鍑哄簱鍗曚笂鎶�";
+        try {
+
+            response = new HttpHandler.Builder()
+                    .setUri(loadingConfigTimer.getErpReportURL())
+                    .setPath(loadingConfigTimer.getErpOutReportPath())
+                    .setJson(requestJson)
+                    .build()
+                    .doPost();
+            JSONObject jsonObject = JSON.parseObject(response);
+            if (jsonObject.getString("code") != null && jsonObject.getString("code").equals("200")) {
+                // 鎵归噺鏇存柊units 涓婃姤鏁伴噺
+                List<OrderDetlPakout> collect = orderDetlPakoutList.stream().peek(orderDetlPakout -> orderDetlPakout.setUnits(orderDetlPakout.getQty())).collect(Collectors.toList());
+                orderDetlPakoutService.updateBatchById(collect);
+                success = true;
+            } else {
+                errorMsg = response;
+                log.error(nameSpaces + "璋冪敤澶栭儴鎺ュ彛澶辫触锛寀rl锛歿}锛宺equest锛歿}锛宺esponse锛歿}", url, requestJson, response);
+            }
+        } catch (Exception e) {
+            errorMsg = e.getMessage();
+            log.error(nameSpaces + "璋冪敤澶栭儴鎺ュ彛寮傚父锛寀rl锛歿}锛宺equest锛歿}锛宺esponse锛歿}", url, requestJson, response, e);
+        } finally {
+            try {
+                apiLogService.save(
+                        nameSpaces,
+                        url,
+                        null,
+                        "127.0.0.1",
+                        requestJson,
+                        response,
+                        success,
+                        errorMsg
+                );
+            } catch (Exception e) {
+                log.error(nameSpaces + "淇濆瓨鎺ュ彛鏃ュ織澶辫触", e);
+            }
+        }
+    }
 }

--
Gitblit v1.9.1