Compare commits
2 Commits
2ab4495920
...
0c15b2c034
| Author | SHA1 | Date | |
|---|---|---|---|
| 0c15b2c034 | |||
| 4814ca202d |
@ -36,6 +36,10 @@ public class ProductQuantityConsumption {
|
|||||||
@TableField(value = "quantity",updateStrategy = FieldStrategy.NOT_EMPTY)
|
@TableField(value = "quantity",updateStrategy = FieldStrategy.NOT_EMPTY)
|
||||||
private BigDecimal quantity;
|
private BigDecimal quantity;
|
||||||
|
|
||||||
|
@ApiModelProperty("订单总额")
|
||||||
|
@TableField(value = "sale_amount",updateStrategy = FieldStrategy.NOT_EMPTY)
|
||||||
|
private BigDecimal saleAmount;
|
||||||
|
|
||||||
@ApiModelProperty("消费状态:0-未消费,1-已消费")
|
@ApiModelProperty("消费状态:0-未消费,1-已消费")
|
||||||
@TableField(value = "status",updateStrategy = FieldStrategy.NOT_EMPTY)
|
@TableField(value = "status",updateStrategy = FieldStrategy.NOT_EMPTY)
|
||||||
private Integer status;
|
private Integer status;
|
||||||
|
|||||||
@ -1526,7 +1526,7 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
|
|||||||
Map<String, Integer> stockDeltaMap = new HashMap<>();
|
Map<String, Integer> stockDeltaMap = new HashMap<>();
|
||||||
String item_src_id = productItem.getItem_src_id();
|
String item_src_id = productItem.getItem_src_id();
|
||||||
stockDeltaMap.put(item_src_id + "-" + shopOrderItem.getOrder_id()+"-"+shopOrderItem.getItem_unit_price(), returnNum);
|
stockDeltaMap.put(item_src_id + "-" + shopOrderItem.getOrder_id()+"-"+shopOrderItem.getItem_unit_price(), returnNum);
|
||||||
syncThirdDataService.incrProductStockToRedis(stockDeltaMap);
|
syncThirdDataService.incrProductStockToRedis(stockDeltaMap,shopOrderReturn.getReturn_refund_amount());
|
||||||
logger.info("退货返回给思迅,存入redis成功,item_src_id:{},订单号:{},数量:{}", item_src_id, shopOrderReturn.getOrder_id(), returnNum);
|
logger.info("退货返回给思迅,存入redis成功,item_src_id:{},订单号:{},数量:{}", item_src_id, shopOrderReturn.getOrder_id(), returnNum);
|
||||||
} else {
|
} else {
|
||||||
logger.warn("退货数量为空,无法增加库存,订单项ID: {}", orderItemId);
|
logger.warn("退货数量为空,无法增加库存,订单项ID: {}", orderItemId);
|
||||||
|
|||||||
@ -1179,7 +1179,7 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
|
|||||||
String item_src_id = shopOrderItem.getItem_src_id();
|
String item_src_id = shopOrderItem.getItem_src_id();
|
||||||
Integer order_item_quantity = shopOrderItem.getOrder_item_quantity();
|
Integer order_item_quantity = shopOrderItem.getOrder_item_quantity();
|
||||||
stockDeltaMap.put(item_src_id + "-" + shopStoreSfOrder.getShop_order_id()+"-"+shopOrderItem.getItem_unit_price(), -order_item_quantity);
|
stockDeltaMap.put(item_src_id + "-" + shopStoreSfOrder.getShop_order_id()+"-"+shopOrderItem.getItem_unit_price(), -order_item_quantity);
|
||||||
syncThirdDataService.incrProductStockToRedis(stockDeltaMap);
|
syncThirdDataService.incrProductStockToRedis(stockDeltaMap,null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//出库扣减思迅库存end
|
//出库扣减思迅库存end
|
||||||
@ -1348,7 +1348,7 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
|
|||||||
String item_src_id = shopOrderItem.getItem_src_id();
|
String item_src_id = shopOrderItem.getItem_src_id();
|
||||||
Integer order_item_quantity = shopOrderItem.getOrder_item_quantity();
|
Integer order_item_quantity = shopOrderItem.getOrder_item_quantity();
|
||||||
stockDeltaMap.put(item_src_id + "-" + shopOrderItem.getOrder_id()+"-"+shopOrderItem.getItem_unit_price(), -order_item_quantity);
|
stockDeltaMap.put(item_src_id + "-" + shopOrderItem.getOrder_id()+"-"+shopOrderItem.getItem_unit_price(), -order_item_quantity);
|
||||||
syncThirdDataService.incrProductStockToRedis(stockDeltaMap);
|
syncThirdDataService.incrProductStockToRedis(stockDeltaMap,null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return CommonResult.success("操作成功");
|
return CommonResult.success("操作成功");
|
||||||
|
|||||||
@ -20,6 +20,7 @@ import org.springframework.http.ResponseEntity;
|
|||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -138,8 +139,9 @@ public interface SyncThirdDataService {
|
|||||||
*
|
*
|
||||||
* @param stockDeltaMap key 为商品唯一key,value 为库存增降量 例如 {"1234567890123": 100, "1234567890124": 50} 库存数为正负整数,单位可能是个数或重量(克)
|
* @param stockDeltaMap key 为商品唯一key,value 为库存增降量 例如 {"1234567890123": 100, "1234567890124": 50} 库存数为正负整数,单位可能是个数或重量(克)
|
||||||
* 数量为正数时,库存数增加;数量为负数时,库存数减少
|
* 数量为正数时,库存数增加;数量为负数时,库存数减少
|
||||||
|
* itemReturnAmount 退货时输入
|
||||||
*/
|
*/
|
||||||
void incrProductStockToRedis(Map<String, Integer> stockDeltaMap);
|
void incrProductStockToRedis(Map<String, Integer> stockDeltaMap, BigDecimal itemReturnAmount);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -903,12 +903,13 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
|
|||||||
ProductQuantityConsumption productQuantityConsumption=new ProductQuantityConsumption();
|
ProductQuantityConsumption productQuantityConsumption=new ProductQuantityConsumption();
|
||||||
String productKey= (String) k;
|
String productKey= (String) k;
|
||||||
String[] productKeyArrys=productKey.split("-");
|
String[] productKeyArrys=productKey.split("-");
|
||||||
if(productKeyArrys.length!=3){
|
if(productKeyArrys.length!=4){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
String productNumber=productKeyArrys[0];
|
String productNumber=productKeyArrys[0];
|
||||||
String orderId=productKeyArrys[1];
|
String orderId=productKeyArrys[1];
|
||||||
String unitPrice=productKeyArrys[2];
|
String unitPrice=productKeyArrys[2];
|
||||||
|
String saleAmount=productKeyArrys[3];
|
||||||
productQuantityConsumption.setConsumeId(IdUtil.getSnowflakeNextIdStr());
|
productQuantityConsumption.setConsumeId(IdUtil.getSnowflakeNextIdStr());
|
||||||
productQuantityConsumption.setOrderId(orderId);
|
productQuantityConsumption.setOrderId(orderId);
|
||||||
productQuantityConsumption.setProductNumber(productNumber);
|
productQuantityConsumption.setProductNumber(productNumber);
|
||||||
@ -916,6 +917,7 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
|
|||||||
productQuantityConsumption.setStoreId(Integer.valueOf(storeId));
|
productQuantityConsumption.setStoreId(Integer.valueOf(storeId));
|
||||||
productQuantityConsumption.setStatus(0);
|
productQuantityConsumption.setStatus(0);
|
||||||
productQuantityConsumption.setUnitPrice(new BigDecimal(unitPrice));
|
productQuantityConsumption.setUnitPrice(new BigDecimal(unitPrice));
|
||||||
|
productQuantityConsumption.setSaleAmount(new BigDecimal(saleAmount));
|
||||||
productQuantityConsumptionList.add(productQuantityConsumption);
|
productQuantityConsumptionList.add(productQuantityConsumption);
|
||||||
});
|
});
|
||||||
return productQuantityConsumptionList;
|
return productQuantityConsumptionList;
|
||||||
@ -926,7 +928,7 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void incrProductStockToRedis(Map<String, Integer> stockDeltaMap) {
|
public void incrProductStockToRedis(Map<String, Integer> stockDeltaMap, BigDecimal itemReturnAmount) {
|
||||||
// 校验参数,避免空指针
|
// 校验参数,避免空指针
|
||||||
if (CollectionUtil.isEmpty(stockDeltaMap)) {
|
if (CollectionUtil.isEmpty(stockDeltaMap)) {
|
||||||
return;
|
return;
|
||||||
@ -972,11 +974,12 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cn.hutool.json.JSONArray array_item_spec= JSONUtil.parseArray(spuItem.getItem_spec());
|
cn.hutool.json.JSONArray array_item_spec = JSONUtil.parseArray(spuItem.getItem_spec());
|
||||||
logger.info("array_item_spec:{}",array_item_spec);
|
logger.info("array_item_spec:{}",array_item_spec);
|
||||||
logger.info("key:{},Product_number:{}",key,itemId);
|
logger.info("key:{},Product_number:{}",key,itemId);
|
||||||
if(array_item_spec.isEmpty()){
|
if(array_item_spec.isEmpty()){
|
||||||
redisTemplate.opsForHash().increment(key, itemId+"-"+orderId+"-"+unitPrice, delta.doubleValue());
|
BigDecimal saleAmount=new BigDecimal(unitPrice).multiply(new BigDecimal(delta));
|
||||||
|
redisTemplate.opsForHash().increment(key, itemId+"-"+orderId+"-"+unitPrice+"-"+saleAmount.toPlainString(), delta.doubleValue());
|
||||||
logger.info("存储无规格库存成功");
|
logger.info("存储无规格库存成功");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -986,9 +989,15 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
|
|||||||
BigDecimal unitWeight = itemQuarytys[0];
|
BigDecimal unitWeight = itemQuarytys[0];
|
||||||
BigDecimal itemQuaryty = itemQuarytys[1];
|
BigDecimal itemQuaryty = itemQuarytys[1];
|
||||||
BigDecimal unitPriceBg=new BigDecimal(unitPrice).divide(unitWeight,4, RoundingMode.HALF_UP);
|
BigDecimal unitPriceBg=new BigDecimal(unitPrice).divide(unitWeight,4, RoundingMode.HALF_UP);
|
||||||
|
|
||||||
|
if(ObjectUtil.isNotNull(itemReturnAmount)){//退货
|
||||||
|
itemQuaryty=itemReturnAmount.divide(unitPriceBg,4,RoundingMode.HALF_UP);
|
||||||
|
}else {
|
||||||
|
itemReturnAmount=unitPriceBg.multiply(itemQuaryty);
|
||||||
|
}
|
||||||
logger.info("unitWeight-{};itemQuaryty-{};unitPriceBg-{}",unitWeight,itemQuaryty,unitPriceBg);
|
logger.info("unitWeight-{};itemQuaryty-{};unitPriceBg-{}",unitWeight,itemQuaryty,unitPriceBg);
|
||||||
// 使用 Redis 的 HINCRBY 保证原子性和高性能
|
// 使用 Redis 的 HINCRBY 保证原子性和高性能
|
||||||
redisTemplate.opsForHash().increment(key, itemId+"-"+orderId+"-"+unitPriceBg.toPlainString(), itemQuaryty.doubleValue());
|
redisTemplate.opsForHash().increment(key, itemId+"-"+orderId+"-"+unitPriceBg.toPlainString()+"-"+itemReturnAmount.toPlainString(), itemQuaryty.doubleValue());
|
||||||
logger.info("存储有规格库存成功",itemId+"-"+orderId+"-"+unitPriceBg.toPlainString());
|
logger.info("存储有规格库存成功",itemId+"-"+orderId+"-"+unitPriceBg.toPlainString());
|
||||||
} 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);
|
||||||
|
|||||||
1
sql/shop/dev/20251106_dml.sql
Normal file
1
sql/shop/dev/20251106_dml.sql
Normal file
@ -0,0 +1 @@
|
|||||||
|
alter table product_quantity_consumption add column sale_amount decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '订单总额';
|
||||||
Loading…
Reference in New Issue
Block a user