From 61396b6a0d8e4a5843e65dc7bde8be1c67404a69 Mon Sep 17 00:00:00 2001 From: Junjie <540245094@qq.com> Date: 星期二, 26 八月 2025 16:42:35 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java | 72 +++++++++++++++++++++++------------- 1 files changed, 46 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..675f182 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,57 @@ 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(); + + //瀹為檯鍑哄簱鏁伴噺 + double realWeight = 0D; + BigDecimal diff = orderStock.subtract(BigDecimal.valueOf(isused)); + if (diff.doubleValue() >= 0) { + nccSaleXsfhmxWms.setNastnum(diff); + list.set(0, nccSaleXsfhmxWms); + matnrMap.put(wrkDetl.getMatnr(), list); + realWeight = isused; + }else { + list.remove(0); + matnrMap.put(wrkDetl.getMatnr(), list); + realWeight = orderStock.doubleValue(); + } + + //璁$畻涓绘暟閲� + Double anfme = MatUtils.calcAnfmeFromWeight(wrkDetl.getMatnr(), realWeight); + + OrderDetl orderDetl = new OrderDetl(); + orderDetl.sync(wrkDetl); + orderDetl.setQty(anfme); + orderDetl.setWeight(realWeight); + 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