浏览代码

订单同步

24282 1 年之前
父节点
当前提交
34488d836d
共有 1 个文件被更改,包括 59 次插入47 次删除
  1. 59 47
      sd-wln/src/main/java/com/sd/wln/service/impl/WlnOrderServiceImpl.java

+ 59 - 47
sd-wln/src/main/java/com/sd/wln/service/impl/WlnOrderServiceImpl.java

@@ -212,15 +212,15 @@ public class WlnOrderServiceImpl implements WlnOrderService {
     private OrderSku createOrderSku(JSONObject wlnOrderSku, OrderInfo orderInfo, SkuSpec skuSpec) {
     private OrderSku createOrderSku(JSONObject wlnOrderSku, OrderInfo orderInfo, SkuSpec skuSpec) {
         OrderSku orderSku = new OrderSku();
         OrderSku orderSku = new OrderSku();
         orderSku.setId(IdWorker.getId());
         orderSku.setId(IdWorker.getId());
-        orderSku.setOrderId(orderInfo.getId());
-        orderSku.setBomSpecId(skuSpec.getBomSpecId());
-        orderSku.setQuantity(wlnOrderSku.getBigDecimal("size"));
-        orderSku.setPrintType(1);
         orderSku.setWlnSkuId(wlnOrderSku.getString("sys_goods_uid"));
         orderSku.setWlnSkuId(wlnOrderSku.getString("sys_goods_uid"));
         orderSku.setWlnSkuSpecId(wlnOrderSku.getString("sys_spec_uid"));
         orderSku.setWlnSkuSpecId(wlnOrderSku.getString("sys_spec_uid"));
         orderSku.setWlnSkuName(wlnOrderSku.getString("oln_sku_name"));
         orderSku.setWlnSkuName(wlnOrderSku.getString("oln_sku_name"));
+        orderSku.setOrderId(orderInfo.getId());
         orderSku.setSkuId(skuSpec.getSkuId());
         orderSku.setSkuId(skuSpec.getSkuId());
         orderSku.setSkuSpecId(skuSpec.getId());
         orderSku.setSkuSpecId(skuSpec.getId());
+        orderSku.setBomSpecId(skuSpec.getBomSpecId());
+        orderSku.setQuantity(wlnOrderSku.getBigDecimal("size"));
+        orderSku.setPrintType(1);
         orderSku.setStockPreparationStatus(StatusConstant.NO);
         orderSku.setStockPreparationStatus(StatusConstant.NO);
         return orderSku;
         return orderSku;
     }
     }
@@ -228,39 +228,41 @@ public class WlnOrderServiceImpl implements WlnOrderService {
     /**
     /**
      * 创建订单包材
      * 创建订单包材
      */
      */
-    private List<OrderSkuBom> createOrderSkuBoom(OrderInfo orderInfo, OrderSku orderSku) {
+    private List<OrderSkuBom> createOrderSkuBoom(List<OrderSku> orderSkuList, List<SkuSpecLink> list) {
 
 
-        List<SkuSpecLink> list = skuSpecLinkService.list(q -> q
-                .eq(SkuSpecLink::getSkuSpecId, orderSku.getSkuSpecId())
-                .eq(SkuSpecLink::getType, 1)
-                .eq(SkuSpecLink::getDepartmentId, orderInfo.getDepartmentId())
-        );
-
-        if (list.size() == 0) {
+        if (ObjectUtil.isEmpty(list)) {
             return Collections.emptyList();
             return Collections.emptyList();
         }
         }
 
 
+        Map<Long, List<SkuSpecLink>> skuSpecLinkMap = list.stream().collect(Collectors.groupingBy(SkuSpecLink::getSkuSpecId));
+
         // 根据sku规格id获取bomId和bom规格id
         // 根据sku规格id获取bomId和bom规格id
-        List<Long> skuSpecIdList = list.stream().map(SkuSpecLink::getSkuSpecId).collect(Collectors.toList());
+        List<Long> skuSpecIdList = list.stream().map(SkuSpecLink::getSkuSpecId).distinct().collect(Collectors.toList());
         Map<Long, BomBo> bomBoMap = skuSpecService.getBomBySkuSpecIdList(skuSpecIdList);
         Map<Long, BomBo> bomBoMap = skuSpecService.getBomBySkuSpecIdList(skuSpecIdList);
 
 
-        return list.stream().map(item -> {
+        return orderSkuList.stream().flatMap(orderSku -> {
 
 
-            OrderSkuBom orderSkuBom = new OrderSkuBom();
-            orderSkuBom.setId(IdWorker.getId());
-            orderSkuBom.setOrderId(orderInfo.getId());
-            orderSkuBom.setOrderSkuId(orderSku.getId());
-            orderSkuBom.setBomSpecId(item.getBomSpecId());
-            orderSkuBom.setQuantity(item.getQuantity());
+            List<SkuSpecLink> skuSpecLinkList = skuSpecLinkMap.getOrDefault(orderSku.getSkuSpecId(), Collections.emptyList());
 
 
-            BomBo bomBo = bomBoMap.get(item.getBomSpecId());
-            if (bomBo == null) {
-                orderSkuBom.setUnitPrice(BigDecimal.ZERO);
-            } else {
-                orderSkuBom.setUnitPrice(ObjectUtil.defaultIfNull(bomBo.getInternalSellingPrice(), BigDecimal.ZERO));
-            }
+            return skuSpecLinkList.stream().map(item -> {
+
+                OrderSkuBom orderSkuBom = new OrderSkuBom();
+                orderSkuBom.setId(IdWorker.getId());
+                orderSkuBom.setOrderId(orderSku.getOrderId());
+                orderSkuBom.setOrderSkuId(orderSku.getId());
+                orderSkuBom.setBomSpecId(item.getBomSpecId());
+                orderSkuBom.setQuantity(item.getQuantity());
+
+                BomBo bomBo = bomBoMap.get(item.getBomSpecId());
+                if (bomBo == null) {
+                    orderSkuBom.setUnitPrice(BigDecimal.ZERO);
+                } else {
+                    orderSkuBom.setUnitPrice(ObjectUtil.defaultIfNull(bomBo.getInternalSellingPrice(), BigDecimal.ZERO));
+                }
+
+                return orderSkuBom;
+            });
 
 
-            return orderSkuBom;
         }).collect(Collectors.toList());
         }).collect(Collectors.toList());
 
 
     }
     }
@@ -268,15 +270,12 @@ public class WlnOrderServiceImpl implements WlnOrderService {
     /**
     /**
      * 创建订单包装
      * 创建订单包装
      */
      */
-    private List<OrderPackageBom> createOrderPackageBomList(List<OrderSku> orderSkuList, Long departmentId) {
+    private List<OrderPackageBom> createOrderPackageBomList(List<OrderSku> orderSkuList, List<SkuSpecLink> list) {
+
+        if (ObjectUtil.isEmpty(list)) {
+            return Collections.emptyList();
+        }
 
 
-        // 获取sku规格快递包材map
-        List<Long> skuSpecIdList = orderSkuList.stream().map(OrderSku::getSkuSpecId).collect(Collectors.toList());
-        List<SkuSpecLink> list = skuSpecLinkService.list(q -> q
-                .in(SkuSpecLink::getSkuSpecId, skuSpecIdList)
-                .eq(SkuSpecLink::getType, 2)
-                .eq(SkuSpecLink::getDepartmentId, departmentId)
-        );
         Map<Long, List<SkuSpecLink>> skuSpecLinkMap = list.stream().collect(Collectors.groupingBy(SkuSpecLink::getSkuSpecId));
         Map<Long, List<SkuSpecLink>> skuSpecLinkMap = list.stream().collect(Collectors.groupingBy(SkuSpecLink::getSkuSpecId));
 
 
         Map<Long, OrderPackageBom> orderPackageBomMap = new HashMap<>();
         Map<Long, OrderPackageBom> orderPackageBomMap = new HashMap<>();
@@ -292,6 +291,7 @@ public class WlnOrderServiceImpl implements WlnOrderService {
             for (SkuSpecLink skuSpecLink : skuSpecLinkList) {
             for (SkuSpecLink skuSpecLink : skuSpecLinkList) {
 
 
                 Long bomSpecId = skuSpecLink.getBomSpecId();
                 Long bomSpecId = skuSpecLink.getBomSpecId();
+
                 OrderPackageBom orderPackageBom = orderPackageBomMap.computeIfAbsent(bomSpecId, item -> {
                 OrderPackageBom orderPackageBom = orderPackageBomMap.computeIfAbsent(bomSpecId, item -> {
                     OrderPackageBom tempOrderPackageBom = new OrderPackageBom();
                     OrderPackageBom tempOrderPackageBom = new OrderPackageBom();
                     tempOrderPackageBom.setOrderId(orderSku.getOrderId());
                     tempOrderPackageBom.setOrderId(orderSku.getOrderId());
@@ -314,8 +314,7 @@ public class WlnOrderServiceImpl implements WlnOrderService {
     private void addOrder(OrderContext context, JSONObject wlnOrder, OrderInfo orderInfo) {
     private void addOrder(OrderContext context, JSONObject wlnOrder, OrderInfo orderInfo) {
         Map<String, SkuSpec> skuSpecMap = context.getSkuSpecMap();
         Map<String, SkuSpec> skuSpecMap = context.getSkuSpecMap();
 
 
-        List<OrderSku> tempOrderSkuList = new ArrayList<>();
-        List<OrderSkuBom> tempOrderSkuBomList = new ArrayList<>();
+        List<OrderSku> orderSkuList = new ArrayList<>();
 
 
         // 是否添加
         // 是否添加
         boolean isAdd = true;
         boolean isAdd = true;
@@ -337,21 +336,34 @@ public class WlnOrderServiceImpl implements WlnOrderService {
 
 
             // 创建订单sku
             // 创建订单sku
             OrderSku orderSku = createOrderSku(wlnOrderSku, orderInfo, skuSpec);
             OrderSku orderSku = createOrderSku(wlnOrderSku, orderInfo, skuSpec);
-            tempOrderSkuList.add(orderSku);
+            orderSkuList.add(orderSku);
 
 
-            // 创建订单包材
-            List<OrderSkuBom> orderSkuBomList = createOrderSkuBoom(orderInfo, orderSku);
-            tempOrderSkuBomList.addAll(orderSkuBomList);
         }
         }
 
 
-        if (isAdd) {
-            List<OrderPackageBom> tempOrderPackageBomList = createOrderPackageBomList(tempOrderSkuList, orderInfo.getDepartmentId());
-            context.getSaveOrderList().add(orderInfo);
-            context.getSaveOrderSkuList().addAll(tempOrderSkuList);
-            context.getSaveOrderSkuBomList().addAll(tempOrderSkuBomList);
-            context.getOrderPackageBomList().addAll(tempOrderPackageBomList);
+        if (!isAdd) {
+            return;
         }
         }
 
 
+        // 订单关联
+        List<Long> skuSpecIdList = orderSkuList.stream().map(OrderSku::getSkuSpecId).collect(Collectors.toList());
+        List<SkuSpecLink> list = skuSpecLinkService.list(q -> q
+                .in(SkuSpecLink::getSkuSpecId, skuSpecIdList)
+                .eq(SkuSpecLink::getDepartmentId, orderInfo.getDepartmentId()));
+
+        // 跳过type区分包材和快递包装
+        Map<Integer, List<SkuSpecLink>> map = list.stream().collect(Collectors.groupingBy(SkuSpecLink::getType));
+
+        // 获取订单sku包材
+        List<OrderSkuBom> orderSkuBomList = createOrderSkuBoom(orderSkuList, map.get(1));
+
+        // 获取订单sku快递包装
+        List<OrderPackageBom> orderPackageBomList = createOrderPackageBomList(orderSkuList, map.get(2));
+
+        context.getSaveOrderList().add(orderInfo);
+        context.getSaveOrderSkuList().addAll(orderSkuList);
+        context.getSaveOrderSkuBomList().addAll(orderSkuBomList);
+        context.getOrderPackageBomList().addAll(orderPackageBomList);
+
     }
     }
 
 
     /**
     /**