@@ -100,6 +100,7 @@ import java.util.function.Supplier;
import java.util.stream.Collectors ;
import java.util.stream.Stream ;
import static com.sdm.common.utils.DateUtils.PATTERN_DEFAULT ;
import static com.sdm.project.service.impl.NodeServiceImpl.getTagProperty ;
import static com.sdm.project.service.impl.NodeServiceImpl.setTagProperty ;
@@ -4581,46 +4582,70 @@ public class TaskServiceImpl implements ITaskService {
/**
* 查询任务数据并构建映射关系
*/
private TaskData queryAndBuildTaskData ( Long tenantId , List < String > projectIdList , String beginTime , String endTime ) {
// 查询任务列表
List < SimulationTask > taskList = simulationTaskService . lambdaQuery ( )
. in ( SimulationTask : : getTag1 , projectIdList )
. eq ( SimulationTask : : getTenantId , tenantId )
. ge ( StringUtils . isNotBlank ( beginTime ) , SimulationTask : : getBeginTime , beginTime )
. le ( StringUtils . isNotBlank ( endTime ) , SimulationTask : : getEndTime , endTime )
. list ( ) ;
private TaskData queryAndBuildTaskData ( Long tenantId , List < String > projectIdList , String beginTime , String endTime , List < TaskNodeTag > idMap ) {
if ( CollectionUtils . isNotEmpty ( taskList ) ) {
for ( SimulationTask simulationTask : taskList ) {
TagReq tagReq = new T agReq( );
setTagField ( tagReq , simulationTask . g etTag1 ( ) , simulationTask . getTag1Name ( ) , simulationTask . getTag1 Code ( ) , TagReq : : setTag1 , TagReq : : setTag1Name , TagReq : : setTag1Code );
setTagField ( tagReq , simulationTask . getTag2 ( ) , simulationTask . getTag2Name ( ) , s imulationTask . getTag2Code ( ) , TagReq : : setTag2 , TagReq : : setTag2Name , TagReq : : setTag2Code ) ;
setTagField ( tagReq , simulationTask . getTag3 ( ) , simulationTask . getTag3Name ( ) , simulationTask . getTag3Code ( ) , TagReq : : setTag3 , TagReq : : setTag3Name , TagReq : : setTag3Code ) ;
setTagField ( tagReq , simulationTask . getTag4 ( ) , simulationTask . getTag4Name ( ) , simulationTask . getTag4Code ( ) , TagReq : : setTag4 , TagReq : : setTag4Name , TagReq : : setTag4Code ) ;
setTagField ( tagReq , simulationTask . getTag5 ( ) , simulationTask . getTag5Name ( ) , simulationTask . getTag5Code ( ) , TagReq : : setTag5 , TagReq : : setTag5Name , TagReq : : setTag5Cod e ) ;
setTagField ( tagReq , simulationTask . getTag6 ( ) , simulationTask . getTag6Name ( ) , simulationTask . getTag6Code ( ) , TagReq : : setTag6 , TagReq : : setTag6Name , TagReq : : setTag6Cod e ) ;
setTagField ( tagReq , simulationTask . g etTag7 ( ) , simulationTask . getTag7Name ( ) , simulationTask . getTag7Code ( ) , TagReq : : setTag7 , TagReq : : setTag7Name , TagReq : : setTag7Code ) ;
setTagField ( tagReq , simulationTask . getTag8 ( ) , simulationTask . getTag8Name ( ) , simulationTask . getTag8Code ( ) , TagReq : : setTag8 , TagReq : : setTag8Name , TagReq : : setTag8Code ) ;
setTagField ( tagReq , simulationTask . getTag9 ( ) , simulationTask . getTag9Name ( ) , simulationTask . getTag9Code ( ) , TagReq : : setTag9 , TagReq : : setTag9Name , TagReq : : setTag9Code ) ;
setTagField ( tagReq , simulationTask . getTag10 ( ) , simulationTask . getTag10Name ( ) , simulationTask . getTag10Code ( ) , TagReq : : setTag10 , TagReq : : setTag10Name , TagReq : : setTag10Code ) ;
tagReq . setTaskId ( simulationTask . getUuid ( ) ) ;
tagReq . setTaskName ( simulationTask . getTaskName ( ) ) ;
tagReq . setTaskCode ( simulationTask . getTaskCode ( ) ) ;
simulationTask . setTagReq ( tagReq ) ;
}
SpdmTaskListReq taskListReq = new SpdmTaskListReq ( ) ;
TagReq tagReq = new TagReq ( ) ;
tagReq . setTag1 ( projectIdList . stream ( ) . collect ( Collectors . joining ( " , " ) ) ) ;
taskListReq . setTagReq ( t agReq) ;
taskListReq . s etType ( TaskQryTypeEnum . ALL . getCode ( ) ) ;
SimpleDateFormat sdf = new S impleDateFormat ( PATTERN_DEFAULT ) ;
List < String > beginTimeList = new ArrayList < > ( ) ;
if ( StringUtils . isNotBlank ( beginTime ) & & StringUtils . isNotBlank ( endTime ) ) {
beginTimeList . add ( beginTim e ) ;
beginTimeList . add ( endTim e ) ;
taskListReq . s etBeginTime ( beginTimeList ) ;
}
taskListReq . setIdMap ( idMap ) ;
taskListReq . setCurrent ( 1 ) ;
taskListReq . setSize ( 9999 ) ;
SdmResponse response = list ( taskListReq ) ;
List < SpdmNewTaskVo > taskList = new ArrayList < > ( ) ;
if ( response . isSuccess ( ) ) {
JSONObject dataObj = ( JSONObject ) response . getData ( ) ;
taskList = ( List < SpdmNewTaskVo > ) dataObj . get ( " data " ) ;
}
// // 查询任务列表
// List<SimulationTask> taskList = simulationTaskService.lambdaQuery()
// .in(SimulationTask::getTag1, projectIdList)
// .eq(SimulationTask::getTenantId, tenantId)
// .ge(StringUtils.isNotBlank(beginTime), SimulationTask::getBeginTime, beginTime)
// .le(StringUtils.isNotBlank(endTime), SimulationTask::getEndTime, endTime)
// .list();
//
//
// if (CollectionUtils.isNotEmpty(taskList)) {
// for (SimulationTask simulationTask : taskList) {
// TagReq tagReq = new TagReq();
// setTagField(tagReq, simulationTask.getTag1(), simulationTask.getTag1Name(),simulationTask.getTag1Code(), TagReq::setTag1, TagReq::setTag1Name, TagReq::setTag1Code);
// setTagField(tagReq, simulationTask.getTag2(), simulationTask.getTag2Name(), simulationTask.getTag2Code(),TagReq::setTag2, TagReq::setTag2Name, TagReq::setTag2Code);
// setTagField(tagReq, simulationTask.getTag3(), simulationTask.getTag3Name(), simulationTask.getTag3Code(),TagReq::setTag3, TagReq::setTag3Name, TagReq::setTag3Code);
// setTagField(tagReq, simulationTask.getTag4(), simulationTask.getTag4Name(), simulationTask.getTag4Code(),TagReq::setTag4, TagReq::setTag4Name, TagReq::setTag4Code);
// setTagField(tagReq, simulationTask.getTag5(), simulationTask.getTag5Name(), simulationTask.getTag5Code(),TagReq::setTag5, TagReq::setTag5Name, TagReq::setTag5Code);
// setTagField(tagReq, simulationTask.getTag6(), simulationTask.getTag6Name(), simulationTask.getTag6Code(),TagReq::setTag6, TagReq::setTag6Name, TagReq::setTag6Code);
// setTagField(tagReq, simulationTask.getTag7(), simulationTask.getTag7Name(), simulationTask.getTag7Code(),TagReq::setTag7, TagReq::setTag7Name, TagReq::setTag7Code);
// setTagField(tagReq, simulationTask.getTag8(), simulationTask.getTag8Name(), simulationTask.getTag8Code(),TagReq::setTag8, TagReq::setTag8Name,TagReq::setTag8Code);
// setTagField(tagReq, simulationTask.getTag9(), simulationTask.getTag9Name(), simulationTask.getTag9Code(),TagReq::setTag9, TagReq::setTag9Name, TagReq::setTag9Code);
// setTagField(tagReq, simulationTask.getTag10(), simulationTask.getTag10Name(), simulationTask.getTag10Code(),TagReq::setTag10, TagReq::setTag10Name, TagReq::setTag10Code);
// tagReq.setTaskId(simulationTask.getUuid());
// tagReq.setTaskName(simulationTask.getTaskName());
// tagReq.setTaskCode(simulationTask.getTaskCode());
// simulationTask.setTagReq(tagReq);
// }
// }
// 构建任务映射( 项目ID -> 任务列表)
Map < String , List < Simulation Task > > projectTaskMap = CollectionUtils . isEmpty ( taskList )
Map < String , List < SpdmNew TaskVo > > projectTaskMap = CollectionUtils . isEmpty ( taskList )
? new HashMap < > ( )
: taskList . stream ( ) . collect ( Collectors . groupingBy ( Simulation Task : : getTag1 ) ) ;
: taskList . stream ( ) . collect ( Collectors . groupingBy ( SpdmNew TaskVo : : getNew Tag1 ) ) ;
// 构建任务成员映射( 任务ID -> 用户ID集合)
Map < String , Set < Long > > taskMemberMap = new HashMap < > ( ) ;
if ( CollectionUtils . isNotEmpty ( taskList ) ) {
List < String > taskIdList = taskList . stream ( ) . map ( Simulation Task : : getUuid ) . collect ( Collectors . toList ( ) ) ;
List < String > taskIdList = taskList . stream ( ) . map ( SpdmNew TaskVo : : getUuid ) . collect ( Collectors . toList ( ) ) ;
List < SpdmTaskMemberVo > taskMemberList = mapper . getMemberList ( taskIdList , null ) ;
if ( CollectionUtils . isNotEmpty ( taskMemberList ) ) {
@@ -4639,7 +4664,7 @@ public class TaskServiceImpl implements ITaskService {
* 构建项目用户负载响应列表
*/
private List < ProjectUserLoadResp > buildProjectUserLoadResponse ( List < SimulationNode > projectNodeList , TaskData taskData , Map < String , String > projectNodeReferenceItemMap ,
Long tenantId , String beginTime , String endTime ) {
Long tenantId , String beginTime , String endTime , List < TaskNodeTag > idMap ) {
List < ProjectUserLoadResp > responseList = new ArrayList < > ( ) ;
Set < String > processedProjectNames = new HashSet < > ( ) ; // 记录已处理的项目名称,避免重复
@@ -4678,7 +4703,8 @@ public class TaskServiceImpl implements ITaskService {
tenantId ,
Collections . singletonList ( targetRefProjectNodeUuid ) ,
beginTime ,
endTime
endTime ,
idMap
) ;
// 处理参考项目, 并将处理好的参考项目放到responseList中
handleReferenceProject ( projectNode , projectNodeList , targetRefTaskData , responseList , processedProjectNames , currentProjectRefName ) ;
@@ -4696,7 +4722,7 @@ public class TaskServiceImpl implements ITaskService {
resp . setRelateProjectName ( referenceItem ) ;
// 获取该项目的任务列表
List < Simulation Task > taskList = taskData . getProjectTaskMap ( ) . get ( projectNode . getUuid ( ) ) ;
List < SpdmNew TaskVo > taskList = taskData . getProjectTaskMap ( ) . get ( projectNode . getUuid ( ) ) ;
if ( CollectionUtils . isEmpty ( taskList ) ) {
return resp ; // 无任务时返回基础信息
}
@@ -4712,7 +4738,7 @@ public class TaskServiceImpl implements ITaskService {
// 计算工作量
double totalWorkload = taskList . stream ( )
. filter ( task - > task . getDays ( ) ! = null )
. mapToDouble ( Simulation Task : : getDays )
. mapToDouble ( SpdmNew TaskVo : : getDays )
. sum ( ) ;
resp . setWorkload ( totalWorkload ) ;
@@ -4758,9 +4784,9 @@ public class TaskServiceImpl implements ITaskService {
/**
* 计算任务关联的用户ID集合
*/
private Set < Long > calculateUserIds ( List < Simulation Task > taskList , Map < String , Set < Long > > taskMemberMap ) {
private Set < Long > calculateUserIds ( List < SpdmNew TaskVo > taskList , Map < String , Set < Long > > taskMemberMap ) {
Set < Long > userIdSet = new HashSet < > ( ) ;
for ( Simulation Task task : taskList ) {
for ( SpdmNew TaskVo task : taskList ) {
Set < Long > taskUserIds = taskMemberMap . get ( task . getUuid ( ) ) ;
if ( CollectionUtils . isNotEmpty ( taskUserIds ) ) {
userIdSet . addAll ( taskUserIds ) ;
@@ -4773,15 +4799,15 @@ public class TaskServiceImpl implements ITaskService {
* 封装任务相关的映射关系
*/
private static class TaskData {
private final Map < String , List < Simulation Task > > projectTaskMap ;
private final Map < String , List < SpdmNew TaskVo > > projectTaskMap ;
private final Map < String , Set < Long > > taskMemberMap ;
public TaskData ( Map < String , List < Simulation Task > > projectTaskMap , Map < String , Set < Long > > taskMemberMap ) {
public TaskData ( Map < String , List < SpdmNew TaskVo > > projectTaskMap , Map < String , Set < Long > > taskMemberMap ) {
this . projectTaskMap = projectTaskMap ;
this . taskMemberMap = taskMemberMap ;
}
public Map < String , List < Simulation Task > > getProjectTaskMap ( ) {
public Map < String , List < SpdmNew TaskVo > > getProjectTaskMap ( ) {
return projectTaskMap ;
}
@@ -4889,9 +4915,9 @@ public class TaskServiceImpl implements ITaskService {
? projectIdList
: projectNodeList . stream ( ) . map ( SimulationNode : : getUuid ) . collect ( Collectors . toList ( ) ) ;
// 5. 查询任务列表并构建映射
TaskData taskData = queryAndBuildTaskData ( tenantId , realProjectIdList , req . getBeginTime ( ) , req . getEndTime ( ) ) ;
TaskData taskData = queryAndBuildTaskData ( tenantId , realProjectIdList , req . getBeginTime ( ) , req . getEndTime ( ) , req . getIdMap ( ) );
// 6. 构建返回结果
return SdmResponse . success ( buildProjectUserLoadResponse ( projectNodeList , taskData , projectNodeReferenceItemMap , tenantId , req . getBeginTime ( ) , req . getEndTime ( ) ) ) ;
return SdmResponse . success ( buildProjectUserLoadResponse ( projectNodeList , taskData , projectNodeReferenceItemMap , tenantId , req . getBeginTime ( ) , req . getEndTime ( ) , req . getIdMap ( ) )) ;
}
@Transactional ( rollbackFor = Exception . class )