Browse Source

批量生产任务明细

yzc 1 year ago
parent
commit
a63a3bd8c1

+ 10 - 0
hx-mes/src/main/java/com/fjhx/mes/controller/production/ProduceOrderDetailController.java

@@ -11,6 +11,8 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -43,4 +45,12 @@ public class ProduceOrderDetailController {
         return produceOrderDetailService.detail(dto);
     }
 
+    /**
+     * 批量生产任务详情
+     */
+    @PostMapping("/detailByIds")
+    public List<ProductionOrderDetailVo> detailByIds(@RequestBody ProduceOrderDetailSelectDto dto) {
+        return produceOrderDetailService.detailByIds(dto);
+    }
+
 }

+ 6 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/production/dto/ProduceOrderDetailSelectDto.java

@@ -5,6 +5,7 @@ import lombok.Getter;
 import lombok.Setter;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * 生产订单明细列表查询入参实体
@@ -36,4 +37,9 @@ public class ProduceOrderDetailSelectDto extends BaseSelectDto {
      */
     private Long companyId;
 
+    /**
+     * 任务ID列表
+     */
+    private List<Long> taskIds;
+
 }

+ 15 - 8
hx-mes/src/main/java/com/fjhx/mes/service/production/ProduceOrderDetailService.java

@@ -7,6 +7,8 @@ import com.fjhx.mes.entity.production.po.ProductionOrderDetail;
 import com.fjhx.mes.entity.production.vo.ProductionOrderDetailVo;
 import com.ruoyi.common.core.service.BaseService;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -18,13 +20,18 @@ import com.ruoyi.common.core.service.BaseService;
  */
 public interface ProduceOrderDetailService extends BaseService<ProductionOrderDetail> {
 
-	/**
-	 * 生产任务分页
-	 */
-	Page<ProductionOrderDetailVo> getPage(ProduceOrderDetailSelectDto dto);
+    /**
+     * 生产任务分页
+     */
+    Page<ProductionOrderDetailVo> getPage(ProduceOrderDetailSelectDto dto);
+
+    /**
+     * 生产任务详情
+     */
+    ProductionOrderDetailVo detail(ProductionTaskDetailDto dto);
 
-	/**
-	 * 生产任务详情
-	 */
-	ProductionOrderDetailVo detail(ProductionTaskDetailDto dto);
+    /**
+     * 批量任务详情
+     */
+    List<ProductionOrderDetailVo> detailByIds(ProduceOrderDetailSelectDto dto);
 }

+ 74 - 0
hx-mes/src/main/java/com/fjhx/mes/service/production/impl/ProduceOrderDetailServiceImpl.java

@@ -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());
+        });
+
+        //获取bom信息
+        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()));
+        //其他BOM
+        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());
+            }
+            //赋值BOM信息
+            detail.setContractProductBomList(otherBomMap.get(detail.getContractDetailId()));
+
+            //赋值生产进度列表
+            detail.setProductionTaskProgressList(ptpMap.get(detail.getId()));
+        }
+
+        return voList;
+    }
+
 }