From 36982e053e9632fac17865e3d30c6f123c71f301 Mon Sep 17 00:00:00 2001 From: liyj <1617420630@qq.com> Date: Tue, 4 Nov 2025 14:38:53 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=84=E6=A0=BC=E8=AE=A1=E7=AE=97=E5=8D=95?= =?UTF-8?q?=E4=BB=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SyncThirdDataServiceImpl.java | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/SyncThirdDataServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/SyncThirdDataServiceImpl.java index 23ea828f..f7d88c31 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/SyncThirdDataServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/SyncThirdDataServiceImpl.java @@ -981,9 +981,12 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements } cn.hutool.json.JSONObject item = (cn.hutool.json.JSONObject) ((cn.hutool.json.JSONObject) array_item_spec.get(0)).get("item"); String name = Convert.toStr(item.get("name")); - BigDecimal itemQuaryty = getBigDecimal(delta, name); + BigDecimal[] itemQuarytys = getBigDecimal(delta, name); + BigDecimal unitWeight = itemQuarytys[0]; + BigDecimal itemQuaryty = itemQuarytys[1]; + BigDecimal unitPriceBg=new BigDecimal(unitPrice).divide(unitWeight,4, RoundingMode.HALF_UP); // 使用 Redis 的 HINCRBY 保证原子性和高性能 - redisTemplate.opsForHash().increment(key, itemId+"-"+orderId+"-"+unitPrice, itemQuaryty.doubleValue()); + redisTemplate.opsForHash().increment(key, itemId+"-"+orderId+"-"+unitPriceBg.toPlainString(), itemQuaryty.doubleValue()); logger.info("存储有规格库存成功"); } catch (Exception e) { logger.error("库存累计失败,productKey={}, delta={}, error={}", productKey, delta, e.getMessage(), e); @@ -993,21 +996,27 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements /** * 计算最终数量 如果是g转换为kg,如果是数量就是直接值 + * * @param delta * @param name - * @return + * @return [0]单位重量 + * [1] 总重量 */ - private static BigDecimal getBigDecimal(Integer delta, String name) { + private static BigDecimal[] getBigDecimal(Integer delta, String name) { BigDecimal itemQuaryty = new BigDecimal(delta); + BigDecimal[] result=new BigDecimal[2]; if(name.contains("kg")){ String weightStr= name.split("kg")[0]; + result[0]=new BigDecimal(weightStr); itemQuaryty=new BigDecimal(weightStr).multiply(new BigDecimal(delta)); } if(name.contains("g")){ String weightStr= name.split("g")[0]; + result[0]=new BigDecimal(weightStr).divide(new BigDecimal(1000),4,RoundingMode.HALF_UP); itemQuaryty=new BigDecimal(weightStr).multiply(new BigDecimal(delta)).divide(new BigDecimal(1000),4,RoundingMode.HALF_UP); } - return itemQuaryty; + result[1]=itemQuaryty; + return result; }