Browse Source

集团sku关联包材

24282 1 year ago
parent
commit
194038d27d
1 changed files with 25 additions and 5 deletions
  1. 25 5
      sd-wln/src/main/java/com/sd/wln/context/OrderContext.java

+ 25 - 5
sd-wln/src/main/java/com/sd/wln/context/OrderContext.java

@@ -15,6 +15,7 @@ import com.sd.business.entity.order.po.OrderSku;
 import com.sd.business.entity.order.po.OrderSkuBom;
 import com.sd.business.entity.price.po.PriceBillingStandard;
 import com.sd.business.entity.price.po.PriceBillingStandardDetail;
+import com.sd.business.entity.sku.po.Sku;
 import com.sd.business.entity.sku.po.SkuSpec;
 import com.sd.business.entity.sku.po.SkuSpecLink;
 import com.sd.business.service.department.DepartmentService;
@@ -22,6 +23,7 @@ import com.sd.business.service.order.OrderService;
 import com.sd.business.service.order.OrderSkuService;
 import com.sd.business.service.price.PriceBillingStandardDetailService;
 import com.sd.business.service.price.PriceBillingStandardService;
+import com.sd.business.service.sku.SkuService;
 import com.sd.business.service.sku.SkuSpecLinkService;
 import com.sd.business.service.sku.SkuSpecService;
 import lombok.Getter;
@@ -37,6 +39,7 @@ public class OrderContext {
     private static final OrderService orderService = SpringUtil.getBean(OrderService.class);
     private static final OrderSkuService orderSkuService = SpringUtil.getBean(OrderSkuService.class);
     private static final DepartmentService departmentService = SpringUtil.getBean(DepartmentService.class);
+    private static final SkuService skuService = SpringUtil.getBean(SkuService.class);
     private static final SkuSpecService skuSpecService = SpringUtil.getBean(SkuSpecService.class);
     private static final SkuSpecLinkService skuSpecLinkService = SpringUtil.getBean(SkuSpecLinkService.class);
     private static final PriceBillingStandardService priceBillingStandardService = SpringUtil.getBean(PriceBillingStandardService.class);
@@ -193,16 +196,33 @@ public class OrderContext {
                 return skuSpecLinkBomSpecMap;
             }
 
-            List<Long> skuSpecId = getSkuSpecMap().values().stream().map(SkuSpec::getId).collect(Collectors.toList());
-
-            if (skuSpecId.size() == 0) {
+            Collection<SkuSpec> values = getSkuSpecMap().values();
+            if (values.size() == 0) {
                 skuSpecLinkBomSpecMap = Collections.emptyMap();
                 return skuSpecLinkBomSpecMap;
             }
 
+            List<Long> skuIdList = values.stream().map(SkuSpec::getSkuId).collect(Collectors.toList());
+
+            // skuId,是否集团sku 集合
+            Map<Long, Integer> map = skuService.listByIds(skuIdList).stream().collect(Collectors.toMap(BaseIdPo::getId, Sku::getType));
+
+            // 集团sku
+            List<Long> skSkuSpecId = values.stream()
+                    .filter(item -> map.getOrDefault(item.getSkuId(), 0) == 1)
+                    .map(SkuSpec::getId)
+                    .collect(Collectors.toList());
+
+            // 非集团sku
+            List<Long> skuSpecId = values.stream()
+                    .filter(item -> map.getOrDefault(item.getSkuId(), 0) == 0)
+                    .map(SkuSpec::getId)
+                    .collect(Collectors.toList());
+
             List<SkuSpecLink> list = skuSpecLinkService.list(q -> q
-                    .in(SkuSpecLink::getSkuSpecId, skuSpecId)
-                    .eq(SkuSpecLink::getDepartmentId, department.getId()));
+                    .and(skuSpecId.size() > 0, r -> r.in(SkuSpecLink::getSkuSpecId, skuSpecId).eq(SkuSpecLink::getDepartmentId, department.getId()))
+                    .or(skSkuSpecId.size() > 0, r -> r.in(SkuSpecLink::getSkuSpecId, skSkuSpecId).eq(SkuSpecLink::getDepartmentId, 100L))
+            );
 
             skuSpecLinkBomSpecMap = list.stream().collect(
                     Collectors.groupingBy(SkuSpecLink::getSkuSpecId, Collectors.groupingBy(SkuSpecLink::getType)));