From 3277c951b2d31c55ec8b752a5a6a47488cfd7e69 Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期一, 08 十二月 2025 08:40:58 +0800
Subject: [PATCH] #erp上报

---
 src/main/resources/mapper/OrderMapper.xml                                  |   19 +
 src/main/java/com/zy/asrs/service/OrderService.java                        |    2 
 src/main/resources/mapper/OrderPakinMapper.xml                             |   16 
 src/main/java/com/zy/common/model/enumUtils/OrderInAndOutType.java         |   35 +
 src/main/java/com/zy/asrs/task/kingdee/handler/ReviewOrderSyncHandler.java |  206 +++++++---
 src/main/java/com/zy/asrs/task/kingdee/ReviewOrderSyncScheduler.java       |    6 
 src/main/java/com/zy/asrs/mapper/OrderPakinMapper.java                     |    2 
 src/main/java/com/zy/common/model/DetlDto.java                             |    1 
 src/main/resources/mapper/OrderPakoutMapper.xml                            |   16 
 src/main/webapp/static/js/orderPakin/order.js                              |    2 
 src/main/java/com/zy/asrs/service/impl/OrderDetlPakinServiceImpl.java      |    5 
 src/main/java/com/zy/asrs/task/kingdee/SaveOrderSyncScheduler.java         |   15 
 src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java   |  285 +++++++++++----
 src/main/java/com/zy/asrs/utils/OrderInAndOutUtil.java                     |   62 +++
 src/main/java/com/zy/asrs/mapper/OrderDetlPakinMapper.java                 |    1 
 src/main/java/com/zy/asrs/mapper/OrderPakoutMapper.java                    |    3 
 src/main/java/com/zy/asrs/task/OrderSyncScheduler.java                     |    2 
 src/main/java/com/zy/asrs/task/kingdee/handler/SubmitOrderSyncHandler.java |  218 ++++++++----
 src/main/java/com/zy/asrs/service/impl/OrderPakinServiceImpl.java          |   11 
 src/main/java/com/zy/erp/kingdee/enums/KingDeeUtilType.java                |    9 
 src/main/resources/mapper/OrderDetlPakinMapper.xml                         |    8 
 src/main/java/com/zy/asrs/service/OrderPakinService.java                   |    2 
 src/main/java/com/zy/asrs/service/OrderDetlPakinService.java               |    1 
 src/main/java/com/zy/asrs/service/impl/OrderPakoutServiceImpl.java         |    8 
 src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java               |    8 
 src/main/java/com/zy/asrs/mapper/OrderMapper.java                          |    3 
 src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java               |   44 -
 src/main/java/com/zy/asrs/task/kingdee/SubmitOrderSyncScheduler.java       |   11 
 src/main/java/com/zy/asrs/service/OrderPakoutService.java                  |    2 
 src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java    |   15 
 src/main/java/com/zy/common/model/enumUtils/OrderMethodVo.java             |    3 
 31 files changed, 739 insertions(+), 282 deletions(-)

diff --git a/src/main/java/com/zy/asrs/mapper/OrderDetlPakinMapper.java b/src/main/java/com/zy/asrs/mapper/OrderDetlPakinMapper.java
index efb31e2..0076a43 100644
--- a/src/main/java/com/zy/asrs/mapper/OrderDetlPakinMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/OrderDetlPakinMapper.java
@@ -58,5 +58,6 @@
                         @Param("boxType3")String boxType3, @Param("workQty")Double workQty);
 
     List<OrderDetlPakin> selectOrderDetls(@Param("orderNo")String orderNo,@Param("sku")String sku,@Param("upc") String upc);
+    List<OrderDetlPakin> selectOrderDetlsByOrderNo(@Param("orderNo")String orderNo);
 
 }
diff --git a/src/main/java/com/zy/asrs/mapper/OrderMapper.java b/src/main/java/com/zy/asrs/mapper/OrderMapper.java
index a9d9865..6b4144e 100644
--- a/src/main/java/com/zy/asrs/mapper/OrderMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/OrderMapper.java
@@ -18,7 +18,8 @@
     List<Order> selectComplete1();
     List<Order> selectComplete99();
     List<Order> selectComplete8();
-
+    List<Order> selectComplete10();
+    List<Order> selectComplete9();
     int addToLogTable(Order order);
 
     List<Order> selectorderNoL(@Param("orderNo")String orderNo);
diff --git a/src/main/java/com/zy/asrs/mapper/OrderPakinMapper.java b/src/main/java/com/zy/asrs/mapper/OrderPakinMapper.java
index 934e34e..f5882ec 100644
--- a/src/main/java/com/zy/asrs/mapper/OrderPakinMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/OrderPakinMapper.java
@@ -17,6 +17,8 @@
 
     List<OrderPakin> selectComplete();
     List<OrderPakin> selectComplete8();
+    List<OrderPakin> selectComplete9();
+    List<OrderPakin> selectComplete10();
 
     int addToLogTable(OrderPakin order);
 
diff --git a/src/main/java/com/zy/asrs/mapper/OrderPakoutMapper.java b/src/main/java/com/zy/asrs/mapper/OrderPakoutMapper.java
index 9fa6f80..865784c 100644
--- a/src/main/java/com/zy/asrs/mapper/OrderPakoutMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/OrderPakoutMapper.java
@@ -16,7 +16,8 @@
 
     List<OrderPakout> selectComplete();
     List<OrderPakout> selectComplete8();
-
+    List<OrderPakout> selectComplete9();
+    List<OrderPakout> selectComplete10();
     int addToLogTable(OrderPakout order);
 
     List<OrderPakout> selectorderNoL(@Param("orderNo")String orderNo);
diff --git a/src/main/java/com/zy/asrs/service/OrderDetlPakinService.java b/src/main/java/com/zy/asrs/service/OrderDetlPakinService.java
index f5a236f..9247089 100644
--- a/src/main/java/com/zy/asrs/service/OrderDetlPakinService.java
+++ b/src/main/java/com/zy/asrs/service/OrderDetlPakinService.java
@@ -47,5 +47,6 @@
             , String boxType1, String boxType2, String boxType3, Double workQty);
 
     List<OrderDetlPakin> selectOrderDetls(OrderDetlByCode orderDetlByCode);
+    List<OrderDetlPakin> selectOrderDetlsByOrderNo(String orderNo);
 
 }
diff --git a/src/main/java/com/zy/asrs/service/OrderPakinService.java b/src/main/java/com/zy/asrs/service/OrderPakinService.java
index 02aedd1..7d2abd7 100644
--- a/src/main/java/com/zy/asrs/service/OrderPakinService.java
+++ b/src/main/java/com/zy/asrs/service/OrderPakinService.java
@@ -27,6 +27,8 @@
 
     List<OrderPakin> selectComplete();
     List<OrderPakin> selectComplete8();
+    List<OrderPakin> selectComplete9();
+    List<OrderPakin> selectComplete10();
 
     boolean addToLogTable(OrderPakin order);
 
diff --git a/src/main/java/com/zy/asrs/service/OrderPakoutService.java b/src/main/java/com/zy/asrs/service/OrderPakoutService.java
index d0836cd..81427bc 100644
--- a/src/main/java/com/zy/asrs/service/OrderPakoutService.java
+++ b/src/main/java/com/zy/asrs/service/OrderPakoutService.java
@@ -26,6 +26,8 @@
 
     List<OrderPakout> selectComplete();
     List<OrderPakout> selectComplete8();
+    List<OrderPakout> selectComplete9();
+    List<OrderPakout> selectComplete10();
 
     boolean addToLogTable(OrderPakout order);
 
diff --git a/src/main/java/com/zy/asrs/service/OrderService.java b/src/main/java/com/zy/asrs/service/OrderService.java
index e5d9d87..c023f34 100644
--- a/src/main/java/com/zy/asrs/service/OrderService.java
+++ b/src/main/java/com/zy/asrs/service/OrderService.java
@@ -28,6 +28,8 @@
     List<Order> selectComplete1();
     List<Order> selectComplete99();
     List<Order> selectComplete8();
+    List<Order> selectComplete10();
+    List<Order> selectComplete9();
 
     boolean addToLogTable(Order order);
 
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderDetlPakinServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderDetlPakinServiceImpl.java
index b3ad140..ded1d13 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderDetlPakinServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderDetlPakinServiceImpl.java
@@ -107,4 +107,9 @@
         String sku = orderDetlByCode.getSku();
         return this.baseMapper.selectOrderDetls(orderNo,sku,upc);
     }
+
+    @Override
+    public List<OrderDetlPakin> selectOrderDetlsByOrderNo(String orderNo){
+        return this.baseMapper.selectOrderDetlsByOrderNo(orderNo);
+    }
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderPakinServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderPakinServiceImpl.java
index f78d1c2..b57dd3c 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderPakinServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderPakinServiceImpl.java
@@ -177,6 +177,17 @@
     public List<OrderPakin> selectComplete() {
         return this.baseMapper.selectComplete();
     }
