1、仿真任务置信度统计

2、仿真任务难度系数统计
This commit is contained in:
2025-12-17 15:50:57 +08:00
parent 73daea29e5
commit 07df9a4f7c
5 changed files with 114 additions and 15 deletions

View File

@@ -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();
}
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -75,4 +75,6 @@ public interface ITaskService {
SdmResponse getTaskConfidenceStatistics();
SdmResponse getTaskDifficultStatistics();
}

View File

@@ -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<SimulationNode> disciplineNodeList = nodeService.lambdaQuery().eq(SimulationNode::getNodeType, NodeTypeEnum.DISCIPLINE.getValue()).list();
if (CollectionUtils.isEmpty(disciplineNodeList)) {
log.error("仿真任务置信度统计时未查询到学科类型的节点");
return SdmResponse.success(new ArrayList<>());
}
Map<String, String> disciplineMap = disciplineNodeList.stream().collect(Collectors.toMap(SimulationNode::getUuid, SimulationNode::getNodeCode));
// 查询所有任务再通过tag6去过滤兼容多层级学科的情况
List<SimulationTask> allTaskList= simulationTaskService.lambdaQuery().list();
List<SimulationTask> 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<String,List<SimulationTask>> taskMap = Map.of();
Map<String,List<SimulationTask>> 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<SimulationNode> disciplineNodeList = nodeService.lambdaQuery().eq(SimulationNode::getNodeType, NodeTypeEnum.DISCIPLINE.getValue()).list();
if (CollectionUtils.isEmpty(disciplineNodeList)) {
log.error("仿真任务置信度统计时未查询到学科类型的节点");
return SdmResponse.success(new ArrayList<>());
}
Map<String, String> disciplineMap = disciplineNodeList.stream().collect(Collectors.toMap(SimulationNode::getUuid, SimulationNode::getNodeName));
List<TaskConfidenceStatisticsResp> taskConfidenceStatisticsRespList = new ArrayList<>();
for (Map.Entry<String, List<SimulationTask>> 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<SimulationTask> 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<SimulationTask> 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<String,List<SimulationTask>> taskMap = new HashMap<>();
String currentDisciplineNodeId;
for (SimulationTask task : allTaskList) {
String relateTaskDisciplineNodeId = task.getTag6();
if (StringUtils.isBlank(relateTaskDisciplineNodeId)) {
continue;
}
List<String> relateTaskDisciplineNodeIdList = Arrays.stream(relateTaskDisciplineNodeId.split(",")).toList();
currentDisciplineNodeId = relateTaskDisciplineNodeIdList.get(relateTaskDisciplineNodeIdList.size() - 1);
if (CollectionUtils.isEmpty(taskMap.get(currentDisciplineNodeId))) {
List<SimulationTask> 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<SimulationNode> disciplineNodeList = nodeService.lambdaQuery().eq(SimulationNode::getNodeType, NodeTypeEnum.DISCIPLINE.getValue()).list();
if (CollectionUtils.isEmpty(disciplineNodeList)) {
log.error("仿真任务难度系数统计时未查询到学科类型的节点");
return SdmResponse.success(new ArrayList<>());
}
Map<String, String> disciplineMap = disciplineNodeList.stream().collect(Collectors.toMap(SimulationNode::getUuid, SimulationNode::getNodeName));
List<TaskDifficultStatisticsResp> taskDifficultStatisticsRespList = new ArrayList<>();
for (Map.Entry<String, List<SimulationTask>> entry : taskMap.entrySet()) {
String disciplineNodeId = entry.getKey();
String disciplineNodeName = disciplineMap.get(disciplineNodeId);
if (StringUtils.isBlank(disciplineNodeName)) {
log.error("disciplineNodeId为{},未匹配到学科名称",disciplineNodeId);
continue;
}
List<SimulationTask> 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);
}
}