From 312e24f10492fdf99534946df068ba5b1a8331bd Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期一, 30 三月 2026 15:15:45 +0800
Subject: [PATCH] ERP单据对接

---
 src/main/resources/mapper/OrderMapper.xml                     |   10 
 version/bak/jsjasrs_backup_2025_11_02_230001_4793338.bak      |    0 
 src/main/webapp/views/apiLog/apiLog.html                      |    9 
 src/main/java/com/zy/asrs/controller/OpenController.java      |   20 +
 src/main/webapp/static/js/apiLog/apiLog.js                    |   20 +
 src/main/java/com/zy/asrs/task/OrderSyncScheduler.java        |   49 +++
 src/main/java/com/zy/asrs/entity/u8/U8ResultVo.java           |   38 +++
 /dev/null                                                     |    0 
 src/main/java/com/zy/asrs/entity/u8/ReportU8Vo.java           |  160 ++++++++++++++
 src/main/java/com/zy/asrs/service/impl/ApiLogServiceImpl.java |   24 ++
 src/main/java/com/zy/common/config/AspectConfig.java          |    2 
 src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java  |   19 
 src/main/java/com/zy/asrs/mapper/OrderMapper.java             |    5 
 src/main/java/com/zy/asrs/task/AutoReportingScheduler.java    |    6 
 src/main/webapp/views/operateLog/operateLog.html              |   12 
 src/main/java/com/zy/asrs/service/ApiLogService.java          |    2 
 src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java  |  242 +++++++++++++++++++++
 17 files changed, 577 insertions(+), 41 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index e4019ca..4b7db9f 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -5,6 +5,8 @@
 import com.core.common.*;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.param.*;
+import com.zy.asrs.entity.u8.ReportU8Vo;
+import com.zy.asrs.entity.u8.U8ResultVo;
 import com.zy.asrs.service.OpenService;
 import com.zy.common.model.DetlDto;
 import com.zy.common.web.BaseController;
@@ -33,6 +35,24 @@
     @Autowired
     private OpenService openService;
 
