diff --git a/project/src/main/java/com/sdm/project/dao/SimulationTaskMapper.java b/project/src/main/java/com/sdm/project/dao/SimulationTaskMapper.java index 627dbc92..e105d5c7 100644 --- a/project/src/main/java/com/sdm/project/dao/SimulationTaskMapper.java +++ b/project/src/main/java/com/sdm/project/dao/SimulationTaskMapper.java @@ -82,4 +82,12 @@ public interface SimulationTaskMapper extends BaseMapper { void saveBatchTaskMember(@Param("list") List taskMembersToCreate); void saveBatchTaskAttention(@Param("list") List taskAttentionsToCreate); + + List taskListByTag(@Param("req") SpdmAnalysisTaskListReq req, @Param("tenantId") Long tenantId, @Param("allNodeIdList") List allNodeIdList, @Param("pos") int pos, @Param("limit") int limit,@Param("userId") Long userId + , @Param("tag1KeyList") List tag1KeyList, @Param("tag2KeyList") List tag2KeyList + , @Param("tag3KeyList") List tag3KeyList, @Param("tag4KeyList") List tag4KeyList + , @Param("tag5KeyList") List tag5KeyList, @Param("tag6KeyList") List tag6KeyList + , @Param("tag7KeyList") List tag7KeyList, @Param("tag8KeyList") List tag8KeyList + , @Param("tag9KeyList") List tag9KeyList, @Param("tag10KeyList") List tag10KeyList); + } diff --git a/project/src/main/java/com/sdm/project/model/req/SpdmAnalysisPerformanceListReq.java b/project/src/main/java/com/sdm/project/model/req/SpdmAnalysisPerformanceListReq.java index 287078e8..7922359b 100644 --- a/project/src/main/java/com/sdm/project/model/req/SpdmAnalysisPerformanceListReq.java +++ b/project/src/main/java/com/sdm/project/model/req/SpdmAnalysisPerformanceListReq.java @@ -3,6 +3,7 @@ package com.sdm.project.model.req; import com.baomidou.mybatisplus.annotation.TableField; import com.sdm.common.entity.ExportExcelFormat; import com.sdm.common.entity.pojo.BaseEntity; +import com.sdm.common.entity.req.data.TagReq; import com.sdm.common.entity.req.task.TaskExportExcelParam; import io.swagger.annotations.ApiModelProperty; import io.swagger.v3.oas.annotations.media.Schema; @@ -90,5 +91,11 @@ public class SpdmAnalysisPerformanceListReq extends BaseEntity { private String runId; + /** + * 标签请求参数 设置tag1-tag10 ,taskId, runId记录文件所属节点信息 + */ + @Schema(description = "标签请求参数") + private TagReq tagReq; + } diff --git a/project/src/main/java/com/sdm/project/model/req/SpdmAnalysisRunListReq.java b/project/src/main/java/com/sdm/project/model/req/SpdmAnalysisRunListReq.java index 31856f05..bc5cfde1 100644 --- a/project/src/main/java/com/sdm/project/model/req/SpdmAnalysisRunListReq.java +++ b/project/src/main/java/com/sdm/project/model/req/SpdmAnalysisRunListReq.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; import com.sdm.common.entity.ExportExcelFormat; import com.sdm.common.entity.pojo.BaseEntity; +import com.sdm.common.entity.req.data.TagReq; import com.sdm.common.entity.req.task.TaskExportExcelParam; import io.swagger.annotations.ApiModelProperty; import io.swagger.v3.oas.annotations.media.Schema; @@ -94,4 +95,10 @@ public class SpdmAnalysisRunListReq extends BaseEntity { private String reportTemplate; private String reportContent; + + /** + * 标签请求参数 设置tag1-tag10 ,taskId, runId记录文件所属节点信息 + */ + @Schema(description = "标签请求参数") + private TagReq tagReq; } diff --git a/project/src/main/java/com/sdm/project/model/req/SpdmAnalysisTaskListReq.java b/project/src/main/java/com/sdm/project/model/req/SpdmAnalysisTaskListReq.java index 008490a3..9de2b25c 100644 --- a/project/src/main/java/com/sdm/project/model/req/SpdmAnalysisTaskListReq.java +++ b/project/src/main/java/com/sdm/project/model/req/SpdmAnalysisTaskListReq.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.sdm.common.entity.ExportExcelFormat; import com.sdm.common.entity.pojo.BaseEntity; +import com.sdm.common.entity.req.data.TagReq; import com.sdm.common.entity.req.task.TaskExportExcelParam; import io.swagger.annotations.ApiModelProperty; import io.swagger.v3.oas.annotations.media.Schema; @@ -148,4 +149,10 @@ public class SpdmAnalysisTaskListReq extends BaseEntity { private String reportContent; + /** + * 标签请求参数 设置tag1-tag10 ,taskId, runId记录文件所属节点信息 + */ + @Schema(description = "标签请求参数") + private TagReq tagReq; + } 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 f989b883..df799a56 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 @@ -1787,6 +1787,206 @@ public class TaskServiceImpl implements ITaskService { int limit = req.getSize(); Long tenantId = ThreadLocalContext.getTenantId(); Long userId = ThreadLocalContext.getUserId(); + + TagReq tagReq = req.getTagReq(); + if (ObjectUtils.isEmpty(tagReq)){ + log.info("tagReq为空"); + return oldAnalysisTaskList(req); + } + // key可能为多个,根据逗号转化为集合 + List tag1KeyList = new ArrayList<>(); + List tag2KeyList = new ArrayList<>(); + List tag3KeyList = new ArrayList<>(); + List tag4KeyList = new ArrayList<>(); + List tag5KeyList = new ArrayList<>(); + List tag6KeyList = new ArrayList<>(); + List tag7KeyList = new ArrayList<>(); + List tag8KeyList = new ArrayList<>(); + List tag9KeyList = new ArrayList<>(); + List tag10KeyList = new ArrayList<>(); + String tag1Key = tagReq.getTag1(); + if (StringUtils.isNotBlank(tag1Key)) { + tag1KeyList = Arrays.stream(tag1Key.split(",")).toList(); + } + String tag2Key = tagReq.getTag2(); + if (StringUtils.isNotBlank(tag2Key)) { + tag2KeyList = Arrays.stream(tag2Key.split(",")).toList(); + } + String tag3Key = tagReq.getTag3(); + if (StringUtils.isNotBlank(tag3Key)) { + tag3KeyList = Arrays.stream(tag3Key.split(",")).toList(); + } + String tag4Key = tagReq.getTag4(); + if (StringUtils.isNotBlank(tag4Key)) { + tag4KeyList = Arrays.stream(tag4Key.split(",")).toList(); + } + String tag5Key = tagReq.getTag5(); + if (StringUtils.isNotBlank(tag5Key)) { + tag5KeyList = Arrays.stream(tag5Key.split(",")).toList(); + } + String tag6Key = tagReq.getTag6(); + if (StringUtils.isNotBlank(tag6Key)) { + tag6KeyList = Arrays.stream(tag6Key.split(",")).toList(); + } + String tag7Key = tagReq.getTag7(); + if (StringUtils.isNotBlank(tag7Key)) { + tag7KeyList = Arrays.stream(tag7Key.split(",")).toList(); + } + String tag8Key = tagReq.getTag8(); + if (StringUtils.isNotBlank(tag8Key)) { + tag8KeyList = Arrays.stream(tag8Key.split(",")).toList(); + } + String tag9Key = tagReq.getTag9(); + if (StringUtils.isNotBlank(tag9Key)) { + tag9KeyList = Arrays.stream(tag9Key.split(",")).toList(); + } + String tag10Key = tagReq.getTag10(); + if (StringUtils.isNotBlank(tag10Key)) { + tag10KeyList = Arrays.stream(tag10Key.split(",")).toList(); + } + + + + String taskNodeId = tagReq.getTaskId(); + List taskVoList; + List allTaskVoList = new ArrayList<>(); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("total", 0); + if (StringUtils.isNotBlank(taskNodeId)) { + allTaskVoList = mapper.getAnalysisTask(taskNodeId); + } else { + taskVoList = mapper.taskListByTag(req, tenantId, new ArrayList<>(), pos, limit,userId, + tag1KeyList,tag2KeyList,tag3KeyList,tag4KeyList,tag5KeyList,tag6KeyList,tag7KeyList + ,tag8KeyList,tag9KeyList,tag10KeyList); + if (CollectionUtils.isEmpty(taskVoList)) { + log.error("数据分析中未查询到任务信息"); + jsonObject.put("data", new ArrayList<>()); + return SdmResponse.success(jsonObject); + } + allTaskVoList = taskVoList; + } + if (CollectionUtils.isEmpty(allTaskVoList)) { + log.error("数据分析中未查询到任务信息"); + jsonObject.put("data", new ArrayList<>()); + return SdmResponse.success(jsonObject); + } + jsonObject.put("total", allTaskVoList.size()); + taskVoList = allTaskVoList.stream().skip((long) (req.getCurrent() - 1) * req.getSize()).limit(req.getSize()).toList(); + if (CollectionUtils.isEmpty(taskVoList)) { + log.error("数据分析中未查询到任务信息"); + jsonObject.put("data", new ArrayList<>()); + return SdmResponse.success(jsonObject); + } + List allNodeIdList = new ArrayList<>(); + for (SpdmAnalysisTaskVo spdmAnalysisTaskVo : taskVoList) { + String tag1 = spdmAnalysisTaskVo.getTag1(); + if (StringUtils.isNotBlank(tag1)) { + allNodeIdList.addAll(Arrays.stream(tag1.split(",")).toList()); + } + String tag2 = spdmAnalysisTaskVo.getTag2(); + if (StringUtils.isNotBlank(tag2)) { + allNodeIdList.addAll(Arrays.stream(tag2.split(",")).toList()); + } + String tag3 = spdmAnalysisTaskVo.getTag3(); + if (StringUtils.isNotBlank(tag3)) { + allNodeIdList.addAll(Arrays.stream(tag3.split(",")).toList()); + } + String tag4 = spdmAnalysisTaskVo.getTag4(); + if (StringUtils.isNotBlank(tag4)) { + allNodeIdList.addAll(Arrays.stream(tag4.split(",")).toList()); + } + String tag5 = spdmAnalysisTaskVo.getTag5(); + if (StringUtils.isNotBlank(tag5)) { + allNodeIdList.addAll(Arrays.stream(tag5.split(",")).toList()); + } + String tag6 = spdmAnalysisTaskVo.getTag6(); + if (StringUtils.isNotBlank(tag6)) { + allNodeIdList.addAll(Arrays.stream(tag6.split(",")).toList()); + } + String tag7 = spdmAnalysisTaskVo.getTag7(); + if (StringUtils.isNotBlank(tag7)) { + allNodeIdList.addAll(Arrays.stream(tag7.split(",")).toList()); + } + String tag8 = spdmAnalysisTaskVo.getTag8(); + if (StringUtils.isNotBlank(tag8)) { + allNodeIdList.addAll(Arrays.stream(tag8.split(",")).toList()); + } + String tag9 = spdmAnalysisTaskVo.getTag9(); + if (StringUtils.isNotBlank(tag9)) { + allNodeIdList.addAll(Arrays.stream(tag9.split(",")).toList()); + } + String tag10 = spdmAnalysisTaskVo.getTag10(); + if (StringUtils.isNotBlank(tag10)) { + allNodeIdList.addAll(Arrays.stream(tag10.split(",")).toList()); + } + } + Map nodeMap = new HashMap<>(); + if (CollectionUtils.isNotEmpty(allNodeIdList)) { + List allNodeList = projectMapper.getNodeListByNodeIdList(allNodeIdList); + nodeMap = allNodeList.stream() + .collect(Collectors.toMap( + ProjectNodePo::getUuid, // key:取uuid + Function.identity(), // value:取对象本身 + (existing, replacement) -> existing // 重复时保留已存在的(第一个)元素 + )); + } + + // 设置仿真负责人 + List taskIdList = taskVoList.stream().map(SpdmAnalysisTaskVo::getUuid).toList(); + List taskNodeMemberPoList = projectMapper.queryTaskNodeMembersByNodeIdList(taskIdList); + Map> memberMap = new HashMap<>(); + Map cidUserMap = new HashMap<>(); + if (CollectionUtils.isNotEmpty(taskNodeMemberPoList)) { + taskNodeMemberPoList = taskNodeMemberPoList.stream().filter(member -> MemberTypeEnum.PRINCIPAL.getCode().equals(member.getType())).toList(); + if (CollectionUtils.isNotEmpty(taskNodeMemberPoList)) { + memberMap = taskNodeMemberPoList.stream().collect(Collectors.groupingBy(TaskNodeMemberPo::getTaskId)); + SdmResponse> cidUserResp = sysUserFeignClient.listUserByIds(UserQueryReq.builder() + .userIds(taskNodeMemberPoList.stream().map(TaskNodeMemberPo::getUserId).toList()).build()); + List cidUserRespList; + if (cidUserResp.isSuccess() && CollectionUtils.isNotEmpty(cidUserRespList = cidUserResp.getData())) { + cidUserMap = cidUserRespList.stream().collect(Collectors.toMap(CIDUserResp::getUserId, CIDUserResp::getNickname)); + } + } + } + ProjectNodePo eachProjectNodePo; + List eachTaskNodeMemberPoList; + for (SpdmAnalysisTaskVo task : taskVoList) { + eachProjectNodePo = nodeMap.get(task.getNodeId()); + ProjectNodePo phaseNode = nodeMap.get(task.getTag2()); + if (phaseNode != null) { + task.setPhaseName(phaseNode.getNodeName()); + } + ProjectNodePo projectNode = nodeMap.get(task.getTag1()); + if (projectNode != null) { + task.setProjectName(projectNode.getNodeName()); + } + if (eachProjectNodePo != null && NodeTypeEnum.DISCIPLINE.getValue().equals(eachProjectNodePo.getNodeType())) { + task.setDisciplineName(eachProjectNodePo.getNodeName()); + } + eachTaskNodeMemberPoList = memberMap.get(task.getUuid()); + if (CollectionUtils.isNotEmpty(eachTaskNodeMemberPoList) && MapUtils.isNotEmpty(cidUserMap)) { + List nickNameList = new ArrayList<>(); + for (TaskNodeMemberPo taskNodeMemberPo : eachTaskNodeMemberPoList) { + String nickName = cidUserMap.get(taskNodeMemberPo.getUserId()); + if (StringUtils.isBlank(nickName)) { + continue; + } + nickNameList.add(nickName); + } + task.setPMembers(String.join(",", nickNameList)); + } + } + jsonObject.put("currentPage", req.getCurrent()); + jsonObject.put("pageSize", req.getSize()); + jsonObject.put("data", taskVoList); + return SdmResponse.success(jsonObject); + } + + public SdmResponse oldAnalysisTaskList(SpdmAnalysisTaskListReq req) { + int pos = (req.getCurrent() - 1) * req.getSize(); + int limit = req.getSize(); + Long tenantId = ThreadLocalContext.getTenantId(); + Long userId = ThreadLocalContext.getUserId(); String projectNodeId = req.getProjectNodeId(); String phaseNodeId = req.getPhaseNodeId(); String machineNodeId = req.getMachineNodeId(); diff --git a/project/src/main/resources/mapper/SimulationTaskMapper.xml b/project/src/main/resources/mapper/SimulationTaskMapper.xml index adff1f5f..3cdae4f9 100644 --- a/project/src/main/resources/mapper/SimulationTaskMapper.xml +++ b/project/src/main/resources/mapper/SimulationTaskMapper.xml @@ -1034,4 +1034,412 @@ ORDER BY create_time ASC LIMIT #{offset}, #{pageSize} + + \ No newline at end of file