diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/TaskingMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/TaskingMapper.xml index 79f213f13..e32cb458d 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/TaskingMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/TaskingMapper.xml @@ -77,11 +77,6 @@ SELECT t.* FROM DS_TASKING t WHERE t.is_deleted = 0 --- AND NOT EXISTS ( --- SELECT 1 --- FROM DS_PART_RELATION r --- WHERE r.is_deleted = 0 --- AND r.CHILD_PART_CODE = t.PART_CODE) and TASK_STATUS = #{dsTasking.taskStatus} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskingServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskingServiceImpl.java index 1a4e81ba1..29436df52 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskingServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskingServiceImpl.java @@ -59,6 +59,8 @@ import org.springblade.desk.order.pojo.entity.MoldDemand; import org.springblade.desk.order.pojo.entity.YieldOrder; import org.springblade.desk.order.service.IMoldDemandService; import org.springblade.desk.order.service.IYieldOrderService; +import org.springblade.desk.produce.pojo.entity.WorkPlan; +import org.springblade.desk.produce.service.IPdaSaveService; import org.springblade.desk.produce.service.IWorkOrderService; import org.springblade.desk.produce.service.IWorkPlanService; import org.springblade.desk.quality.pojo.dto.PpmReportDetailDTO; @@ -80,6 +82,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; +import java.math.BigDecimal; import java.sql.Connection; import java.sql.SQLException; import java.time.LocalDate; @@ -191,6 +194,10 @@ public class DsTaskingServiceImpl extends BaseServiceImpl selectAssignList(IPage page, DsTaskingVO dsTasking) { List dsTaskingVOS = baseMapper.selectDsTaskingPage(page, dsTasking); @@ -1040,69 +1047,149 @@ public class DsTaskingServiceImpl extends BaseServiceImpl processTree = reworkBuildProcessTree(reworkProcessEntityList, processProjectEntityList, processMeasuringToolEntityList, processMoldToolEntityList); + craftTree.setProcessList(processTree); } result.getCraftList().add(craftTree); }else{ -// 没有返工工艺信息的情况 -// 创建新的工艺实体并设置返工订单号 - craft = new DsCraftEntity(); - craft.setReworkOrder(dsTaskingEntity.getReworkOrder()); - craft.setPartId(partEntity.getId()); - craft.setPartCode(partEntity.getPartCode()); - craft.setPartVersions(dsTaskingEntity.getBatchNo()); - // 创建工艺节点并设置craftInfo - craftTree.setCraftInfo(JSONObject.from(craft)); - craftTree.setProcessList(new ArrayList<>()); - result.getCraftList().add(craftTree); + // 查询零件工艺信息 + List dsCraftVOList = craftService.selectDsCraftByPartId(partEntity.getId(), "2"); + if(CollectionUtils.isEmpty(dsCraftVOList)){ + throw new ServiceException("零件工艺信息有误 请检查该零件是否有工艺信息"); + } -// // 查询零件工艺信息 -// List dsCraftVOList = craftService.selectDsCraftByPartId(partEntity.getId(), "2"); -// if(CollectionUtils.isEmpty(dsCraftVOList)){ -// throw new ServiceException("零件工艺信息有误 请检查该零件是否有工艺信息"); -// } -// -// if (!CollectionUtils.isEmpty(dsCraftVOList)) { -// for (DsCraftVO craftVO : dsCraftVOList) { -// // 每次循环创建新的craftTree对象 -// CraftTreeVO craftTree1 = new CraftTreeVO(); -// -// craftVO.setReworkOrder(dsTaskingEntity.getReworkOrder()); -// craftVO.setPartId(partEntity.getId()); -// craftVO.setPartVersions(dsTaskingEntity.getVersion()); -// -// craftTree1.setCraftInfo(JSONObject.from(craftVO)); -// -// // 查询工序信息 -// List processEntities = processService.selectDsProcessByCraftId(craftVO.getId()); -// -// if (!CollectionUtils.isEmpty(processEntities)) { -// List processIds = processEntities.stream() -// .map(DsProcessEntity::getId) -// .collect(Collectors.toList()); -// -// // 批量查询关联数据 -// List processProjectEntityList = processProjectService.selectDsProcessProjectByProcessIds(processIds); -// List processMeasuringToolEntityList = processMeasuringToolService.selectDsProcessMeasuringToolByProcessIds(processIds); -// List processMoldToolEntityList = processMoldToolService.selectDsProcessMoldToolByProcessIds(processIds); -// -// // 构建工序树 -// List processTree = buildProcessTree(processEntities, processProjectEntityList, -// processMeasuringToolEntityList, processMoldToolEntityList); -// craftTree1.setProcessList(processTree); -// } -// -// result.getCraftList().add(craftTree1); -// } -// } + if (!CollectionUtils.isEmpty(dsCraftVOList)) { + for (DsCraftVO craftVO : dsCraftVOList) { + // 查询工序信息 + List processEntities = processService.selectDsProcessByCraftId(craftVO.getId()); + // 每次循环创建新的craftTree对象 + CraftTreeVO craftTree1 = new CraftTreeVO(); + craftVO.setReworkOrder(dsTaskingEntity.getReworkOrder()); + craftVO.setPartId(partEntity.getId()); + craftVO.setPartVersions(dsTaskingEntity.getBatchNo()); + craftVO.setId(null); + craftTree1.setCraftInfo(JSONObject.from(craftVO)); + + if (!CollectionUtils.isEmpty(processEntities)) { + // 关键:将正常工序列表转换为返工工序列表 + List reworkProcessEntityList = convertToReworkProcessList(processEntities, dsTaskingEntity); + + List processIds = processEntities.stream() + .map(DsProcessEntity::getId) + .collect(Collectors.toList()); + + // 批量查询关联数据 + List processProjectEntityList = processProjectService.selectDsProcessProjectByProcessIds(processIds); + List processMeasuringToolEntityList = processMeasuringToolService.selectDsProcessMeasuringToolByProcessIds(processIds); + List processMoldToolEntityList = processMoldToolService.selectDsProcessMoldToolByProcessIds(processIds); + + // 构建工序树 + List processTree = reworkBuildProcessTree(reworkProcessEntityList, processProjectEntityList, + processMeasuringToolEntityList, processMoldToolEntityList); + + clearAllIds(processTree); + craftTree1.setProcessList(processTree); + } + + result.getCraftList().add(craftTree1); + } + } } return result; } + /** + * 清空工序树中所有ID + */ + private void clearAllIds(List processTree) { + if (CollectionUtils.isEmpty(processTree)) { + return; + } + + for (ProcessTreeVO node : processTree) { + // 清空工序信息中的id + if (node.getProcessInfo() instanceof JSONObject) { + ((JSONObject) node.getProcessInfo()).remove("id"); + } + + // 清空工装模具列表中的id + if (!CollectionUtils.isEmpty(node.getMoldToolList())) { + for (Object obj : node.getMoldToolList()) { + if (obj instanceof JSONObject) { + ((JSONObject) obj).remove("id"); + } + } + } + + // 清空尺寸量具列表中的id + if (!CollectionUtils.isEmpty(node.getMeasuringToolList())) { + for (Object obj : node.getMeasuringToolList()) { + if (obj instanceof JSONObject) { + ((JSONObject) obj).remove("id"); + } + } + } + + // 清空工序项目列表中的id + if (!CollectionUtils.isEmpty(node.getProjectList())) { + for (Object obj : node.getProjectList()) { + if (obj instanceof JSONObject) { + ((JSONObject) obj).remove("id"); + } + } + } + } + } + + /** + * 将正常工序列表转换为返工工序列表 + */ + private List convertToReworkProcessList(List processEntities, DsTaskingEntity dsTaskingEntity) { + List originalOrderProcess = pdaSaveService.getOriginalOrderProcess(dsTaskingEntity.getPartCode(), dsTaskingEntity.getBatchNo()); + // 转换为Map便于快速查找 + Map workPlanMap = new HashMap<>(); + if (!CollectionUtils.isEmpty(originalOrderProcess)) { + for (WorkPlan workPlan : originalOrderProcess) { + if (workPlan != null && workPlan.getPpsId() != null) { + workPlanMap.put(workPlan.getPpsId(), workPlan); + } + } + } + + List reworkList = new ArrayList<>(); + for (DsProcessEntity process : processEntities) { + PrReworkProcessEntity reworkProcess = new PrReworkProcessEntity(); + // 设置返工特有的属性 + reworkProcess.setId(process.getId()); + reworkProcess.setReworkCode(dsTaskingEntity.getReworkOrder()); + reworkProcess.setPartCode(dsTaskingEntity.getPartCode()); + reworkProcess.setBatchNo(dsTaskingEntity.getBatchNo()); + reworkProcess.setProcessNo(process.getProcessNo()); + reworkProcess.setPpsName(process.getProcessName()); + reworkProcess.setPpsId(process.getPpsId()); + reworkProcess.setCaId(process.getCaId()); + reworkProcess.setMakeMemo(process.getProDes()); + reworkProcess.setHourQuota(BigDecimal.valueOf(process.getProHours())); + reworkProcess.setCruxProcess(process.getIsMain()); + reworkProcess.setTrialNo(process.getTrialNo()); + reworkProcess.setCraftName(process.getCraftName()); + + // 匹配ppsId并赋值(不为空才赋值) + if (process.getPpsId() != null && workPlanMap.containsKey(process.getPpsId())) { + WorkPlan workPlan = workPlanMap.get(process.getPpsId()); + Optional.ofNullable(workPlan.getOcId()).ifPresent(reworkProcess::setOcId); + Optional.ofNullable(workPlan.getMakeTeam()).ifPresent(reworkProcess::setMakeTeam); + } + + reworkList.add(reworkProcess); + } + return reworkList; + } + @Override public boolean authorizedAccomplish(DsCraftEntity craft, List processList, List processDeleteIds, List projectIds) {