From 5b936a1d6cd50362e589217758367d596beab50a Mon Sep 17 00:00:00 2001 From: lidongyang <506508008@qq.com> Date: Mon, 19 Jan 2026 10:45:56 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E4=B8=8B=E5=8F=91=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E6=96=B0=E5=A2=9E=E5=85=B3=E6=B3=A8=E4=BA=BA?= =?UTF-8?q?=E5=8F=82=E6=95=B0=EF=BC=8C=E5=B0=86=E5=85=B3=E6=B3=A8=E4=BA=BA?= =?UTF-8?q?=E5=92=8C=E4=B8=8B=E5=8F=91=E7=9A=84=E4=BB=BB=E5=8A=A1=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E5=85=B3=E8=81=94=202=E3=80=81=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=88=97=E8=A1=A8=E4=B8=AD=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E5=88=86=E6=9E=90=E5=AD=A6=E7=A7=91=E7=9B=B8=E5=85=B3=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E5=9B=BE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project/simulation_performance_extra.sql | 3 + .../com/sdm/project/model/bo/TaskNode.java | 4 +- .../service/impl/DemandServiceImpl.java | 37 +++---- .../project/service/impl/TaskServiceImpl.java | 104 +++++++++++++++++- 4 files changed, 125 insertions(+), 23 deletions(-) create mode 100644 1-sql/2026-01-19/project/simulation_performance_extra.sql diff --git a/1-sql/2026-01-19/project/simulation_performance_extra.sql b/1-sql/2026-01-19/project/simulation_performance_extra.sql new file mode 100644 index 00000000..168a5e2f --- /dev/null +++ b/1-sql/2026-01-19/project/simulation_performance_extra.sql @@ -0,0 +1,3 @@ +ALTER TABLE simulation_performance_extra MODIFY COLUMN valueType varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL; +ALTER TABLE simulation_performance_extra MODIFY COLUMN propertyValue varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL; +ALTER TABLE simulation_performance_extra MODIFY COLUMN propertyName varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL; \ No newline at end of file diff --git a/project/src/main/java/com/sdm/project/model/bo/TaskNode.java b/project/src/main/java/com/sdm/project/model/bo/TaskNode.java index 67f9908a..7704bb09 100644 --- a/project/src/main/java/com/sdm/project/model/bo/TaskNode.java +++ b/project/src/main/java/com/sdm/project/model/bo/TaskNode.java @@ -276,7 +276,7 @@ public class TaskNode extends BaseEntity { /** * 关注人 */ -// @JsonProperty(value = "aMemberList") -// private List aMemberList; + @JsonProperty(value = "aMemberList") + private String aMemberList; } diff --git a/project/src/main/java/com/sdm/project/service/impl/DemandServiceImpl.java b/project/src/main/java/com/sdm/project/service/impl/DemandServiceImpl.java index 2150ab08..39687aee 100644 --- a/project/src/main/java/com/sdm/project/service/impl/DemandServiceImpl.java +++ b/project/src/main/java/com/sdm/project/service/impl/DemandServiceImpl.java @@ -699,25 +699,24 @@ public class DemandServiceImpl extends BaseService implements IDemandService { response = SdmResponse.failed("新增任务失败"); return response; } -// List attentionList = new ArrayList<>(); -// String curDateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); -// for (TaskNode taskNode : taskNodeList) { -// if (CollectionUtils.isEmpty(taskNode.getAMemberList())) { -// continue; -// } -// for (Long userId : taskNode.getAMemberList().stream().map(CIDUserResp::getUserId).toList()) { -// SpdmTaskAttentionReq spdmTaskAttentionReq = new SpdmTaskAttentionReq(); -// spdmTaskAttentionReq.setTaskId(taskNode.getUuid()); -// spdmTaskAttentionReq.setUserId(userId); -// spdmTaskAttentionReq.setCreateTime(curDateStr); -// spdmTaskAttentionReq.setCreator(jobNumber); -// attentionList.add(spdmTaskAttentionReq); -// } -// } -// if (CollectionUtils.isNotEmpty(attentionList)) { -// taskMapper.saveAttentionList(attentionList); -// } - + List attentionList = new ArrayList<>(); + String curDateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); + for (TaskNode taskNode : taskNodeList) { + if (StringUtils.isBlank(taskNode.getAMemberList())) { + continue; + } + for (Long userId : Arrays.stream(taskNode.getAMemberList().split(",")).map(Long::valueOf).toList()) { + SpdmTaskAttentionReq spdmTaskAttentionReq = new SpdmTaskAttentionReq(); + spdmTaskAttentionReq.setTaskId(taskNode.getUuid()); + spdmTaskAttentionReq.setUserId(userId); + spdmTaskAttentionReq.setCreateTime(curDateStr); + spdmTaskAttentionReq.setCreator(jobNumber); + attentionList.add(spdmTaskAttentionReq); + } + } + if (CollectionUtils.isNotEmpty(attentionList)) { + taskMapper.saveAttentionList(attentionList); + } taskNodeMap = taskNodeList.stream().collect(Collectors.groupingBy( TaskNode::getUuid, Collectors.collectingAndThen( 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 1f07e553..e9a157a7 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 @@ -1807,6 +1807,38 @@ public class TaskServiceImpl implements ITaskService { return SdmResponse.success(resultResponse); } String resultTagType = req.getResultTagType(); + if ("tag6".equals(resultTagType)) { + // 按tag分组统计任务状态 + Map taskStatisticsMap = new HashMap<>(); + List commonCompleteStatisticsFromTask = new ArrayList<>(); + for (SpdmTaskVo taskVo : taskList) { + CommonGetCompleteFromTaskVo commonGetCompleteFromTaskVo = new CommonGetCompleteFromTaskVo(); + commonGetCompleteFromTaskVo.setNodeName(taskVo.getDiscipline()); + commonGetCompleteFromTaskVo.setExeStatus(taskVo.getExeStatus()); + commonCompleteStatisticsFromTask.add(commonGetCompleteFromTaskVo); + } + // 统计每个tag的各种状态任务数量 + for (CommonGetCompleteFromTaskVo item : commonCompleteStatisticsFromTask) { + String name = item.getNodeName(); + CommonStatisticsVo stat = taskStatisticsMap.getOrDefault(name, new CommonStatisticsVo()); + stat.setName(name); + Map statusCount = stat.getStatusCount(); + if (statusCount == null) { + statusCount = new HashMap<>(); + stat.setStatusCount(statusCount); + } + String exeStatus = item.getExeStatus(); + allExeStatus.add(exeStatus); + statusCount.put(exeStatus, statusCount.getOrDefault(exeStatus, 0) + 1); + taskStatisticsMap.put(name, stat); + } + // 转换为列表返回 + List taskResult = new ArrayList<>(taskStatisticsMap.values()); + JSONObject resultResponse = new JSONObject(); + resultResponse.put("allExeStatus", allExeStatus); + resultResponse.put("result", taskResult); + return SdmResponse.success(resultResponse); + } List nodeIdList = new ArrayList<>(); for (SpdmTaskVo taskVo : taskList) { try { @@ -1914,8 +1946,45 @@ public class TaskServiceImpl implements ITaskService { ) )); String resultTagType = req.getResultTagType(); - List nodeIdList = new ArrayList<>(); SpdmTaskVo eachTaskVo; + List commonCompleteStatisticsFromPerformance = new ArrayList<>(); + + if ("tag6".equals(resultTagType)) { + for (PerformanceNodePo performanceNodePo : performanceList) { + eachTaskVo = taskMap.get(performanceNodePo.getTaskId()); + CommonGetCompleteFromPerformanceVo commonGetCompleteFromPerformanceVo = new CommonGetCompleteFromPerformanceVo(); + commonGetCompleteFromPerformanceVo.setNodeName(eachTaskVo.getDiscipline()); + commonGetCompleteFromPerformanceVo.setCompleteStatus(StringUtils.isNotBlank(performanceNodePo.getCompleteStatus()) ? + performanceNodePo.getCompleteStatus() : RunPerformanceStatusEnum.UNCOMPLETED.getCode()); + commonCompleteStatisticsFromPerformance.add(commonGetCompleteFromPerformanceVo); + } + // 按tag分组统计指标状态 + Map performanceStatisticsMap = new HashMap<>(); + // 统计每个tag的各种状态指标数量 + for (CommonGetCompleteFromPerformanceVo item : commonCompleteStatisticsFromPerformance) { + String nodeName = item.getNodeName(); + CommonStatisticsVo stat = performanceStatisticsMap.getOrDefault(nodeName, new CommonStatisticsVo()); + stat.setName(nodeName); + Map statusCount = stat.getStatusCount(); + if (statusCount == null) { + statusCount = new HashMap<>(); + stat.setStatusCount(statusCount); + } + String completeStatus = item.getCompleteStatus(); + allExeStatus.add(completeStatus); + statusCount.put(completeStatus, statusCount.getOrDefault(completeStatus, 0) + 1); + performanceStatisticsMap.put(nodeName, stat); + } + // 转换为列表返回 + List performanceResult = new ArrayList<>(performanceStatisticsMap.values()); + JSONObject resultResponse = new JSONObject(); + resultResponse.put("allExeStatus", allExeStatus); + resultResponse.put("result", performanceResult); + return SdmResponse.success(resultResponse); + } + + + List nodeIdList = new ArrayList<>(); for (PerformanceNodePo performanceNodePo : performanceList) { eachTaskVo = taskMap.get(performanceNodePo.getTaskId()); if (ObjectUtils.isEmpty(eachTaskVo)) { @@ -1947,7 +2016,6 @@ public class TaskServiceImpl implements ITaskService { return SdmResponse.success(resultResponse); } Map nodeMap = nodeList.stream().collect(Collectors.toMap(SpdmNodeVo::getUuid, SpdmNodeVo::getNodeName)); - List commonCompleteStatisticsFromPerformance = new ArrayList<>(); String resultTagId; String[] resultTagIdArr; for (PerformanceNodePo performanceNodePo : performanceList) { @@ -2688,6 +2756,38 @@ public class TaskServiceImpl implements ITaskService { return SdmResponse.success(resultResponse); } String resultTagType = req.getResultTagType(); + if ("tag6".equals(resultTagType)) { + // 按tag分组统计任务状态 + Map taskStatisticsMap = new HashMap<>(); + List commonCompleteStatisticsFromTask = new ArrayList<>(); + for (SpdmTaskVo taskVo : taskList) { + CommonGetCompleteFromTaskVo commonGetCompleteFromTaskVo = new CommonGetCompleteFromTaskVo(); + commonGetCompleteFromTaskVo.setNodeName(taskVo.getDiscipline()); + commonGetCompleteFromTaskVo.setExeStatus(taskVo.getExeStatus()); + commonCompleteStatisticsFromTask.add(commonGetCompleteFromTaskVo); + } + // 统计每个tag的各种状态任务数量 + for (CommonGetCompleteFromTaskVo item : commonCompleteStatisticsFromTask) { + String name = item.getNodeName(); + CommonStatisticsVo stat = taskStatisticsMap.getOrDefault(name, new CommonStatisticsVo()); + stat.setName(name); + Map statusCount = stat.getStatusCount(); + if (statusCount == null) { + statusCount = new HashMap<>(); + stat.setStatusCount(statusCount); + } + String exeStatus = item.getExeStatus(); + allAchieveStatus.add(exeStatus); + statusCount.put(exeStatus, statusCount.getOrDefault(exeStatus, 0) + 1); + taskStatisticsMap.put(name, stat); + } + // 转换为列表返回 + List taskResult = new ArrayList<>(taskStatisticsMap.values()); + JSONObject resultResponse = new JSONObject(); + resultResponse.put("allAchieveStatus", allAchieveStatus); + resultResponse.put("result", taskResult); + return SdmResponse.success(resultResponse); + } List nodeIdList = new ArrayList<>(); for (SpdmTaskVo taskVo : taskList) { try {