24282 1 éve
szülő
commit
92402ed5b4

+ 43 - 0
sd-wln/src/main/java/com/sd/wln/context/OrderContext.java

@@ -7,15 +7,18 @@ import cn.hutool.extra.spring.SpringUtil;
 import com.alibaba.fastjson2.JSONObject;
 import com.fjhx.tenant.entity.dict.po.DictCommonData;
 import com.fjhx.tenant.service.dict.DictCommonDataService;
+import com.ruoyi.common.core.domain.BaseIdPo;
 import com.ruoyi.framework.mybatis.holder.LogicHolder;
 import com.sd.business.entity.department.po.Department;
 import com.sd.business.entity.order.po.OrderInfo;
 import com.sd.business.entity.order.po.OrderPackageBom;
 import com.sd.business.entity.order.po.OrderSku;
 import com.sd.business.entity.order.po.OrderSkuBom;
+import com.sd.business.entity.price.po.PriceBillingStandardDetail;
 import com.sd.business.entity.sku.po.SkuSpec;
 import com.sd.business.service.department.DepartmentService;
 import com.sd.business.service.order.OrderService;
+import com.sd.business.service.price.PriceBillingStandardDetailService;
 import com.sd.business.service.sku.SkuSpecService;
 import com.sd.wln.util.WlnUtil;
 import lombok.Getter;
