|
@@ -379,7 +379,99 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|
|
|
|
|
@Override
|
|
|
public void edit(OrderInfoDto dto) {
|
|
|
+ // 订单为委外订单时,订单分类为委外订单
|
|
|
+ if (Objects.equals(dto.getType(), 2)) {
|
|
|
+ dto.setClassify(OrderClassifyEnum.OUTSOURCE_ORDER.getKey());
|
|
|
+ } 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());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 更新订单
|
|
|
updateById(dto);
|
|
|
+
|
|
|
+ // 更新订单产品
|
|
|
+ List<OrderSkuDto> orderSkuList = dto.getOrderSkuList();
|
|
|
+ List<OrderSku> tempOrderSkuList = orderSkuList.stream()
|
|
|
+ .peek(item -> item.setOrderId(dto.getId()))
|
|
|
+ .peek(item -> item.setStockPreparationStatus(StatusConstant.NO))
|
|
|
+ .map(item -> (OrderSku) item)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ orderSkuService.editLinked(tempOrderSkuList, 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());
|
|
|
+ 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.get(item.getId());
|
|
|
+ if (bomList == null) {
|
|
|
+ bomList = 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.STOCK_PREPARATION.getKey())
|
|
|
+ && ObjectUtil.equals(dto.getType(), 2)
|
|
|
+ && ObjectUtil.isEmpty(orderSkuBomList)) {
|
|
|
+ dto.setStatus(OrderStatusEnum.IN_PRODUCTION.getKey());
|
|
|
+ // 生成工单
|
|
|
+ productionWorkOrderService.addByOrderId(dto.getId());
|
|
|
+ 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 : orderSkuList) {
|
|
|
+ ObsFileUtil.editFile(item.getSelfAdhesiveStickerFile(), item.getId());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 更新订单附件
|
|
|
+ ObsFileUtil.editFile(dto.getFileList(), dto.getId());
|
|
|
}
|
|
|
|
|
|
@Override
|