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