diff --git a/project/src/main/java/com/sdm/project/model/vo/SpdmNewTaskVo.java b/project/src/main/java/com/sdm/project/model/vo/SpdmNewTaskVo.java index ea0c8934..5365307f 100644 --- a/project/src/main/java/com/sdm/project/model/vo/SpdmNewTaskVo.java +++ b/project/src/main/java/com/sdm/project/model/vo/SpdmNewTaskVo.java @@ -218,6 +218,10 @@ public class SpdmNewTaskVo extends BaseEntity { private String phaseName; + private String machineName; + + private String workspaceName; + private String disciplineName; private String imageFileId = ""; diff --git a/project/src/main/java/com/sdm/project/model/vo/SpdmTaskDetailVo.java b/project/src/main/java/com/sdm/project/model/vo/SpdmTaskDetailVo.java index 00fa7a36..679db773 100644 --- a/project/src/main/java/com/sdm/project/model/vo/SpdmTaskDetailVo.java +++ b/project/src/main/java/com/sdm/project/model/vo/SpdmTaskDetailVo.java @@ -165,4 +165,17 @@ public class SpdmTaskDetailVo extends BaseEntity { * 军令状时间 */ private String commitmentDeadline; + + private String discipline; + + private String tag1Code; + private String tag2Code; + private String tag3Code; + private String tag4Code; + private String tag5Code; + private String tag6Code; + private String tag7Code; + private String tag8Code; + private String tag9Code; + private String tag10Code; } diff --git a/project/src/main/java/com/sdm/project/service/impl/TaskServiceImpl.java b/project/src/main/java/com/sdm/project/service/impl/TaskServiceImpl.java index 9d8bea7d..795c7164 100644 --- a/project/src/main/java/com/sdm/project/service/impl/TaskServiceImpl.java +++ b/project/src/main/java/com/sdm/project/service/impl/TaskServiceImpl.java @@ -81,6 +81,7 @@ import javax.annotation.Resource; import java.io.File; import java.text.SimpleDateFormat; import java.util.*; +import java.util.function.Consumer; import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -2934,6 +2935,32 @@ public class TaskServiceImpl implements ITaskService { return SdmResponse.success(resultResponse); } + /** + * 通用节点信息赋值方法 + * @param nodeMap 提前查出来的所有节点信息map + * @param nodeKey 从nodeMap取节点的key(newTag1/newTag2等) + * @param nameSetter 名称字段的setter(如setProjectName) + * @param tagSetter 标签字段的setter(如setTag1) + * @param codeSetter 编码字段的setter(如setTag1Code) + */ + private void setNodeInfo(Map nodeMap, String nodeKey, + Consumer nameSetter, + Consumer tagSetter, + Consumer codeSetter) { + // 1. 判空key:避免nodeMap.get(null),同时node为null直接返回 + if (ObjectUtils.isEmpty(nodeKey)) { + return; + } + SimulationNode node = nodeMap.get(nodeKey); + if (node == null) { + return; + } + // 2. 统一赋值 + nameSetter.accept(node.getNodeName()); + tagSetter.accept(node.getNodeName()); + codeSetter.accept(node.getNodeCode()); + } + @Override public SdmResponse getTaskListByDemandId(SpdmTaskListReq req) { SdmResponse taskRespond = list(req); @@ -2947,8 +2974,57 @@ public class TaskServiceImpl implements ITaskService { jsonObject.put("data", new ArrayList<>()); return SdmResponse.success(jsonObject); } + + // 取出任务所关联的所有节点id + Set nodeIdSet = taskVoList.stream() + // 把每个对象的10个tag字段转成流 + .flatMap(vo -> Stream.of( + vo.getTag1(), vo.getTag2(), vo.getTag3(), vo.getTag4(), vo.getTag5(), + vo.getTag6(), vo.getTag7(), vo.getTag8(), vo.getTag9(), vo.getTag10() + )) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + // 初始化空Map,避免空指针 + Map nodeMap = Collections.emptyMap(); + if (CollectionUtils.isNotEmpty(nodeIdSet)) { + nodeMap = nodeService.lambdaQuery() + .in(SimulationNode::getUuid, nodeIdSet) + .list() // 查询列表,允许为空 + .stream() + .collect(Collectors.toMap( + SimulationNode::getUuid, + Function.identity(), + (oldVal, newVal) -> newVal + )); + } + + // 遍历任务列表,批量赋值节点信息 + for (SpdmNewTaskVo spdmNewTaskVo : taskVoList) { + // 1. 项目信息(newTag1 → projectName/tag1/tag1Code) + setNodeInfo(nodeMap, spdmNewTaskVo.getNewTag1(), + spdmNewTaskVo::setProjectName, + spdmNewTaskVo::setTag1, + spdmNewTaskVo::setTag1Code); + // 2. 阶段信息(newTag2 → phaseName/tag2/tag2Code) + setNodeInfo(nodeMap, spdmNewTaskVo.getNewTag2(), + spdmNewTaskVo::setPhaseName, + spdmNewTaskVo::setTag2, + spdmNewTaskVo::setTag2Code); + // 3. 机台信息(newTag4 → machineName/tag4/tag4Code) + setNodeInfo(nodeMap, spdmNewTaskVo.getNewTag4(), + spdmNewTaskVo::setMachineName, + spdmNewTaskVo::setTag4, + spdmNewTaskVo::setTag4Code); + // 4. 工位信息(newTag5 → workspaceName/tag5/tag5Code) + setNodeInfo(nodeMap, spdmNewTaskVo.getNewTag5(), + spdmNewTaskVo::setWorkspaceName, + spdmNewTaskVo::setTag5, + spdmNewTaskVo::setTag5Code); + } + taskVoList.forEach(task -> { SpdmNodeVo phaseNode = nodeMapper.getNodeById(task.getNewTag2()); + if (phaseNode != null) { task.setPhaseName(phaseNode.getNodeName()); task.setTag2(phaseNode.getNodeName());