|
@@ -127,10 +127,7 @@ public class OmsOrderServiceImpl implements OmsOrderService {
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public int delivery(List<OmsOrderDeliveryParam> deliveryParamList) {
|
|
|
- //批量发货
|
|
|
- int count = orderDao.delivery(deliveryParamList);
|
|
|
-
|
|
|
+ public Map<Long,String> delivery(List<OmsOrderDeliveryParam> deliveryParamList) {
|
|
|
// 扣减库存
|
|
|
//库存扣减规则更新
|
|
|
//扣减顺序:内部库存>税务库存>进货批次
|
|
@@ -142,7 +139,13 @@ public class OmsOrderServiceImpl implements OmsOrderService {
|
|
|
// 查询出所有订单关联的skuId
|
|
|
// 订单ID集合
|
|
|
List<Long> orderIds = deliveryParamList.stream().map(OmsOrderDeliveryParam::getOrderId).collect(Collectors.toList());
|
|
|
- updateSkuStock( orderIds);
|
|
|
+ Map<Long,String> resultMap = new HashMap<>();
|
|
|
+ updateSkuStock(orderIds,resultMap);
|
|
|
+ if (!resultMap.isEmpty()){
|
|
|
+ return resultMap;
|
|
|
+ }
|
|
|
+ //批量发货
|
|
|
+ int count = orderDao.delivery(deliveryParamList);
|
|
|
|
|
|
|
|
|
//添加操作记录
|
|
@@ -158,7 +161,7 @@ public class OmsOrderServiceImpl implements OmsOrderService {
|
|
|
}).collect(Collectors.toList());
|
|
|
orderOperateHistoryDao.insertList(operateHistoryList);
|
|
|
|
|
|
- return count;
|
|
|
+ return resultMap;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -166,8 +169,7 @@ public class OmsOrderServiceImpl implements OmsOrderService {
|
|
|
*/
|
|
|
// @Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public void updateSkuStock(List<Long> orderIds) {
|
|
|
-
|
|
|
+ public void updateSkuStock(List<Long> orderIds,Map<Long,String> resultMap) {
|
|
|
// 查询订单详情
|
|
|
OmsOrderItemExample example = new OmsOrderItemExample();
|
|
|
example.createCriteria().andOrderIdIn(orderIds);
|
|
@@ -202,15 +204,19 @@ public class OmsOrderServiceImpl implements OmsOrderService {
|
|
|
Map<String, List<OmsOrderItem>> map = omsOrderItems.stream().collect(Collectors.groupingBy(o -> o.getOrderSn()));
|
|
|
List<OrderSkuSync> skuSyncList = new ArrayList<>();
|
|
|
List<OmsOrderItem> updateItems = new ArrayList<>();
|
|
|
- map.forEach((sn,v) -> {
|
|
|
+ for (String sn : map.keySet()) {
|
|
|
+ List<OmsOrderItem> v = map.get(sn);
|
|
|
OrderSkuSync skuSync = new OrderSkuSync();
|
|
|
skuSync.setOrderNo(sn);
|
|
|
List<OrderSkuSync.SkuSync> skuSyncs = new ArrayList<>();
|
|
|
skuSync.setSkuSyncList(skuSyncs);
|
|
|
- v.stream().forEach(o -> {
|
|
|
-
|
|
|
+ for (OmsOrderItem o : v) {
|
|
|
List<PmsProductSkuStockRecord> skuStockRecords = skuStockRecordMap.get(o.getProductSkuId());
|
|
|
if (CollectionUtils.isEmpty(skuStockRecords)) {
|
|
|
+ if (resultMap != null){
|
|
|
+ resultMap.put(o.getProductSkuId(),skuMap.get(o.getProductSkuId()) +"库存不足");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
throw new BizException(skuMap.get(o.getProductSkuId()) +"库存不足");
|
|
|
}
|
|
|
List<OrderSkuSync.SkuSync> itemSkus = new ArrayList<>();
|
|
@@ -277,6 +283,10 @@ public class OmsOrderServiceImpl implements OmsOrderService {
|
|
|
}
|
|
|
}
|
|
|
if (count1 > 0) {
|
|
|
+ if (resultMap != null){
|
|
|
+ resultMap.put(o.getProductSkuId(),skuMap.get(o.getProductSkuId()) +"库存不足");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
throw new BizException(skuMap.get(o.getProductSkuId())+"库存不足");
|
|
|
}
|
|
|
if (CollUtil.isNotEmpty(itemSkus)) {
|
|
@@ -286,9 +296,12 @@ public class OmsOrderServiceImpl implements OmsOrderService {
|
|
|
orderItem.setStockJson(JSON.toJSONString(itemSkus));
|
|
|
updateItems.add(orderItem);
|
|
|
}
|
|
|
- });
|
|
|
+ }
|
|
|
skuSyncList.add(skuSync);
|
|
|
- });
|
|
|
+ }
|
|
|
+ if(resultMap != null && !resultMap.isEmpty()){
|
|
|
+ return;
|
|
|
+ }
|
|
|
for (Map.Entry<Long, PmsProductSkuStockRecord> entry : updateMap.entrySet()) {
|
|
|
PmsProductSkuStockRecord v = entry.getValue();
|
|
|
PmsProductSkuStockRecord update = new PmsProductSkuStockRecord();
|
|
@@ -805,8 +818,7 @@ public class OmsOrderServiceImpl implements OmsOrderService {
|
|
|
|
|
|
// 如果订单状态是已发货,扣减库存
|
|
|
if (order.getStatus() ==2 || order.getStatus() == 3) {
|
|
|
-
|
|
|
- updateSkuStock(Lists.newArrayList(detail.getId()));
|
|
|
+ updateSkuStock(Lists.newArrayList(detail.getId()),null);
|
|
|
}
|
|
|
}
|
|
|
|