@@ -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 ( t ask. get Confidence() ) ) ;
for ( SimulationTask simulationTask : taskList ) {
TaskConfidenceStatisticsResp taskConfidenceStatisticsResp = new T askConfidenceStatisticsResp ( ) ;
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 ) ;
}
}