|
@@ -1,26 +1,37 @@
|
|
|
package com.fjhx.mes.service.production.impl;
|
|
|
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.fjhx.common.utils.Assert;
|
|
|
import com.fjhx.item.entity.product.po.ProductInfo;
|
|
|
import com.fjhx.item.service.product.ProductBomDetailService;
|
|
|
import com.fjhx.item.service.product.ProductInfoService;
|
|
|
import com.fjhx.mes.entity.production.dto.ProduceOrderDetailSelectDto;
|
|
|
+import com.fjhx.mes.entity.production.dto.ProductionTaskDetailDto;
|
|
|
import com.fjhx.mes.entity.production.po.ProductionOrder;
|
|
|
import com.fjhx.mes.entity.production.po.ProductionOrderDetail;
|
|
|
+import com.fjhx.mes.entity.production.po.ProductionTaskProgress;
|
|
|
import com.fjhx.mes.entity.production.vo.ProductionOrderDetailVo;
|
|
|
-import com.fjhx.mes.entity.production.vo.ProductionProcessesVo;
|
|
|
+import com.fjhx.mes.entity.production.vo.ProductionTaskProgressVo;
|
|
|
import com.fjhx.mes.mapper.production.ProduceOrderDetailMapper;
|
|
|
import com.fjhx.mes.mapper.production.ProductionProcessesMapper;
|
|
|
+import com.fjhx.mes.mapper.production.ProductionTaskProgressMapper;
|
|
|
import com.fjhx.mes.service.production.ProduceOrderDetailService;
|
|
|
+import com.fjhx.sale.entity.contract.po.ContractProductBom;
|
|
|
+import com.fjhx.sale.entity.contract.vo.ContractProductBomVo;
|
|
|
+import com.fjhx.sale.service.contract.ContractProductBomService;
|
|
|
import com.ruoyi.common.utils.SecurityUtils;
|
|
|
import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
|
import com.ruoyi.common.utils.wrapper.SqlField;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-import java.util.*;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Objects;
|
|
|
import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -42,6 +53,10 @@ public class ProduceOrderDetailServiceImpl extends ServiceImpl<ProduceOrderDetai
|
|
|
private ProductionProcessesMapper productionProcessesMapper;
|
|
|
@Autowired
|
|
|
private ProductBomDetailService productBomDetailService;
|
|
|
+ @Autowired
|
|
|
+ private ProductionTaskProgressMapper productionTaskProgressMapper;
|
|
|
+ @Autowired
|
|
|
+ private ContractProductBomService contractProductBomService;
|
|
|
|
|
|
@Override
|
|
|
public Page<ProductionOrderDetailVo> getPage(ProduceOrderDetailSelectDto dto) {
|
|
@@ -75,23 +90,43 @@ public class ProduceOrderDetailServiceImpl extends ServiceImpl<ProduceOrderDetai
|
|
|
return page;
|
|
|
}
|
|
|
|
|
|
+ List<Long> cdIds = records.stream().map(ProductionOrderDetail::getContractDetailId).collect(Collectors.toList());
|
|
|
+
|
|
|
+
|
|
|
//获取产品信息
|
|
|
List<Long> pIds = records.stream().map(ProductionOrderDetail::getProductId).collect(Collectors.toList());
|
|
|
List<ProductInfo> productInfoList = productInfoService.list(q -> q.in(ProductInfo::getId, pIds));
|
|
|
Map<Long, ProductInfo> productMap = productInfoList.stream().collect(Collectors.toMap(ProductInfo::getId, Function.identity()));
|
|
|
//获取原材料信息
|
|
|
- Map<Long, ProductInfo> rawMaterialMap = new HashMap<>();
|
|
|
- if (ObjectUtil.isNotEmpty(productInfoList)) {
|
|
|
- List<Long> rmIds = productInfoList.stream().map(ProductInfo::getRawMaterialId).collect(Collectors.toList());
|
|
|
- rawMaterialMap = productInfoService.mapKEntity(ProductInfo::getId, q -> q.in(ProductInfo::getId, rmIds));
|
|
|
- }
|
|
|
-
|
|
|
- //赋值工序列表
|
|
|
- Map<Long, List<ProductionProcessesVo>> processesMap = new HashMap<>();
|
|
|
- if (ObjectUtil.isNotEmpty(pIds)) {
|
|
|
- List<ProductionProcessesVo> processes = productionProcessesMapper.getProcessesByProductId(IWrapper.getWrapper().in("pi.id", pIds));
|
|
|
- processesMap = processes.stream().collect(Collectors.groupingBy(ProductionProcessesVo::getProductId));
|
|
|
- }
|
|
|
+ List<ContractProductBom> rawMaterialBom = contractProductBomService.list(q -> q
|
|
|
+ .in(ContractProductBom::getContractProductId, cdIds)
|
|
|
+ .eq(ContractProductBom::getType, 1)
|
|
|
+ );
|
|
|
+ List<ContractProductBomVo> contractProductBomVoList = BeanUtil.copyToList(rawMaterialBom, ContractProductBomVo.class);
|
|
|
+ productInfoService.attributeAssign(contractProductBomVoList, ContractProductBomVo::getMaterialId, (item, rawMaterial) -> {
|
|
|
+ item.setProductCode(rawMaterial.getCustomCode());
|
|
|
+ item.setProductName(rawMaterial.getName());
|
|
|
+ item.setProductLength(rawMaterial.getLength());
|
|
|
+ item.setProductWidth(rawMaterial.getWidth());
|
|
|
+ item.setProductHeight(rawMaterial.getHeight());
|
|
|
+ });
|
|
|
+ Map<Long, ContractProductBomVo> rawMaterialMap = contractProductBomVoList.stream().collect(Collectors.toMap(ContractProductBomVo::getContractProductId, Function.identity()));
|
|
|
+
|
|
|
+
|
|
|
+// //赋值工序列表
|
|
|
+// Map<Long, List<ProductionProcessesVo>> processesMap = new HashMap<>();
|
|
|
+// if (ObjectUtil.isNotEmpty(pIds)) {
|
|
|
+// List<ProductionProcessesVo> processes = productionProcessesMapper.getProcessesByProductId(IWrapper.getWrapper().in("pi.id", pIds));
|
|
|
+// processesMap = processes.stream().collect(Collectors.groupingBy(ProductionProcessesVo::getProductId));
|
|
|
+// }
|
|
|
+
|
|
|
+ //获取生产进度列表
|
|
|
+ List<Long> tIds = records.stream().map(ProductionOrderDetail::getId).collect(Collectors.toList());
|
|
|
+ List<ProductionTaskProgressVo> productionTaskProgressList = productionTaskProgressMapper.getList(IWrapper.<ProductionTaskProgress>getWrapper()
|
|
|
+ .in("ptp.task_id", tIds)
|
|
|
+ );
|
|
|
+ Map<Long, List<ProductionTaskProgressVo>> productionTaskProgressMap = productionTaskProgressList
|
|
|
+ .stream().collect(Collectors.groupingBy(ProductionTaskProgress::getTaskId));
|
|
|
|
|
|
|
|
|
for (ProductionOrderDetailVo record : records) {
|
|
@@ -105,13 +140,13 @@ public class ProduceOrderDetailServiceImpl extends ServiceImpl<ProduceOrderDetai
|
|
|
record.setProductLength(product.getLength());
|
|
|
record.setProductWidth(product.getWidth());
|
|
|
record.setProductHeight(product.getHeight());
|
|
|
+ }
|
|
|
|
|
|
- //赋值原材料信息
|
|
|
- ProductInfo rawMaterial = rawMaterialMap.get(product.getRawMaterialId());
|
|
|
- if (ObjectUtil.isNotEmpty(rawMaterial)) {
|
|
|
- record.setRawMaterialCode(rawMaterial.getCustomCode());
|
|
|
- record.setRawMaterialName(rawMaterial.getName());
|
|
|
- }
|
|
|
+ //赋值原材料信息
|
|
|
+ ContractProductBomVo rawMaterial = rawMaterialMap.get(record.getContractDetailId());
|
|
|
+ if (ObjectUtil.isNotEmpty(rawMaterial)) {
|
|
|
+ record.setRawMaterialCode(rawMaterial.getProductCode());
|
|
|
+ record.setRawMaterialName(rawMaterial.getProductName());
|
|
|
}
|
|
|
|
|
|
//赋值生产用时
|
|
@@ -123,12 +158,66 @@ public class ProduceOrderDetailServiceImpl extends ServiceImpl<ProduceOrderDetai
|
|
|
record.setUsageTime(usageTime / 1000 / 60 / 60);
|
|
|
}
|
|
|
|
|
|
- //赋值工序列表
|
|
|
- List<ProductionProcessesVo> productionProcessesVo = processesMap.get(record.getProductId());
|
|
|
- record.setProductionProcessesList(productionProcessesVo);
|
|
|
+// //赋值工序列表
|
|
|
+// List<ProductionProcessesVo> productionProcessesVo = processesMap.get(record.getProductId());
|
|
|
+// record.setProductionProcessesList(productionProcessesVo);
|
|
|
+
|
|
|
+ //赋值生产进度列表
|
|
|
+ record.setProductionTaskProgressList(productionTaskProgressMap.get(record.getId()));
|
|
|
}
|
|
|
|
|
|
return page;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public ProductionOrderDetailVo detail(ProductionTaskDetailDto dto) {
|
|
|
+ ProductionOrderDetailVo detail = BeanUtil.copyProperties(getById(dto.getId()), ProductionOrderDetailVo.class);
|
|
|
+ Assert.notEmpty(detail, "查询不到任务明细信息!");
|
|
|
+ //赋值产品信息
|
|
|
+ ProductInfo product = productInfoService.getById(detail.getProductId());
|
|
|
+ if (ObjectUtil.isNotEmpty(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());
|
|
|
+ }
|
|
|
+ //赋值原材料信息
|
|
|
+ ContractProductBom rawMaterialBom = contractProductBomService.getOne(q -> q
|
|
|
+ .eq(ContractProductBom::getContractProductId, detail.getContractDetailId())
|
|
|
+ .eq(ContractProductBom::getType, 1)
|
|
|
+ );
|
|
|
+ if (ObjectUtil.isNotEmpty(rawMaterialBom)) {
|
|
|
+ ProductInfo rawMaterial = productInfoService.getById(rawMaterialBom.getMaterialId());
|
|
|
+ if (ObjectUtil.isNotEmpty(rawMaterial)) {
|
|
|
+ detail.setRawMaterialCode(rawMaterial.getCustomCode());
|
|
|
+ detail.setRawMaterialName(rawMaterial.getName());
|
|
|
+ detail.setRawMaterialLength(rawMaterial.getLength());
|
|
|
+ detail.setRawMaterialWidth(rawMaterial.getWidth());
|
|
|
+ detail.setRawMaterialHeight(rawMaterial.getHeight());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //赋值BOM信息
|
|
|
+ List<ContractProductBom> bomList = contractProductBomService.list(q -> q
|
|
|
+ .eq(ContractProductBom::getContractProductId, detail.getContractDetailId())
|
|
|
+ .ne(ContractProductBom::getType, 1)
|
|
|
+ );
|
|
|
+ List<ContractProductBomVo> bomVoList = BeanUtil.copyToList(bomList, ContractProductBomVo.class);
|
|
|
+ productInfoService.attributeAssign(bomVoList, ContractProductBomVo::getMaterialId, (item, product1) -> {
|
|
|
+ item.setProductCode(product1.getCustomCode());
|
|
|
+ item.setProductName(product1.getName());
|
|
|
+ });
|
|
|
+ detail.setContractProductBomList(bomVoList);
|
|
|
+
|
|
|
+ //赋值生产进度列表
|
|
|
+ List<ProductionTaskProgressVo> productionTaskProgressList = productionTaskProgressMapper.getList(IWrapper.<ProductionTaskProgress>getWrapper()
|
|
|
+ .eq("ptp.task_id", detail.getId())
|
|
|
+ );
|
|
|
+ detail.setProductionTaskProgressList(productionTaskProgressList);
|
|
|
+
|
|
|
+ return detail;
|
|
|
+ }
|
|
|
+
|
|
|
}
|