@@ -31,6 +34,7 @@ public class OrderContext {
     private final DictCommonDataService dictCommonDataService = SpringUtil.getBean(DictCommonDataService.class);
     private final DepartmentService departmentService = SpringUtil.getBean(DepartmentService.class);
     private final SkuSpecService skuSpecService = SpringUtil.getBean(SkuSpecService.class);
+    private final PriceBillingStandardDetailService priceBillingStandardDetailService = SpringUtil.getBean(PriceBillingStandardDetailService.class);
 
     /**
      * 当前时间
@@ -43,43 +47,51 @@ public class OrderContext {
      */
     @Getter
     private final List<JSONObject> wlnOrderList;
+
     /**
      * 保存订单列表
      */
     @Getter
     private final List<OrderInfo> saveOrderList = new ArrayList<>();
+
     /**
      * 更新订单列表
      */
     @Getter
     private final List<OrderInfo> updateOrderList = new ArrayList<>();
+
     /**
      * 保存订单明细列表
      */
     @Getter
     private final List<OrderSku> saveOrderSkuList = new ArrayList<>();
+
     /**
      * 保存订单包材
      */
     @Getter
     private final List<OrderSkuBom> saveOrderSkuBomList = new ArrayList<>();
+
     /**
      * 保存订单包装
      */
     @Getter
     private final List<OrderPackageBom> orderPackageBomList = new ArrayList<>();
+
     /**
      * 近3天已存在数据库中的订单
      * key:万里牛订单uid
      * value:订单实体
      */
     private Map<String, OrderInfo> orderMap;
+
     /**
      * 查询事业部
      * key:仓库编码
      * value:仓库实体
      */
     private Map<String, Department> departmentMap;
+
     /**
      * sku规格map
      * key:万里牛sku规格id
@@ -87,6 +99,13 @@ public class OrderContext {
      */
     private Map<String, SkuSpec> skuSpecMap;
 
+    /**
+     * 报价规则
+     * key:部门id
+     * value:报价规则列表
+     */
+    private Map<Long, List<PriceBillingStandardDetail>> priceBillingStandardMap;
+
     public OrderContext() {
         this.endDate = new Date();
         this.wlnOrderList = selectWlnOrderList();
@@ -181,4 +200,28 @@ public class OrderContext {
         return this.skuSpecMap;
     }
 
+    public Map<Long, List<PriceBillingStandardDetail>> getPriceBillingStandardMap() {
+
+        if (this.priceBillingStandardMap == null) {
+
+            // 加工计费标准id 报价规则列表 map
+            Map<Long, List<PriceBillingStandardDetail>> map = priceBillingStandardDetailService.list()
+                    .stream()
+                    .filter(item -> ObjectUtil.isNotNull(item.getPriceBillingStandardId()))
+                    .collect(Collectors.groupingBy(PriceBillingStandardDetail::getPriceBillingStandardId));
+
+            // 部门id、加工计费标准id map
+            this.priceBillingStandardMap = this.getDepartmentMap().values()
+                    .stream()
+                    .filter(item -> ObjectUtil.isNotNull(item.getPriceBillingStandardId()))
+                    .collect(Collectors.toMap(
+                            BaseIdPo::getId,
+                            item -> map.getOrDefault(item.getPriceBillingStandardId(), Collections.emptyList()),
+                            (t1, t2) -> t1
+                    ));
+        }
+
+        return this.priceBillingStandardMap;
+    }
+
 }

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

@@ -5,7 +5,6 @@ import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.ruoyi.common.constant.StatusConstant;
-import com.ruoyi.common.core.domain.BaseIdPo;
 import com.sd.business.entity.bom.bo.BomBo;
 import com.sd.business.entity.department.po.Department;
 import com.sd.business.entity.order.enums.OrderStatusEnum;
@@ -20,7 +19,6 @@ import com.sd.business.service.order.OrderPackageBomService;
 import com.sd.business.service.order.OrderService;
 import com.sd.business.service.order.OrderSkuBomService;
 import com.sd.business.service.order.OrderSkuService;
-import com.sd.business.service.price.PriceBillingStandardDetailService;
 import com.sd.business.service.sku.SkuSpecLinkService;
 import com.sd.business.service.sku.SkuSpecService;
 import com.sd.wln.context.OrderContext;
@@ -62,9 +60,6 @@ public class WlnOrderServiceImpl implements WlnOrderService {
     private SkuSpecService skuSpecService;
 
     @Autowired
-    private PriceBillingStandardDetailService priceBillingStandardDetailService;
-
-    @Autowired
     private SkuSpecLinkService skuSpecLinkService;
 
     @Override
@@ -368,25 +363,12 @@ public class WlnOrderServiceImpl implements WlnOrderService {
         List<OrderSku> saveOrderSkuList = context.getSaveOrderSkuList();
         List<OrderSkuBom> saveOrderSkuBomList = context.getSaveOrderSkuBomList();
         Map<String, SkuSpec> skuSpecMap = context.getSkuSpecMap();
-        Map<String, Department> departmentMap = context.getDepartmentMap();
+        Map<Long, List<PriceBillingStandardDetail>> priceBillingStandardMap = context.getPriceBillingStandardMap();
 
         if (saveOrderList.size() == 0) {
             return;
         }
 
-        // 部门id、加工计费标准id map
-        Map<Long, Long> departmentIdPriceBillingStandardIdMap = departmentMap.values()
-                .stream()
-                .filter(ObjectUtil::isNotNull)
-                .filter(item -> ObjectUtil.isNotNull(item.getPriceBillingStandardId()))
-                .collect(Collectors.toMap(BaseIdPo::getId, Department::getPriceBillingStandardId, (t1, t2) -> t1));
-
-        // 加工计费标准id 报价规则列表 map
-        Map<Long, List<PriceBillingStandardDetail>> priceBillingStandardMap = priceBillingStandardDetailService.list()
-                .stream()
-                .filter(item -> ObjectUtil.isNotNull(item.getPriceBillingStandardId()))
-                .collect(Collectors.groupingBy(PriceBillingStandardDetail::getPriceBillingStandardId));
-
         // 根据sku规格id获取bomId和bom规格id
         Map<Long, BomBo> bomBoMap = skuSpecService.getBomBySkuSpecIdList(
                 saveOrderSkuList.stream().map(OrderSku::getSkuSpecId).collect(Collectors.toList()));
@@ -404,6 +386,11 @@ public class WlnOrderServiceImpl implements WlnOrderService {
             orderInfo.setPackingLabor(BigDecimal.ZERO);
             orderInfo.setPackagingMaterialCost(BigDecimal.ZERO);
 
+            // 加工计费标准
+            Long departmentId = orderInfo.getDepartmentId();
+            List<PriceBillingStandardDetail> priceBillingStandardDetailList = priceBillingStandardMap.get(departmentId);
+
+            // 订单明细
             List<OrderSku> itemOrderSkuList = orderSkuGroup.get(orderInfo.getId());
 
             for (OrderSku orderSku : itemOrderSkuList) {
@@ -415,11 +402,11 @@ public class WlnOrderServiceImpl implements WlnOrderService {
                 assignedPackagingMaterialCost(orderSku, saveOrderSkuBomList);
 
                 // 赋值其他价格
-                assignedOtherPrice(orderSku, orderInfo.getDepartmentId(), bomBoMap,
-                        departmentIdPriceBillingStandardIdMap, priceBillingStandardMap, skuSpecMap);
+                assignedOtherPrice(orderSku, bomBoMap, priceBillingStandardDetailList, skuSpecMap);
 
                 // 添加订单金额
                 addOrderInfoPrice(orderInfo, orderSku);
+
             }
 
         }
@@ -452,11 +439,8 @@ public class WlnOrderServiceImpl implements WlnOrderService {
     /**
      * 赋值其他价格
      */
-    private void assignedOtherPrice(OrderSku orderSku,
-                                    Long departmentId,
-                                    Map<Long, BomBo> bomBoMap,
-                                    Map<Long, Long> departmentIdPriceBillingStandardIdMap,
-                                    Map<Long, List<PriceBillingStandardDetail>> priceBillingStandardMap,
+    private void assignedOtherPrice(OrderSku orderSku, Map<Long, BomBo> bomBoMap,
+                                    List<PriceBillingStandardDetail> priceBillingStandardDetailList,
                                     Map<String, SkuSpec> skuSpecMap) {
 
         orderSku.setCustomProcessingFee(BigDecimal.ZERO);
@@ -464,6 +448,11 @@ public class WlnOrderServiceImpl implements WlnOrderService {
         orderSku.setDeliveryMaterialsFee(BigDecimal.ZERO);
         orderSku.setPackingLabor(BigDecimal.ZERO);
 
+        // 报价规则列表
+        if (ObjectUtil.isEmpty(priceBillingStandardDetailList)) {
+            return;
+        }
+
         // 没绑定bom规格,不赋值价格
         BomBo bomBo = bomBoMap.get(orderSku.getSkuSpecId());
         if (bomBo == null) {
@@ -475,18 +464,6 @@ public class WlnOrderServiceImpl implements WlnOrderService {
             return;
         }
 
-        // 获取加工计费标准id
-        Long priceBillingStandardId = departmentIdPriceBillingStandardIdMap.get(departmentId);
-        if (priceBillingStandardId == null) {
-            return;
-        }
-
-        // 报价规则列表
-        List<PriceBillingStandardDetail> priceBillingStandardDetailList = priceBillingStandardMap.get(priceBillingStandardId);
-        if (ObjectUtil.isEmpty(priceBillingStandardDetailList)) {
-            return;
-        }
-
         for (PriceBillingStandardDetail priceBillingStandardDetail : priceBillingStandardDetailList) {
 
             String chargeItem = priceBillingStandardDetail.getChargeItem();