|
@@ -216,4 +216,78 @@ public class ProduceOrderDetailServiceImpl extends ServiceImpl<ProduceOrderDetai
|
|
|
return detail;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public List<ProductionOrderDetailVo> detailByIds(ProduceOrderDetailSelectDto dto) {
|
|
|
+ List<Long> taskIds = dto.getTaskIds();
|
|
|
+ Assert.notEmpty(taskIds, "任务id列表不能为空");
|
|
|
+
|
|
|
+ List<ProductionOrderDetail> productionOrderDetailList = this.list(q -> q.in(ProductionOrderDetail::getId, taskIds));
|
|
|
+ List<ProductionOrderDetailVo> voList = BeanUtil.copyToList(productionOrderDetailList, ProductionOrderDetailVo.class);
|
|
|
+
|
|
|
+
|
|
|
+ produceOrderService.attributeAssign(voList, ProductionOrderDetailVo::getProduceOrderId, (detail, order) -> {
|
|
|
+ detail.setOrderCode(order.getCode());
|
|
|
+ detail.setDeliveryPeriod(order.getDeliveryPeriod());
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+ productInfoService.attributeAssign(voList, ProductionOrderDetailVo::getProductId, (detail, product) -> {
|
|
|
+ detail.setProductCode(product.getCustomCode());
|
|
|
+ detail.setProductName(product.getName());
|
|
|
+ detail.setProductUnit(product.getUnit());
|
|
|
+ detail.setProductSpec(product.getSpec());
|
|
|
+ detail.setProductLength(product.getLength());
|
|
|
+ detail.setProductWidth(product.getWidth());
|
|
|
+ detail.setProductHeight(product.getHeight());
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+ List<Long> cpIds = voList.stream().map(ProductionOrderDetailVo::getContractDetailId).collect(Collectors.toList());
|
|
|
+ List<ContractProductBom> cpBomList = contractProductBomService.list(q -> q.in(ContractProductBom::getContractProductId, cpIds));
|
|
|
+ List<ContractProductBomVo> cpBomVoList = BeanUtil.copyToList(cpBomList, ContractProductBomVo.class);
|
|
|
+ productInfoService.attributeAssign(cpBomVoList, ContractProductBomVo::getMaterialId, (item, product1) -> {
|
|
|
+ item.setProductCode(product1.getCustomCode());
|
|
|
+ item.setProductName(product1.getName());
|
|
|
+
|
|
|
+ item.setProductLength(product1.getLength());
|
|
|
+ item.setProductWidth(product1.getWidth());
|
|
|
+ item.setProductHeight(product1.getHeight());
|
|
|
+
|
|
|
+ });
|
|
|
+ Map<Long, List<ContractProductBomVo>> bomMap = cpBomVoList.stream().collect(Collectors.groupingBy(ContractProductBom::getContractProductId));
|
|
|
+
|
|
|
+ Map<Long, ContractProductBomVo> rawBomMap = cpBomVoList.stream()
|
|
|
+ .filter(item -> Objects.equals(item.getType(), 1))
|
|
|
+ .collect(Collectors.toMap(ContractProductBom::getContractProductId, Function.identity()));
|
|
|
+
|
|
|
+ Map<Long, List<ContractProductBomVo>> otherBomMap = cpBomVoList.stream()
|
|
|
+ .filter(item -> !Objects.equals(item.getType(), 1))
|
|
|
+ .collect(Collectors.groupingBy(ContractProductBom::getContractProductId));
|
|
|
+
|
|
|
+
|
|
|
+ List<ProductionTaskProgressVo> productionTaskProgressList = productionTaskProgressMapper.getList(IWrapper.<ProductionTaskProgress>getWrapper()
|
|
|
+ .in("ptp.task_id", taskIds)
|
|
|
+ );
|
|
|
+ Map<Long, List<ProductionTaskProgressVo>> ptpMap = productionTaskProgressList.stream().collect(Collectors.groupingBy(ProductionTaskProgress::getTaskId));
|
|
|
+
|
|
|
+ for (ProductionOrderDetailVo detail : voList) {
|
|
|
+
|
|
|
+ ContractProductBomVo rawMaterialBom = rawBomMap.get(detail.getContractDetailId());
|
|
|
+ if (ObjectUtil.isNotEmpty(rawMaterialBom)) {
|
|
|
+ detail.setRawMaterialCode(rawMaterialBom.getProductCode());
|
|
|
+ detail.setRawMaterialName(rawMaterialBom.getProductName());
|
|
|
+ detail.setRawMaterialLength(rawMaterialBom.getProductLength());
|
|
|
+ detail.setRawMaterialWidth(rawMaterialBom.getProductWidth());
|
|
|
+ detail.setRawMaterialHeight(rawMaterialBom.getProductHeight());
|
|
|
+ }
|
|
|
+
|
|
|
+ detail.setContractProductBomList(otherBomMap.get(detail.getContractDetailId()));
|
|
|
+
|
|
|
+
|
|
|
+ detail.setProductionTaskProgressList(ptpMap.get(detail.getId()));
|
|
|
+ }
|
|
|
+
|
|
|
+ return voList;
|
|
|
+ }
|
|
|
+
|
|
|
}
|