Ver Fonte

订单同步生成包材

24282 há 1 ano atrás
pai
commit
2e66bfeab3

+ 4 - 4
sd-business/src/main/java/com/sd/business/flow/ApplyBuyFlow.java

@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.fjhx.flow.core.FlowDelegate;
 import com.fjhx.flow.core.FlowThreadLocalUtil;
 import com.fjhx.flow.enums.FlowStatusEnum;
-import com.fjhx.flow.enums.HandleTypeEnum;
 import com.ruoyi.common.core.domain.BaseIdPo;
 import com.ruoyi.common.core.domain.BasePo;
 import com.ruoyi.common.utils.SecurityUtils;
@@ -22,6 +21,7 @@ import org.springframework.stereotype.Service;
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 发起申购流程
@@ -75,9 +75,9 @@ public class ApplyBuyFlow extends FlowDelegate {
         );
     }
 
-    public void jump() {
-        // 如果是驳回,修改流程状态为驳回
-        if (HandleTypeEnum.REJECT.equals(FlowThreadLocalUtil.getHandleTypeEnum())) {
+    @Override
+    public void defaultMethod(Long flowId, Long businessId, FlowStatusEnum flowStatusEnum, JSONObject submitData) {
+        if (Objects.equals(FlowStatusEnum.REJECT, flowStatusEnum)) {
             applyBuyService.update(q -> q
                     .eq(BaseIdPo::getId, FlowThreadLocalUtil.getBusinessId())
                     .set(ApplyBuy::getFlowStatus, FlowStatusEnum.REJECT.getKey())

+ 5 - 6
sd-business/src/main/java/com/sd/business/flow/LendFlow.java

@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.fjhx.flow.core.FlowDelegate;
 import com.fjhx.flow.core.FlowThreadLocalUtil;
 import com.fjhx.flow.enums.FlowStatusEnum;
-import com.fjhx.flow.enums.HandleTypeEnum;
 import com.ruoyi.common.constant.StatusConstant;
 import com.ruoyi.common.core.domain.BaseIdPo;
 import com.ruoyi.common.core.domain.BasePo;
@@ -22,6 +21,7 @@ import org.springframework.stereotype.Service;
 
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 发起借出流程
@@ -75,15 +75,14 @@ public class LendFlow extends FlowDelegate {
         );
     }
 
-    public void jump() {
-        // 如果是驳回,修改流程状态为驳回
-        if (HandleTypeEnum.REJECT.equals(FlowThreadLocalUtil.getHandleTypeEnum())) {
+    @Override
+    public void defaultMethod(Long flowId, Long businessId, FlowStatusEnum flowStatusEnum, JSONObject submitData) {
+        if (Objects.equals(FlowStatusEnum.REJECT, flowStatusEnum)) {
             lendService.update(q -> q
                     .eq(BaseIdPo::getId, FlowThreadLocalUtil.getBusinessId())
                     .set(Lend::getFlowStatus, FlowStatusEnum.REJECT.getKey())
                     .set(BasePo::getUpdateTime, new Date())
-                    .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
-            );
+                    .set(BasePo::getUpdateUser, SecurityUtils.getUserId()));
         }
     }
 

+ 3 - 3
sd-business/src/main/java/com/sd/business/service/production/impl/ProductionOrderServiceImpl.java

@@ -145,13 +145,13 @@ public class ProductionOrderServiceImpl implements ProductionOrderService {
         orderPackageBomList.forEach(item -> item.setOrderId(orderId));
         orderPackageBomService.saveBatch(orderPackageBomList);
 
+        Date date = new Date();
         orderService.update(q -> q
                 .eq(BaseIdPo::getId, orderId)
                 .set(OrderInfo::getStatus, OrderStatusEnum.COMPLETION_PRODUCTION.getKey())
+                .set(OrderInfo::getShippingTime, date)
                 .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
-                .set(BasePo::getUpdateTime, new Date())
-        );
-        
+                .set(BasePo::getUpdateTime, date));
     }
 
     private List<ProductionOrderDetailVo.SkuSpec> getSkuSpecList(Long orderId) {

+ 8 - 0
sd-wln/src/main/java/com/sd/wln/scheduled/WlnSyncTask.java

@@ -61,4 +61,12 @@ public class WlnSyncTask {
         wlnOutboundOrderService.syncOutboundOrder();
     }
 
+    // /**
+    //  * 生成对账单
+    //  */
+    // @Scheduled(cron = "0 0 19-22 * * ?")
+    // private void createStatementOfAccount() {
+    //     wlnOutboundOrderService.syncOutboundOrder();
+    // }
+
 }

+ 55 - 2
sd-wln/src/main/java/com/sd/wln/service/impl/WlnOrderServiceImpl.java

@@ -14,12 +14,14 @@ import com.sd.business.entity.bom.bo.BomBo;
 import com.sd.business.entity.department.po.Department;
 import com.sd.business.entity.order.enums.OrderStatusEnum;
 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.entity.sku.po.SkuSpecLink;
 import com.sd.business.service.department.DepartmentService;
+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;
@@ -65,6 +67,9 @@ public class WlnOrderServiceImpl implements WlnOrderService {
     private OrderSkuBomService orderSkuBomService;
 
     @Autowired
+    private OrderPackageBomService orderPackageBomService;
+
+    @Autowired
     private SkuSpecService skuSpecService;
 
     @Autowired
@@ -87,6 +92,8 @@ public class WlnOrderServiceImpl implements WlnOrderService {
         List<OrderSku> saveOrderSkuList = new ArrayList<>();
         // 保存订单包材
         List<OrderSkuBom> saveOrderSkuBomList = new ArrayList<>();
+        // 保存订单包装
+        List<OrderPackageBom> orderPackageBomList = new ArrayList<>();
 
         // 查询近3天万里牛订单
         List<JSONObject> wlnOrderList = getWlnOrderList(endDate);
@@ -159,6 +166,7 @@ public class WlnOrderServiceImpl implements WlnOrderService {
                 saveOrderList.add(orderInfo);
                 saveOrderSkuList.addAll(tempOrderSkuList);
                 saveOrderSkuBomList.addAll(tempOrderSkuBomList);
+                orderPackageBomList.addAll(createOrderPackageBomList(tempOrderSkuList, department.getId()));
             }
 
         }
@@ -181,6 +189,9 @@ public class WlnOrderServiceImpl implements WlnOrderService {
             if (saveOrderSkuBomList.size() > 0) {
                 orderSkuBomService.saveBatch(saveOrderSkuBomList);
             }
+            if (orderPackageBomList.size() > 0) {
+                orderPackageBomService.saveBatch(orderPackageBomList);
+            }
             // 提交事务
             platformTransactionManager.commit(transactionStatus);
         } catch (Exception e) {
@@ -368,6 +379,48 @@ public class WlnOrderServiceImpl implements WlnOrderService {
         }).collect(Collectors.toList());
     }
 
+
+    private List<OrderPackageBom> createOrderPackageBomList(List<OrderSku> orderSkuList, Long departmentId) {
+
+        // 获取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, OrderPackageBom> orderPackageBomMap = new HashMap<>();
+
+        // 循环订单sku规格
+        for (OrderSku orderSku : orderSkuList) {
+
+            List<SkuSpecLink> skuSpecLinkList = skuSpecLinkMap.get(orderSku.getSkuSpecId());
+            if (ObjectUtil.isEmpty(skuSpecLinkList)) {
+                continue;
+            }
+
+            for (SkuSpecLink skuSpecLink : skuSpecLinkList) {
+
+                Long bomSpecId = skuSpecLink.getBomSpecId();
+                OrderPackageBom orderPackageBom = orderPackageBomMap.computeIfAbsent(bomSpecId, item -> {
+                    OrderPackageBom tempOrderPackageBom = new OrderPackageBom();
+                    tempOrderPackageBom.setOrderId(orderSku.getOrderId());
+                    tempOrderPackageBom.setBomSpecId(bomSpecId);
+                    tempOrderPackageBom.setQuantity(BigDecimal.ZERO);
+                    return tempOrderPackageBom;
+                });
+
+                orderPackageBom.setQuantity(orderPackageBom.getQuantity().add(orderSku.getQuantity().multiply(skuSpecLink.getQuantity())));
+
+            }
+        }
+
+        return new ArrayList<>(orderPackageBomMap.values());
+    }
+
     /**
      * 赋值订单价格
      */
@@ -429,7 +482,7 @@ public class WlnOrderServiceImpl implements WlnOrderService {
                         departmentIdPriceBillingStandardIdMap, priceBillingStandardMap, skuSpecMap);
 
                 // 添加订单金额
-                addOrderInfoPrice(orderInfo, orderSku, saveOrderSkuBomList);
+                addOrderInfoPrice(orderInfo, orderSku);
             }
 
         }
@@ -527,7 +580,7 @@ public class WlnOrderServiceImpl implements WlnOrderService {
     /**
      * 添加订单价格
      */
-    private void addOrderInfoPrice(OrderInfo orderInfo, OrderSku orderSku, List<OrderSkuBom> saveOrderSkuBomList) {
+    private void addOrderInfoPrice(OrderInfo orderInfo, OrderSku orderSku) {
         BigDecimal quantity = orderSku.getQuantity();
 
         BigDecimal productTotalAmount = quantity.multiply(orderSku.getUnitPrice());