+    @PostMapping("/purchasein_import")
+    @AppAuth(memo = "璁㈠崟涓婃姤娴嬭瘯鎺ュ彛")
+    public synchronized List<U8ResultVo> ts(@RequestHeader(required = false) String appkey,
+                                            @RequestBody(required = false) List<ReportU8Vo> param,
+                                            HttpServletRequest request){
+
+        List<U8ResultVo> u8ResultVos = new ArrayList<>();
+        for(ReportU8Vo reportU8Vo: param) {
+            U8ResultVo u8ResultVo = new U8ResultVo();
+            u8ResultVo.setResult("T");
+            u8ResultVo.setDescription("");
+            u8ResultVo.setReceiptNo(reportU8Vo.getCvouchcode());
+            u8ResultVo.setU8ReceiptNo("");
+            u8ResultVos.add(u8ResultVo);
+        }
+        return u8ResultVos;
+    }
+
     @PostMapping("/order/matSync/default/v1")
     @AppAuth(memo = "鍟嗗搧淇℃伅鍚屾")
     public synchronized R syncMatInfo(@RequestHeader(required = false) String appkey,
diff --git a/src/main/java/com/zy/asrs/entity/u8/ReportU8Vo.java b/src/main/java/com/zy/asrs/entity/u8/ReportU8Vo.java
new file mode 100644
index 0000000..ac9fec8
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/u8/ReportU8Vo.java
@@ -0,0 +1,160 @@
+package com.zy.asrs.entity.u8;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author pang.jiabao
+ * @description 涓婃姤U8璇锋眰浣�
+ * @createDate 2026/3/27 14:02
+ */
+@Data
+public class ReportU8Vo {
+
+    /**
+     * 璐﹀鍙�
+     */
+    @JsonProperty("CACCID")
+    @JSONField(name = "CACCID")
+    private String caccid;
+
+    /**
+     * 鍗曞彿
+     */
+    @JsonProperty("CVOUCHCODE")
+    @JSONField(name = "CVOUCHCODE")
+    private String cvouchcode;
+
+    /**
+     * 鏃ユ湡锛堟牸寮�2015-01-01锛�
+     */
+    @JsonProperty("DDATE")
+    @JSONField(name = "DDATE")
+    private String ddate;
+
+    /**
+     * 鍏宠仈鍗曟嵁绫诲瀷
+     */
+    @JsonProperty("CGLTYPE")
+    @JSONField(name = "CGLTYPE")
+    private String cgltype;
+
+    /**
+     * 浠撳簱缂栫爜
+     */
+    @JsonProperty("CWHCODE")
+    @JSONField(name = "CWHCODE")
+    private String cwhcode;
+
+    /**
+     * 鍏ュ簱绫诲埆
+     */
+    @JsonProperty("CRDCODE")
+    @JSONField(name = "CRDCODE")
+    private String crdcode;
+
+    /**
+     * 鍒跺崟浜�
+     */
+    @JsonProperty("CMAKER")
+    @JSONField(name = "CMAKER")
+    private String cmaker;
+
+    /**
+     * 瀹℃牳浜�
+     */
+    @JsonProperty("CHANDLER")
+    @JSONField(name = "CHANDLER")
+    private String chandler;
+
+    /**
+     * 鏄庣粏鍒楄〃
+     */
+    @JsonProperty("DETAILList")
+    @JSONField(name = "DETAILList")
+    private List<Item> detailList;
+
+    @Data
+    public static class Item {
+
+        /**
+         * 瀛樿揣缂栫爜
+         */
+        @JsonProperty("CINVCODE")
+        @JSONField(name = "CINVCODE")
+        private String cinvcode;
+
+        /**
+         * 涓昏閲忓崟浣嶆暟閲忥紙绮惧害鍙朥8鍩虹璁剧疆鐨勬暟鎹簿搴︼級
+         */
+        @JsonProperty("IQUANTITY")
+        @JSONField(name = "IQUANTITY")
+        private Double iquantity;
+
+        /**
+         * 鎵瑰彿
+         */
+        @JsonProperty("CBATCH")
+        @JSONField(name = "CBATCH")
+        private String cbatch;
+
+        /**
+         * 閲囪喘鍗曞叧鑱旀槑缁咺D
+         */
+        @JsonProperty("AUTOID_PO")
+        @JSONField(name = "AUTOID_PO")
+        private String autoidPo;
+
+        /**
+         * 璁㈠崟鏄庣粏ID瀵瑰簲瀛楁鍚�
+         */
+        @JsonProperty("POAUTOIDCOL")
+        @JSONField(name = "POAUTOIDCOL")
+        private String poautoidcol;
+
+        /**
+         * 鍙戣揣鍗曞叧鑱旀槑缁咺D
+         */
+        @JsonProperty("AUTOID_SO")
+        @JSONField(name = "AUTOID_SO")
+        private String autoidSo;
+
+        /**
+         * 璁㈠崟鏄庣粏ID瀵瑰簲瀛楁鍚�
+         */
+        @JsonProperty("SOAUTOIDCOL")
+        @JSONField(name = "SOAUTOIDCOL")
+        private String soautoidcol;
+
+        /**
+         * 鐢熶骇璁㈠崟鍏宠仈鏄庣粏ID
+         */
+        @JsonProperty("AUTOID_MO")
+        @JSONField(name = "AUTOID_MO")
+        private String autoidMo;
+
+        /**
+         * 璁㈠崟鏄庣粏ID瀵瑰簲瀛楁鍚�
+         */
+        @JsonProperty("MOAUTOIDCOL")
+        @JSONField(name = "MOAUTOIDCOL")
+        private String moautoidcol;
+
+        /**
+         * 鎵�鏈夌被鍨嬪叧鑱旀槑缁咺D
+         */
+        @JsonProperty("AUTOID_ALL")
+        @JSONField(name = "AUTOID_ALL")
+        private String autoidAll;
+
+        /**
+         * 璁㈠崟鏄庣粏ID瀵瑰簲瀛楁鍚�
+         */
+        @JsonProperty("ALLCAUTOIDCOL")
+        @JSONField(name = "ALLCAUTOIDCOL")
+        private String allcautoidcol;
+    }
+}
diff --git a/src/main/java/com/zy/asrs/entity/u8/U8ResultVo.java b/src/main/java/com/zy/asrs/entity/u8/U8ResultVo.java
new file mode 100644
index 0000000..eaaf92b
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/u8/U8ResultVo.java
@@ -0,0 +1,38 @@
+package com.zy.asrs.entity.u8;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+/**
+ * @author pang.jiabao
+ * @description U8鍝嶅簲浣�
+ * @createDate 2026/3/27 13:59
+ */
+@Data
+public class U8ResultVo {
+
+    /**
+     * 鎴愬姛T锛屽け璐
+     */
+    @JsonProperty("Result")
+    private String result;
+
+    /**
+     * 澶辫触鍘熷洜
+     */
+    @JsonProperty("Description")
+    private String description;
+
+    /**
+     * 浼犲叆鐨勫崟鍙�
+     */
+    @JsonProperty("ReceiptNo")
+    private String receiptNo;
+
+    /**
+     * 鐢熸垚鍚嶶8鐨勫崟鍙�
+     */
+    @JsonProperty("U8ReceiptNo")
+    private String u8ReceiptNo;
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/OrderMapper.java b/src/main/java/com/zy/asrs/mapper/OrderMapper.java
index 5500ade..3d090c8 100644
--- a/src/main/java/com/zy/asrs/mapper/OrderMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/OrderMapper.java
@@ -23,4 +23,9 @@
 
     Order selectOrderMoveStatus();
     Order selectOrderMoveStatusInitial();
+
+    /**
+     * 鏍规嵁璁㈠崟鍙锋壒閲忔洿鏂拌鍗曠姸鎬�
+     */
+    void batchUpdateSettleByOrderNos(List<String> successReceiptNos);
 }
diff --git a/src/main/java/com/zy/asrs/service/ApiLogService.java b/src/main/java/com/zy/asrs/service/ApiLogService.java
index 43e45d5..142aa5e 100644
--- a/src/main/java/com/zy/asrs/service/ApiLogService.java
+++ b/src/main/java/com/zy/asrs/service/ApiLogService.java
@@ -7,6 +7,8 @@
 
     void save(String namespace, String url, String appkey, String ip, String request, String response, boolean success);
 
+    void save(String namespace, String url, String appkey, String ip, String request, String response, boolean success, String error);
+
     boolean clearWeekBefore();
 
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/ApiLogServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/ApiLogServiceImpl.java
index 30a725f..08ead58 100644
--- a/src/main/java/com/zy/asrs/service/impl/ApiLogServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/ApiLogServiceImpl.java
@@ -45,6 +45,30 @@
     }
 
     @Override
