Selaa lähdekoodia

无理由订单新增退料快递包材

fgd 1 vuosi sitten
vanhempi
commit
cb5848a457

+ 31 - 0
sd-business/src/main/java/com/sd/business/service/production/impl/StockPreparationServiceImpl.java

@@ -1,16 +1,21 @@
 package com.sd.business.service.production.impl;
 
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.flow.enums.FlowStatusEnum;
 import com.ruoyi.common.constant.StatusConstant;
 import com.ruoyi.common.core.domain.BaseIdPo;
+import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.sd.business.entity.bom.bo.BomSpecBo;
 import com.sd.business.entity.bom.po.BomSpec;
+import com.sd.business.entity.department.constant.DepartmentConstant;
 import com.sd.business.entity.department.po.Department;
 import com.sd.business.entity.in.bo.InOutStorageBomBo;
 import com.sd.business.entity.in.dto.InOutStorageDto;
+import com.sd.business.entity.in.emums.InDetailTypeEnum;
 import com.sd.business.entity.in.emums.InOutTypeEnum;
 import com.sd.business.entity.in.emums.OutDetailTypeEnum;
 import com.sd.business.entity.in.po.InOutStorageBom;
@@ -382,6 +387,32 @@ public class StockPreparationServiceImpl implements StockPreparationService {
 
             // 生产入库
             inventoryFinishedService.noSourceInWarehousing(finishedSkuList);
+
+            // 无理由订单的快递包材退料
+            List<OrderPackageBom> orderPackageBomList = orderPackageBomService.list(q -> q.in(OrderPackageBom::getOrderId, orderIds));
+            Map<Long, InOutStorageBom> inStorageBomMap = orderPackageBomList.stream()
+                    .map(item -> {
+                        InOutStorageBom inStorageBom = new InOutStorageBom();
+                        inStorageBom.setBomSpecId(item.getBomSpecId());
+                        inStorageBom.setQuantity(item.getQuantity());
+                        return inStorageBom;
+                    }).collect(Collectors.toMap(
+                            InOutStorageBom::getBomSpecId,
+                            Function.identity(),
+                            (v1, v2) -> {
+                                v1.setQuantity(v1.getQuantity().add(v2.getQuantity()));
+                                return v1;
+                            }
+                    ));
+            InOutStorageDto packageBomInStorageDto = new InOutStorageDto();
+            packageBomInStorageDto.setType(InOutTypeEnum.IN.getKey());
+            packageBomInStorageDto.setDetailType(InDetailTypeEnum.RETURN_GOODS.getKey());
+            packageBomInStorageDto.setWarehouseId(WarehouseConstant.PACKAGING_MATERIAL);
+            packageBomInStorageDto.setDepartmentId(DepartmentConstant.SD_SPORTS);
+            packageBomInStorageDto.setApplicant(SecurityUtils.getLoginUser().getUser().getNickName());
+            packageBomInStorageDto.setRemark("无理由订单快递包材退料入库");
+            packageBomInStorageDto.setInOutStorageBomList(new ArrayList<>(inStorageBomMap.values()));
+            inOutStorageService.add(packageBomInStorageDto);
         }
 
         // 把生产工单发送到mq

+ 43 - 7
sd-wln/src/main/java/com/sd/wln/service/impl/WlnOrderServiceImpl.java

@@ -13,7 +13,12 @@ import com.ruoyi.framework.mybatis.holder.LogicHolder;
 import com.sd.business.entity.artwork.po.ArtworkLibrary;
 import com.sd.business.entity.bom.bo.BomSpecBo;
 import com.sd.business.entity.bom.po.BomSpec;
+import com.sd.business.entity.department.constant.DepartmentConstant;
 import com.sd.business.entity.department.po.Department;
+import com.sd.business.entity.in.dto.InOutStorageDto;
+import com.sd.business.entity.in.emums.InDetailTypeEnum;
+import com.sd.business.entity.in.emums.InOutTypeEnum;
+import com.sd.business.entity.in.po.InOutStorageBom;
 import com.sd.business.entity.order.enums.OrderClassifyEnum;
 import com.sd.business.entity.order.enums.OrderExceptionTypeEnum;
 import com.sd.business.entity.order.enums.OrderStatusEnum;
