From d5b31c2bff8e0d58ce5e32c8008534a2ea57241c Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期一, 25 八月 2025 14:52:01 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java |   64 +++++++++++++++++++-------------
 1 files changed, 38 insertions(+), 26 deletions(-)

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 d22d9a5..d81252b 100644
--- a/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
@@ -241,37 +241,49 @@
 
             List<WrkDetl> wrkDetls = wrkDetlService.selectAndLogByOrderNo(order.getOrderNo());
             for (WrkDetl wrkDetl : wrkDetls) {
-                OrderDetl orderDetl = new OrderDetl();
-                orderDetl.sync(wrkDetl);
-                orderDetl.setQty(wrkDetl.getAnfme());
-                orderDetl.setOrderId(orderSou.getId());
-                orderDetl.setOrderNo(orderSou.getOrderNo());
-                orderDetl.setStatus(1);
-                orderDetl.setCreateTime(orderSou.getCreateTime());
-                orderDetl.setCreateBy(orderSou.getCreateBy());
-                orderDetl.setUpdateTime(orderSou.getUpdateTime());
-                orderDetl.setUpdateBy(orderSou.getUpdateBy());
-                orderDetl.setId(null);
+                List<OrderDetl> insertList = new ArrayList<>();
 
-                List<NccSaleXsfhmxWms> list = matnrMap.get(wrkDetl.getMatnr());
-                if (!list.isEmpty()) {
-                    NccSaleXsfhmxWms nccSaleXsfhmxWms = list.get(0);
-                    BigDecimal nastnum = nccSaleXsfhmxWms.getNastnum();
-                    BigDecimal subtract = nastnum.subtract(BigDecimal.valueOf(wrkDetl.getWeight()));
-                    if (subtract.doubleValue() <= 0) {
-                        list.remove(0);
+                Double isused = wrkDetl.getWeight();
+                while (isused > 0D) {
+                    List<NccSaleXsfhmxWms> list = matnrMap.get(wrkDetl.getMatnr());
+                    if (!list.isEmpty()) {
+                        NccSaleXsfhmxWms nccSaleXsfhmxWms = list.get(0);
+                        BigDecimal orderStock = nccSaleXsfhmxWms.getNastnum();
+
+                        BigDecimal diff = orderStock.subtract(BigDecimal.valueOf(isused));
+                        if (diff.doubleValue() >= 0) {
+                            nccSaleXsfhmxWms.setNastnum(diff);
+                            list.set(0, nccSaleXsfhmxWms);
+                            matnrMap.put(wrkDetl.getMatnr(), list);
+                        }else {
+                            list.remove(0);
+                            matnrMap.put(wrkDetl.getMatnr(), list);
+                        }
+
+                        OrderDetl orderDetl = new OrderDetl();
+                        orderDetl.sync(wrkDetl);
+                        orderDetl.setQty(wrkDetl.getAnfme());
+                        orderDetl.setOrderId(orderSou.getId());
+                        orderDetl.setOrderNo(orderSou.getOrderNo());
+                        orderDetl.setStatus(1);
+                        orderDetl.setCreateTime(orderSou.getCreateTime());
+                        orderDetl.setCreateBy(orderSou.getCreateBy());
+                        orderDetl.setUpdateTime(orderSou.getUpdateTime());
+                        orderDetl.setUpdateBy(orderSou.getUpdateBy());
+                        orderDetl.setId(null);
+                        orderDetl.setRemark(JSON.toJSONString(nccSaleXsfhmxWms));
+                        insertList.add(orderDetl);
+
+                        isused -= orderStock.doubleValue();
                     }else {
-                        nccSaleXsfhmxWms.setNastnum(subtract);
-                        list.set(0, nccSaleXsfhmxWms);
+                        throw new CoolException("閲嶆暣鍑哄簱璁㈠崟銆恛rderNo = " + order.getOrderNo() + "銆戞槑缁嗗け璐ワ紝ERP鍘熷鏁版嵁涓虹┖");
                     }
-
-                    orderDetl.setRemark(JSON.toJSONString(nccSaleXsfhmxWms));
-                }else {
-                    throw new CoolException("閲嶆暣鍑哄簱璁㈠崟銆恛rderNo = " + order.getOrderNo() + "銆戞槑缁嗗け璐ワ紝ERP鍘熷鏁版嵁涓虹┖");
                 }
 
-                if (!orderDetlService.insert(orderDetl)) {
-                    throw new CoolException("閲嶆暣鍑哄簱璁㈠崟銆恛rderNo = " + order.getOrderNo() + "銆戞槑缁嗗け璐�");
+                for (OrderDetl orderDetl : insertList) {
+                    if (!orderDetlService.insert(orderDetl)) {
+                        throw new CoolException("閲嶆暣鍑哄簱璁㈠崟銆恛rderNo = " + order.getOrderNo() + "銆戞槑缁嗗け璐�");
+                    }
                 }
             }
 

--
Gitblit v1.9.1