+    public void save(String namespace, String url, String appkey, String ip, String request, String response, boolean success, String error) {
+        Date now = new Date();
+        ApiLog apiLog = new ApiLog(
+                String.valueOf(snowflakeIdWorker.nextId()),    // 鏃ュ織缂栧彿
+                namespace,    // 鍚嶇О绌洪棿
+                url,    // 鎺ュ彛鍦板潃
+                appkey,    // 骞冲彴瀵嗛挜
+                String.valueOf(now.getTime()),    // 鏃堕棿鎴�
+                ip,    // 瀹㈡埛绔疘P
+                request,    // 璇锋眰鍐呭
+                response,
+                error,    // 寮傚父鍐呭
+                success ? 1 : 0,    // 缁撴灉
+                1,    // 鐘舵��
+                now,    // 娣诲姞鏃堕棿
+                null,    // 淇敼鏃堕棿
+                null    // 澶囨敞
+        );
+        if (!this.insert(apiLog)) {
+            log.error("鎺ュ彛璋冪敤鏃ュ織淇濆瓨澶辫触锛�");
+        }
+    }
+
+    @Override
     public boolean clearWeekBefore() {
         return this.baseMapper.clearWeekBefore() > 0;
     }
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
index e18d9aa..10ceedf 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
@@ -20,7 +20,6 @@
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Objects;
 
 @Slf4j
 @Service("orderService")
@@ -98,15 +97,15 @@
             }
         }
         //褰撹璁㈠崟鏄庣粏鏁伴噺==瀹屾垚鏁伴噺涓�>涓婃姤鏁伴噺锛屼笂鎶ョ姸鎬佷负 鍚� 鎴栬�� 鏄� 鏃堕兘鏀规垚绛夊緟涓婃姤锛屽畾鏃跺櫒杞绛夊緟涓婃姤杩涜涓婃姤
