1、根据需求id,查询任务列表接口 bugfix

This commit is contained in:
2026-02-05 20:25:14 +08:00
parent 957319eab8
commit 3bac1fb17a
3 changed files with 93 additions and 0 deletions

View File

@@ -218,6 +218,10 @@ public class SpdmNewTaskVo extends BaseEntity {
private String phaseName; private String phaseName;
private String machineName;
private String workspaceName;
private String disciplineName; private String disciplineName;
private String imageFileId = ""; private String imageFileId = "";

View File

@@ -165,4 +165,17 @@ public class SpdmTaskDetailVo extends BaseEntity {
* 军令状时间 * 军令状时间
*/ */
private String commitmentDeadline; 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;
} }

View File

@@ -81,6 +81,7 @@ import javax.annotation.Resource;
import java.io.File; import java.io.File;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.function.Consumer;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
@@ -2934,6 +2935,32 @@ public class TaskServiceImpl implements ITaskService {
return SdmResponse.success(resultResponse); return SdmResponse.success(resultResponse);
} }
/**
* 通用节点信息赋值方法
* @param nodeMap 提前查出来的所有节点信息map
* @param nodeKey 从nodeMap取节点的keynewTag1/newTag2等
* @param nameSetter 名称字段的setter如setProjectName
* @param tagSetter 标签字段的setter如setTag1
* @param codeSetter 编码字段的setter如setTag1Code
*/
private void setNodeInfo(Map<String, SimulationNode> nodeMap, String nodeKey,
Consumer<String> nameSetter,
Consumer<String> tagSetter,
Consumer<String> 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 @Override
public SdmResponse getTaskListByDemandId(SpdmTaskListReq req) { public SdmResponse getTaskListByDemandId(SpdmTaskListReq req) {
SdmResponse taskRespond = list(req); SdmResponse taskRespond = list(req);
@@ -2947,8 +2974,57 @@ public class TaskServiceImpl implements ITaskService {
jsonObject.put("data", new ArrayList<>()); jsonObject.put("data", new ArrayList<>());
return SdmResponse.success(jsonObject); return SdmResponse.success(jsonObject);
} }
// 取出任务所关联的所有节点id
Set<String> 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<String, SimulationNode> 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 -> { taskVoList.forEach(task -> {
SpdmNodeVo phaseNode = nodeMapper.getNodeById(task.getNewTag2()); SpdmNodeVo phaseNode = nodeMapper.getNodeById(task.getNewTag2());
if (phaseNode != null) { if (phaseNode != null) {
task.setPhaseName(phaseNode.getNodeName()); task.setPhaseName(phaseNode.getNodeName());
task.setTag2(phaseNode.getNodeName()); task.setTag2(phaseNode.getNodeName());