Jelajahi Sumber

订单删除解锁库存赠品筛选

fgd 1 tahun lalu
induk
melakukan
8e81738e4b

+ 5 - 0
sd-business/src/main/java/com/sd/business/entity/order/vo/OrderSkuBomVo.java

@@ -24,4 +24,9 @@ public class OrderSkuBomVo extends OrderSkuBom {
      */
     private String bomSpecName;
 
+    /**
+     * bom分类id
+     */
+    private Long bomClassifyId;
+
 }

+ 16 - 3
sd-business/src/main/java/com/sd/business/service/order/impl/OrderServiceImpl.java

@@ -255,10 +255,18 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
         // 赋值包材配件/单品
         List<OrderSkuBom> tempOrderSkuBomList = orderSkuBomService.list(q -> q.eq(OrderSkuBom::getOrderId, id));
         List<OrderSkuBomVo> orderSkuBomList = BeanUtil.copyToList(tempOrderSkuBomList, OrderSkuBomVo.class);
-        bomSpecService.attributeAssign(orderSkuBomList, OrderSkuBom::getBomSpecId, (item, bomSpec) -> {
-            item.setBomSpecCode(bomSpec.getCode());
-            item.setBomSpecName(bomSpec.getName());
+        List<Long> bomSpecIds = orderSkuBomList.stream().map(OrderSkuBom::getBomSpecId).collect(Collectors.toList());
+        Map<Long, BomSpecBo> bomSpecBoMap = skuSpecService.getBomSpecBoByIdList(bomSpecIds);
+        orderSkuBomList.forEach(item -> {
+            BomSpecBo bomSpecBo = bomSpecBoMap.get(item.getBomSpecId());
+            if (bomSpecBo == null) {
+                return;
+            }
+            item.setBomSpecCode(bomSpecBo.getBomSpecCode());
+            item.setBomSpecName(bomSpecBo.getBomSpecName());
+            item.setBomClassifyId(bomSpecBo.getClassifyId());
         });
+
         Map<Long, List<OrderSkuBomVo>> orderSkuBomMap = orderSkuBomList.stream().collect(Collectors.groupingBy(OrderSkuBom::getOrderSkuId));
         for (OrderSkuVo orderSkuVo : orderSkuList) {
             orderSkuVo.setOrderSkuBomList(orderSkuBomMap.getOrDefault(orderSkuVo.getId(), Collections.emptyList()));
@@ -542,6 +550,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
 
     }
 
+    @DSTransactional
     @Override
     public void confirmation(OrderInfoDto dto) {
         OrderInfo order = getById(dto.getId());
@@ -1480,8 +1489,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
 
         List<Long> bomSpecIdList = orderSkuList.stream().map(OrderSku::getBomSpecId).collect(Collectors.toList());
         Map<Long, BomSpecBo> bomSpecBoMap = skuSpecService.getBomSpecBoByIdList(bomSpecIdList);
+        // 筛选掉赠品sku
+        List<Long> skuSpecIds = orderSkuList.stream().map(OrderSku::getSkuSpecId).collect(Collectors.toList());
+        List<Long> giftSkuSpecIds = skuSpecService.getGiftIdListByIdList(skuSpecIds);
 
         orderSkuList = orderSkuList.stream()
+                .filter(item -> giftSkuSpecIds.isEmpty() || !giftSkuSpecIds.contains(item.getSkuSpecId()))
                 .filter(item -> bomSpecBoMap.get(item.getBomSpecId()).getClassifyParentId().equals(1L))
                 .collect(Collectors.toList());
 

+ 15 - 9
sd-wln/src/main/java/com/sd/wln/service/impl/WlnOrderServiceImpl.java

@@ -479,20 +479,26 @@ public class WlnOrderServiceImpl implements WlnOrderService {
             // 创建订单sku
             OrderSku orderSku = createOrderSku(context, wlnOrderSku, orderInfo, skuSpec);
 
-            // 获取订单sku包材
-            List<OrderSkuBom> tempOrderSkuBomList = createOrderSkuBoom(context, orderSku);
+            List<OrderSkuBom> tempOrderSkuBomList;
+            List<OrderPackageBom> tempOrderPackageBomList;
 
-            // 获取订单sku快递包材
-            List<OrderPackageBom> tempOrderPackageBomList = createOrderPackageBomList(context, orderSku);
-
-            // 获取订单sku成本
-            OrderSkuProductionCost productionCostList = createOrderSkuProductionCostList(orderSku, tempOrderSkuBomList);
-
-            // 赠品sku增加代发费,使订单总金额不变
+            // 赠品sku不创建包材
             if (skuSpec != null && Objects.equals(skuSpec.getGiftTag(), StatusConstant.YES)) {
+                tempOrderSkuBomList = new ArrayList<>();
+                tempOrderPackageBomList = new ArrayList<>();
+                // 增加代发费,使订单总金额不变
                 orderSku.setLssueFee(new BigDecimal("0.5"));
+            } else {
+                // 获取订单sku包材
+                tempOrderSkuBomList = createOrderSkuBoom(context, orderSku);
+
+                // 获取订单sku快递包材
+                tempOrderPackageBomList = createOrderPackageBomList(context, orderSku);
             }
 
+            // 获取订单sku成本
+            OrderSkuProductionCost productionCostList = createOrderSkuProductionCostList(orderSku, tempOrderSkuBomList);
+
             // 添加订单金额
             addOrderInfoPrice(orderInfo, orderSku);