-        for (OrderDetl orderDetl : orderDetls) {
-            if (Objects.equals(orderDetl.getAnfme(), orderDetl.getQty())&&
-                    orderDetl.getQty()>(orderDetl.getUnits() == null ? 0 : orderDetl.getUnits())
-                    &&orderDetl.getInspect()<2) {
-
-                    orderDetl.setInspect(2);//绛夊緟涓婃姤
-                    orderDetlService.updateById(orderDetl);
-            }
-        }
+//        for (OrderDetl orderDetl : orderDetls) {
+//            if (Objects.equals(orderDetl.getAnfme(), orderDetl.getQty())&&
+//                    orderDetl.getQty()>(orderDetl.getUnits() == null ? 0 : orderDetl.getUnits())
+//                    &&orderDetl.getInspect()<2) {
+//
+//                    orderDetl.setInspect(2);//绛夊緟涓婃姤
+//                    orderDetlService.updateById(orderDetl);
+//            }
+//        }
         if (complete) {
             if (!this.updateSettle(order.getId(), 4L, null)) {
                 throw new CoolException("淇敼璁㈠崟銆恛rderNo = " + order.getOrderNo() + "銆戠姸鎬佷负宸插畬鎴愬け璐�");
diff --git a/src/main/java/com/zy/asrs/task/AutoReportingScheduler.java b/src/main/java/com/zy/asrs/task/AutoReportingScheduler.java
index b122e8a..e3fa166 100644
--- a/src/main/java/com/zy/asrs/task/AutoReportingScheduler.java
+++ b/src/main/java/com/zy/asrs/task/AutoReportingScheduler.java
@@ -8,8 +8,6 @@
 import com.zy.system.entity.Config;
 import com.zy.system.service.ConfigService;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.scheduling.annotation.Async;
-import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
@@ -34,8 +32,8 @@
     private ConfigService configService;
 
     //    @Scheduled(cron = "0 0/10 * * * ? ")
-    @Scheduled(cron = "0/10 * * * * ? ")
-    @Async("orderThreadPool")
+//    @Scheduled(cron = "0/10 * * * * ? ")
+//    @Async("orderThreadPool")
     void execute() {
         Config config = configService.selectConfigByCode("AutoReportU8");
         if (config != null && config.getStatus() == 1) {
diff --git a/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java b/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
index 61004e9..ae32f65 100644
--- a/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
+++ b/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
@@ -4,16 +4,18 @@
 import com.zy.asrs.entity.Order;
 import com.zy.asrs.service.ApiLogService;
 import com.zy.asrs.service.OrderService;
-import com.zy.asrs.task.core.ReturnT;
 import com.zy.asrs.task.handler.OrderSyncHandler;
 import com.zy.common.entity.Parameter;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Component;
 
+import javax.annotation.Resource;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * Created by vincent on 2020/7/7
@@ -38,17 +40,46 @@
         }
     }
 
+    @Resource
+    private ThreadPoolTaskExecutor orderThreadPool;
+
 //    @Scheduled(cron = "0/5 * * * * ? ")
-    @Async("orderThreadPool")
-    public void completeAndReport(){
+    // 10鍒嗛挓鎵ц涓�娆�
+    @Scheduled(cron = "0 0/10 * * * ?")
+    public void completeAndReport() {
         String erpReport = Parameter.get().getErpReport();
         if (!Cools.isEmpty(erpReport) && erpReport.equals("true")) {
             List<Order> orders = orderService.selectComplete();
-            for (Order order : orders) {
-                ReturnT<String> result = orderSyncHandler.start(order);
-                if (!result.isSuccess()) {
-                    log.error("鍗曟嵁[orderNo={}]涓婃姤erp澶辫触", order.getOrderNo());
-                }
+            if (orders.isEmpty()) {
+                return;
+            }
+            // 鎸夊崟鎹被鍨嬪垎缁�
+            Map<String, List<Order>> groupedOrders = orders.stream()
+                    .collect(Collectors.groupingBy(order -> {
+                        String type = order.getDocType$();
+                        switch (type) {
+                            case "閲囪喘璁㈠崟":
+                            case "閲囪喘鍒拌揣鍗�":
+                            case "濮斿璁㈠崟":
+                            case "濮斿鍒拌揣鍗�":
+                            case "鍒拌揣鍗�":
+                            case "鏉ユ枡妫�楠屽崟":
+                                return "閲囪喘鍏ュ簱";
+                            case "閿�鍞彂璐у崟":
+                                return "閿�鍞嚭搴�";
+                            case "鐢熶骇璁㈠崟":
+                            case "妫�楠屽崟":
+                                return "浜ф垚鍝佸叆搴撳崟";
+                            case "棰嗘枡鐢宠鍗�":
+                                return "鏉愭枡鍑哄簱鍗�";
+                            default:
+                                return type;
+                        }
+                    }));
+            for (Map.Entry<String, List<Order>> map : groupedOrders.entrySet()) {
+                orderThreadPool.submit(() -> {
+                    orderSyncHandler.startNew(map);
+                });
             }
         }
     }
diff --git a/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java b/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
index 43b50b1..750920d 100644
--- a/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
@@ -8,6 +8,9 @@
 import com.zy.asrs.entity.DocType;
 import com.zy.asrs.entity.Order;
 import com.zy.asrs.entity.OrderDetl;
+import com.zy.asrs.entity.u8.ReportU8Vo;
+import com.zy.asrs.entity.u8.U8ResultVo;
+import com.zy.asrs.mapper.OrderMapper;
 import com.zy.asrs.service.ApiLogService;
 import com.zy.asrs.service.DocTypeService;
 import com.zy.asrs.service.OrderDetlService;
@@ -24,7 +27,10 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.List;
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * Created by vincent on 2020/7/7
@@ -43,6 +49,18 @@
     private ApiLogService apiLogService;
     @Autowired
     private DocTypeService docTypeService;
+
+    private static final String baseUrl = "127.0.0.1:8081/jsjwms/open/asrs";
+    private static final Map<String, String> pathMap = new HashMap<String, String>() {{
+        put("閲囪喘鍏ュ簱", "/purchasein_import");
+        put("閿�鍞嚭搴�", "/saleout_import");
+        put("浜ф垚鍝佸叆搴撳崟", "/productin_import");
+        put("鏉愭枡鍑哄簱鍗�", "/materialout_import");
+        put("鍏朵粬鍏ュ簱鍗�", "/otherin_import");
+        put("鍏朵粬鍑哄簱鍗�", "/otherout_import");
+    }};
+    @Resource
+    private OrderMapper orderMapper;
 
     @Transactional
     public ReturnT<String> start(Order order) {
@@ -157,4 +175,226 @@
         return SUCCESS;
     }
 
+    public void startNew(Map.Entry<String, List<Order>> orderMap) {
+        String docName = orderMap.getKey();
+        List<Order> value = orderMap.getValue();
+        String path = pathMap.get(docName);
+        if (path == null) {
+            log.info("鍗曟嵁绫诲瀷涓嶅瓨鍦細{}", docName);
+            return;
+        }
+        // 鏋勯�犺姹備綋
+        List<ReportU8Vo> requestBody = getRequestBody(docName, value);
+        String requestJson = JSONObject.toJSONString(requestBody);
+        String response = "";
+        boolean success = false;
+        String errorMsg = null;
+        String url = baseUrl + path;
+        String nameSpaces = "鍗曟嵁涓婃姤";
+        try {
+            response = new HttpHandler.Builder()
+                    .setUri(baseUrl)
+                    .setPath(path)
+                    .setJson(requestJson)
+                    .build()
+                    .doPost();
+            List<U8ResultVo> list = JSON.parseArray(response, U8ResultVo.class);
+            if (list != null && list.size() != 0) {
+                List<String> successReceiptNos = list.stream().filter(u8ResultVo -> "T".equals(u8ResultVo.getResult())).map(U8ResultVo::getReceiptNo).collect(Collectors.toList());
+                if (!successReceiptNos.isEmpty()) {
+                    orderMapper.batchUpdateSettleByOrderNos(successReceiptNos);
+                }
+                log.info("鍗曟嵁涓婃姤鎴愬姛锛屽崟鎹紪鍙凤細{}", successReceiptNos);
+                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);
+            }
+        }
+    }
+
+    private List<ReportU8Vo> getRequestBody(String docName, List<Order> value) {
+        List<ReportU8Vo> list = new ArrayList<>();
+        String now = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
+        switch (docName) {
+            case "閲囪喘鍏ュ簱":
+                for (Order order : value) {
+                    ReportU8Vo reportU8Vo = new ReportU8Vo();
+                    reportU8Vo.setCaccid("001");
+                    reportU8Vo.setCvouchcode(order.getOrderNo());
+                    reportU8Vo.setDdate(now);
+                    reportU8Vo.setCgltype(order.getDocType$());
+                    reportU8Vo.setCwhcode("103");
+                    reportU8Vo.setCrdcode("101");
+                    reportU8Vo.setCmaker(order.getCreateBy$());
+                    reportU8Vo.setChandler(order.getUpdateBy$());
+                    List<ReportU8Vo.Item> itemList = new ArrayList<>();
+                    List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId());
+                    String docType$ = order.getDocType$();
+                    for (OrderDetl orderDetl : orderDetlList) {
+                        ReportU8Vo.Item item = new ReportU8Vo.Item();
+                        item.setCinvcode(orderDetl.getMatnr());
+                        item.setIquantity(orderDetl.getQty());
+                        item.setAutoidPo(orderDetl.getSku());
+                        item.setPoautoidcol(docType$.equals("閲囪喘璁㈠崟") ? "ID" : docType$.equals("閲囪喘鍒拌揣鍗�") || docType$.equals("濮斿鍒拌揣鍗�") ? "Autoid" :
+                                docType$.equals("濮斿璁㈠崟") ? "MODetailsID" : "");
+                        item.setCbatch(orderDetl.getBatch());
+                        itemList.add(item);
+                    }
+                    reportU8Vo.setDetailList(itemList);
+                    list.add(reportU8Vo);
+                }
+                break;
+            case "閿�鍞嚭搴�":
+                for (Order order : value) {
+                    ReportU8Vo reportU8Vo = new ReportU8Vo();
+                    reportU8Vo.setCaccid("001");
+                    reportU8Vo.setCvouchcode(order.getOrderNo());
+                    reportU8Vo.setDdate(now);
+                    reportU8Vo.setCgltype(order.getDocType$());
+                    reportU8Vo.setCwhcode("101");
+                    reportU8Vo.setCrdcode("201");
+                    reportU8Vo.setCmaker(order.getCreateBy$());
+                    reportU8Vo.setChandler(order.getUpdateBy$());
+                    List<ReportU8Vo.Item> itemList = new ArrayList<>();
+                    List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId());
+                    String docType$ = order.getDocType$();
+                    for (OrderDetl orderDetl : orderDetlList) {
+                        ReportU8Vo.Item item = new ReportU8Vo.Item();
+                        item.setCinvcode(orderDetl.getMatnr());
+                        item.setIquantity(orderDetl.getQty());
+                        item.setAutoidSo(orderDetl.getSku());
+                        item.setSoautoidcol(docType$.equals("鍙戣揣鍗�") ? "IDLSID" : "");
+                        item.setCbatch(orderDetl.getBatch());
+                        itemList.add(item);
+                    }
+                    reportU8Vo.setDetailList(itemList);
+                    list.add(reportU8Vo);
+                }
+                break;
+            case "浜ф垚鍝佸叆搴撳崟":
+                for (Order order : value) {
+                    ReportU8Vo reportU8Vo = new ReportU8Vo();
+                    reportU8Vo.setCaccid("001");
+                    reportU8Vo.setCvouchcode(order.getOrderNo());
+                    reportU8Vo.setDdate(now);
+                    reportU8Vo.setCgltype(order.getDocType$());
+                    reportU8Vo.setCwhcode("101");
+                    reportU8Vo.setCrdcode("201");
+                    reportU8Vo.setCmaker(order.getCreateBy$());
+                    reportU8Vo.setChandler(order.getUpdateBy$());
+                    List<ReportU8Vo.Item> itemList = new ArrayList<>();
+                    List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId());
+                    for (OrderDetl orderDetl : orderDetlList) {
+                        ReportU8Vo.Item item = new ReportU8Vo.Item();
+                        item.setCinvcode(orderDetl.getMatnr());
+                        item.setIquantity(orderDetl.getQty());
+                        item.setAutoidMo(orderDetl.getSku());
+                        item.setMoautoidcol("MODID");
+                        item.setCbatch(orderDetl.getBatch());
+                        itemList.add(item);
+                    }
+                    reportU8Vo.setDetailList(itemList);
+                    list.add(reportU8Vo);
+                }
+                break;
+            case "鏉愭枡鍑哄簱鍗�":
+                for (Order order : value) {
+                    ReportU8Vo reportU8Vo = new ReportU8Vo();
+                    reportU8Vo.setCaccid("001");
+                    reportU8Vo.setCvouchcode(order.getOrderNo());
+                    reportU8Vo.setDdate(now);
+                    reportU8Vo.setCgltype(order.getDocType$());
+                    reportU8Vo.setCwhcode("5");
+                    reportU8Vo.setCrdcode("202");
+                    reportU8Vo.setCmaker(order.getCreateBy$());
+                    reportU8Vo.setChandler(order.getUpdateBy$());
+                    List<ReportU8Vo.Item> itemList = new ArrayList<>();
+                    List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId());
+                    String docType$ = order.getDocType$();
+                    for (OrderDetl orderDetl : orderDetlList) {
+                        ReportU8Vo.Item item = new ReportU8Vo.Item();
+                        item.setCinvcode(orderDetl.getMatnr());
+                        item.setIquantity(orderDetl.getQty());
+                        item.setAutoidAll(orderDetl.getSku());
+                        item.setAllcautoidcol(docType$.equals("鐢熶骇璁㈠崟") ? "AllocateId" : docType$.equals("濮斿璁㈠崟") ? "MOMaterialsID" :
+                                docType$.equals("棰嗘枡鐢宠鍗�") ? "AutoID" : "");
+                        item.setCbatch(orderDetl.getBatch());
+                        itemList.add(item);
+                    }
+                    reportU8Vo.setDetailList(itemList);
+                    list.add(reportU8Vo);
+                }
+                break;
+            case "鍏朵粬鍏ュ簱鍗�":
+                for (Order order : value) {
+                    ReportU8Vo reportU8Vo = new ReportU8Vo();
+                    reportU8Vo.setCaccid("001");
+                    reportU8Vo.setCvouchcode(order.getOrderNo());
+                    reportU8Vo.setDdate(now);
+                    reportU8Vo.setCgltype(order.getDocType$());
+                    reportU8Vo.setCwhcode("109");
+                    reportU8Vo.setCrdcode("199");
+                    reportU8Vo.setCmaker(order.getCreateBy$());
+                    reportU8Vo.setChandler(order.getUpdateBy$());
+                    List<ReportU8Vo.Item> itemList = new ArrayList<>();
+                    List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId());
+                    for (OrderDetl orderDetl : orderDetlList) {
+                        ReportU8Vo.Item item = new ReportU8Vo.Item();
+                        item.setCinvcode(orderDetl.getMatnr());
+                        item.setIquantity(orderDetl.getQty());
+                        item.setCbatch(orderDetl.getBatch());
+                        itemList.add(item);
+                    }
+                    reportU8Vo.setDetailList(itemList);
+                    list.add(reportU8Vo);
+                }
+                break;
+            case "鍏朵粬鍑哄簱鍗�":
+                for (Order order : value) {
+                    ReportU8Vo reportU8Vo = new ReportU8Vo();
+                    reportU8Vo.setCaccid("001");
+                    reportU8Vo.setCvouchcode(order.getOrderNo());
+                    reportU8Vo.setDdate(now);
+                    reportU8Vo.setCgltype(order.getDocType$());
+                    reportU8Vo.setCwhcode("109");
+                    reportU8Vo.setCrdcode("299");
+                    reportU8Vo.setCmaker(order.getCreateBy$());
+                    reportU8Vo.setChandler(order.getUpdateBy$());
+                    List<ReportU8Vo.Item> itemList = new ArrayList<>();
+                    List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId());
+                    for (OrderDetl orderDetl : orderDetlList) {
+                        ReportU8Vo.Item item = new ReportU8Vo.Item();
+                        item.setCinvcode(orderDetl.getMatnr());
+                        item.setIquantity(orderDetl.getQty());
+                        item.setCbatch(orderDetl.getBatch());
+                        itemList.add(item);
+                    }
+                    reportU8Vo.setDetailList(itemList);
+                    list.add(reportU8Vo);
+                }
+                break;
+            default:
+        }
+        return list;
+    }
+
 }
