|
@@ -22,10 +22,10 @@ import com.yonge.cooleshow.admin.wrapper.OmsOrderWrapper;
|
|
import com.yonge.cooleshow.mbg.mapper.*;
|
|
import com.yonge.cooleshow.mbg.mapper.*;
|
|
import com.yonge.cooleshow.mbg.model.*;
|
|
import com.yonge.cooleshow.mbg.model.*;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
+import org.apache.commons.collections.CollectionUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
-import org.springframework.util.CollectionUtils;
|
|
|
|
import org.springframework.util.StringUtils;
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
@@ -99,7 +99,7 @@ public class OmsOrderServiceImpl implements OmsOrderService {
|
|
orderVo.setUsername("");
|
|
orderVo.setUsername("");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- if (!CollectionUtils.isEmpty(schoolIds)) {
|
|
|
|
|
|
+ if (CollectionUtils.isNotEmpty(schoolIds)) {
|
|
try {
|
|
try {
|
|
HttpResponseResult<List<SchoolDto>> schoolDtoHttpResponseResult = webFeignService.schoolListByIds(schoolIds);
|
|
HttpResponseResult<List<SchoolDto>> schoolDtoHttpResponseResult = webFeignService.schoolListByIds(schoolIds);
|
|
if (schoolDtoHttpResponseResult.getCode() == 200 && schoolDtoHttpResponseResult.getStatus()) {
|
|
if (schoolDtoHttpResponseResult.getCode() == 200 && schoolDtoHttpResponseResult.getStatus()) {
|
|
@@ -127,10 +127,7 @@ public class OmsOrderServiceImpl implements OmsOrderService {
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
- public int delivery(List<OmsOrderDeliveryParam> deliveryParamList) {
|
|
|
|
- //批量发货
|
|
|
|
- int count = orderDao.delivery(deliveryParamList);
|
|
|
|
-
|
|
|
|
|
|
+ public Map<String,String> delivery(List<OmsOrderDeliveryParam> deliveryParamList) {
|
|
// 扣减库存
|
|
// 扣减库存
|
|
//库存扣减规则更新
|
|
//库存扣减规则更新
|
|
//扣减顺序:内部库存>税务库存>进货批次
|
|
//扣减顺序:内部库存>税务库存>进货批次
|
|
@@ -142,7 +139,20 @@ public class OmsOrderServiceImpl implements OmsOrderService {
|
|
// 查询出所有订单关联的skuId
|
|
// 查询出所有订单关联的skuId
|
|
// 订单ID集合
|
|
// 订单ID集合
|
|
List<Long> orderIds = deliveryParamList.stream().map(OmsOrderDeliveryParam::getOrderId).collect(Collectors.toList());
|
|
List<Long> orderIds = deliveryParamList.stream().map(OmsOrderDeliveryParam::getOrderId).collect(Collectors.toList());
|
|
- updateSkuStock( orderIds);
|
|
|
|
|
|
+ //获取所有已发货的订单
|
|
|
|
+ List<String> orderNos = orderDao.getDeliveryList(orderIds);
|
|
|
|
+ Map<String,String> resultMap = new HashMap<>();
|
|
|
|
+ if (CollectionUtils.isNotEmpty(orderNos)) {
|
|
|
|
+ orderNos.forEach(orderNo->{
|
|
|
|
+ resultMap.put(orderNo,orderNo+"已发货");
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ updateSkuStock(orderIds,resultMap);
|
|
|
|
+ if (!resultMap.isEmpty()){
|
|
|
|
+ return resultMap;
|
|
|
|
+ }
|
|
|
|
+ //批量发货
|
|
|
|
+ int count = orderDao.delivery(deliveryParamList);
|
|
|
|
|
|
|
|
|
|
//添加操作记录
|
|
//添加操作记录
|
|
@@ -158,7 +168,7 @@ public class OmsOrderServiceImpl implements OmsOrderService {
|
|
}).collect(Collectors.toList());
|
|
}).collect(Collectors.toList());
|
|
orderOperateHistoryDao.insertList(operateHistoryList);
|
|
orderOperateHistoryDao.insertList(operateHistoryList);
|
|
|
|
|
|
- return count;
|
|
|
|
|
|
+ return resultMap;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -166,8 +176,7 @@ public class OmsOrderServiceImpl implements OmsOrderService {
|
|
*/
|
|
*/
|
|
// @Override
|
|
// @Override
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
- public void updateSkuStock(List<Long> orderIds) {
|
|
|
|
-
|
|
|
|
|
|
+ public void updateSkuStock(List<Long> orderIds,Map<String,String> resultMap) {
|
|
// 查询订单详情
|
|
// 查询订单详情
|
|
OmsOrderItemExample example = new OmsOrderItemExample();
|
|
OmsOrderItemExample example = new OmsOrderItemExample();
|
|
example.createCriteria().andOrderIdIn(orderIds);
|
|
example.createCriteria().andOrderIdIn(orderIds);
|
|
@@ -202,15 +211,19 @@ public class OmsOrderServiceImpl implements OmsOrderService {
|
|
Map<String, List<OmsOrderItem>> map = omsOrderItems.stream().collect(Collectors.groupingBy(o -> o.getOrderSn()));
|
|
Map<String, List<OmsOrderItem>> map = omsOrderItems.stream().collect(Collectors.groupingBy(o -> o.getOrderSn()));
|
|
List<OrderSkuSync> skuSyncList = new ArrayList<>();
|
|
List<OrderSkuSync> skuSyncList = new ArrayList<>();
|
|
List<OmsOrderItem> updateItems = 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();
|
|
OrderSkuSync skuSync = new OrderSkuSync();
|
|
skuSync.setOrderNo(sn);
|
|
skuSync.setOrderNo(sn);
|
|
List<OrderSkuSync.SkuSync> skuSyncs = new ArrayList<>();
|
|
List<OrderSkuSync.SkuSync> skuSyncs = new ArrayList<>();
|
|
skuSync.setSkuSyncList(skuSyncs);
|
|
skuSync.setSkuSyncList(skuSyncs);
|
|
- v.stream().forEach(o -> {
|
|
|
|
-
|
|
|
|
|
|
+ for (OmsOrderItem o : v) {
|
|
List<PmsProductSkuStockRecord> skuStockRecords = skuStockRecordMap.get(o.getProductSkuId());
|
|
List<PmsProductSkuStockRecord> skuStockRecords = skuStockRecordMap.get(o.getProductSkuId());
|
|
if (CollectionUtils.isEmpty(skuStockRecords)) {
|
|
if (CollectionUtils.isEmpty(skuStockRecords)) {
|
|
|
|
+ if (resultMap != null){
|
|
|
|
+ resultMap.put(o.getProductSkuId().toString(),skuMap.get(o.getProductSkuId()) +"库存不足");
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
throw new BizException(skuMap.get(o.getProductSkuId()) +"库存不足");
|
|
throw new BizException(skuMap.get(o.getProductSkuId()) +"库存不足");
|
|
}
|
|
}
|
|
List<OrderSkuSync.SkuSync> itemSkus = new ArrayList<>();
|
|
List<OrderSkuSync.SkuSync> itemSkus = new ArrayList<>();
|
|
@@ -277,6 +290,10 @@ public class OmsOrderServiceImpl implements OmsOrderService {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (count1 > 0) {
|
|
if (count1 > 0) {
|
|
|
|
+ if (resultMap != null){
|
|
|
|
+ resultMap.put(o.getProductSkuId().toString(),skuMap.get(o.getProductSkuId()) +"库存不足");
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
throw new BizException(skuMap.get(o.getProductSkuId())+"库存不足");
|
|
throw new BizException(skuMap.get(o.getProductSkuId())+"库存不足");
|
|
}
|
|
}
|
|
if (CollUtil.isNotEmpty(itemSkus)) {
|
|
if (CollUtil.isNotEmpty(itemSkus)) {
|
|
@@ -286,9 +303,12 @@ public class OmsOrderServiceImpl implements OmsOrderService {
|
|
orderItem.setStockJson(JSON.toJSONString(itemSkus));
|
|
orderItem.setStockJson(JSON.toJSONString(itemSkus));
|
|
updateItems.add(orderItem);
|
|
updateItems.add(orderItem);
|
|
}
|
|
}
|
|
- });
|
|
|
|
|
|
+ }
|
|
skuSyncList.add(skuSync);
|
|
skuSyncList.add(skuSync);
|
|
- });
|
|
|
|
|
|
+ }
|
|
|
|
+ if(resultMap != null && !resultMap.isEmpty()){
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
for (Map.Entry<Long, PmsProductSkuStockRecord> entry : updateMap.entrySet()) {
|
|
for (Map.Entry<Long, PmsProductSkuStockRecord> entry : updateMap.entrySet()) {
|
|
PmsProductSkuStockRecord v = entry.getValue();
|
|
PmsProductSkuStockRecord v = entry.getValue();
|
|
PmsProductSkuStockRecord update = new PmsProductSkuStockRecord();
|
|
PmsProductSkuStockRecord update = new PmsProductSkuStockRecord();
|
|
@@ -805,8 +825,7 @@ public class OmsOrderServiceImpl implements OmsOrderService {
|
|
|
|
|
|
// 如果订单状态是已发货,扣减库存
|
|
// 如果订单状态是已发货,扣减库存
|
|
if (order.getStatus() ==2 || order.getStatus() == 3) {
|
|
if (order.getStatus() ==2 || order.getStatus() == 3) {
|
|
-
|
|
|
|
- updateSkuStock(Lists.newArrayList(detail.getId()));
|
|
|
|
|
|
+ updateSkuStock(Lists.newArrayList(detail.getId()),null);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|