刘俊驰 1 年之前
父节点
当前提交
89c2f031d4

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

@@ -34,10 +34,7 @@ import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.WeekFields;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -201,7 +198,7 @@ public class OmsOrderServiceImpl implements OmsOrderService {
         Map<Long, List<PmsProductSkuStockRecord>> skuStockRecordMap = productSkuStockRecords.stream().collect(Collectors.groupingBy(PmsProductSkuStockRecord::getProductSkuId));
         // 扣减库存
 
-        List<PmsProductSkuStockRecord> updateList = new ArrayList<>();
+        Map<Long,PmsProductSkuStockRecord> updateMap = new HashMap<>();
         Map<String, List<OmsOrderItem>> map = omsOrderItems.stream().collect(Collectors.groupingBy(o -> o.getOrderSn()));
         List<OrderSkuSync> skuSyncList = new ArrayList<>();
         List<OmsOrderItem> updateItems = new ArrayList<>();
@@ -231,21 +228,19 @@ public class OmsOrderServiceImpl implements OmsOrderService {
 
                         int stock = skuStockRecord.getInternalStock() - skuStockRecord.getInternalSaleStock();
                         if (stock > 0) {
-                            PmsProductSkuStockRecord record = new PmsProductSkuStockRecord();
-                            record.setId(skuStockRecord.getId());
                             sync.setPrice(skuStockRecord.getPrice());
                             sync.setRecordId(skuStockRecord.getId());
 
                             if (stock >= count1) {
-                                record.setInternalSaleStock(skuStockRecord.getInternalSaleStock() + count1);
+                                skuStockRecord.setInternalSaleStock(skuStockRecord.getInternalSaleStock() + count1);
                                 sync.setCount(count1);
                                 count1 = 0;
                             } else {
                                 count1 = count1 - stock;
-                                record.setInternalSaleStock(skuStockRecord.getInternalStock());
+                                skuStockRecord.setInternalSaleStock(skuStockRecord.getInternalStock());
                                 sync.setCount(stock);
                             }
-                            updateList.add(record);
+                            updateMap.put(skuStockRecord.getId(),skuStockRecord);
                             skuSyncs.add(sync);
                             itemSkus.add(sync);
                         }
@@ -266,18 +261,16 @@ public class OmsOrderServiceImpl implements OmsOrderService {
 
                         int stock = skuStockRecord.getTaxStock() - skuStockRecord.getTaxSaleStock();
                         if (stock > 0) {
-                            PmsProductSkuStockRecord record = new PmsProductSkuStockRecord();
-                            record.setId(skuStockRecord.getId());
                             if (stock >= count1) {
-                                record.setTaxSaleStock(skuStockRecord.getTaxSaleStock() + count1);
+                                skuStockRecord.setTaxSaleStock(skuStockRecord.getTaxSaleStock() + count1);
                                 sync.setCount(count1);
                                 count1 = 0;
                             } else {
                                 count1 = count1 - stock;
-                                record.setTaxSaleStock(skuStockRecord.getTaxStock());
+                                skuStockRecord.setTaxSaleStock(skuStockRecord.getTaxStock());
                                 sync.setCount(stock);
                             }
-                            updateList.add(record);
+                            updateMap.put(skuStockRecord.getId(),skuStockRecord);
                             skuSyncs.add(sync);
                             itemSkus.add(sync);
                         }
@@ -296,8 +289,13 @@ public class OmsOrderServiceImpl implements OmsOrderService {
             });
             skuSyncList.add(skuSync);
         });
-        for (PmsProductSkuStockRecord pmsProductSkuStockRecord : updateList) {
-            pmsProductSkuStockRecordMapper.updateByPrimaryKeySelective(pmsProductSkuStockRecord);
+        for (Map.Entry<Long, PmsProductSkuStockRecord> entry : updateMap.entrySet()) {
+            PmsProductSkuStockRecord v = entry.getValue();
+            PmsProductSkuStockRecord update = new PmsProductSkuStockRecord();
+            update.setId(v.getId());
+            update.setInternalSaleStock(v.getInternalSaleStock());
+            update.setTaxSaleStock(v.getTaxSaleStock());
+            pmsProductSkuStockRecordMapper.updateByPrimaryKeySelective(update);
         }
         // 更新订单详情
         for (OmsOrderItem updateItem : updateItems) {
@@ -868,7 +866,7 @@ public class OmsOrderServiceImpl implements OmsOrderService {
                     updateList.add(skuStockRecord);
                 }
                 for (PmsProductSkuStockRecord pmsProductSkuStockRecord : updateList) {
-                    pmsProductSkuStockRecordMapper.updateStock(pmsProductSkuStockRecord);
+                    pmsProductSkuStockRecordMapper.updateStock(pmsProductSkuStockRecord,true);
                 }
                 List<Long> skuIds = skuSyncList.stream().map(OrderSkuSync.SkuSync::getSku).collect(Collectors.toList());
                 if (!CollectionUtils.isEmpty(skuIds)) {

+ 1 - 1
mec-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/mapper/PmsProductSkuStockRecordMapper.java

@@ -33,5 +33,5 @@ public interface PmsProductSkuStockRecordMapper {
 
     int updateByIdAndStockSelective( PmsProductSkuStockRecord pmsProductSkuStockRecord);
 
-    void updateStock(@Param("record") PmsProductSkuStockRecord pmsProductSkuStockRecord);
+    void updateStock(@Param("record") PmsProductSkuStockRecord pmsProductSkuStockRecord, @Param("addStock") boolean addStock);
 }

+ 16 - 2
mec-mall/mall-mbg/src/main/resources/config/mybatis/PmsProductSkuStockRecordMapper.xml

@@ -367,10 +367,24 @@
         update pms_product_sku_stock_record
         <set>
             <if test="record.internalSaleStock != null">
-                internal_sale_stock = internal_sale_stock - #{record.internalSaleStock},
+                internal_sale_stock = internal_sale_stock
+                <if test="addStock == true">
+                    -
+                </if>
+                <if test="addStock == false">
+                    +
+                </if>
+                #{record.internalSaleStock},
             </if>
             <if test="record.taxSaleStock != null">
-                tax_sale_stock = tax_sale_stock -#{record.taxSaleStock}
+                tax_sale_stock = tax_sale_stock
+                <if test="addStock == true">
+                    -
+                </if>
+                <if test="addStock == false">
+                    +
+                </if>
+                #{record.taxSaleStock}
             </if>
         </set>