规格计算单价
This commit is contained in:
parent
03a475d1c9
commit
36982e053e
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user