Browse Source

批量发货逻辑调整

zouxuan 5 months ago
parent
commit
37ad4840b9

+ 1 - 1
mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/controller/OmsOrderController.java

@@ -54,7 +54,7 @@ public class OmsOrderController {
         try {
             boolean b = lock.tryLock(60, 60, TimeUnit.SECONDS);
             if (b) {
-                Map<Long, String> delivery = orderService.delivery(deliveryParamList);
+                Map<String, String> delivery = orderService.delivery(deliveryParamList);
                 if (delivery.isEmpty()) {
                     return CommonResult.success(delivery);
                 }else {

+ 2 - 0
mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/dao/OmsOrderDao.java

@@ -48,4 +48,6 @@ public interface OmsOrderDao {
                                                      @Param("dateFormat") String dateFormat);
 
     List<OrderDetailVo> queryOrderDetail(@Param("queryParam") OmsOrderQueryParam queryParam);
+
+    List<String> getDeliveryList(@Param("orderIds") List<Long> orderIds);
 }

+ 1 - 1
mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/OmsOrderService.java

@@ -23,7 +23,7 @@ public interface OmsOrderService {
     /**
      * 批量发货
      */
-    Map<Long,String> delivery(List<OmsOrderDeliveryParam> deliveryParamList);
+    Map<String,String> delivery(List<OmsOrderDeliveryParam> deliveryParamList);
 
     void syncSkuStock(List<Long> skuIds);
 

+ 14 - 7
mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/OmsOrderServiceImpl.java

@@ -22,10 +22,10 @@ import com.yonge.cooleshow.admin.wrapper.OmsOrderWrapper;
 import com.yonge.cooleshow.mbg.mapper.*;
 import com.yonge.cooleshow.mbg.model.*;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
 import java.math.BigDecimal;
@@ -99,7 +99,7 @@ public class OmsOrderServiceImpl implements OmsOrderService {
                 orderVo.setUsername("");
             }
         }
-        if (!CollectionUtils.isEmpty(schoolIds)) {
+        if (CollectionUtils.isNotEmpty(schoolIds)) {
             try {
                 HttpResponseResult<List<SchoolDto>> schoolDtoHttpResponseResult = webFeignService.schoolListByIds(schoolIds);
                 if (schoolDtoHttpResponseResult.getCode() == 200 && schoolDtoHttpResponseResult.getStatus()) {
@@ -127,7 +127,7 @@ public class OmsOrderServiceImpl implements OmsOrderService {
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Map<Long,String> delivery(List<OmsOrderDeliveryParam> deliveryParamList) {
+    public Map<String,String> delivery(List<OmsOrderDeliveryParam> deliveryParamList) {
         // 扣减库存
         //库存扣减规则更新
         //扣减顺序:内部库存>税务库存>进货批次
@@ -139,7 +139,14 @@ public class OmsOrderServiceImpl implements OmsOrderService {
         // 查询出所有订单关联的skuId
         // 订单ID集合
         List<Long> orderIds = deliveryParamList.stream().map(OmsOrderDeliveryParam::getOrderId).collect(Collectors.toList());
-        Map<Long,String> resultMap = new HashMap<>();
+        //获取所有已发货的订单
+        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;
@@ -169,7 +176,7 @@ public class OmsOrderServiceImpl implements OmsOrderService {
      */
 //    @Override
     @Transactional(rollbackFor = Exception.class)
-    public void updateSkuStock(List<Long> orderIds,Map<Long,String> resultMap) {
+    public void updateSkuStock(List<Long> orderIds,Map<String,String> resultMap) {
         // 查询订单详情
         OmsOrderItemExample example = new OmsOrderItemExample();
         example.createCriteria().andOrderIdIn(orderIds);
@@ -214,7 +221,7 @@ public class OmsOrderServiceImpl implements OmsOrderService {
                 List<PmsProductSkuStockRecord> skuStockRecords = skuStockRecordMap.get(o.getProductSkuId());
                 if (CollectionUtils.isEmpty(skuStockRecords)) {
                     if (resultMap != null){
-                        resultMap.put(o.getProductSkuId(),skuMap.get(o.getProductSkuId()) +"库存不足");
+                        resultMap.put(o.getProductSkuId().toString(),skuMap.get(o.getProductSkuId()) +"库存不足");
                         continue;
                     }
                     throw new BizException(skuMap.get(o.getProductSkuId()) +"库存不足");
@@ -284,7 +291,7 @@ public class OmsOrderServiceImpl implements OmsOrderService {
                 }
                 if (count1 > 0) {
                     if (resultMap != null){
-                        resultMap.put(o.getProductSkuId(),skuMap.get(o.getProductSkuId()) +"库存不足");
+                        resultMap.put(o.getProductSkuId().toString(),skuMap.get(o.getProductSkuId()) +"库存不足");
                         continue;
                     }
                     throw new BizException(skuMap.get(o.getProductSkuId())+"库存不足");

+ 6 - 0
mec-mall/mall-admin/src/main/resources/config/mybatis/OmsOrderDao.xml

@@ -225,4 +225,10 @@
         </where>
         order by oo.id desc
     </select>
+    <select id="getDeliveryList" resultType="java.lang.String">
+        select order_sn from oms_order where status != 1 AND id IN
+        <foreach collection="orderIds" item="item" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+    </select>
 </mapper>