diff --git a/src/main/java/com/zy/common/config/AspectConfig.java b/src/main/java/com/zy/common/config/AspectConfig.java
index 780eb46..d6b58e2 100644
--- a/src/main/java/com/zy/common/config/AspectConfig.java
+++ b/src/main/java/com/zy/common/config/AspectConfig.java
@@ -89,7 +89,7 @@
     private void saveLog(ProceedingJoinPoint joinPoint, HttpServletRequest request, Object result,String memo) {
         Long userId = 9527L;
         String token = request.getHeader("token");
-        UserLogin userLogin = userLoginService.selectOne(new EntityWrapper<UserLogin>().eq("token", token).eq("system", "WMS"));
+        UserLogin userLogin = userLoginService.selectOne(new EntityWrapper<UserLogin>().eq("token", token));
         if (userLogin != null) {
             User user = userService.selectById(userLogin.getUserId());
             if (user != null) {
diff --git a/src/main/resources/mapper/OrderMapper.xml b/src/main/resources/mapper/OrderMapper.xml
index 7e84fb4..98675b6 100644
--- a/src/main/resources/mapper/OrderMapper.xml
+++ b/src/main/resources/mapper/OrderMapper.xml
@@ -53,9 +53,17 @@
         where 1=1
         and id = #{orderId}
     </update>
+    <update id="batchUpdateSettleByOrderNos">
+        update man_order
+        set settle = 6
+        where order_no in
+        <foreach collection="list" item="item" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </update>
 
     <select id="selectComplete" resultMap="BaseResultMap">
-        select top 5 *
+        select top 100 *
         from man_order
         where 1=1
         and settle = 4
diff --git "a/src/main/resources/\344\270\255\346\211\254WMS\347\263\273\347\273\237API\346\216\245\345\217\243.docx" "b/src/main/resources/\344\270\255\346\211\254WMS\347\263\273\347\273\237API\346\216\245\345\217\243.docx"
deleted file mode 100644
index a0028d5..0000000
--- "a/src/main/resources/\344\270\255\346\211\254WMS\347\263\273\347\273\237API\346\216\245\345\217\243.docx"
+++ /dev/null
Binary files differ
diff --git a/src/main/webapp/static/js/apiLog/apiLog.js b/src/main/webapp/static/js/apiLog/apiLog.js
index 1d24b5e..3c41126 100644
--- a/src/main/webapp/static/js/apiLog/apiLog.js
+++ b/src/main/webapp/static/js/apiLog/apiLog.js
@@ -21,8 +21,9 @@
         cellMinWidth: 50,
         height: 'full-120',
         cols: [[
-            {type: 'checkbox'}
-            // ,{field: 'id', align: 'center',title: 'ID'}
+            // {type: 'checkbox'}
+            {field: 'id', align: 'center',title: 'ID', width: 100}
+            ,{field: 'createTime$', align: 'center',title: '娣诲姞鏃堕棿', width: 160}
             // ,{field: 'uuid', align: 'center',title: '鏃ュ織缂栧彿'}
             ,{field: 'namespace', align: 'center',title: '鍚嶇О绌洪棿'}
             ,{field: 'url', align: 'center',title: '琛ㄥ崟ID'}
@@ -31,14 +32,13 @@
             ,{field: 'clientIp', align: 'center',title: 'URL',hide: true}
             ,{field: 'request', align: 'center',title: '璇锋眰鍐呭'}
             ,{field: 'response', align: 'center',title: '鎿嶄綔鍐呭'}
-            // ,{field: 'err', align: 'center',title: '寮傚父鍐呭'}
+            ,{field: 'err', align: 'center',title: '寮傚父鍐呭'}
             ,{field: 'result$', align: 'center',title: '缁撴灉', templet: '#resTpl', width: 80}
             // ,{field: 'status$', align: 'center',title: '鐘舵��'}
-            ,{field: 'createTime$', align: 'center',title: '娣诲姞鏃堕棿'}
             // ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿'}
             ,{field: 'memo', align: 'center',title: '澶囨敞', hide: true}
 
-            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width: 80}
+            // ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width: 80}
         ]],
         request: {
             pageName: 'curr',
@@ -244,6 +244,16 @@
         }, 300);
     }
     layDateRender();
