1、任务执行中,只查询当前用户为仿真执行人的任务数据
This commit is contained in:
@@ -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<>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user