+    @Override
+    public List<OrderPakin> selectComplete9() {
+        return this.baseMapper.selectComplete9();
+    }
+
+    @Override
+    public List<OrderPakin> selectComplete10() {
+        return this.baseMapper.selectComplete10();
+    }
+
+
 
     @Override
     public List<OrderPakin> selectComplete8() {
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderPakoutServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderPakoutServiceImpl.java
index 1301d0c..430edcc 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderPakoutServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderPakoutServiceImpl.java
@@ -180,6 +180,14 @@
     public List<OrderPakout> selectComplete8() {
         return this.baseMapper.selectComplete8();
     }
+    @Override
+    public List<OrderPakout> selectComplete9() {
+        return this.baseMapper.selectComplete8();
+    }
+    @Override
+    public List<OrderPakout> selectComplete10() {
+        return this.baseMapper.selectComplete8();
+    }
 
     @Override
     public boolean addToLogTable(OrderPakout order) {
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 cfe5c34..34e2df6 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
@@ -189,6 +189,14 @@
     public List<Order> selectComplete8() {
         return this.baseMapper.selectComplete8();
     }
+    @Override
+    public List<Order> selectComplete10() {
+        return this.baseMapper.selectComplete10();
+    }
+    @Override
+    public List<Order> selectComplete9() {
+        return this.baseMapper.selectComplete9();
+    }
 
     @Override
     public boolean addToLogTable(Order order) {
diff --git a/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java b/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
index 2a36288..d69125d 100644
--- a/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
+++ b/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
@@ -109,7 +109,7 @@
         }
         String erpReport = Parameter.get().getErpReport();
         if (!Cools.isEmpty(erpReport) && erpReport.equals("true")) {
-            List<Order> orders = orderService.selectComplete();
+            List<Order> orders = orderService.selectComplete8();
             for (Order order : orders) {
                 try {
                     ReturnT<String> result = orderSyncHandler.startOrderReport(order);
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 c6b9063..4d5d086 100644
--- a/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
@@ -101,7 +101,7 @@
             if (detail.getAnfme().equals(0D)){
                 continue;
             }
-            DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(),detail.getBrand(),detail.getStandby1(),detail.getStandby2(),detail.getStandby3(),
+            DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(),detail.getBrand(),detail.getStandby1(),detail.getStandby2(),detail.getStandby3(),detail.getLineNumber(),
                     detail.getBoxType1(),detail.getBoxType2(),detail.getBoxType3(), detail.getAnfme());
             if (DetlDto.has(list, dto)) {
                 DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch(),dto.getBrand(),dto.getStandby1(),dto.getStandby2(),dto.getStandby3(),dto.getBoxType1(),dto.getBoxType2(),dto.getBoxType3());
@@ -207,53 +207,29 @@
                 String serial = Cools.isEmpty(orderDetl.getBatch()) ? "" : orderDetl.getBatch();
                 pakinParam.getList().add(new MesPakinParam.Detl(orderDetl.getMatnr() + (Cools.isEmpty(serial) ? "" : "-" + serial), orderDetl.getQty()));
             }
-
-            String response = "";
-            boolean success = false;
+//
+//            String response = "";
+//            boolean success = false;
             try {
                 if (pakinParam.getList().size()==0){
-                    success = true;
-                    // 淇敼璁㈠崟鐘舵�� 4.瀹屾垚 ===>> 6.宸蹭笂鎶�
+                    // 淇敼璁㈠崟鐘舵�� 8鏂板鎻愪氦瀹℃牳瀹屾垚 ===>> 6.宸蹭笂鎶�
                     if (!orderService.updateSettle(order.getId(), settle, null)) {
                         throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
                     }
                 } else {
-//                response = new HttpHandler.Builder()
-//                        .setUri(MesConstant.URL)
-//                        .setPath(MesConstant.PAKIN_URL)
-//                        .setJson(JSON.toJSONString(pakinParam))
-//                        .build()
-//                        .doPost();
-//                JSONObject jsonObject = JSON.parseObject(response);
-//                if (jsonObject.getInteger("code").equals(200)) {
-                    if (true) {
-                        success = true;
-                        // 淇敼璁㈠崟鐘舵�� 4.瀹屾垚 ===>> 6.宸蹭笂鎶�
+                    if (order.getSettle() == 8L) {
+                        // 淇敼璁㈠崟鐘舵�� 8鏂板鎻愪氦瀹℃牳瀹屾垚 ===>> 6.宸蹭笂鎶�
                         if (!orderService.updateSettle(order.getId(), settle, null)) {
                             throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
                         }
                     } else {
-                        log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL+MesConstant.PAKIN_URL, JSON.toJSONString(pakinParam), response);
-                        throw new CoolException("涓婃姤mes绯荤粺澶辫触");
+                        log.error("8杞�6澶辫触璇锋煡鐪嬫祦绋嬩腑鏄惁瀛樺湪寮傚父");
+                        throw new CoolException("8杞�6澶辫触");
                     }
                 }
             } catch (Exception e) {
                 log.error("fail", e);
-//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                 return FAIL.setMsg(e.getMessage());
-            } finally {
-                try {
-                    // 淇濆瓨鎺ュ彛鏃ュ織
-                    apiLogService.save(
-                            "鎴愬搧搴撳叆搴撲笂鎶�",
-                            MesConstant.URL + MesConstant.PAKIN_URL,
-                            null,
-                            "127.0.0.1",
-                            JSON.toJSONString(pakinParam),
-                            response,
-                            success
-                    );
-                } catch (Exception e) { log.error("", e); }
             }
         }
         // 鍑哄簱瀹屾垚涓婃姤
@@ -303,7 +279,7 @@
                 try {
                     // 淇濆瓨鎺ュ彛鏃ュ織
                     apiLogService.save(
-                            "鎴愬搧搴撳嚭搴撲笂鎶�",
+                            "鍑哄簱涓婃姤",
                             MesConstant.URL + MesConstant.PAKOUT_URL,
                             null,
                             "127.0.0.1",
diff --git a/src/main/java/com/zy/asrs/task/kingdee/ReviewOrderSyncScheduler.java b/src/main/java/com/zy/asrs/task/kingdee/ReviewOrderSyncScheduler.java
index 4bf112b..4f64df0 100644
--- a/src/main/java/com/zy/asrs/task/kingdee/ReviewOrderSyncScheduler.java
+++ b/src/main/java/com/zy/asrs/task/kingdee/ReviewOrderSyncScheduler.java
@@ -32,7 +32,7 @@
     @Value("${erp.switch.ReviewOrderSwitch}")
     private boolean ReviewOrderSwitch;
 
-//    @Scheduled(cron = "0/3 * * * * ? ")
+    @Scheduled(cron = "0/3 * * * * ? ")
     @Async("orderThreadPool")
     public void completeAndReport(){
         if(!ReviewOrderSwitch){
@@ -40,8 +40,8 @@
         }
         String erpReport = Parameter.get().getErpReport();
         if (!Cools.isEmpty(erpReport) && erpReport.equals("true")) {
-            //        List<Order> orders = orderService.selectComplete();
-            List<Order> orders = OrderInAndOutUtil.selectComplete(null);
+//            List<Order> orders = OrderInAndOutUtil.selectComplete9(null);//鏌ヨ9鎻愪氦瀹屾垚鐨�
+            List<Order> orders = orderService.selectComplete9();
             for (Order order : orders) {
                 ReturnT<String> result = reviewOrderSyncHandler.start(order);
                 if (!result.isSuccess()) {
diff --git a/src/main/java/com/zy/asrs/task/kingdee/SaveOrderSyncScheduler.java b/src/main/java/com/zy/asrs/task/kingdee/SaveOrderSyncScheduler.java
index 4fe4f26..f7184f8 100644
--- a/src/main/java/com/zy/asrs/task/kingdee/SaveOrderSyncScheduler.java
+++ b/src/main/java/com/zy/asrs/task/kingdee/SaveOrderSyncScheduler.java
@@ -4,6 +4,7 @@
 import com.zy.asrs.entity.Order;
 import com.zy.asrs.service.OrderService;
 import com.zy.asrs.task.core.ReturnT;
+import com.zy.asrs.task.kingdee.handler.SaveOrderSyncHandler;
 import com.zy.asrs.task.kingdee.handler.SubmitOrderSyncHandler;
 import com.zy.asrs.utils.OrderInAndOutUtil;
 import com.zy.common.entity.Parameter;
@@ -24,28 +25,28 @@
 public class SaveOrderSyncScheduler {
 
     @Autowired
-    private SubmitOrderSyncHandler submitOrderSyncHandler;
+    private SaveOrderSyncHandler saveOrderSyncHandler;
     @Autowired
     private OrderService orderService;
 
     @Value("${erp.switch.ReviewOrderSwitch}")
     private boolean ReviewOrderSwitch;
 
-//    @Scheduled(cron = "0/3 * * * * ? ")
+    @Scheduled(cron = "0/3 * * * * ? ")
     @Async("orderThreadPool")
     public void completeAndReport(){
-        if (1==1) return;
         if(!ReviewOrderSwitch){
             return;
         }
         String erpReport = Parameter.get().getErpReport();
         if (!Cools.isEmpty(erpReport) && erpReport.equals("true")) {
-            //        List<Order> orders = orderService.selectComplete8();
-            List<Order> orders = OrderInAndOutUtil.selectComplete8(null);
+//            List<Order> orders = OrderInAndOutUtil.selectComplete(null);
+            List<Order> orders = orderService.selectComplete();
+
             for (Order order : orders) {
-                ReturnT<String> result = submitOrderSyncHandler.start(order);
+                ReturnT<String> result = saveOrderSyncHandler.start(order);//4宸插畬鎴�
                 if (!result.isSuccess()) {
-                    log.error("鍗曟嵁[orderNo={}]鎻愪氦鑷砮rp澶辫触", order.getOrderNo());
+                    log.error("鍗曟嵁[orderNo={}]鏂板淇濆瓨鑷砮rp澶辫触", order.getOrderNo());
                 }
             }
         }
diff --git a/src/main/java/com/zy/asrs/task/kingdee/SubmitOrderSyncScheduler.java b/src/main/java/com/zy/asrs/task/kingdee/SubmitOrderSyncScheduler.java
index 64118e7..8fbbe6f 100644
--- a/src/main/java/com/zy/asrs/task/kingdee/SubmitOrderSyncScheduler.java
+++ b/src/main/java/com/zy/asrs/task/kingdee/SubmitOrderSyncScheduler.java
@@ -27,14 +27,14 @@
 public class SubmitOrderSyncScheduler {
 
     @Autowired
-    private SaveOrderSyncHandler saveOrderSyncHandler;
+    private SubmitOrderSyncHandler submitOrderSyncHandler;
     @Autowired
     private OrderService orderService;
 
     @Value("${erp.switch.ReviewOrderSwitch}")
     private boolean ReviewOrderSwitch;
 
-//    @Scheduled(cron = "0/3 * * * * ? ")
+    @Scheduled(cron = "0/3 * * * * ? ")
     @Async("orderThreadPool")
     public void completeAndReport(){
         if(!ReviewOrderSwitch){
@@ -42,10 +42,11 @@
         }
         String erpReport = Parameter.get().getErpReport();
         if (!Cools.isEmpty(erpReport) && erpReport.equals("true")) {
-            //        List<Order> orders = orderService.selectComplete8();
-            List<Order> orders = OrderInAndOutUtil.selectComplete8(null);
+//            List<Order> orders = OrderInAndOutUtil.selectComplete10(null); //鏌ヨ10鏂板涓婃姤瀹屾垚
+            List<Order> orders = orderService.selectComplete10();
+
             for (Order order : orders) {
-                ReturnT<String> result = saveOrderSyncHandler.start(order);
+                ReturnT<String> result = submitOrderSyncHandler.start(order);
                 if (!result.isSuccess()) {
                     log.error("鍗曟嵁[orderNo={}]淇濆瓨鑷砮rp澶辫触", order.getOrderNo());
                 }
diff --git a/src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java b/src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java
index 0ed3ed9..1eb192a 100644
--- a/src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java
+++ b/src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java
@@ -99,6 +99,9 @@
                 docType = docTypeService.selectOrAdd(kingDeeUtilType.desc, kingDeeUtilType.pakIn.equals(1));
             }
             String FDocumentStatus=null;
+            if (Arrays.asList("INR").contains(kingDeeUtilType.formId)) {
+                continue;
+            }
             //鏉′欢鍜岄渶瑕佽幏寰楃殑缁撴灉鎷兼帴
             JSONObject jsonObject = new JSONObject();
             String path = null;
@@ -131,7 +134,7 @@
 //                    jsonObject.put("start_biztime", latestUpdateTime);//涓氬姟璧峰鏃ユ湡
                     jsonObject.put("start_biztime",  "2025-01-01 00:00:00");//涓氬姟璧峰鏃ユ湡
                     jsonObject.put("end_biztime", sdf1.format(now));//涓氬姟缁撴潫鏃ユ湡
-                    jsonObject.put("billno", "CGSL-251126-000001");
+                    jsonObject.put("billno", null);
                     jsonObject.put("billstatus", Arrays.asList("C"));//鏁版嵁鐘舵�� [A:鏆傚瓨, B:宸叉彁浜�, C:宸插鏍竇
                     jsonObject.put("start_auditdate", "2025-11-25 00:00:00");
                     jsonObject.put("end_auditdate", sdf1.format(now));
@@ -350,6 +353,7 @@
                             String billNo = jsonObjectNew.get("billno").toString();//鍗曟嵁缂栧彿
                             String owner = jsonObjectNew.get("org_name").toString();//璐т富鍚嶇О
                             String ownerUuid = jsonObjectNew.get("org_number").toString();//erp璐т富缂栧彿
+                            String orderId = jsonObjectNew.get("id").toString();
                             JSONObject detailParam = new JSONObject();
                             JSONObject dataObj = new JSONObject();
                             dataObj.put("billno", billNo);
@@ -391,7 +395,7 @@
                                                 createTime.toString(),    // 鍗曟嵁鏃ユ湡
                                                 docType.getDocId(),    // 鍗曟嵁绫诲瀷
                                                 null,    // 椤圭洰缂栧彿
-                                                null,    //椤圭洰鍚嶇О 瀹㈡埛PO鍙�  鏆傛椂涓嶇煡閬撳瓧娈垫槸鍝釜
+                                                orderId,    //鏀舵枡鍗昳d
                                                 null,    // 璋冩嫧椤圭洰缂栧彿
                                                 null,    // 鍒濆绁ㄦ嵁鍙�
                                                 null,    // 绁ㄦ嵁鍙�
@@ -441,6 +445,9 @@
                                         String s2 = entry.getString("eap7_textfield5"); //鏉$爜UPC
                                         String memo = entry.getString("eap7_textfield6"); //澶囨敞锛堣嫳鏂囨弿杩帮級
                                         String s1 = entry.getString("eap7_textfield7"); //瀹㈡埛PO
+                                        String detlId = entry.getString("id"); //鏄庣粏id
+                                        Long seq = entry.getLong("seq"); //鍒嗗綍琛屽彿
+//                                        String
                                         if(anfme == 0){
                                             callApiLogSaveOrder(order,kingDeeUtilType, "鍗曟嵁鏁伴噺寮傚父"+matnr, false);
                                             continue;
@@ -469,8 +476,10 @@
                                         if(locSupp != null){supp = locSupp.getOwner();}
                                         OrderDetl orderDetl = new OrderDetl();
                                         orderDetl.sync(mat);
+                                        orderDetl.setThreeCode(detlId);//ERP鏄庣粏id
+                                        orderDetl.setLineNumber(seq);//鍒嗗綍琛屽彿
                                         orderDetl.setAnfme(anfme);//鎬荤鏁�
-                                        orderDetl.setErpAnfme(anfme);
+                                        orderDetl.setErpAnfme(anfme);//erp鏁版嵁
                                         orderDetl.setOrderId(order.getId());
                                         orderDetl.setOrderNo(order.getOrderNo());//琛ㄥご鍗曟嵁
                                         orderDetl.setSupp(supp);//渚涘簲鍟嗗悕绉帮紙璐ф簮锛�
diff --git a/src/main/java/com/zy/asrs/task/kingdee/handler/ReviewOrderSyncHandler.java b/src/main/java/com/zy/asrs/task/kingdee/handler/ReviewOrderSyncHandler.java
index 9b3a0b4..6505238 100644
--- a/src/main/java/com/zy/asrs/task/kingdee/handler/ReviewOrderSyncHandler.java
+++ b/src/main/java/com/zy/asrs/task/kingdee/handler/ReviewOrderSyncHandler.java
@@ -5,10 +5,12 @@
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.zy.asrs.entity.DocType;
+import com.zy.asrs.entity.ErpSecret;
 import com.zy.asrs.entity.Order;
 import com.zy.asrs.service.ApiLogService;
 import com.zy.asrs.service.DocTypeService;
 import com.zy.asrs.service.OrderService;
+import com.zy.asrs.service.impl.ErpSecretServiceImpl;
 import com.zy.asrs.task.AbstractHandler;
 import com.zy.asrs.task.core.ReturnT;
 import com.zy.asrs.utils.OrderInAndOutUtil;
@@ -20,6 +22,8 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.text.SimpleDateFormat;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Set;
 
@@ -33,9 +37,9 @@
     //绔彛
     private String URL;
 
-    @Value("${erp.address.outaddressAudit}")
+    @Value("${erp.address.imPurinbillBatchAudit}")
     //瀹℃牳鍦板潃
-    private String outaddressAudit;
+    private String imPurinbillBatchAudit;
 
     @Autowired
     private OrderService orderService;
@@ -44,92 +48,154 @@
     @Autowired
     private DocTypeService docTypeService;
     @Autowired
+    private ErpSecretServiceImpl erpSecretService;
+    @Autowired
     private LoginAuthenticationHandler loginAuthenticationHandler;
-
+    @Value("${erp.login.accountId}")
+    private String accountId;
+    @Value("${erp.login.xAcfwIdentity}")
+    private String xAcfwIdentity;
+    private String path;
     @Transactional
     public ReturnT<String> start(Order order) {
-        //鐧诲綍閲戣澏r
-        ReturnT<String> start = loginAuthenticationHandler.start();
+        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
+
+        // 鑾峰彇 Token
+        ErpSecret erpSecret = erpSecretService.selectOne(new EntityWrapper<ErpSecret>().eq("account_id", accountId));
+
+        // 鑾峰彇 DocType
         DocType docType = docTypeService.selectById(order.getDocType());
-        if (null == docType) {
-            return SUCCESS;
-        }
+        if (docType == null) return SUCCESS;
+
+        // 鑾峰彇 KingDee 绫诲瀷
         KingDeeUtilType kingDeeUtilType = KingDeeUtilType.get(docType.getDocName());
 
-        //鏉′欢鎷兼帴
-        JSONObject jsonObject = new JSONObject();
-        jsonObject.put("Numbers",order.getOrderNo());
-        JSONObject jsonObject1 = new JSONObject();
-        jsonObject1.put("data", jsonObject);
-        jsonObject1.put("FormId",kingDeeUtilType.formId);
-        String add = jsonObject1.toJSONString();
-        //涓婃姤
+        // 鏋勫缓璇锋眰鍙傛暟
+        JSONObject add = buildRequestParams(order, kingDeeUtilType, sdf1, sdf2);
+        if (add == null) return FAIL.setMsg("璇锋眰鍙傛暟鏋勫缓澶辫触");
+
+        // 鍙戦�佽姹傚苟澶勭悊鍝嶅簲
+        return sendRequestAndProcessResponse(order, erpSecret, add);
+    }
+
+    private JSONObject buildRequestParams(Order order, KingDeeUtilType kingDeeUtilType,
+                                          SimpleDateFormat sdf1, SimpleDateFormat sdf2) {
+        switch (kingDeeUtilType.formId) {
+            case "PUR_RECEIVEBIll": // 杩涗粨閫氱煡鍗曟彁浜�
+                path = imPurinbillBatchAudit;
+                JSONArray idArray = new JSONArray();
+                idArray.add(order.getNumber());
+                JSONObject dataObj = new JSONObject();
+                dataObj.fluentPut("id", idArray);
+                return new JSONObject().fluentPut("data", dataObj);
+
+            default:
+                throw new IllegalArgumentException("Unsupported formId: " + kingDeeUtilType.formId);
+        }
+    }
+
+    private ReturnT<String> sendRequestAndProcessResponse(Order order, ErpSecret erpSecret, JSONObject add) {
         String response = "";
         boolean success = false;
+
         try {
-            //鑾峰彇Cookie鍊�
-            HashMap<String, Object> headers = new HashMap<>();
-            headers.put("Cookie", start.getContent());
+            // 璁剧疆璇锋眰澶�
+            HashMap<String, Object> headers = buildRequestHeaders(erpSecret);
+
+            // 鍙戦�佽姹傦紝灏� JSONObject 杞崲涓� String
             response = new HttpHandler.Builder()
                     .setHeaders(headers)
                     .setUri(URL)
-                    .setPath(outaddressAudit)
-                    .setJson(add)
+                    .setPath(path)
+                    .setJson(add.toJSONString()) // 灏� JSONObject 杞崲涓� String
                     .build()
                     .doPost();
-            JSONObject data = JSON.parseObject(response);
-            Object IsSuccess = findValueByKey(JSON.parseObject(response), "IsSuccess");
-            String bool=IsSuccess.toString();
-            //瀹℃牳瀹屾垚鍘熻鍗�4杞�8  8.瀹℃牳瀹屾垚
-            if(bool.equals("true")){
-                success = true;
-                order.setSettle(8L);
-//                orderService.update(order,new EntityWrapper<Order>().eq("order_no",order.getOrderNo()));
-                OrderInAndOutUtil.updateOrder(order.getPakinPakoutStatus$(),order.getId(), 8L, null);
+
+            // 瑙f瀽鍝嶅簲
+            JSONObject jsonResponse = JSON.parseObject(response);
+
+            // 鍒ゆ柇鏄惁鍥犱负 token 杩囨湡 (errorCode = 401)
+            if ("401".equals(jsonResponse.getString("errorCode"))) {
+                log.error("璁よ瘉澶辫触锛屽皾璇曢噸鏂拌幏鍙� Token");
+                loginAuthenticationHandler.start(); // 鍒锋柊 token
+                // 閲嶆柊鑾峰彇鏂扮殑 token
+                erpSecret = erpSecretService.selectOne(new EntityWrapper<ErpSecret>().eq("account_id", accountId)); // 閲嶆柊浠庢暟鎹簱鑾峰彇鏂扮殑 token
+                // 浣跨敤鏂扮殑 token 閲嶈瘯璇锋眰
+                headers.put("accesstoken", erpSecret.getAccessToken());
+                response = new HttpHandler.Builder()
+                        .setHeaders(headers)
+                        .setUri(URL)
+                        .setPath(path)
+                        .setJson(add.toJSONString()) // 灏� JSONObject 杞崲涓� String
+                        .build()
+                        .doPost();
             }
-        } catch (Exception e) {
-            log.error("fail", e);
-//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-            return FAIL.setMsg(e.getMessage());
-        } finally {
-            try {
-                // 淇濆瓨鎺ュ彛鏃ュ織
-                apiLogService.save(
-                        "瀹℃牳",
-                        URL+ outaddressAudit,
-                        null,
-                        "127.0.0.1",
-                        add,
-                        response,
-                        success
-                );
-            } catch (Exception e) {
-                log.error("", e);
-            }
-        }
-        return SUCCESS;
-    }
-    public static Object findValueByKey(JSONObject json, String key) {
-        Set<String> keySet = json.keySet();
-        for (String k : keySet) {
-            Object v = json.get(k);
-            if (k.equals(key)) {
-                return v;
-            } else if (v instanceof JSONArray) {
-                int size = ((JSONArray) v).size();
-                for (int i = 0; i <= size - 1; i++) {
-                    Object result = findValueByKey((JSONObject) ((JSONArray) v).get(i), key);
-                    if (result != null){
-                        return result;
+            // 瑙f瀽杩斿洖鐨勫搷搴�
+            JSONObject data = jsonResponse.getJSONObject("data");
+            String errorCode = jsonResponse.getString("errorCode");
+            boolean status = jsonResponse.getBooleanValue("status");
+            if ("0".equals(errorCode) && status) {
+                // 鑾峰彇鎴愬姛涓庡け璐ョ殑鏁伴噺
+                int successCount = data.getInteger("successCount");
+                int failCount = data.getInteger("failCount");
+
+                if (failCount == 0) {
+                    success = true;
+                    log.info("鎺ュ彛璋冪敤鎴愬姛锛屾垚鍔熺殑鎿嶄綔鏁伴噺: {}", successCount);
+                } else {
+                    log.error("鎺ュ彛璋冪敤澶辫触锛屽け璐ョ殑鎿嶄綔鏁伴噺: {}", failCount);
+                    // 濡傛灉鏈夊け璐ョ殑鍗曟嵁锛岄亶鍘� result 鏁扮粍鏌ョ湅澶辫触鐨勮缁嗕俊鎭�
+                    JSONArray resultArray = data.getJSONArray("result");
+                    for (int i = 0; i < resultArray.size(); i++) {
+                        JSONObject resultItem = resultArray.getJSONObject(i);
+                        if (!resultItem.getBoolean("billStatus")) {
+                            // 鍗曟嵁澶勭悊澶辫触锛岃褰曢敊璇俊鎭�
+                            String billNo = resultItem.getString("number");  // 鑾峰彇杩斿洖鐨勫崟鎹彿
+                            JSONArray errors = resultItem.getJSONArray("errors");  // 鑾峰彇閿欒淇℃伅
+
+                            // 鎵撳嵃鍗曟嵁鍙峰拰閿欒淇℃伅
+                            log.error("鍗曟嵁鍙�: {}, 閿欒淇℃伅: {}", billNo, errors);
+                        }
                     }
                 }
-            } else if (v instanceof JSONObject){
-                Object result = findValueByKey((JSONObject) v, key);
-                if (result != null){
-                    return result;
-                }
+
+                order.setSettle(8L); // 鏇存柊鐘舵�佷负宸蹭笂鎶ュ鏍� 9->8
+                orderService.updateById(order);
+            } else {
+                log.error("鎺ュ彛璋冪敤澶辫触锛岄敊璇俊鎭�: {}", jsonResponse.getString("message"));
             }
+        } catch (Exception e) {
+            log.error("璇锋眰澶辫触", e);
+            return FAIL.setMsg(e.getMessage());
+        } finally {
+            // 淇濆瓨鎺ュ彛鏃ュ織
+            saveApiLog(add, response, success);
         }
-        return null;
+
+        return success ? SUCCESS : FAIL;
+    }
+
+    private HashMap<String, Object> buildRequestHeaders(ErpSecret erpSecret) {
+        HashMap<String, Object> headers = new HashMap<>();
+        headers.put("accesstoken", erpSecret.getAccessToken());
+        headers.put("x-acgw-identity", xAcfwIdentity);  // 鑷畾涔夎姹傚ご
+        return headers;
+    }
+
+    private void saveApiLog(JSONObject add, String response, boolean success) {
+        try {
+            apiLogService.save(
+                    "鍗曟嵁涓婃姤瀹℃牳",
+                    URL + imPurinbillBatchAudit,
+                    null,
+                    "127.0.0.1",
+                    add.toJSONString(),
+                    response,
+                    success
+            );
+        } catch (Exception e) {
+            log.error("鎺ュ彛鏃ュ織淇濆瓨澶辫触", e);
+        }
     }
 }
diff --git a/src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java b/src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java
index 65de7a7..809b938 100644
--- a/src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java
+++ b/src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java
@@ -4,11 +4,13 @@
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.zy.asrs.entity.DocType;
-import com.zy.asrs.entity.Order;
+import com.zy.asrs.entity.*;
 import com.zy.asrs.service.ApiLogService;
 import com.zy.asrs.service.DocTypeService;
 import com.zy.asrs.service.OrderService;
+import com.zy.asrs.service.impl.ErpSecretServiceImpl;
+import com.zy.asrs.service.impl.OrderDetlPakinServiceImpl;
+import com.zy.asrs.service.impl.OrderDetlServiceImpl;
 import com.zy.asrs.task.AbstractHandler;
 import com.zy.asrs.task.core.ReturnT;
 import com.zy.asrs.utils.OrderInAndOutUtil;
@@ -20,8 +22,8 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.HashMap;
-import java.util.Set;
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 /**
  * Created by Monkey D. Luffy on 2023.10.21
@@ -30,12 +32,10 @@
 @Service
 public class SaveOrderSyncHandler extends AbstractHandler<String> {
     @Value("${erp.address.URL}")
-    //绔彛
     private String URL;
 
-    @Value("${erp.address.outaddressSave}")
-    //瀹℃牳鍦板潃
-    private String outaddressSave;
+    @Value("${erp.address.imPurinbillAdd}")
+    private String imPurinbillAdd;
 
     @Autowired
     private OrderService orderService;
@@ -45,92 +45,227 @@
     private DocTypeService docTypeService;
     @Autowired
     private LoginAuthenticationHandler loginAuthenticationHandler;
+    @Autowired
+    private ErpSecretServiceImpl erpSecretService;
+    @Autowired
+    private OrderDetlPakinServiceImpl orderDetlPakinService;
+    @Autowired
+    private OrderDetlServiceImpl orderDetlService;
 
+    @Value("${erp.login.accountId}")
+    private String accountId;
+    @Value("${erp.login.xAcfwIdentity}")
+    private String xAcfwIdentity;
+    String path;
     @Transactional
     public ReturnT<String> start(Order order) {
-        //鐧诲綍閲戣澏r
-        ReturnT<String> start = loginAuthenticationHandler.start();
+        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
+
+        // 鑾峰彇 Token
+        ErpSecret erpSecret = erpSecretService.selectOne(new EntityWrapper<ErpSecret>().eq("account_id", accountId));
+
+        // 鑾峰彇 DocType
         DocType docType = docTypeService.selectById(order.getDocType());
-        if (null == docType) {
-            return SUCCESS;
-        }
+        if (docType == null) return SUCCESS;
+
+        // 鑾峰彇 KingDee 绫诲瀷
         KingDeeUtilType kingDeeUtilType = KingDeeUtilType.get(docType.getDocName());
 
-        //鏉′欢鎷兼帴
-        JSONObject jsonObject = new JSONObject();
-        jsonObject.put("Numbers",order.getOrderNo());
-        JSONObject jsonObject1 = new JSONObject();
-        jsonObject1.put("data", jsonObject);
-        jsonObject1.put("FormId",kingDeeUtilType.correspondingFormId);
-        String add = jsonObject1.toJSONString();
-        //涓婃姤
+        // 鏋勫缓璇锋眰鍙傛暟
+        JSONObject add = buildRequestParams(order, kingDeeUtilType, sdf1, sdf2);
+        if (add == null) return FAIL.setMsg("璇锋眰鍙傛暟鏋勫缓澶辫触");
+
+        // 鍙戦�佽姹傚苟澶勭悊鍝嶅簲
+        return sendRequestAndProcessResponse(order, erpSecret, add);
+    }
+
+    private JSONObject buildRequestParams(Order order, KingDeeUtilType kingDeeUtilType, SimpleDateFormat sdf1, SimpleDateFormat sdf2) {
+        List<OrderDetl> orderDetlList = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no",order.getOrderNo()));
+
+        switch (kingDeeUtilType.formId) {
+            case "PUR_RECEIVEBIll": // 杩涗粨閫氱煡鍗�
+                path = imPurinbillAdd;
+                JSONArray billentryLkArray = new JSONArray();
+                JSONArray billentryArray = new JSONArray();  // 鐢ㄤ簬瀛樺偍 billentry 瀵硅薄
+                String suppCode = null;  // 渚涘簲鍟�
+                String boxType2 = null;  // 璐т富/璐ф簮
+
+                // 閬嶅巻璁㈠崟璇︽儏
+                for (OrderDetl orderDetl : orderDetlList) {
+                    suppCode = orderDetl.getSuppCode();
+                    boxType2 = orderDetl.getBoxType2();
+                    if (orderDetl.getQty() == 0) {
+                        continue;
+                    }
+
+                    // 鍒涘缓 billentry_lk 瀵硅薄
+                    JSONObject billentryLk = new JSONObject()
+                            .fluentPut("id", Long.parseLong(orderDetl.getThreeCode()))
+                            .fluentPut("seq", orderDetl.getLineNumber())
+                            .fluentPut("billentry_lk_stableid", 677270092232273922L)
+                            .fluentPut("billentry_lk_sbillid", Long.parseLong(order.getItemName()))  // 涓诲崟ID
+                            .fluentPut("billentry_lk_sid", Long.parseLong(orderDetl.getThreeCode()))  // 鏄庣粏ID
+                            .fluentPut("billentry_lk_baseqty_old", orderDetl.getErpAnfme())  // ERP鏁伴噺
+                            .fluentPut("billentry_lk_baseqty", orderDetl.getQty());  // 浣滀笟鏁伴噺
+                    billentryLkArray.add(billentryLk);
+                    // 鍒涘缓 billentry 瀵硅薄锛屽~鍏呯己澶辩殑瀛楁
+                    JSONObject billentry = new JSONObject()
+                            .fluentPut("id", Long.parseLong(orderDetl.getThreeCode()))
+                            .fluentPut("warehouse_number", orderDetl.getManu())  // 浠撳簱缂栧彿
+                            .fluentPut("invstatus_number", "110")  // 搴撳瓨鐘舵��
+                            .fluentPut("invtype_number", "110")  // 搴撳瓨绫诲瀷
+                            .fluentPut("outinvstatus_number", "110")
+                            .fluentPut("linetype_number", "010")  // 琛屽彿绫诲瀷
+                            .fluentPut("qty", orderDetl.getQty())  // 鏁伴噺
+                            .fluentPut("material_number", orderDetl.getMatnr())  // 鐗╂枡缂栧彿
+                            .fluentPut("billentry_lk", billentryLkArray);  // 灏� billentry_lk 娣诲姞鍒� billentry
+
+                    billentryArray.add(billentry);
+                }
+                Date now = new Date();
+                // 鐢熸垚 INR 鐩稿叧璇锋眰鍙傛暟
+                return new JSONObject()
+                        .fluentPut("data", new JSONArray(Arrays.asList(
+                                new JSONObject()
+                                        .fluentPut("billno", order.getOrderNo())
+                                        .fluentPut("trdbillno", UUID.randomUUID().toString().replace("-", ""))
+                                        .fluentPut("billtype_number", "im_PurInBill_STD_BT_S")
+                                        .fluentPut("biztime", sdf1.format(now))
+                                        .fluentPut("exratedate", sdf1.format(now))
+                                        .fluentPut("bizorg_number", boxType2)
+                                        .fluentPut("biztype_number", "110")  // 璐т富/璐ф簮
+                                        .fluentPut("org_number", boxType2)  // 璐т富/璐ф簮
+                                        .fluentPut("paymode", "CREDIT")
+                                        .fluentPut("invscheme_number", "110")
+                                        .fluentPut("billtype_number", "im_PurInBill_STD_BT_S")
+                                        .fluentPut("supplier_number", suppCode)  // 渚涘簲鍟嗙紪鍙�
+                                        .fluentPut("billno", order.getOrderNo())
+                                        .fluentPut("billentry", billentryArray)  // 灏� billentry 鏁扮粍娣诲姞鍒拌姹傚弬鏁�
+                        )));
+
+            default:
+                // 榛樿澶勭悊锛氬彲浠ユ姏鍑哄紓甯告垨杩斿洖绌哄璞�
+                throw new IllegalArgumentException("Unsupported formId: " + kingDeeUtilType.formId);
+        }
+    }
+
+
+    private ReturnT<String> sendRequestAndProcessResponse(Order order, ErpSecret erpSecret, JSONObject add) {
         String response = "";
         boolean success = false;
+
         try {
-            //鑾峰彇Cookie鍊�
-            HashMap<String, Object> headers = new HashMap<>();
-            headers.put("Cookie", start.getContent());
+            // 璁剧疆璇锋眰澶�
+            HashMap<String, Object> headers = buildRequestHeaders(erpSecret);
+
+            // 鍙戦�佽姹傦紝灏� JSONObject 杞崲涓� String
             response = new HttpHandler.Builder()
                     .setHeaders(headers)
                     .setUri(URL)
-                    .setPath(outaddressSave)
-                    .setJson(add)
+                    .setPath(path)
+                    .setJson(add.toJSONString()) // 灏� JSONObject 杞崲涓� String
                     .build()
                     .doPost();
-            JSONObject data = JSON.parseObject(response);
-            Object IsSuccess = findValueByKey(JSON.parseObject(response), "IsSuccess");
-            String bool=IsSuccess.toString();
-            //淇濆瓨瀹屾垚鍘熻鍗�8杞�6
-            if(bool.equals("true")){
-                success = true;
-                order.setSettle(6L);
-//                orderService.update(order,new EntityWrapper<Order>().eq("order_no",order.getOrderNo()));
-                OrderInAndOutUtil.updateOrder(order.getPakinPakoutStatus$(),order.getId(), 6L, null);
 
+            // 瑙f瀽鍝嶅簲
+            JSONObject jsonResponse = JSON.parseObject(response);
+
+            // 鍒ゆ柇鏄惁鍥犱负 token 杩囨湡 (errorCode = 401)
+            if ("401".equals(jsonResponse.getString("errorCode"))) {
+                log.error("璁よ瘉澶辫触锛屽皾璇曢噸鏂拌幏鍙� Token");
+                loginAuthenticationHandler.start(); // 鍒锋柊 token
+                // 閲嶆柊鑾峰彇鏂扮殑 token
+                erpSecret = erpSecretService.selectOne(new EntityWrapper<ErpSecret>().eq("account_id", accountId)); // 閲嶆柊浠庢暟鎹簱鑾峰彇鏂扮殑 token
+                // 浣跨敤鏂扮殑 token 閲嶈瘯璇锋眰
+                headers.put("accesstoken", erpSecret.getAccessToken());
+                response = new HttpHandler.Builder()
+                        .setHeaders(headers)
+                        .setUri(URL)
+                        .setPath(path)
+                        .setJson(add.toJSONString()) // 灏� JSONObject 杞崲涓� String
+                        .build()
+                        .doPost();
             }
-        } catch (Exception e) {
-            log.error("fail", e);
-//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-            return FAIL.setMsg(e.getMessage());
-        } finally {
-            try {
-                // 淇濆瓨鎺ュ彛鏃ュ織
-                apiLogService.save(
-                        "淇濆瓨",
-                        URL+ outaddressSave,
-                        null,
-                        "127.0.0.1",
-                        add,
-                        response,
-                        success
-                );
-            } catch (Exception e) {
-                log.error("", e);
-            }
-        }
-        return SUCCESS;
-    }
-    public static Object findValueByKey(JSONObject json, String key) {
-        Set<String> keySet = json.keySet();
-        for (String k : keySet) {
-            Object v = json.get(k);
-            if (k.equals(key)) {
-                return v;
-            } else if (v instanceof JSONArray) {
-                int size = ((JSONArray) v).size();
-                for (int i = 0; i <= size - 1; i++) {
-                    Object result = findValueByKey((JSONObject) ((JSONArray) v).get(i), key);
-                    if (result != null){
-                        return result;
+
+            // 瑙f瀽杩斿洖鐨勫搷搴�
+            JSONObject data = jsonResponse.getJSONObject("data");
+            String errorCode = jsonResponse.getString("errorCode");
+            boolean status = jsonResponse.getBooleanValue("status");
+
+            // 妫�鏌ユ帴鍙h皟鐢ㄧ殑鏁翠綋鐘舵��
+            if ("0".equals(errorCode) && status) {
+                // 鑾峰彇鎴愬姛涓庡け璐ョ殑鏁伴噺
+                int successCount = data.getInteger("successCount");
+                int failCount = data.getInteger("failCount");
+
+                if (failCount == 0) {
+                    success = true;
+                    log.info("鎺ュ彛璋冪敤鎴愬姛锛屾垚鍔熺殑鎿嶄綔鏁伴噺: {}", successCount);
+                    // 鑾峰彇杩斿洖鐨勫崟鎹彿鍜孖D
+                    JSONArray resultArray = data.getJSONArray("result");
+                    for (int i = 0; i < resultArray.size(); i++) {
+                        JSONObject resultItem = resultArray.getJSONObject(i);
+                        String billNo = resultItem.getString("number");  // 鑾峰彇杩斿洖鐨勫崟鎹彿
+                        String billId = resultItem.getString("id");      // 鑾峰彇杩斿洖鐨処D
+
+                        // 鍒ゆ柇杩斿洖鐨勫崟鎹彿涓庤鍗曞彿鏄惁涓�鑷�
+                        if (billNo != null && billNo.equals(order.getOrderNo())) {
+                            // 濡傛灉涓�鑷达紝璁剧疆璁㈠崟鐨� number
+                            order.setNumber(billId);
+                            log.info("璁㈠崟鍙� {} 涓庤繑鍥炵殑鍗曟嵁鍙峰尮閰嶏紝璁剧疆璁㈠崟 ID 涓� {}", order.getOrderNo(), billId);
+                        }
+                    }
+                } else {
+                    log.error("鎺ュ彛璋冪敤澶辫触锛屽け璐ョ殑鎿嶄綔鏁伴噺: {}", failCount);
+                    // 濡傛灉鏈夊け璐ョ殑鍗曟嵁锛岄亶鍘� result 鏁扮粍鏌ョ湅澶辫触鐨勮缁嗕俊鎭�
+                    JSONArray resultArray = data.getJSONArray("result");
+                    for (int i = 0; i < resultArray.size(); i++) {
+                        JSONObject resultItem = resultArray.getJSONObject(i);
+                        if (!resultItem.getBoolean("billStatus")) {
+                            // 鍗曟嵁澶勭悊澶辫触锛岃褰曢敊璇俊鎭�
+                            String billNo = resultItem.getString("billno");
+                            JSONArray errors = resultItem.getJSONArray("errors");
+                            log.error("鍗曟嵁鍙�: {}, 閿欒淇℃伅: {}", billNo, errors);
+                        }
                     }
                 }
-            } else if (v instanceof JSONObject){
-                Object result = findValueByKey((JSONObject) v, key);
-                if (result != null){
-                    return result;
-                }
+                order.setSettle(10L); // 鏇存柊鐘舵�佷负 "宸蹭笂鎶�"
+                orderService.updateById(order);
+            } else {
+                log.error("鎺ュ彛璋冪敤澶辫触锛岄敊璇俊鎭�: {}", jsonResponse.getString("message"));
             }
+        } catch (Exception e) {
+            log.error("璇锋眰澶辫触", e);
+            return FAIL.setMsg(e.getMessage());
+        } finally {
+            // 淇濆瓨鎺ュ彛鏃ュ織
+            saveApiLog(add, response, success);
         }
-        return null;
+
+        return success ? SUCCESS : FAIL;
+    }
+
+
+    private HashMap<String, Object> buildRequestHeaders(ErpSecret erpSecret) {
+        HashMap<String, Object> headers = new HashMap<>();
+        headers.put("accesstoken", erpSecret.getAccessToken());
+        headers.put("x-acgw-identity", xAcfwIdentity);  // 鑷畾涔夎姹傚ご
+        return headers;
+    }
+    private void saveApiLog(JSONObject add, String response, boolean success) {
+        try {
+            apiLogService.save(
+                    "杩涗粨閫氱煡鍗曚笂鎶ユ柊澧�",
+                    URL + path,
+                    null,
+                    "127.0.0.1",
+                    add.toJSONString(),
+                    response,
+                    success
+            );
+        } catch (Exception e) {
+            log.error("鎺ュ彛鏃ュ織淇濆瓨澶辫触", e);
+        }
     }
 }
diff --git a/src/main/java/com/zy/asrs/task/kingdee/handler/SubmitOrderSyncHandler.java b/src/main/java/com/zy/asrs/task/kingdee/handler/SubmitOrderSyncHandler.java
index 32ead63..432a6c1 100644
--- a/src/main/java/com/zy/asrs/task/kingdee/handler/SubmitOrderSyncHandler.java
+++ b/src/main/java/com/zy/asrs/task/kingdee/handler/SubmitOrderSyncHandler.java
@@ -5,10 +5,13 @@
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.zy.asrs.entity.DocType;
+import com.zy.asrs.entity.ErpSecret;
 import com.zy.asrs.entity.Order;
+import com.zy.asrs.entity.OrderDetlPakin;
 import com.zy.asrs.service.ApiLogService;
 import com.zy.asrs.service.DocTypeService;
 import com.zy.asrs.service.OrderService;
+import com.zy.asrs.service.impl.ErpSecretServiceImpl;
 import com.zy.asrs.task.AbstractHandler;
 import com.zy.asrs.task.core.ReturnT;
 import com.zy.asrs.utils.OrderInAndOutUtil;
@@ -20,7 +23,10 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.text.SimpleDateFormat;
+import java.util.Arrays;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Set;
 
 /**
@@ -30,106 +36,170 @@
 @Service
 public class SubmitOrderSyncHandler extends AbstractHandler<String> {
     @Value("${erp.address.URL}")
-    //绔彛
     private String URL;
 
-    @Value("${erp.address.outaddressSubmit}")
-    //瀹℃牳鍦板潃
-    private String outaddressSubmit;
+    @Value("${erp.address.imPurinbillBatchSubmit}")
+    private String imPurinbillBatchSubmit;
 
+    @Autowired
+    private LoginAuthenticationHandler loginAuthenticationHandler;
+    @Autowired
+    private ErpSecretServiceImpl erpSecretService;
     @Autowired
     private OrderService orderService;
     @Autowired
     private ApiLogService apiLogService;
     @Autowired
     private DocTypeService docTypeService;
-    @Autowired
-    private LoginAuthenticationHandler loginAuthenticationHandler;
-
+    @Value("${erp.login.accountId}")
+    private String accountId;
+    @Value("${erp.login.xAcfwIdentity}")
+    private String xAcfwIdentity;
+    private String path;
     @Transactional
     public ReturnT<String> start(Order order) {
-        //鐧诲綍閲戣澏r
-        ReturnT<String> start = loginAuthenticationHandler.start();
+        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
+
+        // 鑾峰彇 Token
+        ErpSecret erpSecret = erpSecretService.selectOne(new EntityWrapper<ErpSecret>().eq("account_id", accountId));
+
+        // 鑾峰彇 DocType
         DocType docType = docTypeService.selectById(order.getDocType());
-        if (null == docType) {
-            return SUCCESS;
-        }
+        if (docType == null) return SUCCESS;
+
+        // 鑾峰彇 KingDee 绫诲瀷
         KingDeeUtilType kingDeeUtilType = KingDeeUtilType.get(docType.getDocName());
 
-        //鏉′欢鎷兼帴
-        JSONObject jsonObject = new JSONObject();
-        jsonObject.put("Numbers",order.getOrderNo());
-        JSONObject jsonObject1 = new JSONObject();
-        jsonObject1.put("data", jsonObject);
-        jsonObject1.put("FormId",kingDeeUtilType.correspondingFormId);
-        String add = jsonObject1.toJSONString();
-        //涓婃姤
+        // 鏋勫缓璇锋眰鍙傛暟
+        JSONObject add = buildRequestParams(order, kingDeeUtilType, sdf1, sdf2);
+        if (add == null) return FAIL.setMsg("璇锋眰鍙傛暟鏋勫缓澶辫触");
+
+        // 鍙戦�佽姹傚苟澶勭悊鍝嶅簲
+        return sendRequestAndProcessResponse(order, erpSecret, add);
+    }
+
+    private JSONObject buildRequestParams(Order order, KingDeeUtilType kingDeeUtilType,
+                                          SimpleDateFormat sdf1, SimpleDateFormat sdf2) {
+        switch (kingDeeUtilType.formId) {
+            case "PUR_RECEIVEBIll": // 杩涗粨閫氱煡鍗曟彁浜�
+                path = imPurinbillBatchSubmit;
+                JSONArray idArray = new JSONArray();
+                idArray.add(order.getNumber());
+                JSONObject dataObj = new JSONObject();
+                dataObj.fluentPut("id", idArray);
+                return new JSONObject().fluentPut("data", dataObj);
+
+            default:
+                throw new IllegalArgumentException("Unsupported formId: " + kingDeeUtilType.formId);
+        }
+    }
+
+
+    private ReturnT<String> sendRequestAndProcessResponse(Order order, ErpSecret erpSecret, JSONObject add) {
         String response = "";
         boolean success = false;
+
         try {
-            //鑾峰彇Cookie鍊�
-            HashMap<String, Object> headers = new HashMap<>();
-            headers.put("Cookie", start.getContent());
+            // 璁剧疆璇锋眰澶�
+            HashMap<String, Object> headers = buildRequestHeaders(erpSecret);
+
+            // 鍙戦�佽姹傦紝灏� JSONObject 杞崲涓� String
             response = new HttpHandler.Builder()
                     .setHeaders(headers)
                     .setUri(URL)
-                    .setPath(outaddressSubmit)
-                    .setJson(add)
+                    .setPath(path)
+                    .setJson(add.toJSONString()) // 灏� JSONObject 杞崲涓� String
                     .build()
                     .doPost();
-            JSONObject data = JSON.parseObject(response);
-            Object IsSuccess = findValueByKey(JSON.parseObject(response), "IsSuccess");
-            String bool=IsSuccess.toString();
-            //瀹℃牳瀹屾垚鍘熻鍗�8杞�6
-            if(bool.equals("true")){
-                success = true;
-                order.setSettle(6L);
-//                orderService.update(order,new EntityWrapper<Order>().eq("order_no",order.getOrderNo()));
-                OrderInAndOutUtil.updateOrder(order.getPakinPakoutStatus$(),order.getId(), 6L, null);
+
+            // 瑙f瀽鍝嶅簲
+            JSONObject jsonResponse = JSON.parseObject(response);
+
+            // 鍒ゆ柇鏄惁鍥犱负 token 杩囨湡 (errorCode = 401)
+            if ("401".equals(jsonResponse.getString("errorCode"))) {
+                log.error("璁よ瘉澶辫触锛屽皾璇曢噸鏂拌幏鍙� Token");
+                loginAuthenticationHandler.start(); // 鍒锋柊 token
+                // 閲嶆柊鑾峰彇鏂扮殑 token
+                erpSecret = erpSecretService.selectOne(new EntityWrapper<ErpSecret>().eq("account_id", accountId)); // 閲嶆柊浠庢暟鎹簱鑾峰彇鏂扮殑 token
+                // 浣跨敤鏂扮殑 token 閲嶈瘯璇锋眰
+                headers.put("accesstoken", erpSecret.getAccessToken());
+                response = new HttpHandler.Builder()
+                        .setHeaders(headers)
+                        .setUri(URL)
+                        .setPath(path)
+                        .setJson(add.toJSONString()) // 灏� JSONObject 杞崲涓� String
+                        .build()
+                        .doPost();
             }
-        } catch (Exception e) {
-            log.error("fail", e);
-//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-            return FAIL.setMsg(e.getMessage());
-        } finally {
-            try {
-                // 淇濆瓨鎺ュ彛鏃ュ織
-                apiLogService.save(
-                        "鎻愪氦",
-                        URL+ outaddressSubmit,
-                        null,
-                        "127.0.0.1",
-                        add,
-                        response,
-                        success
-                );
-            } catch (Exception e) {
-                log.error("", e);
-            }
-        }
-        return SUCCESS;
-    }
-    public static Object findValueByKey(JSONObject json, String key) {
-        Set<String> keySet = json.keySet();
-        for (String k : keySet) {
-            Object v = json.get(k);
-            if (k.equals(key)) {
-                return v;
-            } else if (v instanceof JSONArray) {
-                int size = ((JSONArray) v).size();
-                for (int i = 0; i <= size - 1; i++) {
-                    Object result = findValueByKey((JSONObject) ((JSONArray) v).get(i), key);
-                    if (result != null){
-                        return result;
+
+            // 瑙f瀽杩斿洖鐨勫搷搴�
+            JSONObject data = jsonResponse.getJSONObject("data");
+            String errorCode = jsonResponse.getString("errorCode");
+            boolean status = jsonResponse.getBooleanValue("status");
+
+// 妫�鏌ユ帴鍙h皟鐢ㄧ殑鏁翠綋鐘舵��
+            if ("0".equals(errorCode) && status) {
+                // 鑾峰彇鎴愬姛涓庡け璐ョ殑鏁伴噺
+                int successCount = data.getInteger("successCount");
+                int failCount = data.getInteger("failCount");
+
+                if (failCount == 0) {
+                    success = true;
+                    log.info("鎺ュ彛璋冪敤鎴愬姛锛屾垚鍔熺殑鎿嶄綔鏁伴噺: {}", successCount);
+                } else {
+                    log.error("鎺ュ彛璋冪敤澶辫触锛屽け璐ョ殑鎿嶄綔鏁伴噺: {}", failCount);
+                    // 濡傛灉鏈夊け璐ョ殑鍗曟嵁锛岄亶鍘� result 鏁扮粍鏌ョ湅澶辫触鐨勮缁嗕俊鎭�
+                    JSONArray resultArray = data.getJSONArray("result");
+                    for (int i = 0; i < resultArray.size(); i++) {
+                        JSONObject resultItem = resultArray.getJSONObject(i);
+                        if (!resultItem.getBoolean("billStatus")) {
+                            // 鍗曟嵁澶勭悊澶辫触锛岃褰曢敊璇俊鎭�
+                            String billNo = resultItem.getString("number");  // 鑾峰彇杩斿洖鐨勫崟鎹彿
+                            JSONArray errors = resultItem.getJSONArray("errors");  // 鑾峰彇閿欒淇℃伅
+
+                            // 鎵撳嵃鍗曟嵁鍙峰拰閿欒淇℃伅
+                            log.error("鍗曟嵁鍙�: {}, 閿欒淇℃伅: {}", billNo, errors);
+                        }
                     }
                 }
-            } else if (v instanceof JSONObject){
-                Object result = findValueByKey((JSONObject) v, key);
-                if (result != null){
-                    return result;
-                }
+
+                order.setSettle(9L); // 鏇存柊鐘舵�佷负宸叉彁浜ゅ畬鎴� 10->9
+                orderService.updateById(order);
+            } else {
+                log.error("鎺ュ彛璋冪敤澶辫触锛岄敊璇俊鎭�: {}", jsonResponse.getString("message"));
             }
+        } catch (Exception e) {
+            log.error("璇锋眰澶辫触", e);
+            return FAIL.setMsg(e.getMessage());
+        } finally {
+            // 淇濆瓨鎺ュ彛鏃ュ織
+            saveApiLog(add, response, success);
         }
-        return null;
+
+        return success ? SUCCESS : FAIL;
+    }
+
+    private HashMap<String, Object> buildRequestHeaders(ErpSecret erpSecret) {
+        HashMap<String, Object> headers = new HashMap<>();
+        headers.put("accesstoken", erpSecret.getAccessToken());
+        headers.put("x-acgw-identity", xAcfwIdentity);  // 鑷畾涔夎姹傚ご
+        return headers;
+    }
+
+    private void saveApiLog(JSONObject add, String response, boolean success) {
+        try {
+            apiLogService.save(
+                    "鍗曟嵁涓婃姤鎻愪氦",
+                    URL + path,
+                    null,
+                    "127.0.0.1",
+                    add.toJSONString(),
+                    response,
+                    success
+            );
+        } catch (Exception e) {
+            log.error("鎺ュ彛鏃ュ織淇濆瓨澶辫触", e);
+        }
     }
 }
diff --git a/src/main/java/com/zy/asrs/utils/OrderInAndOutUtil.java b/src/main/java/com/zy/asrs/utils/OrderInAndOutUtil.java
index 9faab5a..096b41d 100644
--- a/src/main/java/com/zy/asrs/utils/OrderInAndOutUtil.java
+++ b/src/main/java/com/zy/asrs/utils/OrderInAndOutUtil.java
@@ -104,6 +104,10 @@
                     return casual.getDeclaredMethod(OrderMethodVo.REMOVE.getCode(), Long.class);
                 case SELECT_COMPLETE:
                     return casual.getDeclaredMethod(OrderMethodVo.SELECT_COMPLETE.getCode());
+                case SELECT_COMPLETE9:
+                    return casual.getDeclaredMethod(OrderMethodVo.SELECT_COMPLETE9.getCode());
+                case SELECT_COMPLETE10:
+                    return casual.getDeclaredMethod(OrderMethodVo.SELECT_COMPLETE10.getCode());
                 case SELECT_COMPLETE8:
                     return casual.getDeclaredMethod(OrderMethodVo.SELECT_COMPLETE8.getCode());
                 case ADD_TO_LOG_TABLE_ORDER:
@@ -407,6 +411,64 @@
             throw new CoolException(e.getCause().getMessage());
         }
     }
+    public static List<Order> selectComplete9(boolean sign){
+        try{
+            Object invoke = implement(OrderMethodVo.SELECT_COMPLETE9).invoke(getOrderInAndOutType(sign));
+            if (Cools.isEmpty(invoke)){
+                return new ArrayList<>();
+            } else if (invoke instanceof List) {
+                return (List<Order>) invoke;
+            } else {
+                throw new CoolException("Unexpected return type");
+            }
+        } catch (Exception e) {
+            throw new CoolException(e.getCause().getMessage());
+        }
+    }
+
+    public static List<Order> selectComplete9(String sign){
+        try{
+            Object invoke = implement(OrderMethodVo.SELECT_COMPLETE9).invoke(getOrderInAndOutType(sign));
+            if (Cools.isEmpty(invoke)){
+                return new ArrayList<>();
+            } else if (invoke instanceof List) {
+                return (List<Order>) invoke;
+            } else {
+                throw new CoolException("Unexpected return type");
+            }
+        } catch (Exception e) {
+            throw new CoolException(e.getCause().getMessage());
+        }
+    }
+    public static List<Order> selectComplete10(boolean sign){
+        try{
+            Object invoke = implement(OrderMethodVo.SELECT_COMPLETE10).invoke(getOrderInAndOutType(sign));
+            if (Cools.isEmpty(invoke)){
+                return new ArrayList<>();
+            } else if (invoke instanceof List) {
+                return (List<Order>) invoke;
+            } else {
+                throw new CoolException("Unexpected return type");
+            }
+        } catch (Exception e) {
+            throw new CoolException(e.getCause().getMessage());
+        }
+    }
+
+    public static List<Order> selectComplete10(String sign){
+        try{
+            Object invoke = implement(OrderMethodVo.SELECT_COMPLETE10).invoke(getOrderInAndOutType(sign));
+            if (Cools.isEmpty(invoke)){
+                return new ArrayList<>();
+            } else if (invoke instanceof List) {
+                return (List<Order>) invoke;
+            } else {
+                throw new CoolException("Unexpected return type");
+            }
+        } catch (Exception e) {
+              throw new CoolException(e.getCause().getMessage());
+        }
+    }
 
     public static List<Order> selectComplete8(boolean sign){
         try{
diff --git a/src/main/java/com/zy/common/model/DetlDto.java b/src/main/java/com/zy/common/model/DetlDto.java
index 121a275..920bd8b 100644
--- a/src/main/java/com/zy/common/model/DetlDto.java
+++ b/src/main/java/com/zy/common/model/DetlDto.java
@@ -64,6 +64,7 @@
         this.boxType3 = boxType3;
     }
 
+
     public DetlDto(String matnr, String batch, String brand, String standby1, String standby2, String standby3, String boxType1, String boxType2, String boxType3, Double anfme) {
         this.matnr = matnr;
         this.batch = batch;
diff --git a/src/main/java/com/zy/common/model/enumUtils/OrderInAndOutType.java b/src/main/java/com/zy/common/model/enumUtils/OrderInAndOutType.java
index 7998654..524f77d 100644
--- a/src/main/java/com/zy/common/model/enumUtils/OrderInAndOutType.java
+++ b/src/main/java/com/zy/common/model/enumUtils/OrderInAndOutType.java
@@ -114,6 +114,17 @@
         }
 
         @Transactional
+        public List<Order> selectComplete9() {
+            List<OrderPakin> orderPakinList = orderPakinService.selectComplete9();
+            return OrderTransFormationUtil.transformationOrderListPakin(orderPakinList);
+        }
+        @Transactional
+        public List<Order> selectComplete10() {
+            List<OrderPakin> orderPakinList = orderPakinService.selectComplete10();
+            return OrderTransFormationUtil.transformationOrderListPakin(orderPakinList);
+        }
+
+        @Transactional
         public List<Order> selectComplete8() {
             List<OrderPakin> orderPakinList = orderPakinService.selectComplete8();
             return OrderTransFormationUtil.transformationOrderListPakin(orderPakinList);
@@ -280,6 +291,16 @@
             List<OrderPakout> orderPakoutList = orderPakoutService.selectComplete8();
             return OrderTransFormationUtil.transformationOrderListPakout(orderPakoutList);
         }
+        @Transactional
+        public List<Order> selectComplete9() {
+            List<OrderPakout> orderPakoutList = orderPakoutService.selectComplete9();
+            return OrderTransFormationUtil.transformationOrderListPakout(orderPakoutList);
+        }
+        @Transactional
+        public List<Order> selectComplete10() {
+            List<OrderPakout> orderPakoutList = orderPakoutService.selectComplete10();
+            return OrderTransFormationUtil.transformationOrderListPakout(orderPakoutList);
+        }
 
         @Transactional
         public boolean addToLogTableOrder(Order order) {
@@ -436,6 +457,18 @@
             List<OrderPakout> orderPakoutList = orderPakoutService.selectComplete8();
             return OrderTransFormationUtil.transformationOrderList(orderPakinList,orderPakoutList);
         }
+        @Transactional
+        public List<Order> selectComplete9() {
+            List<OrderPakin> orderPakinList = orderPakinService.selectComplete9();
+            List<OrderPakout> orderPakoutList = orderPakoutService.selectComplete9();
+            return OrderTransFormationUtil.transformationOrderList(orderPakinList,orderPakoutList);
+        }
+        @Transactional
+        public List<Order> selectComplete10() {
+            List<OrderPakin> orderPakinList = orderPakinService.selectComplete10();
+            List<OrderPakout> orderPakoutList = orderPakoutService.selectComplete10();
+            return OrderTransFormationUtil.transformationOrderList(orderPakinList,orderPakoutList);
+        }
 
         @Transactional
         public boolean addToLogTableOrder(Order order) {
@@ -544,6 +577,8 @@
     public abstract List<Order> selectComplete();
 
     public abstract List<Order> selectComplete8();
+    public abstract List<Order> selectComplete9();
+    public abstract List<Order> selectComplete10();
 
     public abstract boolean addToLogTableOrder(Order order);
 
diff --git a/src/main/java/com/zy/common/model/enumUtils/OrderMethodVo.java b/src/main/java/com/zy/common/model/enumUtils/OrderMethodVo.java
index bdf2003..1f4dbd7 100644
--- a/src/main/java/com/zy/common/model/enumUtils/OrderMethodVo.java
+++ b/src/main/java/com/zy/common/model/enumUtils/OrderMethodVo.java
@@ -18,7 +18,8 @@
     UPDATE_ORDERDETL("updateOrderDetl"),
     REMOVE("remove"),
     SELECT_COMPLETE("selectComplete"),
-
+    SELECT_COMPLETE10("selectComplete10"),
+    SELECT_COMPLETE9("selectComplete9"),
     SELECT_COMPLETE8("selectComplete8"),
     ADD_TO_LOG_TABLE_ORDER("addToLogTableOrder"),
     SELECT_ORDER_NO_L("selectOrderNoL"),
diff --git a/src/main/java/com/zy/erp/kingdee/enums/KingDeeUtilType.java b/src/main/java/com/zy/erp/kingdee/enums/KingDeeUtilType.java
index 1f2a6f4..ad5d28d 100644
--- a/src/main/java/com/zy/erp/kingdee/enums/KingDeeUtilType.java
+++ b/src/main/java/com/zy/erp/kingdee/enums/KingDeeUtilType.java
@@ -1,11 +1,10 @@
 package com.zy.erp.kingdee.enums;
 
 public enum KingDeeUtilType {
-    BD_MATERIAL(0, "鐗╂枡妗f","BD_MATERIAL","","","",1),
-    BD_RRGANIZATION(2, "渚涘簲鍟�","BD_RRGANIZATION","","","",1),
-//    PUR_RECEIVEBIll(3, "鏀舵枡鍗�","PUR_RECEIVEBIll","","","",1),
-
-    //    STK_InStock(1, "閲囪喘鍏ュ簱鍗�","STK_InStock","FRealQty","","",1),
+//    BD_MATERIAL(0, "鐗╂枡妗f","BD_MATERIAL","","","",1),
+//    BD_RRGANIZATION(2, "渚涘簲鍟�","BD_RRGANIZATION","","","",1),
+    PUR_RECEIVEBIll(3, "鏀舵枡鍗�","PUR_RECEIVEBIll","","","",1),
+//    INR(1, "杩涗粨閫氱煡搴撳崟涓婃姤","INR","FRealQty","","",1),
 //    PUR_MRB(2, "閲囪喘閫�鏂欏崟","PUR_MRB","FRMREALQTY","","",1),
 //    PRD_PickMtrl(3, "鐢熶骇棰嗘枡鍗�","PRD_PickMtrl","FActualQty","","",1),
 //    PRD_ReturnMtrl(4, "鐢熶骇閫�鏂欏崟","PRD_ReturnMtrl","FQty","","",1),
diff --git a/src/main/resources/mapper/OrderDetlPakinMapper.xml b/src/main/resources/mapper/OrderDetlPakinMapper.xml
index 770bb40..0567c4c 100644
--- a/src/main/resources/mapper/OrderDetlPakinMapper.xml
+++ b/src/main/resources/mapper/OrderDetlPakinMapper.xml
@@ -255,4 +255,12 @@
         order by update_time
     </select>
 
+    <select id="selectOrderDetlsByOrderNo" resultMap="BaseResultMap">
+        SELECT *
+        FROM man_order_detl_pakin
+        where 1=1
+          and order_no = #{orderNo}
+        order by update_time
+    </select>
+
 </mapper>
diff --git a/src/main/resources/mapper/OrderMapper.xml b/src/main/resources/mapper/OrderMapper.xml
index 3b77b20..b23e08a 100644
--- a/src/main/resources/mapper/OrderMapper.xml
+++ b/src/main/resources/mapper/OrderMapper.xml
@@ -60,7 +60,24 @@
         from man_order
         where 1=1
         and settle = 4
-        and status = 1
+--         and settle = 97
+         and status = 1
+        order by create_time asc
+    </select>
+    <select id="selectComplete10" resultMap="BaseResultMap">
+        select top 5 *
+        from man_order
+        where 1=1
+          and settle = 10
+          and status = 1
+        order by create_time asc
+    </select>
+    <select id="selectComplete9" resultMap="BaseResultMap">
+        select top 5 *
+        from man_order
+        where 1=1
+          and settle = 9
+          and status = 1
         order by create_time asc
     </select>
 
diff --git a/src/main/resources/mapper/OrderPakinMapper.xml b/src/main/resources/mapper/OrderPakinMapper.xml
index 5d44440..e0a6372 100644
--- a/src/main/resources/mapper/OrderPakinMapper.xml
+++ b/src/main/resources/mapper/OrderPakinMapper.xml
@@ -63,6 +63,22 @@
         and status = 1
         order by create_time asc
     </select>
+    <select id="selectComplete9" resultMap="BaseResultMap">
+        select top 5 *
+        from man_order_pakin
+        where 1=1
+          and settle = 9
+          and status = 1
+        order by create_time asc
+    </select>
+    <select id="selectComplete10" resultMap="BaseResultMap">
+        select top 5 *
+        from man_order_pakin
+        where 1=1
+          and settle = 10
+          and status = 1
+        order by create_time asc
+    </select>
 
     <select id="selectComplete8" resultMap="BaseResultMap">
         select top 5 *
diff --git a/src/main/resources/mapper/OrderPakoutMapper.xml b/src/main/resources/mapper/OrderPakoutMapper.xml
index ab391cb..e19491d 100644
--- a/src/main/resources/mapper/OrderPakoutMapper.xml
+++ b/src/main/resources/mapper/OrderPakoutMapper.xml
@@ -63,6 +63,22 @@
         and status = 1
         order by create_time asc
     </select>
+    <select id="selectComplete9" resultMap="BaseResultMap">
+        select top 5 *
+        from man_order_pakout
+        where 1=1
+          and settle = 9
+          and status = 1
+        order by create_time asc
+    </select>
+    <select id="selectComplete10" resultMap="BaseResultMap">
+        select top 5 *
+        from man_order_pakout
+        where 1=1
+          and settle = 10
+          and status = 1
+        order by create_time asc
+    </select>
 
     <select id="selectComplete8" resultMap="BaseResultMap">
         select top 5 *
diff --git a/src/main/webapp/static/js/orderPakin/order.js b/src/main/webapp/static/js/orderPakin/order.js
index 519f3c4..c655147 100644
--- a/src/main/webapp/static/js/orderPakin/order.js
+++ b/src/main/webapp/static/js/orderPakin/order.js
@@ -43,7 +43,7 @@
         cols: [[
             {type: 'numbers'},
             {field: 'orderNo', title: '鍗曟嵁缂栧彿', templet: '#orderNoTpl'},
-            {field: 'itemName', align: 'center', title: '瀹㈡埛po',  minWidth: 160, width: 160},
+            {field: 'itemName', align: 'center', title: 'ERPID',  minWidth: 160, width: 160},
             {field: 'docType$', align: 'center', title: '绫诲瀷',  minWidth: 160, width: 160},
             {field: 'cstmrName', align: 'center', title: '璐т富',  minWidth: 160, width: 160},
             {align: 'center', title: '鏄庣粏', toolbar: '#tbLook', minWidth: 160, width: 160},

--
Gitblit v1.9.1