+    // 鏃堕棿閫夋嫨鍣�
+    layDate.render({
+        elem: '#createTime\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '.layui-laydate-range'
+        ,type: 'datetime'
+        ,range: true
+    });
 
 });
 
diff --git a/src/main/webapp/views/apiLog/apiLog.html b/src/main/webapp/views/apiLog/apiLog.html
index e35b6a9..8f5bb00 100644
--- a/src/main/webapp/views/apiLog/apiLog.html
+++ b/src/main/webapp/views/apiLog/apiLog.html
@@ -29,6 +29,12 @@
                             <input class="layui-input" type="text" name="request" placeholder="璇疯緭鍏ワ紙璁㈠崟鍙锋垨鍝佸彿锛�" autocomplete="off">
                         </div>
                     </div>
+                    <!-- 鏃ユ湡鑼冨洿 -->
+                    <div class="layui-inline" style="width: 300px">
+                        <div class="layui-input-inline">
+                            <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
+                        </div>
+                    </div>
                     <div class="layui-inline">&emsp;
                         <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
                             <i class="layui-icon">&#xe615;</i>鎼滅储
@@ -47,7 +53,8 @@
 <script type="text/html" id="toolbar">
     <div class="layui-btn-container">
 <!--        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>-->
-        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>
+<!--        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>-->
+        <button></button>
         <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">瀵煎嚭</button>
     </div>
 </script>
