规格计算单价
This commit is contained in:
parent
81fe3a88b8
commit
85294f332a
@ -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");
|
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"));
|
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 保证原子性和高性能
|
// 使用 Redis 的 HINCRBY 保证原子性和高性能
|
||||||
redisTemplate.opsForHash().increment(key, itemId+"-"+orderId+"-"+unitPrice, itemQuaryty.doubleValue());
|
redisTemplate.opsForHash().increment(key, itemId+"-"+orderId+"-"+unitPriceBg.toPlainString(), itemQuaryty.doubleValue());
|
||||||
logger.info("存储有规格库存成功");
|
logger.info("存储有规格库存成功");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("库存累计失败,productKey={}, delta={}, error={}", productKey, delta, e.getMessage(), e);
|
logger.error("库存累计失败,productKey={}, delta={}, error={}", productKey, delta, e.getMessage(), e);
|
||||||
@ -993,21 +996,27 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 计算最终数量 如果是g转换为kg,如果是数量就是直接值
|
* 计算最终数量 如果是g转换为kg,如果是数量就是直接值
|
||||||
|
*
|
||||||
* @param delta
|
* @param delta
|
||||||
* @param name
|
* @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 itemQuaryty = new BigDecimal(delta);
|
||||||
|
BigDecimal[] result=new BigDecimal[2];
|
||||||
if(name.contains("kg")){
|
if(name.contains("kg")){
|
||||||
String weightStr= name.split("kg")[0];
|
String weightStr= name.split("kg")[0];
|
||||||
|
result[0]=new BigDecimal(weightStr);
|
||||||
itemQuaryty=new BigDecimal(weightStr).multiply(new BigDecimal(delta));
|
itemQuaryty=new BigDecimal(weightStr).multiply(new BigDecimal(delta));
|
||||||
}
|
}
|
||||||
if(name.contains("g")){
|
if(name.contains("g")){
|
||||||
String weightStr= name.split("g")[0];
|
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);
|
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