@@ -23,6 +28,8 @@ 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.entity.statement.dto.StatementOfAccountDto;
+import com.sd.business.entity.warehouse.constant.WarehouseConstant;
+import com.sd.business.service.in.InOutStorageService;
 import com.sd.business.service.inventory.InventoryFinishedService;
 import com.sd.business.service.inventory.InventoryService;
 import com.sd.business.service.order.*;
@@ -85,6 +92,9 @@ public class WlnOrderServiceImpl implements WlnOrderService {
     @Autowired
     private InventoryFinishedService inventoryFinishedService;
 
+    @Autowired
+    private InOutStorageService inOutStorageService;
+
     @Override
     public void syncOrder() {
 
@@ -112,18 +122,18 @@ public class WlnOrderServiceImpl implements WlnOrderService {
             // 循环万里牛订单
             for (JSONObject wlnOrder : wlnOrderList) {
 
+                // 9月1号之前的订单不同步
+                Date printTime = wlnOrder.getDate("print_time");
+                if (printTime != null && printTime.before(DateUtil.parse("2023-09-01 00:00:00"))) {
+                    continue;
+                }
+
                 // 数据库中是否存在订单
                 OrderInfo orderInfo = existOrderMap.get(wlnOrder.getString("uid"));
 
                 // 不存在新增
                 if (orderInfo == null) {
 
-                    // 9月1号之前的订单不同步
-                    Date printTime = wlnOrder.getDate("print_time");
-                    if (printTime != null && printTime.before(DateUtil.parse("2023-09-01 00:00:00"))) {
-                        continue;
-                    }
-
                     // 审核通过之前或预售状态的订单不同步
                     Integer processStatus = wlnOrder.getInteger("process_status");
                     if (processStatus < 1 || processStatus == 14) {
@@ -773,7 +783,6 @@ public class WlnOrderServiceImpl implements WlnOrderService {
         }
         if (!saveStatementOrderList.isEmpty()) {
             saveStatementOrderList.forEach(item -> {
-
                 // 生成对账单
                 StatementOfAccountDto statement = new StatementOfAccountDto();
                 statement.setDepartmentId(item.getDepartmentId());
@@ -783,6 +792,33 @@ public class WlnOrderServiceImpl implements WlnOrderService {
                 // 生产入库
                 inventoryFinishedService.noSourceInWarehousing(existOrderSkuMap.getOrDefault(item.getId(), Collections.emptyList()));
             });
+
+            List<Long> noReasonOrderIds = saveStatementOrderList.stream().map(BaseIdPo::getId).collect(Collectors.toList());
+            // 无理由订单的快递包材退料
+            List<OrderPackageBom> noReasonOrderPackageBomList = orderPackageBomService.list(q -> q.in(OrderPackageBom::getOrderId, noReasonOrderIds));
+            Map<Long, InOutStorageBom> inStorageBomMap = noReasonOrderPackageBomList.stream()
+                    .map(item -> {
+                        InOutStorageBom inStorageBom = new InOutStorageBom();
+                        inStorageBom.setBomSpecId(item.getBomSpecId());
+                        inStorageBom.setQuantity(item.getQuantity());
+                        return inStorageBom;
+                    }).collect(Collectors.toMap(
+                            InOutStorageBom::getBomSpecId,
+                            Function.identity(),
+                            (v1, v2) -> {
+                                v1.setQuantity(v1.getQuantity().add(v2.getQuantity()));
+                                return v1;
+                            }
+                    ));
+            InOutStorageDto packageBomInStorageDto = new InOutStorageDto();
+            packageBomInStorageDto.setType(InOutTypeEnum.IN.getKey());
+            packageBomInStorageDto.setDetailType(InDetailTypeEnum.RETURN_GOODS.getKey());
+            packageBomInStorageDto.setWarehouseId(WarehouseConstant.PACKAGING_MATERIAL);
+            packageBomInStorageDto.setDepartmentId(DepartmentConstant.SD_SPORTS);
+            packageBomInStorageDto.setApplicant("系统自动生成");
+            packageBomInStorageDto.setRemark("无理由订单快递包材退料入库");
+            packageBomInStorageDto.setInOutStorageBomList(new ArrayList<>(inStorageBomMap.values()));
+            inOutStorageService.add(packageBomInStorageDto);
         }
         if (!saveOrderSkuList.isEmpty()) {
             orderSkuService.saveBatch(saveOrderSkuList);