diff --git a/src/main/webapp/views/operateLog/operateLog.html b/src/main/webapp/views/operateLog/operateLog.html
index 827ece5..e0e6d91 100644
--- a/src/main/webapp/views/operateLog/operateLog.html
+++ b/src/main/webapp/views/operateLog/operateLog.html
@@ -16,18 +16,12 @@
 <div id="search-box" class="layui-form layui-card-header">
     <div class="layui-inline">
         <div class="layui-input-inline">
-            <input class="layui-input" type="text" name="id" placeholder="缂栧彿" autocomplete="off">
+            <input class="layui-input" type="text" name="action" placeholder="鍚嶇О绌洪棿" autocomplete="off">
         </div>
     </div>
     <div class="layui-inline">
-        <div class="layui-input-inline cool-auto-complete">
-            <input id="userId" class="layui-input" name="user_id" type="text" placeholder="璇疯緭鍏�" autocomplete="off" style="display: none">
-            <input id="userUsername" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="鐢ㄦ埛" onfocus=this.blur()>
-            <div class="cool-auto-complete-window">
-                <input class="cool-auto-complete-window-input" data-key="userQuery" onkeyup="autoLoad(this.getAttribute('data-key'))">
-                <select class="cool-auto-complete-window-select" data-key="userQuerySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
-                </select>
-            </div>
+        <div class="layui-input-inline">
+            <input class="layui-input" type="text" name="request" placeholder="鎿嶄綔鍐呭" autocomplete="off">
         </div>
     </div>
     <!-- 鏃ユ湡鑼冨洿 -->
