|
@@ -124,6 +124,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
|
|
|
private ISysRoleService roleService;
|
|
|
|
|
|
@Autowired
|
|
|
+ private OrderSkuProductionCostService orderSkuProductionCostService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
private InventoryFinishedService inventoryFinishedService;
|
|
|
|
|
|
@Override
|
|
@@ -310,6 +313,36 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
|
|
|
.collect(Collectors.toList());
|
|
|
orderSkuBomService.saveBatch(orderSkuBomList);
|
|
|
|
|
|
+ // 新增订单产品生产成本
|
|
|
+ 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());
|
|
|
+ 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.saveBatch(orderSkuProductionCostList);
|
|
|
+
|
|
|
// 是委外订单并且没有包材时,修改订单状态为生产中,并生成生产任务和工单
|
|
|
if (ObjectUtil.notEqual(orderDto.getStatus(), OrderStatusEnum.DRAFT.getKey())
|
|
|
&& ObjectUtil.equal(orderDto.getFlowStatus(), FlowStatusEnum.PASS.getKey())
|
|
@@ -383,6 +416,36 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
|
|
|
.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());
|
|
|
+ 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)
|
|
@@ -469,6 +532,56 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
|
|
|
.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());
|
|
|
+ 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());
|
|
|
+ // 生成生产任务和工单
|
|
|
+ productionTaskService.addTaskAndWorkOrder(dto.getId());
|
|
|
+ this.update(q -> q.set(OrderInfo::getStatus, OrderStatusEnum.IN_PRODUCTION.getKey()).eq(BaseIdPo::getId, dto.getId()));
|
|
|
+ }
|
|
|
+
|
|
|
+ // 更新订单产品包装信息
|
|
|
+ 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.editLinked(orderPackageBomList, OrderPackageBom::getOrderId, dto.getId());
|
|
|
+ }
|
|
|
+
|
|
|
// 更新产品不干胶图稿
|
|
|
for (OrderSkuDto item : orderSkuList) {
|
|
|
ObsFileUtil.saveFile(item.getSelfAdhesiveStickerFile(), item.getId());
|
|
@@ -897,6 +1010,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
|
|
|
orderSkuService.remove(q -> q.eq(OrderSku::getOrderId, id));
|
|
|
orderSkuBomService.remove(q -> q.eq(OrderSkuBom::getOrderId, id));
|
|
|
orderPackageBomService.remove(q -> q.eq(OrderPackageBom::getOrderId, id));
|
|
|
+ orderSkuProductionCostService.remove(q -> q.eq(OrderSkuProductionCost::getOrderId, id));
|
|
|
+
|
|
|
ObsFileUtil.removeFile(id);
|
|
|
}
|
|
|
|