新增发货后的蓝驰系统库存扣减

This commit is contained in:
liyj 2025-10-22 17:33:03 +08:00
parent afddad1926
commit 286180258f

View File

@ -24,6 +24,7 @@ import com.suisung.mall.common.domain.UserDto;
import com.suisung.mall.common.exception.ApiException;
import com.suisung.mall.common.modules.order.ShopOrderBase;
import com.suisung.mall.common.modules.order.ShopOrderItem;
import com.suisung.mall.common.modules.product.ShopProductItem;
import com.suisung.mall.common.modules.store.ShopMchEntry;
import com.suisung.mall.common.modules.store.ShopStoreSameCityTransportBase;
import com.suisung.mall.common.modules.store.ShopStoreSfOrder;
@ -36,6 +37,7 @@ import com.suisung.mall.shop.order.service.ShopOrderBaseService;
import com.suisung.mall.shop.order.service.ShopOrderInfoService;
import com.suisung.mall.shop.order.service.ShopOrderItemService;
import com.suisung.mall.shop.order.service.ShopOrderReturnService;
import com.suisung.mall.shop.product.service.ShopProductItemService;
import com.suisung.mall.shop.sfexpress.service.SFExpressApiService;
import com.suisung.mall.shop.store.service.ShopMchEntryService;
import com.suisung.mall.shop.store.service.ShopStoreSameCityTransportBaseService;
@ -57,6 +59,8 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static com.suisung.mall.common.utils.I18nUtil._;
@Service
public class SFExpressApiServiceImpl implements SFExpressApiService {
private static final Logger logger = LoggerFactory.getLogger(SFExpressApiServiceImpl.class);
@ -112,6 +116,9 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
@Autowired
private ShopOrderItemService shopOrderItemService;
@Autowired
private ShopProductItemService shopProductItemService;
/**
* 创建顺丰同店铺-连锁店铺
*
@ -1023,6 +1030,9 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
String order_id=shopStoreSfOrder.getShop_order_id();
itemQueryWrapper.eq("order_id", order_id);
List<ShopOrderItem> order_item_rows = shopOrderItemService.find(itemQueryWrapper);
if(picking(order_item_rows)){
logger.info("顺丰发货商品扣减库存成功");
}
if(!order_item_rows.isEmpty()){
for (ShopOrderItem shopOrderItem : order_item_rows) {
Map<String, Integer> stockDeltaMap = new HashMap<>();
@ -1185,6 +1195,9 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
QueryWrapper<ShopOrderItem> itemQueryWrapper = new QueryWrapper<>();
itemQueryWrapper.eq("order_id", orderId);
List<ShopOrderItem> order_item_rows = shopOrderItemService.find(itemQueryWrapper);
if(picking(order_item_rows)){
logger.info("自行发货商品扣减库存成功");
}
if(!order_item_rows.isEmpty()){
for (ShopOrderItem shopOrderItem : order_item_rows) {
Map<String, Integer> stockDeltaMap = new HashMap<>();
@ -1203,6 +1216,7 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
* 商家自行配送完成订单
* @param shopOrderId
*/
@Override
public CommonResult selFinishOrder(String shopOrderId) {
Integer orderStatus = StateCode.ORDER_STATE_RECEIVED; //已签收
ShopOrderBase shopOrderBase = checkedOrder(shopOrderId);
@ -1218,6 +1232,36 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
return CommonResult.success("操作成功");
}
/**
* 根据订单列表扣除商品库存
* @param order_item_rows
* @return
*/
public boolean picking(List<ShopOrderItem> order_item_rows){
logger.info("出库商品扣除库存--开始");
List<ShopProductItem> updateProductItems = new ArrayList<>();
for (ShopOrderItem shopOrderItem : order_item_rows) {
Long item_id = Long.valueOf(shopOrderItem.getItem_src_id());
ShopProductItem productItem = shopProductItemService.get(item_id);
if (productItem == null) {
throw new ApiException(String.format(_("SKU【%s】不存在"), item_id));
}
Integer item_change_quantity=shopOrderItem.getOrder_item_quantity()*-1;
Integer quantity = productItem.getItem_quantity() + item_change_quantity;
if (quantity.compareTo(0) < 0) {
quantity = 0;
}
productItem.setItem_quantity(quantity);
//防止负数
Integer tmp_quantity = productItem.getItem_quantity_frozen() + item_change_quantity.intValue();
if (tmp_quantity.compareTo(0) < 0) {
tmp_quantity = 0;
}
productItem.setItem_quantity_frozen(tmp_quantity);
updateProductItems.add(productItem);
}
return shopProductItemService.updateBatchById(updateProductItems,updateProductItems.size());
}
// 私有方法