|
@@ -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());
|
|
|
+
|
|
|
+
|
|
|
+ Map<Long, Integer> map = skuService.listByIds(skuIdList).stream().collect(Collectors.toMap(BaseIdPo::getId, Sku::getType));
|
|
|
+
|
|
|
+
|
|
|
+ List<Long> skSkuSpecId = values.stream()
|
|
|
+ .filter(item -> map.getOrDefault(item.getSkuId(), 0) == 1)
|
|
|
+ .map(SkuSpec::getId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+
|
|
|
+ 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)));
|