diff --git a/version/bak/jsjasrs_backup_2025_11_02_230001_4793338.bak b/version/bak/jsjasrs_backup_2025_11_02_230001_4793338.bak
new file mode 100644
index 0000000..fab95c8
--- /dev/null
+++ b/version/bak/jsjasrs_backup_2025_11_02_230001_4793338.bak
Binary files differ
diff --git a/version/bak/lfdasrs b/version/bak/lfdasrs
deleted file mode 100644
index 1e823af..0000000
--- a/version/bak/lfdasrs
+++ /dev/null
Binary files differ
diff --git a/version/bak/lfdasrs_LogBackup_2023-02-02_17-03-48.bak b/version/bak/lfdasrs_LogBackup_2023-02-02_17-03-48.bak
deleted file mode 100644
index 4d3c8b1..0000000
--- a/version/bak/lfdasrs_LogBackup_2023-02-02_17-03-48.bak
+++ /dev/null
Binary files differ
diff --git "a/version/doc/WCS\344\270\216PLC\351\200\232\350\256\257\346\216\245\345\217\243\345\215\217\350\256\256V1.docx" "b/version/doc/WCS\344\270\216PLC\351\200\232\350\256\257\346\216\245\345\217\243\345\215\217\350\256\256V1.docx"
deleted file mode 100644
index 8a6c014..0000000
--- "a/version/doc/WCS\344\270\216PLC\351\200\232\350\256\257\346\216\245\345\217\243\345\215\217\350\256\256V1.docx"
+++ /dev/null
Binary files differ
diff --git "a/version/doc/\344\270\255\346\211\254WCS\344\270\216\345\240\206\345\236\233\346\234\272\351\200\232\350\256\257\345\215\217\350\256\25620220114.docx" "b/version/doc/\344\270\255\346\211\254WCS\344\270\216\345\240\206\345\236\233\346\234\272\351\200\232\350\256\257\345\215\217\350\256\25620220114.docx"
deleted file mode 100644
index 9eb9525..0000000
--- "a/version/doc/\344\270\255\346\211\254WCS\344\270\216\345\240\206\345\236\233\346\234\272\351\200\232\350\256\257\345\215\217\350\256\25620220114.docx"
+++ /dev/null
Binary files differ
diff --git "a/version/doc/\345\225\206\345\223\201\346\241\243\346\241\210Excel\345\257\274\345\205\245\346\250\241\346\235\277.xlsx" "b/version/doc/\345\225\206\345\223\201\346\241\243\346\241\210Excel\345\257\274\345\205\245\346\250\241\346\235\277.xlsx"
deleted file mode 100644
index 87db32a..0000000
--- "a/version/doc/\345\225\206\345\223\201\346\241\243\346\241\210Excel\345\257\274\345\205\245\346\250\241\346\235\277.xlsx"
+++ /dev/null
Binary files differ
diff --git "a/version/doc/\350\207\252\345\212\250\345\214\226\347\253\213\344\275\223\344\273\223\345\272\223ASRS\344\270\216ERP\345\257\271\346\216\245\345\215\217\350\256\256_20220625A.docx" "b/version/doc/\350\207\252\345\212\250\345\214\226\347\253\213\344\275\223\344\273\223\345\272\223ASRS\344\270\216ERP\345\257\271\346\216\245\345\215\217\350\256\256_20220625A.docx"
deleted file mode 100644
index cc991ee..0000000
--- "a/version/doc/\350\207\252\345\212\250\345\214\226\347\253\213\344\275\223\344\273\223\345\272\223ASRS\344\270\216ERP\345\257\271\346\216\245\345\215\217\350\256\256_20220625A.docx"
+++ /dev/null
Binary files differ

--
Gitblit v1.9.1