24282 1 år sedan
förälder
incheckning
daec5065a4

+ 1 - 1
sd-business/src/main/java/com/sd/business/entity/order/enums/OrderClassifyEnum.java

@@ -15,7 +15,7 @@ import java.util.Map;
 public enum OrderClassifyEnum {
     WLN_ORDER(1, "万里牛订单"),
     PURCHASE_ORDER(2, "采购订单"),
-    OUTSOURCE_ORDER(3, "委外订单"),
+    //OUTSOURCE_ORDER(3, "委外订单"),
     AFTER_SALE_ORDER(4, "售后订单"),
     NO_REASON_ORDER(5, "无理由订单");
 

+ 1 - 6
sd-business/src/main/java/com/sd/business/entity/order/po/OrderInfo.java

@@ -27,12 +27,7 @@ public class OrderInfo extends BasePo {
     private Integer source;
 
     /**
-     * 订单类型 1自主订单 2委外订单
-     */
-    private Integer type;
-
-    /**
-     * 订单分类 1万里牛订单,2采购订单,3委外订单,4售后订单,5无理由订单
+     * 订单分类 1万里牛订单,2采购订单,4售后订单,5无理由订单
      */
     private Integer classify;
 

+ 105 - 349
sd-business/src/main/java/com/sd/business/service/order/impl/OrderInfoServiceImpl.java

@@ -4,11 +4,11 @@ import cn.hutool.core.convert.Convert;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.core.toolkit.StringPool;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.file.utils.ObsFileUtil;
-import com.fjhx.flow.enums.FlowStatusEnum;
 import com.ruoyi.common.annotation.LogicIgnore;
 import com.ruoyi.common.constant.StatusConstant;
 import com.ruoyi.common.core.domain.BaseIdPo;
@@ -16,7 +16,6 @@ import com.ruoyi.common.core.domain.BasePo;
 import com.ruoyi.common.core.domain.BaseSelectDto;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.system.service.ISysRoleService;
 import com.ruoyi.system.service.ISysUserService;
 import com.sd.business.entity.bom.bo.BomSpecBo;
 import com.sd.business.entity.bom.po.Bom;
@@ -57,7 +56,6 @@ import com.sd.business.service.bom.BomService;
 import com.sd.business.service.bom.BomSpecService;
 import com.sd.business.service.department.DepartmentService;
 import com.sd.business.service.in.InOutStorageService;
-import com.sd.business.service.inventory.InventoryFinishedService;
 import com.sd.business.service.order.OrderInfoService;
 import com.sd.business.service.order.OrderPackageBomService;
 import com.sd.business.service.order.OrderSkuBomService;
@@ -125,15 +123,9 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
     private InOutStorageService inOutStorageService;
 
     @Autowired
-    private InventoryFinishedService inventoryFinishedService;
-
-    @Autowired
     private ISysUserService sysUserService;
 
     @Autowired
-    private ISysRoleService roleService;
-
-    @Autowired
     private SkuSpecService skuSpecService;
 
     @Autowired
@@ -280,216 +272,80 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
     @DSTransactional
     @Override
     public void add(OrderInfoDto dto) {
-        List<OrderSkuDto> orderSkuList = dto.getOrderSkuList();
 
         // 新增订单
+        dto.setId(IdWorker.getId());
         dto.setSource(1);
         dto.setCode("PI" + new Date().getTime());
         dto.setSettlementStatus(1);
         dto.setTaxRate(BigDecimal.TEN);
         dto.setTag("0");
         dto.setExceptionType(OrderExceptionTypeEnum.NORMAL.getKey().toString());
+        dto.setClassify(OrderClassifyEnum.PURCHASE_ORDER.getKey());
 
-        // 拥有采购角色的账号创建的自主订单为采购订单
-        if (Objects.equals(dto.getType(), 1)) {
-            Long userId = SecurityUtils.getUserId();
-            Set<String> roleKeys = roleService.selectRolePermissionByUserId(userId);
-            if (!Collections.disjoint(roleKeys, Arrays.asList("sypurchasing", "purchasingOfficer", "bzpurchasing"))) {
-                dto.setClassify(OrderClassifyEnum.PURCHASE_ORDER.getKey());
-            }
-        }
-        // 订单为委外订单时,订单分类为委外订单
-        else if (Objects.equals(dto.getType(), 2)) {
-            dto.setClassify(OrderClassifyEnum.OUTSOURCE_ORDER.getKey());
-
-            // 委外订单修改金额
-            dto.setProductTotalAmount(BigDecimal.ZERO);
-            dto.setDeliveryMaterialsFee(BigDecimal.ZERO);
-            dto.setManagementFee(BigDecimal.ZERO);
-            dto.setPackingLabor(dto.getPackingLabor().multiply(new BigDecimal(2)));
-            dto.setTotalAmount(dto.getProductTotalAmount()
-                    .add(dto.getCustomProcessingFee())
-                    .add(dto.getLssueFee())
-                    .add(dto.getDeliveryMaterialsFee())
-                    .add(dto.getPackingLabor())
-                    .add(dto.getPackagingMaterialCost())
-                    .add(dto.getManagementFee()));
-        }
-
-        save(dto);
-
-        // 新增订单产品包材配件
-        List<OrderSku> tempOrderSkuList = orderSkuList.stream()
-                .peek(item -> item.setOrderId(dto.getId()))
-                .peek(item -> {
-                    // 委外订单修改金额
-                    if (ObjectUtil.equals(dto.getType(), 2)) {
-                        item.setUnitPrice(BigDecimal.ZERO);
-                        item.setLssueFee(BigDecimal.ZERO);
-                        item.setDeliveryMaterialsFee(BigDecimal.ZERO);
-                        item.setManagementFee(BigDecimal.ZERO);
-                        item.setPackingLabor(item.getPackingLabor().multiply(new BigDecimal(2)));
-                    }
-                })
-                .map(item -> (OrderSku) item)
-                .collect(Collectors.toList());
-        orderSkuService.saveBatch(tempOrderSkuList);
+        // 保存订单sku列表
+        List<OrderSku> orderSkuList = getOrderSkuList(dto);
+        orderSkuService.saveBatch(orderSkuList);
 
-        // 新增订单产品包装信息
-        List<OrderSkuBom> orderSkuBomList = orderSkuList.stream()
-                .flatMap(orderSku -> orderSku.getOrderSkuBomList().stream()
-                        .peek(orderSkuBom -> orderSkuBom.setOrderId(dto.getId()))
-                        .peek(orderSkuBom -> orderSkuBom.setOrderSkuId(orderSku.getId())))
-                .collect(Collectors.toList());
+        // 保存订单sku包材信息
+        List<OrderSkuBom> orderSkuBomList = getOrderSkuBomList(dto);
         orderSkuBomService.saveBatch(orderSkuBomList);
 
+        // 保存订单包装信息
+        List<OrderPackageBom> orderPackageBomList = getOrderPackageBomList(dto);
+        if (ObjectUtil.isNotEmpty(orderPackageBomList)) {
+            orderPackageBomService.saveBatch(orderPackageBomList);
+        }
+
         // 新增订单产品生产成本
-        Map<Long, List<OrderSkuBom>> orderSkuBomMap = orderSkuBomList.stream().collect(Collectors.groupingBy(OrderSkuBom::getOrderSkuId));
-        List<OrderSkuProductionCost> orderSkuProductionCostList = tempOrderSkuList.stream().map(item -> {
-            OrderSkuProductionCost orderSkuProductionCost = new OrderSkuProductionCost();
-            orderSkuProductionCost.setOrderId(item.getOrderId());
-            orderSkuProductionCost.setOrderSkuId(item.getId());
-            // 材料成本
-            orderSkuProductionCost.setMaterialCost(item.getUnitPrice().multiply(item.getQuantity()));
-            // 辅料成本暂时没有默认为零
-            orderSkuProductionCost.setAuxiliaryMaterialCost(BigDecimal.ZERO);
-            // 产品包材成本
-            List<OrderSkuBom> bomList = orderSkuBomMap.getOrDefault(item.getId(), new ArrayList<>());
-            BigDecimal productPackagingMaterialCost = bomList.stream()
-                    .map(orderSkuBom -> orderSkuBom.getQuantity()
-                            .multiply(orderSkuBom.getUnitPrice())
-                            .multiply(item.getQuantity()))
-                    .reduce(BigDecimal.ZERO, BigDecimal::add);
-            orderSkuProductionCost.setProductPackagingMaterialCost(productPackagingMaterialCost);
-            // 物流包材成本
-            orderSkuProductionCost.setLogisticsPackagingMaterialCost(item.getDeliveryMaterialsFee().multiply(item.getQuantity()));
-            orderSkuProductionCost.setTotalAmount(orderSkuProductionCost.getMaterialCost()
-                    .add(orderSkuProductionCost.getAuxiliaryMaterialCost())
-                    .add(orderSkuProductionCost.getProductPackagingMaterialCost())
-                    .add(orderSkuProductionCost.getLogisticsPackagingMaterialCost()));
-            return orderSkuProductionCost;
-        }).collect(Collectors.toList());
+        List<OrderSkuProductionCost> orderSkuProductionCostList = getOrderSkuProductionCostList(orderSkuList, orderSkuBomList);
         orderSkuProductionCostService.saveBatch(orderSkuProductionCostList);
 
-        // 是委外订单并且没有包材时,修改订单状态为生产中,并生成生产任务和工单
-        if (ObjectUtil.notEqual(dto.getStatus(), OrderStatusEnum.DRAFT.getKey())
-                && ObjectUtil.equal(dto.getFlowStatus(), FlowStatusEnum.PASS.getKey())
-                && ObjectUtil.equals(dto.getType(), 2)
-                && ObjectUtil.isEmpty(orderSkuBomList)) {
-            dto.setStatus(OrderStatusEnum.IN_PRODUCTION.getKey());
-            update(q -> q.set(OrderInfo::getStatus, OrderStatusEnum.IN_PRODUCTION.getKey()).eq(BaseIdPo::getId, dto.getId()));
-        }
+        // 保存订单
+        save(dto);
 
-        // 保存订单包装信息
-        if (ObjectUtil.isNotEmpty(dto.getOrderPackageBomList())) {
-            List<OrderPackageBomDto> tempOrderPackageBomList = dto.getOrderPackageBomList();
-            List<OrderPackageBom> orderPackageBomList = tempOrderPackageBomList.stream()
-                    .peek(item -> item.setOrderId(dto.getId()))
-                    .map(item -> (OrderPackageBom) item)
-                    .collect(Collectors.toList());
-            orderPackageBomService.saveBatch(orderPackageBomList);
-        }
+        // 保存附件
+        ObsFileUtil.saveFile(dto.getFileList(), dto.getId());
 
         // 保存产品不干胶图稿
-        for (OrderSkuDto item : orderSkuList) {
+        for (OrderSkuDto item : dto.getOrderSkuList()) {
             ObsFileUtil.saveFile(item.getSelfAdhesiveStickerFile(), item.getId());
         }
 
-        // 保存附件
-        ObsFileUtil.saveFile(dto.getFileList(), dto.getId());
     }
 
     @DSTransactional
     @Override
     public void edit(OrderInfoDto dto) {
-        // 拥有采购角色的账号创建的自主订单为采购订单
-        if (Objects.equals(dto.getType(), 1)) {
-            Long userId = dto.getCreateUser();
-            Set<String> roleKeys = roleService.selectRolePermissionByUserId(userId);
-            if (!Collections.disjoint(roleKeys, Arrays.asList("sypurchasing", "purchasingOfficer", "bzpurchasing"))) {
-                dto.setClassify(OrderClassifyEnum.PURCHASE_ORDER.getKey());
-            }
-        }
-        // 订单为委外订单时,订单分类为委外订单
-        else if (Objects.equals(dto.getType(), 2)) {
-            dto.setClassify(OrderClassifyEnum.OUTSOURCE_ORDER.getKey());
-        }
 
-        // 更新订单
-        updateById(dto);
-
-        // 更新订单产品
-        List<OrderSkuDto> orderSkuList = dto.getOrderSkuList();
-        List<OrderSku> tempOrderSkuList = orderSkuList.stream()
-                .peek(item -> item.setOrderId(dto.getId()))
-                .map(item -> (OrderSku) item)
-                .collect(Collectors.toList());
-        orderSkuService.editLinked(tempOrderSkuList, OrderSku::getOrderId, dto.getId());
+        // 更新订单sku列表
+        List<OrderSku> orderSkuList = getOrderSkuList(dto);
+        orderSkuService.editLinked(orderSkuList, OrderSku::getOrderId, dto.getId());
 
-        // 更新订单产品包材配件
-        List<OrderSkuBom> orderSkuBomList = orderSkuList.stream()
-                .flatMap(orderSku -> orderSku.getOrderSkuBomList().stream()
-                        .peek(orderSkuBom -> orderSkuBom.setOrderId(dto.getId()))
-                        .peek(orderSkuBom -> orderSkuBom.setOrderSkuId(orderSku.getId())))
-                .collect(Collectors.toList());
+        // 更新订单sku包材信息
+        List<OrderSkuBom> orderSkuBomList = getOrderSkuBomList(dto);
         orderSkuBomService.editLinked(orderSkuBomList, OrderSkuBom::getOrderId, dto.getId());
 
-        // 新增订单产品生产成本
-        Map<Long, List<OrderSkuBom>> orderSkuBomMap = orderSkuBomList.stream().collect(Collectors.groupingBy(OrderSkuBom::getOrderSkuId));
-        List<OrderSkuProductionCost> orderSkuProductionCostList = tempOrderSkuList.stream().map(item -> {
-            OrderSkuProductionCost orderSkuProductionCost = new OrderSkuProductionCost();
-            orderSkuProductionCost.setOrderId(item.getOrderId());
-            orderSkuProductionCost.setOrderSkuId(item.getId());
-            // 材料成本
-            orderSkuProductionCost.setMaterialCost(item.getUnitPrice().multiply(item.getQuantity()));
-            // 辅料成本暂时没有默认为零
-            orderSkuProductionCost.setAuxiliaryMaterialCost(BigDecimal.ZERO);
-            // 产品包材成本
-            List<OrderSkuBom> bomList = orderSkuBomMap.getOrDefault(item.getId(), new ArrayList<>());
-            BigDecimal productPackagingMaterialCost = bomList.stream()
-                    .map(orderSkuBom -> orderSkuBom.getQuantity()
-                            .multiply(orderSkuBom.getUnitPrice())
-                            .multiply(item.getQuantity()))
-                    .reduce(BigDecimal.ZERO, BigDecimal::add);
-            orderSkuProductionCost.setProductPackagingMaterialCost(productPackagingMaterialCost);
-            // 物流包材成本
-            orderSkuProductionCost.setLogisticsPackagingMaterialCost(item.getDeliveryMaterialsFee()
-                    .multiply(item.getQuantity()));
-            orderSkuProductionCost.setTotalAmount(
-                    orderSkuProductionCost.getMaterialCost()
-                            .add(orderSkuProductionCost.getAuxiliaryMaterialCost())
-                            .add(orderSkuProductionCost.getProductPackagingMaterialCost())
-                            .add(orderSkuProductionCost.getLogisticsPackagingMaterialCost()));
-            return orderSkuProductionCost;
-        }).collect(Collectors.toList());
-        orderSkuProductionCostService.editLinked(orderSkuProductionCostList, OrderSkuProductionCost::getOrderId, dto.getId());
-
-        // 是委外订单并且没有包材时,修改订单状态为生产中,并生成生产任务和工单
-        if (ObjectUtil.equals(dto.getStatus(), OrderStatusEnum.SCHEDULING.getKey())
-                && ObjectUtil.equals(dto.getType(), 2)
-                && ObjectUtil.isEmpty(orderSkuBomList)) {
-            dto.setStatus(OrderStatusEnum.IN_PRODUCTION.getKey());
-            update(q -> q.set(OrderInfo::getStatus, OrderStatusEnum.IN_PRODUCTION.getKey()).eq(BaseIdPo::getId, dto.getId()));
-        }
-
-        // 更新订单产品包装信息
-        List<OrderPackageBomDto> tempOrderPackageBomList = dto.getOrderPackageBomList();
-        if (tempOrderPackageBomList == null) {
-            tempOrderPackageBomList = new ArrayList<>();
-        }
-        List<OrderPackageBom> orderPackageBomList = tempOrderPackageBomList.stream()
-                .peek(item -> item.setOrderId(dto.getId()))
-                .map(item -> (OrderPackageBom) item)
-                .collect(Collectors.toList());
+        // 更新订单包装信息
+        List<OrderPackageBom> orderPackageBomList = getOrderPackageBomList(dto);
         orderPackageBomService.editLinked(orderPackageBomList, OrderPackageBom::getOrderId, dto.getId());
 
+        // 更新订单产品生产成本
+        List<OrderSkuProductionCost> orderSkuProductionCostList = getOrderSkuProductionCostList(orderSkuList, orderSkuBomList);
+        orderSkuProductionCostService.remove(q -> q.eq(OrderSkuProductionCost::getOrderId, dto.getId()));
+        orderSkuProductionCostService.saveBatch(orderSkuProductionCostList);
+
+        // 更新订单
+        updateById(dto);
+
+        // 更新订单附件
+        ObsFileUtil.editFile(dto.getFileList(), dto.getId());
+
         // 更新订单产品不干胶图稿
-        for (OrderSkuDto item : orderSkuList) {
+        for (OrderSkuDto item : dto.getOrderSkuList()) {
             ObsFileUtil.editFile(item.getSelfAdhesiveStickerFile(), item.getId());
         }
 
-        // 更新订单附件
-        ObsFileUtil.editFile(dto.getFileList(), dto.getId());
     }
 
     @DSTransactional
@@ -524,122 +380,9 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
             throw new ServiceException("订单不在草稿或待确认状态");
         }
 
-        // 订单为委外订单时,订单分类为委外订单,订单费用修改
-        if (Objects.equals(dto.getType(), 2)) {
-            dto.setClassify(OrderClassifyEnum.OUTSOURCE_ORDER.getKey());
-            if (!Objects.equals(dto.getSource(), 1)) {
-                dto.setLssueFee(BigDecimal.ZERO);
-            }
-            dto.setProductTotalAmount(BigDecimal.ZERO);
-            dto.setDeliveryMaterialsFee(BigDecimal.ZERO);
-            dto.setManagementFee(BigDecimal.ZERO);
-            dto.setPackingLabor(dto.getPackingLabor().multiply(new BigDecimal(2)));
-            dto.setTotalAmount(dto.getProductTotalAmount()
-                    .add(dto.getCustomProcessingFee())
-                    .add(dto.getLssueFee())
-                    .add(dto.getDeliveryMaterialsFee())
-                    .add(dto.getPackingLabor())
-                    .add(dto.getPackagingMaterialCost())
-                    .add(dto.getManagementFee()));
-            // 清空订单快递包材
-            dto.setOrderPackageBomList(null);
-        } else if (Objects.equals(dto.getType(), 1)) {
-            // 拥有采购角色的账号创建的自主订单为采购订单
-            Long userId = dto.getCreateUser();
-            Set<String> roleKeys = roleService.selectRolePermissionByUserId(userId);
-            if (!Collections.disjoint(roleKeys, Arrays.asList("sypurchasing", "purchasingOfficer", "bzpurchasing"))) {
-                dto.setClassify(OrderClassifyEnum.PURCHASE_ORDER.getKey());
-            }
-        }
-
-        // 更新订单
         dto.setStatus(OrderStatusEnum.SCHEDULING.getKey());
-        updateById(dto);
-
-        // 更新订单产品
-        List<OrderSku> tempOrderSkuList = dto.getOrderSkuList().stream()
-                .peek(item -> {
-                    item.setOrderId(dto.getId());
-                    // 委外订单修改金额
-                    if (ObjectUtil.equals(dto.getType(), 2)) {
-                        item.setUnitPrice(BigDecimal.ZERO);
-                        item.setLssueFee(BigDecimal.ZERO);
-                        item.setDeliveryMaterialsFee(BigDecimal.ZERO);
-                        item.setManagementFee(BigDecimal.ZERO);
-                        item.setPackingLabor(item.getPackingLabor().multiply(new BigDecimal(2)));
-                    }
-                })
-                .map(item -> (OrderSku) item)
-                .collect(Collectors.toList());
-        orderSkuService.editLinked(tempOrderSkuList, OrderSku::getOrderId, dto.getId());
-
-        // 更新包材
-        List<OrderSkuBom> orderSkuBomList = dto.getOrderSkuList().stream()
-                .flatMap(orderSku -> orderSku.getOrderSkuBomList().stream()
-                        .peek(orderSkuBom -> orderSkuBom.setOrderId(dto.getId()))
-                        .peek(orderSkuBom -> orderSkuBom.setOrderSkuId(orderSku.getId())))
-                .collect(Collectors.toList());
-        orderSkuBomService.editLinked(orderSkuBomList, OrderSkuBom::getOrderId, dto.getId());
-
-        // 新增订单产品生产成本
-        Map<Long, List<OrderSkuBom>> orderSkuBomMap = orderSkuBomList.stream().collect(Collectors.groupingBy(OrderSkuBom::getOrderSkuId));
-        List<OrderSkuProductionCost> orderSkuProductionCostList = tempOrderSkuList.stream().map(item -> {
-            OrderSkuProductionCost orderSkuProductionCost = new OrderSkuProductionCost();
-            orderSkuProductionCost.setOrderId(item.getOrderId());
-            orderSkuProductionCost.setOrderSkuId(item.getId());
-            // 材料成本
-            orderSkuProductionCost.setMaterialCost(item.getUnitPrice().multiply(item.getQuantity()));
-            // 辅料成本暂时没有默认为零
-            orderSkuProductionCost.setAuxiliaryMaterialCost(BigDecimal.ZERO);
-            // 产品包材成本
-            List<OrderSkuBom> bomList = orderSkuBomMap.getOrDefault(item.getId(), new ArrayList<>());
-            BigDecimal productPackagingMaterialCost = bomList.stream()
-                    .map(orderSkuBom -> orderSkuBom.getQuantity()
-                            .multiply(orderSkuBom.getUnitPrice())
-                            .multiply(item.getQuantity()))
-                    .reduce(BigDecimal.ZERO, BigDecimal::add);
-            orderSkuProductionCost.setProductPackagingMaterialCost(productPackagingMaterialCost);
-            // 物流包材成本
-            orderSkuProductionCost.setLogisticsPackagingMaterialCost(item.getDeliveryMaterialsFee()
-                    .multiply(item.getQuantity()));
-            orderSkuProductionCost.setTotalAmount(
-                    orderSkuProductionCost.getMaterialCost()
-                            .add(orderSkuProductionCost.getAuxiliaryMaterialCost())
-                            .add(orderSkuProductionCost.getProductPackagingMaterialCost())
-                            .add(orderSkuProductionCost.getLogisticsPackagingMaterialCost()));
-            return orderSkuProductionCost;
-        }).collect(Collectors.toList());
-        orderSkuProductionCostService.editLinked(orderSkuProductionCostList, OrderSkuProductionCost::getOrderId, dto.getId());
-
-        // 是委外订单并且没有包材时,修改订单状态为生产中
-        if (ObjectUtil.equals(dto.getStatus(), OrderStatusEnum.SCHEDULING.getKey())
-                && ObjectUtil.equals(dto.getType(), 2)
-                && ObjectUtil.isEmpty(orderSkuBomList)) {
-            dto.setStatus(OrderStatusEnum.IN_PRODUCTION.getKey());
-            update(q -> q.set(OrderInfo::getStatus, OrderStatusEnum.IN_PRODUCTION.getKey()).eq(BaseIdPo::getId, dto.getId()));
-        }
-
-        // 更新订单产品包装信息
-        List<OrderPackageBomDto> tempOrderPackageBomList = dto.getOrderPackageBomList();
-        if (tempOrderPackageBomList == null) {
-            tempOrderPackageBomList = new ArrayList<>();
-        }
-        List<OrderPackageBom> orderPackageBomList = tempOrderPackageBomList.stream()
-                .peek(item -> item.setOrderId(dto.getId()))
-                .map(item -> (OrderPackageBom) item)
-                .collect(Collectors.toList());
-        orderPackageBomService.editLinked(orderPackageBomList, OrderPackageBom::getOrderId, dto.getId());
-
-        // 更新产品不干胶图稿
-        for (OrderSkuDto item : dto.getOrderSkuList()) {
-            ObsFileUtil.editFile(item.getSelfAdhesiveStickerFile(), item.getId());
-        }
-
-        // 更新附件
-        ObsFileUtil.editFile(dto.getFileList(), dto.getId());
+        edit(dto);
 
-        // 发送mq下载临时图稿
-        sendMq(dto);
     }
 
     @Override
@@ -941,58 +684,6 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
         ExcelUtil.export(response, exportVoList, OrderSkuExportVo.class);
     }
 
-    /**
-     * 主材出库
-     */
-    private void semiFinishedProductOutStorage(List<InOutStorageBom> inOutStorageBomList, Map<Long, BomSpecBo> bomSpecBoMap, OrderInfo orderInfo) {
-        List<InOutStorageBom> semiFinishedProductInOutStorageBomList = inOutStorageBomList
-                .stream()
-                .filter(item -> {
-                    BomSpecBo tempBomSpecBo = bomSpecBoMap.get(item.getBomSpecId());
-                    if (tempBomSpecBo == null) {
-                        return false;
-                    }
-                    return ObjectUtil.equal(tempBomSpecBo.getClassifyParentId(), 1L);
-                })
-                .collect(Collectors.toList());
-        InOutStorageDto semiFinishedProductInOutStorageDto = new InOutStorageDto();
-        semiFinishedProductInOutStorageDto.setType(InOutTypeEnum.IN.getKey());
-        semiFinishedProductInOutStorageDto.setDetailType(InDetailTypeEnum.RETURN_GOODS.getKey());
-        semiFinishedProductInOutStorageDto.setWarehouseId(WarehouseConstant.SEMI_FINISHED_PRODUCT);
-        semiFinishedProductInOutStorageDto.setApplicant(SecurityUtils.getLoginUser().getUser().getNickName());
-        semiFinishedProductInOutStorageDto.setRemark("删除订单:" + orderInfo.getCode()
-                + (StrUtil.isBlank(orderInfo.getWlnCode()) ? StringPool.EMPTY : "(" + orderInfo.getWlnCode() + ")")
-                + " 主材退料入库");
-        semiFinishedProductInOutStorageDto.setInOutStorageBomList(semiFinishedProductInOutStorageBomList);
-        inOutStorageService.add(semiFinishedProductInOutStorageDto);
-    }
-
-    /**
-     * 包材出库
-     */
-    private void packagingMaterialOutStorage(List<InOutStorageBom> inOutStorageBomList, Map<Long, BomSpecBo> bomSpecBoMap, OrderInfo orderInfo) {
-        List<InOutStorageBom> packagingMaterialInOutStorageBomList = inOutStorageBomList
-                .stream()
-                .filter(item -> {
-                    BomSpecBo tempBomSpecBo = bomSpecBoMap.get(item.getBomSpecId());
-                    if (tempBomSpecBo == null) {
-                        return true;
-                    }
-                    return ObjectUtil.notEqual(tempBomSpecBo.getClassifyParentId(), 1L);
-                })
-                .collect(Collectors.toList());
-        InOutStorageDto packagingMaterialInOutStorageDto = new InOutStorageDto();
-        packagingMaterialInOutStorageDto.setType(InOutTypeEnum.IN.getKey());
-        packagingMaterialInOutStorageDto.setDetailType(InDetailTypeEnum.RETURN_GOODS.getKey());
-        packagingMaterialInOutStorageDto.setWarehouseId(WarehouseConstant.PACKAGING_MATERIAL);
-        packagingMaterialInOutStorageDto.setApplicant(SecurityUtils.getLoginUser().getUser().getNickName());
-        packagingMaterialInOutStorageDto.setRemark("删除订单:" + orderInfo.getCode()
-                + (StrUtil.isBlank(orderInfo.getWlnCode()) ? StringPool.EMPTY : "(" + orderInfo.getWlnCode() + ")")
-                + " 包材退料入库");
-        packagingMaterialInOutStorageDto.setInOutStorageBomList(packagingMaterialInOutStorageBomList);
-        inOutStorageService.add(packagingMaterialInOutStorageDto);
-    }
-
     private void sendMq(OrderInfoDto dto) {
         List<OrderSkuDto> orderSkuList = dto.getOrderSkuList();
         for (OrderSkuDto orderSkuDto : orderSkuList) {
@@ -1095,4 +786,69 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
         }
     }
 
+    /**
+     * 获取订单sku列表
+     */
+    private List<OrderSku> getOrderSkuList(OrderInfoDto dto) {
+        return dto.getOrderSkuList().stream()
+                .peek(item -> item.setOrderId(dto.getId()))
+                .map(item -> (OrderSku) item)
+                .collect(Collectors.toList());
+    }
+
+    /**
+     * 获取订单sku包材列表
+     */
+    private List<OrderSkuBom> getOrderSkuBomList(OrderInfoDto dto) {
+        return dto.getOrderSkuList().stream()
+                .flatMap(orderSku -> orderSku.getOrderSkuBomList().stream()
+                        .peek(orderSkuBom -> orderSkuBom.setOrderId(dto.getId()))
+                        .peek(orderSkuBom -> orderSkuBom.setOrderSkuId(orderSku.getId())))
+                .collect(Collectors.toList());
+    }
+
+    /**
+     * 获取订单包装列表
+     */
+    private List<OrderPackageBom> getOrderPackageBomList(OrderInfoDto dto) {
+        if (ObjectUtil.isEmpty(dto.getOrderPackageBomList())) {
+            return Collections.emptyList();
+        }
+        return dto.getOrderPackageBomList().stream()
+                .peek(item -> item.setOrderId(dto.getId()))
+                .map(item -> (OrderPackageBom) item)
+                .collect(Collectors.toList());
+    }
+
+    /**
+     * 获取订单sku生产成本列表
+     */
+    private List<OrderSkuProductionCost> getOrderSkuProductionCostList(List<OrderSku> orderSkuList, List<OrderSkuBom> orderSkuBomList) {
+        Map<Long, List<OrderSkuBom>> orderSkuBomMap = orderSkuBomList.stream().collect(Collectors.groupingBy(OrderSkuBom::getOrderSkuId));
+        return orderSkuList.stream().map(item -> {
+            OrderSkuProductionCost orderSkuProductionCost = new OrderSkuProductionCost();
+            orderSkuProductionCost.setOrderId(item.getOrderId());
+            orderSkuProductionCost.setOrderSkuId(item.getId());
+            // 材料成本
+            orderSkuProductionCost.setMaterialCost(item.getUnitPrice().multiply(item.getQuantity()));
+            // 辅料成本暂时没有默认为零
+            orderSkuProductionCost.setAuxiliaryMaterialCost(BigDecimal.ZERO);
+            // 产品包材成本
+            List<OrderSkuBom> bomList = orderSkuBomMap.getOrDefault(item.getId(), new ArrayList<>());
+            BigDecimal productPackagingMaterialCost = bomList.stream()
+                    .map(orderSkuBom -> orderSkuBom.getQuantity()
+                            .multiply(orderSkuBom.getUnitPrice())
+                            .multiply(item.getQuantity()))
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+            orderSkuProductionCost.setProductPackagingMaterialCost(productPackagingMaterialCost);
+            // 物流包材成本
+            orderSkuProductionCost.setLogisticsPackagingMaterialCost(item.getDeliveryMaterialsFee().multiply(item.getQuantity()));
+            orderSkuProductionCost.setTotalAmount(orderSkuProductionCost.getMaterialCost()
+                    .add(orderSkuProductionCost.getAuxiliaryMaterialCost())
+                    .add(orderSkuProductionCost.getProductPackagingMaterialCost())
+                    .add(orderSkuProductionCost.getLogisticsPackagingMaterialCost()));
+            return orderSkuProductionCost;
+        }).collect(Collectors.toList());
+    }
+
 }

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

@@ -149,7 +149,7 @@ public class WlnOrderServiceImpl implements WlnOrderService {
         orderInfo.setTaxRate(BigDecimal.TEN);
         orderInfo.setTag("0");
         orderInfo.setSettlementStatus(1);
-        orderInfo.setType(1);
+        orderInfo.setClassify(OrderClassifyEnum.WLN_ORDER.getKey());
 
         orderInfo.setWlnStorageCode(wlnOrder.getString("storage_code"));
         orderInfo.setWlnUid(wlnOrder.getString("uid"));