@@ -15,6 +15,7 @@ import com.sdm.common.entity.req.system.UserQueryReq;
import com.sdm.common.entity.req.task.DemandExportExcelFormat ;
import com.sdm.common.entity.req.task.DemandExportExcelParam ;
import com.sdm.common.entity.resp.PageDataResp ;
import com.sdm.common.entity.resp.data.BatchCreateNormalDirResp ;
import com.sdm.common.entity.resp.data.FileMetadataInfoResp ;
import com.sdm.common.entity.resp.project.SpdmTaskVo ;
import com.sdm.common.entity.resp.system.CIDUserResp ;
@@ -214,11 +215,47 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
}
List < FileMetadataInfoResp > childrenMetadataInfoList = listSdmResponse . getData ( ) ;
FileMetadataInfoResp demandAttachFileMetadataInfoResp = childrenMetadataInfoList . stream ( ) . filter ( metadataInfo - > AttachFileTypeEnum . DEMAND_FILE . getValue ( ) . equals ( metadataInfo . getOriginalName ( ) ) ) . findFirst ( ) . orElse ( null ) ;
Long demandAttachFileMetadataInfoId ;
if ( ObjectUtils . isEmpty ( demandAttachFileMetadataInfoResp ) ) {
log . error ( " 未查询到需求附件文件夹,当前项目下的子文件夹为:{} " , childrenMetadataInfoList ) ;
return SdmResponse . failed ( " 新增需求失败! " ) ;
log . info ( " 未查询到需求附件文件夹,当前项目下的子文件夹为:{} " , childrenMetadataInfoList ) ;
// 项目层级文件夹和需求文件夹中,新增一层【需求附件】文件夹
List < FolderItemReq > demandAttachFolderItemReqList = new ArrayList < > ( ) ;
BatchCreateNormalDirReq demandAttachBatchCreateNormalDirReq = new BatchCreateNormalDirReq ( ) ;
demandAttachBatchCreateNormalDirReq . setParentUUId ( projectNodeId ) ;
FolderItemReq demandAttachFolderItemReq = new FolderItemReq ( ) ;
demandAttachFolderItemReq . setFolderName ( AttachFileTypeEnum . DEMAND_FILE . getValue ( ) ) ;
demandAttachFolderItemReq . setFolderUuid ( RandomUtil . generateString ( 32 ) ) ;
demandAttachFolderItemReqList . add ( demandAttachFolderItemReq ) ;
demandAttachBatchCreateNormalDirReq . setFolderItems ( demandAttachFolderItemReqList ) ;
log . info ( " 创建需求附件文件夹请求参数:{} " , demandAttachBatchCreateNormalDirReq ) ;
BatchCreateNormalDirResp batchCreateNormalDirResp ;
try {
SdmResponse < BatchCreateNormalDirResp > response = dataFeignClient . batchCreateNormalDirs ( demandAttachBatchCreateNormalDirReq ) ;
log . info ( " 创建需求附件文件夹响应:{} " , response ) ;
if ( ! response . isSuccess ( ) | | ObjectUtils . isEmpty ( response . getData ( ) ) ) {
log . error ( " 调用创建需求附件文件夹接口失败,原因为:{} " , response . getMessage ( ) ) ;
return SdmResponse . failed ( " 创建需求附件文件夹失败:,原因为: " + response . getMessage ( ) ) ;
}
batchCreateNormalDirResp = response . getData ( ) ;
} catch ( Exception e ) {
log . error ( " 调用创建需求附件文件夹接口失败 " , e ) ;
return SdmResponse . failed ( " 创建需求附件文件夹失败: " + e . getMessage ( ) ) ;
}
if ( ObjectUtils . isEmpty ( batchCreateNormalDirResp ) ) {
log . error ( " batchCreateNormalDirResp为空 " ) ;
return SdmResponse . failed ( " 创建需求附件文件夹失败 " ) ;
}
List < BatchCreateNormalDirResp . DirInfo > successList = batchCreateNormalDirResp . getSuccessList ( ) ;
if ( CollectionUtils . isEmpty ( successList ) ) {
log . error ( " successList为空 " ) ;
return SdmResponse . failed ( " 创建需求附件文件夹失败 " ) ;
}
// 需求附件文件夹的元数据主键id
demandAttachFileMetadataInfoId = successList . get ( 0 ) . getId ( ) ;
} else {
demandAttachFileMetadataInfoId = demandAttachFileMetadataInfoResp . getId ( ) ;
}
Long demandAttachFileMetadataInfoId = demandAttachFileMetadataInfoResp . getId ( ) ;
batchCreateNormalDirReq . setParentId ( demandAttachFileMetadataInfoId ) ;
FolderItemReq folderItemReq = new FolderItemReq ( ) ;
folderItemReq . setFolderName ( req . getDemandName ( ) ) ;
@@ -1234,8 +1271,66 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
}
}
// 项目层级文件夹和需求文件夹中,新增一层【需求附件】文件夹
String projectNodeId = req . getProjectId ( ) ;
BatchCreateNormalDirReq batchCreateNormalDirReq = new BatchCreateNormalDirReq ( ) ;
batchCreateNormalDirReq . setParentUUId ( req . getProjectId ( ) ) ;
SdmResponse < FileMetadataInfoResp > fileMetadataInfoResp = dataFeignClient . queryFileMetadataInfo ( projectNodeId , NodeTypeEnum . PROJECT . getValue ( ) , 0L ) ;
if ( fileMetadataInfoResp . getData ( ) = = null ) {
log . error ( " fileMetadataInfoResp为空,projectNodeId为: {} " , projectNodeId ) ;
return SdmResponse . failed ( " 新增需求失败! " ) ;
}
// 查询需求附件的uuid, 元数据表中【parentId是project的元数据主键id且originalName为: 需求附件】
FileMetadataInfoResp projectMetadataInfo = fileMetadataInfoResp . getData ( ) ;
SdmResponse < List < FileMetadataInfoResp > > listSdmResponse = dataFeignClient . listDir ( DirTypeEnum . PROJECT_NODE_DIR . getValue ( ) , projectMetadataInfo . getId ( ) ) ;
if ( ! listSdmResponse . isSuccess ( ) | | CollectionUtils . isEmpty ( listSdmResponse . getData ( ) ) ) {
log . error ( " listSdmResponse为空,project的元数据主键id为: {} " , projectMetadataInfo . getId ( ) ) ;
return SdmResponse . failed ( " 新增需求失败! " ) ;
}
List < FileMetadataInfoResp > childrenMetadataInfoList = listSdmResponse . getData ( ) ;
FileMetadataInfoResp demandAttachFileMetadataInfoResp = childrenMetadataInfoList . stream ( ) . filter ( metadataInfo - > AttachFileTypeEnum . DEMAND_FILE . getValue ( ) . equals ( metadataInfo . getOriginalName ( ) ) ) . findFirst ( ) . orElse ( null ) ;
Long demandAttachFileMetadataInfoId ;
if ( ObjectUtils . isEmpty ( demandAttachFileMetadataInfoResp ) ) {
log . info ( " 未查询到需求附件文件夹,当前项目下的子文件夹为:{} " , childrenMetadataInfoList ) ;
// 项目层级文件夹和需求文件夹中,新增一层【需求附件】文件夹
List < FolderItemReq > demandAttachFolderItemReqList = new ArrayList < > ( ) ;
BatchCreateNormalDirReq demandAttachBatchCreateNormalDirReq = new BatchCreateNormalDirReq ( ) ;
demandAttachBatchCreateNormalDirReq . setParentUUId ( projectNodeId ) ;
FolderItemReq demandAttachFolderItemReq = new FolderItemReq ( ) ;
demandAttachFolderItemReq . setFolderName ( AttachFileTypeEnum . DEMAND_FILE . getValue ( ) ) ;
demandAttachFolderItemReq . setFolderUuid ( RandomUtil . generateString ( 32 ) ) ;
demandAttachFolderItemReqList . add ( demandAttachFolderItemReq ) ;
demandAttachBatchCreateNormalDirReq . setFolderItems ( demandAttachFolderItemReqList ) ;
log . info ( " 创建需求附件文件夹请求参数:{} " , demandAttachBatchCreateNormalDirReq ) ;
BatchCreateNormalDirResp batchCreateNormalDirResp ;
try {
SdmResponse < BatchCreateNormalDirResp > response = dataFeignClient . batchCreateNormalDirs ( demandAttachBatchCreateNormalDirReq ) ;
log . info ( " 创建需求附件文件夹响应:{} " , response ) ;
if ( ! response . isSuccess ( ) | | ObjectUtils . isEmpty ( response . getData ( ) ) ) {
log . error ( " 调用创建需求附件文件夹接口失败,原因为:{} " , response . getMessage ( ) ) ;
return SdmResponse . failed ( " 创建需求附件文件夹失败:,原因为: " + response . getMessage ( ) ) ;
}
batchCreateNormalDirResp = response . getData ( ) ;
} catch ( Exception e ) {
log . error ( " 调用创建需求附件文件夹接口失败 " , e ) ;
return SdmResponse . failed ( " 创建需求附件文件夹失败: " + e . getMessage ( ) ) ;
}
if ( ObjectUtils . isEmpty ( batchCreateNormalDirResp ) ) {
log . error ( " batchCreateNormalDirResp为空 " ) ;
return SdmResponse . failed ( " 创建需求附件文件夹失败 " ) ;
}
List < BatchCreateNormalDirResp . DirInfo > successList = batchCreateNormalDirResp . getSuccessList ( ) ;
if ( CollectionUtils . isEmpty ( successList ) ) {
log . error ( " successList为空 " ) ;
return SdmResponse . failed ( " 创建需求附件文件夹失败 " ) ;
}
// 需求附件文件夹的元数据主键id
demandAttachFileMetadataInfoId = successList . get ( 0 ) . getId ( ) ;
} else {
demandAttachFileMetadataInfoId = demandAttachFileMetadataInfoResp . getId ( ) ;
}
batchCreateNormalDirReq . setParentId ( demandAttachFileMetadataInfoId ) ;
FolderItemReq folderItemReq = new FolderItemReq ( ) ;
folderItemReq . setFolderName ( req . getDemandName ( ) ) ;
folderItemReq . setFolderUuid ( req . getUuid ( ) ) ;
@@ -1605,4 +1700,269 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
return SdmResponse . success ( ) ;
}
@Override
public SdmResponse listNoPermission ( SpdmDemandListReq req ) {
JSONObject jsonObject = new JSONObject ( ) ;
jsonObject . put ( " data " , new ArrayList < > ( ) ) ;
List < SpdmDemandVo > demandList = mapper . getDemandListNoPermission ( req ) ;
if ( CollectionUtils . isEmpty ( demandList ) ) {
log . error ( " 未查询到需求 " ) ;
return SdmResponse . success ( jsonObject ) ;
}
// 0: 我发起的 1: 我确认的
Integer type = req . getType ( ) ;
if ( type ! = 0 & & type ! = 1 ) {
log . error ( " type必须为0或1 " ) ;
return SdmResponse . success ( jsonObject ) ;
}
List < SpdmDemandMemberVo > demandMemberVoList = mapper . getMemberList ( demandList . stream ( ) . map ( SpdmDemandVo : : getUuid ) . toList ( ) , null ) ;
List < SpdmTaskVo > taskList = taskMapper . getTaskListByDemandIdList ( demandList . stream ( ) . map ( SpdmDemandVo : : getUuid ) . toList ( ) ) ;
Map < String , List < SpdmTaskVo > > taskMap = Map . of ( ) ;
if ( CollectionUtils . isNotEmpty ( taskList ) ) {
taskMap = taskList . stream ( ) . collect ( Collectors . groupingBy ( SpdmTaskVo : : getDemandId ) ) ;
}
// 需求的状态和进度需要根据任务来确定
if ( StringUtils . isNotBlank ( req . getAchieveStatus ( ) ) | | StringUtils . isNotBlank ( req . getDemandStatus ( ) ) ) {
if ( StringUtils . isNotBlank ( req . getAchieveStatus ( ) ) ) {
String achieveStatus = req . getAchieveStatus ( ) ;
List < String > achieveStatusList = Arrays . stream ( achieveStatus . split ( " , " ) ) . toList ( ) ;
if ( CollectionUtils . isEmpty ( taskList ) ) {
demandList = demandList . stream ( ) . filter ( firstDemand - > achieveStatusList . contains ( firstDemand . getAchieveStatus ( ) ) ) . toList ( ) ;
} else {
List < SpdmTaskVo > eachTaskList ;
String eachStatus ;
List < SpdmDemandVo > newDemandList = new ArrayList < > ( ) ;
for ( SpdmDemandVo demand : demandList ) {
eachTaskList = taskMap . get ( demand . getUuid ( ) ) ;
if ( CollectionUtils . isEmpty ( eachTaskList ) ) {
log . info ( " 当前需求:{}没有关联的任务 " , demand . getId ( ) ) ;
if ( achieveStatusList . contains ( demand . getAchieveStatus ( ) ) ) {
newDemandList . add ( demand ) ;
}
} else {
if ( eachTaskList . stream ( ) . map ( SpdmTaskVo : : getAchieveStatus ) . toList ( ) . contains ( TaskAchieveStatusEnum . UNQUALIFIED . getCode ( ) ) ) {
eachStatus = TaskAchieveStatusEnum . UNQUALIFIED . getCode ( ) ;
} else if ( eachTaskList . stream ( ) . map ( SpdmTaskVo : : getAchieveStatus ) . toList ( ) . contains ( TaskAchieveStatusEnum . NO_CALCULATE . getCode ( ) ) ) {
eachStatus = TaskAchieveStatusEnum . NO_CALCULATE . getCode ( ) ;
} else {
eachStatus = TaskAchieveStatusEnum . QUALIFIED . getCode ( ) ;
}
log . info ( " 当前需求:{}的风险状态为:{} " , demand . getId ( ) , eachStatus ) ;
if ( ! achieveStatusList . contains ( eachStatus ) ) {
continue ;
}
newDemandList . add ( demand ) ;
}
}
demandList = newDemandList ;
}
}
if ( CollectionUtils . isEmpty ( demandList ) ) {
log . error ( " demandList2为空 " ) ;
return SdmResponse . success ( jsonObject ) ;
}
if ( StringUtils . isNotBlank ( req . getDemandStatus ( ) ) ) {
String demandStatus = req . getDemandStatus ( ) ;
List < String > demandStatusList = Arrays . stream ( demandStatus . split ( " , " ) ) . toList ( ) ;
if ( CollectionUtils . isEmpty ( taskList ) ) {
demandList = demandList . stream ( ) . filter ( firstDemand - > demandStatusList . contains ( firstDemand . getDemandStatus ( ) ) ) . toList ( ) ;
} else {
List < SpdmTaskVo > eachTaskList ;
String eachStatus = " " ;
List < SpdmDemandVo > newDemandList = new ArrayList < > ( ) ;
for ( SpdmDemandVo demand : demandList ) {
eachTaskList = taskMap . get ( demand . getUuid ( ) ) ;
if ( CollectionUtils . isEmpty ( eachTaskList ) ) {
log . info ( " 当前需求:{}没有关联的任务 " , demand . getId ( ) ) ;
if ( demandStatusList . contains ( demand . getDemandStatus ( ) ) ) {
newDemandList . add ( demand ) ;
}
} else {
// 有进行中就是进行中,
// 没有进行中,有暂停就是暂停
// 没有进行中和暂停,有延期就是延期
// 全部已完成就已完成
// 全部关闭就已关闭
// 全部未开始就未开始
// 全部驳回就驳回
// 其他 进行中
List < String > statusList = eachTaskList . stream ( ) . map ( SpdmTaskVo : : getExeStatus ) . toList ( ) ;
if ( statusList . contains ( TaskExeStatusEnum . IN_PROGRESS . getCode ( ) ) ) {
eachStatus = TaskExeStatusEnum . IN_PROGRESS . getCode ( ) ;
} else if ( statusList . contains ( TaskExeStatusEnum . PAUSED . getCode ( ) ) ) {
eachStatus = TaskExeStatusEnum . PAUSED . getCode ( ) ;
} else if ( statusList . contains ( TaskExeStatusEnum . POSTPONED . getCode ( ) ) ) {
eachStatus = TaskExeStatusEnum . POSTPONED . getCode ( ) ;
} else if ( statusList . stream ( ) . allMatch ( status - > TaskExeStatusEnum . COMPLETED . getCode ( ) . equals ( status ) ) ) {
eachStatus = TaskExeStatusEnum . COMPLETED . getCode ( ) ;
} else if ( statusList . stream ( ) . allMatch ( status - > TaskExeStatusEnum . CLOSED . getCode ( ) . equals ( status ) ) ) {
eachStatus = TaskExeStatusEnum . CLOSED . getCode ( ) ;
} else if ( statusList . stream ( ) . allMatch ( status - > TaskExeStatusEnum . NO_STARTED . getCode ( ) . equals ( status ) ) ) {
eachStatus = TaskExeStatusEnum . NO_STARTED . getCode ( ) ;
} else if ( statusList . stream ( ) . allMatch ( status - > TaskExeStatusEnum . REJECTED . getCode ( ) . equals ( status ) ) ) {
eachStatus = TaskExeStatusEnum . REJECTED . getCode ( ) ;
} else {
eachStatus = TaskExeStatusEnum . IN_PROGRESS . getCode ( ) ;
}
log . info ( " 当前需求:{}的需求状态为:{} " , demand . getId ( ) , eachStatus ) ;
if ( ! demandStatusList . contains ( eachStatus ) ) {
continue ;
}
newDemandList . add ( demand ) ;
}
}
demandList = newDemandList ;
}
}
}
if ( CollectionUtils . isEmpty ( demandList ) ) {
log . error ( " demandList3为空 " ) ;
return SdmResponse . success ( jsonObject ) ;
}
jsonObject . put ( " currentPage " , req . getCurrent ( ) ) ;
jsonObject . put ( " pageSize " , req . getSize ( ) ) ;
jsonObject . put ( " total " , demandList . size ( ) ) ;
demandList = demandList . stream ( ) . skip ( ( long ) ( req . getCurrent ( ) - 1 ) * req . getSize ( ) ) . limit ( req . getSize ( ) ) . toList ( ) ;
if ( CollectionUtils . isEmpty ( demandList ) ) {
log . error ( " demandList4为空 " ) ;
return SdmResponse . success ( jsonObject ) ;
}
List < SpdmTaskVo > eachTaskList ;
String eachAchieveStatus ;
String eachExeStatus ;
for ( SpdmDemandVo demand : demandList ) {
eachTaskList = taskMap . get ( demand . getUuid ( ) ) ;
if ( CollectionUtils . isEmpty ( eachTaskList ) ) {
demand . setAchieveStatus ( " 0 " ) ;
continue ;
}
if ( eachTaskList . stream ( ) . map ( SpdmTaskVo : : getAchieveStatus ) . toList ( ) . contains ( TaskAchieveStatusEnum . UNQUALIFIED . getCode ( ) ) ) {
eachAchieveStatus = TaskAchieveStatusEnum . UNQUALIFIED . getCode ( ) ;
} else if ( eachTaskList . stream ( ) . map ( SpdmTaskVo : : getAchieveStatus ) . toList ( ) . contains ( TaskAchieveStatusEnum . NO_CALCULATE . getCode ( ) ) ) {
eachAchieveStatus = TaskAchieveStatusEnum . NO_CALCULATE . getCode ( ) ;
} else {
eachAchieveStatus = TaskAchieveStatusEnum . QUALIFIED . getCode ( ) ;
}
demand . setAchieveStatus ( eachAchieveStatus ) ;
List < String > statusList = eachTaskList . stream ( ) . map ( SpdmTaskVo : : getExeStatus ) . toList ( ) ;
if ( statusList . contains ( TaskExeStatusEnum . IN_PROGRESS . getCode ( ) ) ) {
eachExeStatus = TaskExeStatusEnum . IN_PROGRESS . getCode ( ) ;
} else if ( statusList . contains ( TaskExeStatusEnum . PAUSED . getCode ( ) ) ) {
eachExeStatus = TaskExeStatusEnum . PAUSED . getCode ( ) ;
} else if ( statusList . contains ( TaskExeStatusEnum . POSTPONED . getCode ( ) ) ) {
eachExeStatus = TaskExeStatusEnum . POSTPONED . getCode ( ) ;
} else if ( statusList . stream ( ) . allMatch ( status - > TaskExeStatusEnum . COMPLETED . getCode ( ) . equals ( status ) ) ) {
eachExeStatus = TaskExeStatusEnum . COMPLETED . getCode ( ) ;
} else if ( statusList . stream ( ) . allMatch ( status - > TaskExeStatusEnum . CLOSED . getCode ( ) . equals ( status ) ) ) {
eachExeStatus = TaskExeStatusEnum . CLOSED . getCode ( ) ;
} else if ( statusList . stream ( ) . allMatch ( status - > TaskExeStatusEnum . NO_STARTED . getCode ( ) . equals ( status ) ) ) {
eachExeStatus = TaskExeStatusEnum . NO_STARTED . getCode ( ) ;
} else if ( statusList . stream ( ) . allMatch ( status - > TaskExeStatusEnum . REJECTED . getCode ( ) . equals ( status ) ) ) {
eachExeStatus = TaskExeStatusEnum . REJECTED . getCode ( ) ;
} else {
eachExeStatus = TaskExeStatusEnum . IN_PROGRESS . getCode ( ) ;
}
demand . setDemandStatus ( eachExeStatus ) ;
}
Map < String , List < SpdmDemandMemberVo > > demandMemberMap = Map . of ( ) ;
if ( CollectionUtils . isNotEmpty ( demandMemberVoList ) ) {
demandMemberMap = demandMemberVoList . stream ( ) . collect ( Collectors . groupingBy ( SpdmDemandMemberVo : : getDemandId ) ) ;
}
List < SpdmDemandMemberVo > eachDemandMemberList ;
List < String > nodeIdList = new ArrayList < > ( ) ;
List < String > projectIdList = demandList . stream ( ) . map ( SpdmDemandVo : : getProjectId ) . toList ( ) ;
if ( CollectionUtils . isNotEmpty ( projectIdList ) ) {
nodeIdList . addAll ( projectIdList ) ;
}
List < String > phaseIdList = demandList . stream ( ) . map ( SpdmDemandVo : : getPhaseId ) . toList ( ) ;
if ( CollectionUtils . isNotEmpty ( phaseIdList ) ) {
nodeIdList . addAll ( phaseIdList ) ;
}
Map < String , List < SpdmNodeVo > > nodeMap = Map . of ( ) ;
if ( CollectionUtils . isNotEmpty ( nodeIdList ) ) {
List < SpdmNodeVo > nodeList = nodeMapper . getNodeListByIds ( nodeIdList ) ;
if ( CollectionUtils . isNotEmpty ( nodeList ) ) {
nodeMap = nodeList . stream ( ) . collect ( Collectors . groupingBy ( SpdmNodeVo : : getUuid ) ) ;
}
}
List < Long > userIdList = new ArrayList < > ( ) ;
if ( CollectionUtils . isNotEmpty ( demandMemberVoList ) ) {
userIdList = demandMemberVoList . stream ( ) . map ( SpdmDemandMemberVo : : getUserId ) . toList ( ) ;
}
Map < Long , List < CIDUserResp > > userMap = Map . of ( ) ;
if ( CollectionUtils . isNotEmpty ( userIdList ) ) {
SdmResponse < List < CIDUserResp > > cidUserResp = sysUserFeignClient . listUserByIds ( UserQueryReq . builder ( ) . userIds ( userIdList ) . build ( ) ) ;
List < CIDUserResp > userList = cidUserResp . getData ( ) ;
if ( CollectionUtils . isNotEmpty ( userList ) ) {
userMap = userList . stream ( ) . collect ( Collectors . groupingBy ( CIDUserResp : : getUserId ) ) ;
}
}
List < String > demandIdList = demandList . stream ( ) . map ( SpdmDemandVo : : getUuid ) . toList ( ) ;
List < SpdmDemandExtraVo > demandExtraList = mapper . getDemandExtraList ( demandIdList ) ;
Map < String , List < SpdmDemandExtraVo > > demandExtraMap = Map . of ( ) ;
if ( CollectionUtils . isNotEmpty ( demandExtraList ) ) {
demandExtraMap = demandExtraList . stream ( ) . collect ( Collectors . groupingBy ( SpdmDemandExtraVo : : getDemandId ) ) ;
}
for ( SpdmDemandVo spdmDemandVo : demandList ) {
spdmDemandVo . setExtras ( demandExtraMap . get ( spdmDemandVo . getUuid ( ) ) ) ;
eachTaskList = taskMap . get ( spdmDemandVo . getUuid ( ) ) ;
spdmDemandVo . setProgress ( CollectionUtils . isEmpty ( eachTaskList ) ? 0 : eachTaskList . stream ( ) . mapToInt ( SpdmTaskVo : : getProgress ) . sum ( ) / eachTaskList . size ( ) ) ;
if ( StringUtils . isNotBlank ( spdmDemandVo . getProjectId ( ) ) ) {
spdmDemandVo . setProjectName ( CollectionUtils . isNotEmpty ( nodeMap . get ( spdmDemandVo . getProjectId ( ) ) ) ? nodeMap . get ( spdmDemandVo . getProjectId ( ) ) . get ( 0 ) . getNodeName ( ) : " " ) ;
}
if ( StringUtils . isNotBlank ( spdmDemandVo . getPhaseId ( ) ) ) {
spdmDemandVo . setPhaseName ( CollectionUtils . isNotEmpty ( nodeMap . get ( spdmDemandVo . getPhaseId ( ) ) ) ? nodeMap . get ( spdmDemandVo . getPhaseId ( ) ) . get ( 0 ) . getNodeName ( ) : " " ) ;
}
if ( StringUtils . isNotBlank ( spdmDemandVo . getMachineId ( ) ) ) {
spdmDemandVo . setMachineName ( CollectionUtils . isNotEmpty ( nodeMap . get ( spdmDemandVo . getMachineId ( ) ) ) ? nodeMap . get ( spdmDemandVo . getMachineId ( ) ) . get ( 0 ) . getNodeName ( ) : " " ) ;
}
if ( StringUtils . isNotBlank ( spdmDemandVo . getWorkspaceId ( ) ) ) {
spdmDemandVo . setWorkspaceName ( CollectionUtils . isNotEmpty ( nodeMap . get ( spdmDemandVo . getWorkspaceId ( ) ) ) ? nodeMap . get ( spdmDemandVo . getWorkspaceId ( ) ) . get ( 0 ) . getNodeName ( ) : " " ) ;
}
eachDemandMemberList = demandMemberMap . get ( spdmDemandVo . getUuid ( ) ) ;
if ( CollectionUtils . isEmpty ( eachDemandMemberList ) ) {
continue ;
}
List < CIDUserResp > spdmPUserVoList = new ArrayList < > ( ) ;
for ( Long userId : eachDemandMemberList . stream ( ) . filter ( member - > MemberTypeEnum . PRINCIPAL . getCode ( ) . equals ( member . getType ( ) ) ) . map ( SpdmDemandMemberVo : : getUserId ) . toList ( ) ) {
if ( ObjectUtils . isNotEmpty ( userId ) & & CollectionUtils . isNotEmpty ( userMap . get ( userId ) ) ) {
spdmPUserVoList . addAll ( userMap . get ( userId ) ) ;
}
}
spdmDemandVo . setPMemberList ( spdmPUserVoList ) ;
List < CIDUserResp > spdmEUserVoList = new ArrayList < > ( ) ;
for ( Long userId : eachDemandMemberList . stream ( ) . filter ( member - > MemberTypeEnum . EXECUTOR . getCode ( ) . equals ( member . getType ( ) ) ) . map ( SpdmDemandMemberVo : : getUserId ) . toList ( ) ) {
if ( ObjectUtils . isNotEmpty ( userId ) & & CollectionUtils . isNotEmpty ( userMap . get ( userId ) ) ) {
spdmEUserVoList . addAll ( userMap . get ( userId ) ) ;
}
}
spdmDemandVo . setEMemberList ( spdmEUserVoList ) ;
List < CIDUserResp > spdmTUserVoList = new ArrayList < > ( ) ;
for ( Long userId : eachDemandMemberList . stream ( ) . filter ( member - > MemberTypeEnum . THREED . getCode ( ) . equals ( member . getType ( ) ) ) . map ( SpdmDemandMemberVo : : getUserId ) . toList ( ) ) {
if ( ObjectUtils . isNotEmpty ( userId ) & & CollectionUtils . isNotEmpty ( userMap . get ( userId ) ) ) {
spdmTUserVoList . addAll ( userMap . get ( userId ) ) ;
}
}
spdmDemandVo . setTMemberList ( spdmTUserVoList ) ;
List < CIDUserResp > spdmAUserVoList = new ArrayList < > ( ) ;
for ( Long userId : eachDemandMemberList . stream ( ) . filter ( member - > MemberTypeEnum . ATTENTION . getCode ( ) . equals ( member . getType ( ) ) ) . map ( SpdmDemandMemberVo : : getUserId ) . toList ( ) ) {
if ( ObjectUtils . isNotEmpty ( userId ) & & CollectionUtils . isNotEmpty ( userMap . get ( userId ) ) ) {
spdmAUserVoList . addAll ( userMap . get ( userId ) ) ;
}
}
spdmDemandVo . setAMemberList ( spdmAUserVoList ) ;
}
jsonObject . put ( " data " , demandList ) ;
return SdmResponse . success ( jsonObject ) ;
}
}