From bc8ac2975751f43bca4e100d90b0ced100af176c Mon Sep 17 00:00:00 2001 From: cabbage <281119120@qq.com> Date: Wed, 6 Aug 2025 09:41:29 +0800 Subject: [PATCH] =?UTF-8?q?##=20=E6=B3=A8=E5=86=8C=E3=80=81=E5=8D=87?= =?UTF-8?q?=E7=BA=A7=E4=B8=8A=E4=BC=A0=E7=9B=92=E6=95=B0=EF=BC=8C=E9=A2=84?= =?UTF-8?q?=E5=A4=84=E7=90=86=E5=88=86=E6=8B=86=E6=95=B0=E6=8D=AE=E8=B0=83?= =?UTF-8?q?=E6=95=B4=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/RetailOrderServiceImpl.java | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/controller/service/impl/RetailOrderServiceImpl.java b/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/controller/service/impl/RetailOrderServiceImpl.java index 782bfa74..3fdd9fde 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/controller/service/impl/RetailOrderServiceImpl.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/controller/service/impl/RetailOrderServiceImpl.java @@ -789,8 +789,10 @@ public class RetailOrderServiceImpl implements IRetailOrderService { // 订单商品拆分数据 List orderWaresList = new ArrayList<>(); - // 订单商品map(key:商品主键-商品价格,value:商品数量) - Map orderWaresMap = new HashMap<>(); + // 订单商品拆分map(key:商品主键,value:商品数量) + Map orderWaresMap = new HashMap<>(); + // 订单商品价格拆分map(key:商品主键,value:商品价格) + Map orderWaresPriceMap = new HashMap<>(); // 商品销量数据 List waresNumberList = new ArrayList<>(); // 商品销量map(key:商品主键,value:商品数量) @@ -812,14 +814,18 @@ public class RetailOrderServiceImpl implements IRetailOrderService { // 指定商品拆分 并且 非赠品 if (boxProductList.contains(saOrderItems.getWareCode()) && EYesNo.NO.getIntValue() == saOrderItems.getIsGift()) { - BigDecimal boxNum = saOrderItems.getWaresBoxNum().multiply(new BigDecimal(saOrderItems.getWaresQuantity())); - // key: 商品ID-商品价格(产品价格*产品数量) - String key = saOrderItems.getPkWares() + "-" + (saOrderItems.getPrice().multiply(new BigDecimal(saOrderItems.getQuantity()))); - if (orderWaresMap.containsKey(key)) { - BigDecimal tmpBoxNum = orderWaresMap.get(key).add(boxNum); - orderWaresMap.put(key, tmpBoxNum); + // 商品数量 + BigDecimal waresQuantity = new BigDecimal(saOrderItems.getWaresQuantity()); + // 盒数 = 商品上传盒数 * 商品数量 + BigDecimal boxNum = saOrderItems.getWaresBoxNum().multiply(waresQuantity); + orderWaresMap.put(saOrderItems.getPkWares(), boxNum); + // 价格 = 商品上传价格 * 商品数量,不存在直接放入,存在则进行累加 + BigDecimal waresPrice = saOrderItems.getPrice().multiply(waresQuantity); + if (orderWaresPriceMap.containsKey(saOrderItems.getPkWares())) { + BigDecimal tmpWaresPrice = orderWaresPriceMap.get(saOrderItems.getPkWares()); + orderWaresPriceMap.put(saOrderItems.getPkWares(), tmpWaresPrice.add(waresPrice)); } else { - orderWaresMap.put(key, boxNum); + orderWaresPriceMap.put(saOrderItems.getPkWares(), waresPrice); } waresLimitMap.merge(saOrderItems.getPkWares(), saOrderItems.getWaresQuantity(), Integer::sum); @@ -831,11 +837,11 @@ public class RetailOrderServiceImpl implements IRetailOrderService { if (orderWaresMap.size() > 0) { // 处理订单商品拆分数据 - for (String key : orderWaresMap.keySet()) { + for (Integer key : orderWaresMap.keySet()) { SaOrderWares saOrderWares = SaOrderWares.builder() .pkOrder(saOrderExt.getPkId()) - .pkWares(Integer.parseInt(key.split("-")[0])) - .waresPrice(new BigDecimal(key.split("-")[1])) + .pkWares(key) + .waresPrice(orderWaresPriceMap.get(key)) .waresQuantity(orderWaresMap.get(key)) .build(); saOrderWares.setPkCreator(saOrderExt.getPkCreator());