diff --git a/project/src/main/java/com/sdm/project/controller/SimulationTaskController.java b/project/src/main/java/com/sdm/project/controller/SimulationTaskController.java index d95c32af..0030804d 100644 --- a/project/src/main/java/com/sdm/project/controller/SimulationTaskController.java +++ b/project/src/main/java/com/sdm/project/controller/SimulationTaskController.java @@ -218,10 +218,20 @@ public class SimulationTaskController { * 仿真任务置信度统计 */ @SysLog("仿真任务置信度统计") - @PostMapping("/getTaskConfidenceStatistics") + @GetMapping("/getTaskConfidenceStatistics") @Operation(summary = "仿真任务置信度统计", description = "仿真任务置信度统计") public SdmResponse getTaskConfidenceStatistics() { return taskService.getTaskConfidenceStatistics(); } + /** + * 仿真任务难度系数统计 + */ + @SysLog("仿真任务难度系数统计") + @GetMapping("/getTaskDifficultStatistics") + @Operation(summary = "仿真任务难度系数统计", description = "仿真任务难度系数统计") + public SdmResponse getTaskDifficultStatistics() { + return taskService.getTaskDifficultStatistics(); + } + } diff --git a/project/src/main/java/com/sdm/project/model/resp/TaskConfidenceStatisticsResp.java b/project/src/main/java/com/sdm/project/model/resp/TaskConfidenceStatisticsResp.java new file mode 100644 index 00000000..ec561fd5 --- /dev/null +++ b/project/src/main/java/com/sdm/project/model/resp/TaskConfidenceStatisticsResp.java @@ -0,0 +1,11 @@ +package com.sdm.project.model.resp; + +import lombok.Data; + +@Data +public class TaskConfidenceStatisticsResp { + private String discipline; + private String taskName; + private String taskCode; + private float confidence; +} diff --git a/project/src/main/java/com/sdm/project/model/resp/TaskDifficultStatisticsResp.java b/project/src/main/java/com/sdm/project/model/resp/TaskDifficultStatisticsResp.java new file mode 100644 index 00000000..959ee180 --- /dev/null +++ b/project/src/main/java/com/sdm/project/model/resp/TaskDifficultStatisticsResp.java @@ -0,0 +1,11 @@ +package com.sdm.project.model.resp; + +import lombok.Data; + +@Data +public class TaskDifficultStatisticsResp { + private String discipline; + private String taskName; + private String taskCode; + private Integer difficult; +} diff --git a/project/src/main/java/com/sdm/project/service/ITaskService.java b/project/src/main/java/com/sdm/project/service/ITaskService.java index 0465374b..8724b6a3 100644 --- a/project/src/main/java/com/sdm/project/service/ITaskService.java +++ b/project/src/main/java/com/sdm/project/service/ITaskService.java @@ -75,4 +75,6 @@ public interface ITaskService { SdmResponse getTaskConfidenceStatistics(); + SdmResponse getTaskDifficultStatistics(); + } 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 3996559f..b4972988 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 @@ -54,6 +54,8 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.atomic.AtomicReference; @@ -2389,20 +2391,14 @@ public class TaskServiceImpl implements ITaskService { @Override public SdmResponse getTaskConfidenceStatistics() { - // 查询所有学科节点 - List disciplineNodeList = nodeService.lambdaQuery().eq(SimulationNode::getNodeType, NodeTypeEnum.DISCIPLINE.getValue()).list(); - if (CollectionUtils.isEmpty(disciplineNodeList)) { - log.error("仿真任务置信度统计时未查询到学科类型的节点"); - return SdmResponse.success(new ArrayList<>()); - } - Map disciplineMap = disciplineNodeList.stream().collect(Collectors.toMap(SimulationNode::getUuid, SimulationNode::getNodeCode)); // 查询所有任务,再通过tag6去过滤,兼容多层级学科的情况 - List allTaskList= simulationTaskService.lambdaQuery().list(); + List allTaskList= simulationTaskService.lambdaQuery().eq(SimulationTask::getExeStatus,TaskExeStatusEnum.COMPLETED.getCode()) + .isNotNull(SimulationTask::getConfidence).list(); if (CollectionUtils.isEmpty(allTaskList)) { log.error("仿真任务置信度统计时未查询到任务"); return SdmResponse.success(new ArrayList<>()); } - Map> taskMap = Map.of(); + Map> taskMap = new HashMap<>(); String currentDisciplineNodeId; for (SimulationTask task : allTaskList) { String relateTaskDisciplineNodeId = task.getTag6(); @@ -2423,6 +2419,14 @@ public class TaskServiceImpl implements ITaskService { log.error("仿真任务置信度统计时未查询到关联学科的任务"); return SdmResponse.success(new ArrayList<>()); } + // 查询所有学科节点 + List disciplineNodeList = nodeService.lambdaQuery().eq(SimulationNode::getNodeType, NodeTypeEnum.DISCIPLINE.getValue()).list(); + if (CollectionUtils.isEmpty(disciplineNodeList)) { + log.error("仿真任务置信度统计时未查询到学科类型的节点"); + return SdmResponse.success(new ArrayList<>()); + } + Map disciplineMap = disciplineNodeList.stream().collect(Collectors.toMap(SimulationNode::getUuid, SimulationNode::getNodeName)); + List taskConfidenceStatisticsRespList = new ArrayList<>(); for (Map.Entry> entry : taskMap.entrySet()) { String disciplineNodeId = entry.getKey(); String disciplineNodeName = disciplineMap.get(disciplineNodeId); @@ -2430,14 +2434,75 @@ public class TaskServiceImpl implements ITaskService { log.error("disciplineNodeId为:{},未匹配到学科名称",disciplineNodeId); continue; } - // 对置信度进行计算 List taskList = entry.getValue(); - taskList.stream().filter(task -> StringUtils.isNotBlank(task.getConfidence())) - .mapToInt(task -> Integer.parseInt(task.getConfidence())); - + for (SimulationTask simulationTask : taskList) { + TaskConfidenceStatisticsResp taskConfidenceStatisticsResp = new TaskConfidenceStatisticsResp(); + taskConfidenceStatisticsResp.setDiscipline(disciplineMap.get(disciplineNodeId)); + taskConfidenceStatisticsResp.setTaskName(simulationTask.getTaskName()); + taskConfidenceStatisticsResp.setTaskCode(simulationTask.getTaskCode()); + taskConfidenceStatisticsResp.setConfidence(Float.parseFloat(simulationTask.getConfidence())); + taskConfidenceStatisticsRespList.add(taskConfidenceStatisticsResp); + } } + return SdmResponse.success(taskConfidenceStatisticsRespList); + } - return null; + @Override + public SdmResponse getTaskDifficultStatistics() { + // 查询所有任务,再通过tag6去过滤,兼容多层级学科的情况 + List allTaskList= simulationTaskService.lambdaQuery().eq(SimulationTask::getExeStatus,TaskExeStatusEnum.COMPLETED.getCode()) + .isNotNull(SimulationTask::getDifficult).list(); + if (CollectionUtils.isEmpty(allTaskList)) { + log.error("仿真任务难度系数统计时未查询到任务"); + return SdmResponse.success(new ArrayList<>()); + } + Map> taskMap = new HashMap<>(); + String currentDisciplineNodeId; + for (SimulationTask task : allTaskList) { + String relateTaskDisciplineNodeId = task.getTag6(); + if (StringUtils.isBlank(relateTaskDisciplineNodeId)) { + continue; + } + List relateTaskDisciplineNodeIdList = Arrays.stream(relateTaskDisciplineNodeId.split(",")).toList(); + currentDisciplineNodeId = relateTaskDisciplineNodeIdList.get(relateTaskDisciplineNodeIdList.size() - 1); + if (CollectionUtils.isEmpty(taskMap.get(currentDisciplineNodeId))) { + List relateTaskList = new ArrayList<>(); + relateTaskList.add(task); + taskMap.put(currentDisciplineNodeId,relateTaskList); + }else { + taskMap.get(currentDisciplineNodeId).add(task); + } + } + if (MapUtils.isEmpty(taskMap)) { + log.error("仿真任务难度系数统计时未查询到关联学科的任务"); + return SdmResponse.success(new ArrayList<>()); + } + // 查询所有学科节点 + List disciplineNodeList = nodeService.lambdaQuery().eq(SimulationNode::getNodeType, NodeTypeEnum.DISCIPLINE.getValue()).list(); + if (CollectionUtils.isEmpty(disciplineNodeList)) { + log.error("仿真任务难度系数统计时未查询到学科类型的节点"); + return SdmResponse.success(new ArrayList<>()); + } + Map disciplineMap = disciplineNodeList.stream().collect(Collectors.toMap(SimulationNode::getUuid, SimulationNode::getNodeName)); + List taskDifficultStatisticsRespList = new ArrayList<>(); + for (Map.Entry> entry : taskMap.entrySet()) { + String disciplineNodeId = entry.getKey(); + String disciplineNodeName = disciplineMap.get(disciplineNodeId); + if (StringUtils.isBlank(disciplineNodeName)) { + log.error("disciplineNodeId为:{},未匹配到学科名称",disciplineNodeId); + continue; + } + List taskList = entry.getValue(); + for (SimulationTask simulationTask : taskList) { + TaskDifficultStatisticsResp taskDifficultStatisticsResp = new TaskDifficultStatisticsResp(); + taskDifficultStatisticsResp.setDiscipline(disciplineMap.get(disciplineNodeId)); + taskDifficultStatisticsResp.setTaskName(simulationTask.getTaskName()); + taskDifficultStatisticsResp.setTaskCode(simulationTask.getTaskCode()); + taskDifficultStatisticsResp.setDifficult(simulationTask.getDifficult().intValue()); + taskDifficultStatisticsRespList.add(taskDifficultStatisticsResp); + } + } + return SdmResponse.success(taskDifficultStatisticsRespList); } }