1、任务执行中,只查询当前用户为仿真执行人的任务数据

This commit is contained in:
2026-01-21 18:29:23 +08:00
parent ed17fb0776
commit cb37c1e602

View File

@@ -57,6 +57,7 @@ import com.sdm.project.model.resp.KeyResultAndTaskInfoResp;
import com.sdm.project.model.resp.RunVersionInfoResp;
import com.sdm.project.model.vo.SpdmNodeVo;
import com.sdm.common.entity.resp.project.SpdmTaskVo;
import com.sdm.project.model.vo.SpdmTaskMemberVo;
import com.sdm.project.service.*;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
@@ -248,6 +249,13 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
}
String realTag = realTagObj.getKey();
String realTagId = realTagObj.getValue();
Long userId = ThreadLocalContext.getUserId();
SdmResponse<CIDUserResp> currentCidUserResp = sysUserFeignClient.queryUserDetail(UserQueryReq.builder().userId(userId).build());
if (ObjectUtils.isEmpty(currentCidUserResp.getData())) {
log.error("根据userId{},未查询到用户", userId);
return ;
}
Long curUserId = currentCidUserResp.getData().getUserId();
// 查询当前节点下任务
List<TaskNodePo> currentNodeAssociatedTaskList = new ArrayList<>();
int currentNodeDepth = getCurrentNodeDepth(projectNodePo);
@@ -266,42 +274,62 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
}).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(currentNodeAssociatedTaskList)) {
// 查询当前任务下算例
Map<String, TaskNodePo> taskMap = currentNodeAssociatedTaskList.stream().collect(Collectors.groupingBy(
TaskNodePo::getUuid,
Collectors.collectingAndThen(
Collectors.toList(),
list -> list.get(0)
)
));
if (CollectionUtils.isNotEmpty(taskTreeRunList)) {
List<RunNodePo> eachRunNodeList;
List<RunNodePo> currentTaskAssociatedRunList = taskTreeRunList.stream().filter(run -> ObjectUtils.isNotEmpty(taskMap.get(run.getTaskId()))).toList();
if (CollectionUtils.isNotEmpty(currentTaskAssociatedRunList)) {
Map<String, List<RunNodePo>> runMap = currentTaskAssociatedRunList.stream().collect(Collectors.groupingBy(RunNodePo::getTaskId));
for (TaskNodePo taskNodePo : currentNodeAssociatedTaskList) {
eachRunNodeList = runMap.get(taskNodePo.getUuid());
if (CollectionUtils.isNotEmpty(eachRunNodeList)) {
taskNodePo.getChildren().addAll(eachRunNodeList);
// 校验当前用户是否为当前任务的仿真执行人
List<SimulationTaskMember> memberList = simulationTaskMemberService.lambdaQuery().in(SimulationTaskMember::getTaskId, currentNodeAssociatedTaskList.stream().map(TaskNodePo::getUuid).toList()).list();
if (CollectionUtils.isNotEmpty(memberList)) {
List<SimulationTaskMember> taskExecutorMemberVoList = memberList.stream().filter(member -> MemberTypeEnum.EXECUTOR.getCode().equals(member.getType())).toList();
if (CollectionUtils.isNotEmpty(taskExecutorMemberVoList)) {
// 根据仿真执行人过滤任务
taskExecutorMemberVoList = taskExecutorMemberVoList.stream().filter(member -> curUserId.equals(member.getUserId())).toList();
if (CollectionUtils.isEmpty(taskExecutorMemberVoList)) {
log.error("任务列表中未查询到仿真执行人为当前用户的数据");
return ;
}
List<String> myTaskIdList = taskExecutorMemberVoList.stream().map(SimulationTaskMember::getTaskId).toList();
currentNodeAssociatedTaskList = currentNodeAssociatedTaskList.stream().filter(task -> myTaskIdList.contains(task.getUuid())).toList();
if (CollectionUtils.isNotEmpty(currentNodeAssociatedTaskList)) {
// 查询当前任务下算例
Map<String, TaskNodePo> taskMap = currentNodeAssociatedTaskList.stream().collect(Collectors.groupingBy(
TaskNodePo::getUuid,
Collectors.collectingAndThen(
Collectors.toList(),
list -> list.get(0)
)
));
if (CollectionUtils.isNotEmpty(taskTreeRunList)) {
List<RunNodePo> eachRunNodeList;
List<RunNodePo> currentTaskAssociatedRunList = taskTreeRunList.stream().filter(run -> ObjectUtils.isNotEmpty(taskMap.get(run.getTaskId()))).toList();
if (CollectionUtils.isNotEmpty(currentTaskAssociatedRunList)) {
Map<String, List<RunNodePo>> runMap = currentTaskAssociatedRunList.stream().collect(Collectors.groupingBy(RunNodePo::getTaskId));
for (TaskNodePo taskNodePo : currentNodeAssociatedTaskList) {
eachRunNodeList = runMap.get(taskNodePo.getUuid());
if (CollectionUtils.isNotEmpty(eachRunNodeList)) {
taskNodePo.getChildren().addAll(eachRunNodeList);
}
}
}
}
// 查询当前任务的负责人和执行人
for (TaskNodePo taskNodePo : currentNodeAssociatedTaskList) {
if (CollectionUtils.isNotEmpty(memberList)) {
List<Long> eUserIdList = memberList.stream().filter(member -> MemberTypeEnum.EXECUTOR.getCode().equals(member.getType())).map(SimulationTaskMember::getUserId).distinct().toList();
List<Long> pUserIdList = memberList.stream().filter(member -> MemberTypeEnum.PRINCIPAL.getCode().equals(member.getType())).map(SimulationTaskMember::getUserId).distinct().toList();
if (CollectionUtils.isNotEmpty(eUserIdList)) {
SdmResponse<List<CIDUserResp>> cidUserResp = sysUserFeignClient.listUserByIds(UserQueryReq.builder().userIds(eUserIdList).build());
taskNodePo.setEMemberList(cidUserResp.getData());
}
if (CollectionUtils.isNotEmpty(pUserIdList)) {
SdmResponse<List<CIDUserResp>> cidUserResp = sysUserFeignClient.listUserByIds(UserQueryReq.builder().userIds(pUserIdList).build());
taskNodePo.setPMemberList(cidUserResp.getData());
}
}
}
}
}else {
currentNodeAssociatedTaskList = new ArrayList<>();
}
}
// 查询当前任务的负责人和执行人
for (TaskNodePo taskNodePo : currentNodeAssociatedTaskList) {
List<SimulationTaskMember> memberList = simulationTaskMemberService.lambdaQuery().eq(SimulationTaskMember::getTaskId, taskNodePo.getUuid()).list();
if (CollectionUtils.isNotEmpty(memberList)) {
List<Long> eUserIdList = memberList.stream().filter(member -> MemberTypeEnum.EXECUTOR.getCode().equals(member.getType())).map(SimulationTaskMember::getUserId).distinct().toList();
List<Long> pUserIdList = memberList.stream().filter(member -> MemberTypeEnum.PRINCIPAL.getCode().equals(member.getType())).map(SimulationTaskMember::getUserId).distinct().toList();
if (CollectionUtils.isNotEmpty(eUserIdList)) {
SdmResponse<List<CIDUserResp>> cidUserResp = sysUserFeignClient.listUserByIds(UserQueryReq.builder().userIds(eUserIdList).build());
taskNodePo.setEMemberList(cidUserResp.getData());
}
if (CollectionUtils.isNotEmpty(pUserIdList)) {
SdmResponse<List<CIDUserResp>> cidUserResp = sysUserFeignClient.listUserByIds(UserQueryReq.builder().userIds(pUserIdList).build());
taskNodePo.setPMemberList(cidUserResp.getData());
}
}
}else {
currentNodeAssociatedTaskList = new ArrayList<>();
}
}
}