@@ -38,6 +38,7 @@ import com.sdm.common.feign.inter.system.ISysLogFeignClient;
import com.sdm.common.log.constants.ModuleConstants ;
import com.sdm.common.log.constants.OperateTypeConstants ;
import com.sdm.common.log.dto.SysLogDTO ;
import com.sdm.common.service.TagMapService ;
import com.sdm.common.utils.RandomUtil ;
import com.sdm.common.utils.SystemOperate ;
import com.sdm.common.utils.excel.ExcelUtil ;
@@ -46,6 +47,7 @@ import com.sdm.outbridge.service.lyric.LyricVProjectResourcePlanDMService;
import com.sdm.project.bo.ExportOperate ;
import com.sdm.project.common.MemberTypeEnum ;
import com.sdm.project.common.TaskExeStatusEnum ;
import com.sdm.project.common.TaskQryTypeEnum ;
import com.sdm.project.dao.SimulationDemandMapper ;
import com.sdm.project.dao.SimulationNodeMapper ;
import com.sdm.project.dao.SimulationProjectMapper ;
@@ -161,6 +163,9 @@ public class TaskServiceImpl implements ITaskService {
@Autowired
private DataClientFeignClientImpl dataFeignClient ;
@Autowired
private TagMapService tagMapService ;
// 通过标识判断是否走查询现场视图逻辑( 0不查询, 1查询)
@Value ( " ${lyricFlag:1} " )
private int lyricFlag ;
@@ -174,6 +179,12 @@ public class TaskServiceImpl implements ITaskService {
private static final float EPSILON = 1e - 6f ;
// 合并查询接口中查询任务时的参数值
public static final String MERGE_QUERY_TASK = " task " ;
// 合并查询接口中查询算例时的参数值
public static final String MERGE_QUERY_RUN = " run " ;
/**
* 预处理请求参数
@@ -778,7 +789,7 @@ public class TaskServiceImpl implements ITaskService {
// 之前同步创建的需求、任务时,创建人用的工号,这里先兼容处理下
Long creator = newTaskVo . getCreator ( ) ;
Long userId ;
if ( getDigitCount ( creator ) < LYRIC_JOB_NUMBER_LENGTH ) {
if ( creator ! = null & & getDigitCount( creator ) < LYRIC_JOB_NUMBER_LENGTH ) {
// 不足五位的前面补0
userId = usernameToUserIdMap . get ( formatUserId ( creator ) ) ;
} else {
@@ -4337,6 +4348,80 @@ public class TaskServiceImpl implements ITaskService {
return SdmResponse . success ( ) ;
}
@Override
public SdmResponse mergeQueryNode ( SpdmMergeQueryNodeReq req ) {
if ( ObjectUtils . isEmpty ( req ) | | StringUtils . isBlank ( req . getType ( ) ) ) {
return SdmResponse . failed ( " 参数不能为空 " ) ;
}
Map < String , String > tagMap = tagMapService . getTagMapValue ( ) ;
if ( MapUtils . isEmpty ( tagMap ) ) {
return SdmResponse . failed ( " 未查询到节点标签的配置 " ) ;
}
List < NodeMergeQueryResp > mergeQueryRespList = new ArrayList < > ( ) ;
// 如果是任务或算例就传: task或run, 其他的传tag1到tag10
String type = req . getType ( ) ;
if ( MERGE_QUERY_TASK . equals ( type ) | | MERGE_QUERY_RUN . equals ( type ) ) {
SpdmTaskListReq taskListReq = new SpdmTaskListReq ( ) ;
taskListReq . setType ( TaskQryTypeEnum . ALL . getCode ( ) ) ;
taskListReq . setCurrent ( 1 ) ;
taskListReq . setSize ( 10000 ) ;
TaskNodeTag taskNodeTag = new TaskNodeTag ( ) ;
taskNodeTag . setKey ( null ) ;
taskNodeTag . setValue ( " tag1 " ) ;
taskListReq . setIdMap ( Collections . singletonList ( taskNodeTag ) ) ;
SdmResponse response = list ( taskListReq ) ;
if ( ! response . isSuccess ( ) ) {
return SdmResponse . success ( Collections . emptyList ( ) ) ;
}
JSONObject dataObj = ( JSONObject ) response . getData ( ) ;
List < SpdmNewTaskVo > taskVoList = ( List < SpdmNewTaskVo > ) dataObj . get ( " data " ) ;
if ( CollectionUtils . isEmpty ( taskVoList ) ) {
return SdmResponse . success ( Collections . emptyList ( ) ) ;
}
if ( MERGE_QUERY_TASK . equals ( type ) ) {
// 查询任务
Map < String , List < SpdmNewTaskVo > > taskMap = taskVoList . stream ( ) . collect ( Collectors . groupingBy ( SpdmNewTaskVo : : getTaskName ) ) ;
for ( Map . Entry < String , List < SpdmNewTaskVo > > taskEntry : taskMap . entrySet ( ) ) {
NodeMergeQueryResp taskMergeQueryResp = new NodeMergeQueryResp ( ) ;
taskMergeQueryResp . setName ( taskEntry . getKey ( ) ) ;
taskMergeQueryResp . setValue ( taskEntry . getValue ( ) . stream ( ) . map ( SpdmNewTaskVo : : getUuid ) . toList ( ) ) ;
mergeQueryRespList . add ( taskMergeQueryResp ) ;
}
} else {
// 查询算例
SpdmAnalysisRunListReq runListReq = new SpdmAnalysisRunListReq ( ) ;
List < TaskRunPo > runPoList = projectMapper . queryRunListByNodeIdList ( taskVoList . stream ( ) . map ( SpdmNewTaskVo : : getUuid ) . toList ( ) , runListReq ) ;
if ( CollectionUtils . isEmpty ( runPoList ) ) {
return SdmResponse . success ( Collections . emptyList ( ) ) ;
}
Map < String , List < TaskRunPo > > runMap = runPoList . stream ( ) . collect ( Collectors . groupingBy ( TaskRunPo : : getRunName ) ) ;
for ( Map . Entry < String , List < TaskRunPo > > runEntry : runMap . entrySet ( ) ) {
NodeMergeQueryResp runMergeQueryResp = new NodeMergeQueryResp ( ) ;
runMergeQueryResp . setName ( runEntry . getKey ( ) ) ;
runMergeQueryResp . setValue ( runEntry . getValue ( ) . stream ( ) . map ( TaskRunPo : : getUuid ) . toList ( ) ) ;
mergeQueryRespList . add ( runMergeQueryResp ) ;
}
}
} else {
// 除了项目以外的节点都要合并查询(阶段、机台、工位)
String nodeType = tagMap . get ( type ) ;
if ( StringUtils . isBlank ( nodeType ) ) {
return SdmResponse . failed ( " 系统中没有当前节点类型:{} " , type ) ;
}
List < SimulationNode > nodeList = nodeService . lambdaQuery ( ) . eq ( SimulationNode : : getNodeType , nodeType ) . list ( ) ;
if ( CollectionUtils . isEmpty ( nodeList ) ) {
return SdmResponse . success ( Collections . emptyList ( ) ) ;
}
Map < String , List < SimulationNode > > nodeMap = nodeList . stream ( ) . collect ( Collectors . groupingBy ( SimulationNode : : getNodeName ) ) ;
for ( Map . Entry < String , List < SimulationNode > > nodeEntry : nodeMap . entrySet ( ) ) {
NodeMergeQueryResp nodeMergeQueryResp = new NodeMergeQueryResp ( ) ;
nodeMergeQueryResp . setName ( nodeEntry . getKey ( ) ) ;
nodeMergeQueryResp . setValue ( nodeEntry . getValue ( ) . stream ( ) . map ( SimulationNode : : getUuid ) . toList ( ) ) ;
mergeQueryRespList . add ( nodeMergeQueryResp ) ;
}
}
return SdmResponse . success ( mergeQueryRespList . stream ( ) . sorted ( Comparator . comparing ( NodeMergeQueryResp : : getName ) ) . toList ( ) ) ;
}
public static String getMaxNonEmptyTagForTask ( SimulationTask req ) {