@@ -28,6 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service ;
import org.springframework.transaction.annotation.Transactional ;
import org.springframework.transaction.interceptor.TransactionAspectSupport ;
import reactor.util.function.Tuple2 ;
import java.text.SimpleDateFormat ;
import java.util.* ;
@@ -53,6 +54,8 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
private HashMap < String , List < String > > idMap = new HashMap < > ( ) ;
private HashMap < String , List < String > > taskIdMap = new HashMap < > ( ) ;
private HashMap < String , List < String > > projectIdMap = new HashMap < > ( ) ;
List < TaskNodeTag > tagMap ;
@@ -71,6 +74,10 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
Map < String , List < ProjectNodePo > > taskTreeProjectNodeMap = new HashMap < > ( ) ;
String lastNodeTag ;
String firstNodeTag ;
@Override
@Transactional
public SdmResponse add ( JSONObject jsonObject ) {
@@ -226,6 +233,8 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
}
}
taskTreeTagMap = req . getTagMap ( ) ;
firstNodeTag = taskTreeTagMap . get ( 0 ) . getValue ( ) ;
lastNodeTag = taskTreeTagMap . get ( taskTreeTagMap . size ( ) - 1 ) . getValue ( ) ;
log . info ( " taskTreeTagMap为: {} " , taskTreeTagMap ) ;
if ( CollectionUtils . isEmpty ( taskTreeTagMap ) ) {
log . error ( " tagMap不能为空 " ) ;
@@ -301,6 +310,12 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
private void generateTaskTree ( ProjectNodePo projectNodePo ) {
String currentNodeType = projectNodePo . getNodeType ( ) ;
String currentTag = taskTreeNodeTypeTagMap . get ( currentNodeType ) ;
TaskNodeTag nextNodeTag = getNextNodeTag ( currentTag ) ;
if ( ObjectUtils . isEmpty ( nextNodeTag ) ) {
log . error ( " 未找到子标签 " ) ;
return ;
}
log . info ( " 当前标签:{},子标签:{} " , currentTag , nextNodeTag ) ;
String currentNodeTagId = " " ;
try {
currentNodeTagId = getTagProperty ( projectNodePo , currentTag ) ;
@@ -308,21 +323,43 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
throw new RuntimeException ( e ) ;
}
if ( StringUtils . isBlank ( currentNodeTagId ) ) {
String realCurrentTag = currentTag ;
log . info ( " 找前一个标签 " ) ;
while ( StringUtils . isBlank ( currentNodeTagId ) & & ! firstNodeTag . equals ( realCurrentTag ) & & ! lastNodeTag . equals ( realCurrentTag ) ) {
realCurrentTag = getPreNodeTag ( realCurrentTag ) . getValue ( ) ;
try {
currentNodeTagId = getTagProperty ( projectNodePo , realCurrentTag ) ;
} catch ( Exception e ) {
throw new RuntimeException ( e ) ;
}
}
currentTag = realCurrentTag ;
}
if ( StringUtils . isBlank ( currentNodeTagId ) ) {
log . error ( " currentNodeTagId为空 " ) ;
return ;
}
String finalCurrentNodeTagId = currentNodeTagId ;
// 需要找到当前节点创建节点时的tagId
TaskNodeTag realTagObj = getRealTagId ( projectNodePo ) ;
if ( StringUtils . isBlank ( realTagObj . getKey ( ) ) & & StringUtils . isBlank ( realTagObj . getValue ( ) ) ) {
log . error ( " realTagObj为空 " ) ;
return ;
}
String realTag = realTagObj . getKey ( ) ;
String realTagId = realTagObj . getValue ( ) ;
// 查询当前节点下任务
List < TaskNodePo > currentNodeAssociatedTaskList = new ArrayList < > ( ) ;
int currentNodeDepth = getCurrentNodeDepth ( projectNodePo ) ;
if ( CollectionUtils . isNotEmpty ( taskTreeTaskList ) ) {
currentNodeAssociatedTaskList = taskTreeTaskList . stream ( ) . filter ( node - > {
try {
String nodeTagId = getTagProperty ( node , current Tag) ;
String nodeTagId = getTagProperty ( node , real Tag) ;
if ( StringUtils . isBlank ( nodeTagId ) ) {
return false ;
}
// tagId相同且: 当前深度 = task深度 + 1
return nodeTagId . equals ( finalCurrentNode TagId) & & currentNodeDepth = = getCurrentNodeDepth ( node ) ;
return nodeTagId . equals ( real TagId) & & currentNodeDepth = = getCurrentNodeDepth ( node ) ;
} catch ( Exception e ) {
throw new RuntimeException ( e ) ;
}
@@ -354,54 +391,182 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
}
// 查询子节点,可能是同类型节点也可能是不同类型节点
// 先查同类型节点: 当前标签下, 包含currentNodeTagId且深度+1
int depth = finalCurrentNodeTagId . split ( " , " ) . length ;
// int depth = finalCurrentNodeTagId.split(","). length;
int depth = getCurrentNodeDepth ( projectNodePo ) ;
String finalCurrentTag = currentTag ;
List < ProjectNodePo > sameTypeNodeList = taskTreeNodeList . stream ( ) . filter ( node - > {
try {
String nodeTagId = getTagProperty ( node , c urrentTag) ;
String nodeTagId = getTagProperty ( node , finalC urrentTag) ;
if ( StringUtils . isBlank ( nodeTagId ) ) {
return false ;
}
return node . getNodeType ( ) . equals ( currentNodeType ) & & nodeTagId . contains ( finalCurrentNodeTagId ) & & ( nodeTagId . split ( " , " ) . length = = depth + 1 ) ;
return node . getNodeType ( ) . equals ( currentNodeType ) & & nodeTagId . contains ( finalCurrentNodeTagId ) & & getCurrentNodeDepth ( node ) = = depth + 1 ;
} catch ( Exception e ) {
throw new RuntimeException ( e ) ;
}
} ) . collect ( Collectors . toList ( ) ) ;
// 再查不同类型的节点:下一标签下的节点
TaskNodeTag finalNextNodeTag = nextNodeTag ;
// List<ProjectNodePo> childrenTypeNodeList = taskTreeNodeList.stream().filter(node -> {
// try {
// String nodeTagId = getTagProperty(node, currentTag);
// if (StringUtils.isBlank(nodeTagId)) {
// return false;
// }
// // tagId相同且: 当前深度 = task深度 + 1
// // tagId相同, 且nodeType是nextNodeTag类型且子tagId的深度最少
// return nodeTagId.equals(finalCurrentNodeTagId) && node.getNodeType().equals(finalNextNodeTag.getKey());
//// return nodeTagId.equals(finalCurrentNodeTagId) && currentNodeDepth == getCurrentNodeDepth(node) - 1;
// } catch (Exception e) {
// throw new RuntimeException(e);
// }
// }).collect(Collectors.toList());
// maxNodeTagSize
List < NodeAllBase > children = new ArrayList < > ( ) ;
if ( CollectionUtils . isNotEmpty ( sameTypeNodeList ) ) {
// 递归
for ( ProjectNodePo nodePo : sameTypeNodeList ) {
generateTaskTree ( nodePo ) ;
}
if ( CollectionUtils . isNotEmpty ( sameTypeNodeList ) ) {
children . addAll ( sameTypeNodeList ) ;
}
} else if ( ! currentTag . equals ( finalNextNodeTag . getValue ( ) ) & & ! lastNodeTag . equals ( currentTag ) ) {
List < ProjectNodePo > childrenTypeNodeList = getChildrenTypeNodeList ( currentTag , finalNextNodeTag , finalCurrentNodeTagId ) ;
if ( CollectionUtils . isNotEmpty ( childrenTypeNodeList ) ) {
int firstLayerNodeDepth = getFirstLayerNodeDepth ( childrenTypeNodeList ) ;
childrenTypeNodeList = childrenTypeNodeList . stream ( ) . filter ( node - > getCurrentNodeDepth ( node ) = = firstLayerNodeDepth ) . collect ( Collectors . toList ( ) ) ;
if ( CollectionUtils . isNotEmpty ( childrenTypeNodeList ) ) {
// 递归
for ( ProjectNodePo nodePo : childrenTypeNodeList ) {
generateTaskTree ( nodePo ) ;
}
}
}
if ( CollectionUtils . isNotEmpty ( childrenTypeNodeList ) ) {
children . addAll ( childrenTypeNodeList ) ;
}
}
if ( CollectionUtils . isNotEmpty ( currentNodeAssociatedTaskList ) ) {
currentNodeAssociatedTaskList . forEach ( task - > task . setNodeName ( task . getTaskName ( ) ) ) ;
children . addAll ( currentNodeAssociatedTaskList ) ;
}
projectNodePo . setChildren ( children ) ;
}
private TaskNodeTag getRealTagId ( ProjectNodePo projectNodePo ) {
TaskNodeTag taskNodeTag = new TaskNodeTag ( ) ;
String tag10 = projectNodePo . getTag10 ( ) ;
if ( StringUtils . isNotBlank ( tag10 ) ) {
taskNodeTag . setKey ( " Tag10 " ) ;
taskNodeTag . setValue ( tag10 ) ;
return taskNodeTag ;
}
String tag9 = projectNodePo . getTag9 ( ) ;
if ( StringUtils . isNotBlank ( tag9 ) ) {
taskNodeTag . setKey ( " Tag9 " ) ;
taskNodeTag . setValue ( tag9 ) ;
return taskNodeTag ;
}
String tag8 = projectNodePo . getTag8 ( ) ;
if ( StringUtils . isNotBlank ( tag8 ) ) {
taskNodeTag . setKey ( " Tag8 " ) ;
taskNodeTag . setValue ( tag8 ) ;
return taskNodeTag ;
}
String tag7 = projectNodePo . getTag7 ( ) ;
if ( StringUtils . isNotBlank ( tag7 ) ) {
taskNodeTag . setKey ( " Tag7 " ) ;
taskNodeTag . setValue ( tag7 ) ;
return taskNodeTag ;
}
String tag6 = projectNodePo . getTag6 ( ) ;
if ( StringUtils . isNotBlank ( tag6 ) ) {
taskNodeTag . setKey ( " Tag6 " ) ;
taskNodeTag . setValue ( tag6 ) ;
return taskNodeTag ;
}
String tag5 = projectNodePo . getTag5 ( ) ;
if ( StringUtils . isNotBlank ( tag5 ) ) {
taskNodeTag . setKey ( " Tag5 " ) ;
taskNodeTag . setValue ( tag5 ) ;
return taskNodeTag ;
}
String tag4 = projectNodePo . getTag4 ( ) ;
if ( StringUtils . isNotBlank ( tag4 ) ) {
taskNodeTag . setKey ( " Tag4 " ) ;
taskNodeTag . setValue ( tag4 ) ;
return taskNodeTag ;
}
String tag3 = projectNodePo . getTag3 ( ) ;
if ( StringUtils . isNotBlank ( tag3 ) ) {
taskNodeTag . setKey ( " Tag3 " ) ;
taskNodeTag . setValue ( tag3 ) ;
return taskNodeTag ;
}
String tag2 = projectNodePo . getTag2 ( ) ;
if ( StringUtils . isNotBlank ( tag2 ) ) {
taskNodeTag . setKey ( " Tag2 " ) ;
taskNodeTag . setValue ( tag2 ) ;
return taskNodeTag ;
}
String tag1 = projectNodePo . getTag1 ( ) ;
if ( StringUtils . isNotBlank ( tag1 ) ) {
taskNodeTag . setKey ( " Tag1 " ) ;
taskNodeTag . setValue ( tag1 ) ;
}
return taskNodeTag ;
}
private List < ProjectNodePo > getChildrenTypeNodeList ( String currentTag , TaskNodeTag nextNodeTag , String currentNodeTagId ) {
List < ProjectNodePo > childrenTypeNodeList = taskTreeNodeList . stream ( ) . filter ( node - > {
try {
String nodeTagId = getTagProperty ( node , currentTag ) ;
if ( StringUtils . isBlank ( nodeTagId ) ) {
return false ;
}
// tagId相同且:当前深度 = task深度 + 1
return nodeTagId . equals ( finalC urrentNodeTagId) & & currentNodeDepth = = getCurrentNodeDepth ( node ) - 1 ;
// tagId相同, 且nodeType是nextNodeTag类型且子tagId的深度最少
return nodeTagId . equals ( c urrentNodeTagId) & & node . getNodeType ( ) . equals ( nextNodeTag . getKey ( ) ) ;
} catch ( Exception e ) {
throw new RuntimeException ( e ) ;
}
} ) . collect ( Collectors . toList ( ) ) ;
if ( CollectionUtils . isNotEmpty ( same TypeNodeList) ) {
// 递归
for ( ProjectNodePo nodePo : sameTypeNodeList ) {
generateTaskTree ( nodePo ) ;
}
} else if ( CollectionUtils . isNotEmpty ( childrenTypeNodeList ) ) {
// 递归
for ( Project NodePo nodePo : childrenTypeNodeList ) {
generateTaskTree ( nodePo ) ;
if ( CollectionUtils . isNotEmpty ( children TypeNodeList) | | lastNodeTag . equals ( nextNodeTag . getValue ( ) ) ) {
return childrenTypeNodeList ;
}
return getChildrenTypeNodeList ( currentTag , getNextNodeTag ( nextNodeTag . getValue ( ) ) , currentNodeTagId ) ;
}
private TaskNodeTag getNextNodeTag ( String currentTag ) {
Task NodeTag nextNodeTag = null ;
for ( int i = 0 ; i < taskTreeTagMap . size ( ) ; i + + ) {
if ( taskTreeTagMap . get ( i ) . getValue ( ) . equals ( currentTag ) ) {
nextNodeTag = taskTreeTagMap . get ( Math . min ( i + 1 , taskTreeTagMap . size ( ) - 1 ) ) ;
break ;
}
}
List < NodeAllBase > children = new ArrayList < > ( ) ;
if ( CollectionUtils . isNotEmpty ( sameTypeNodeList ) ) {
children . addAll ( sameTypeNodeList ) ;
return nextNodeTag ;
}
private TaskNodeTag getPreNodeTag ( String currentTag ) {
TaskNodeTag nextNodeTag = null ;
for ( int i = 0 ; i < taskTreeTagMap . size ( ) ; i + + ) {
if ( taskTreeTagMap . get ( i ) . getValue ( ) . equals ( currentTag ) ) {
nextNodeTag = taskTreeTagMap . get ( Math . max ( i - 1 , 0 ) ) ;
break ;
}
}
if ( CollectionUtils . isNotEmpty ( childrenTypeNodeList ) ) {
children . addAll ( childrenTypeNodeList ) ;
return nextNodeTag ;
}
private int getFirstLayerNodeDepth ( List < ProjectNodePo > childrenTypeNodeList ) {
int firstLayerNodeDepth = getCurrentNodeDepth ( childrenTypeNodeList . get ( 0 ) ) ;
for ( ProjectNodePo projectNodePo : childrenTypeNodeList ) {
firstLayerNodeDepth = Math . min ( getCurrentNodeDepth ( projectNodePo ) , firstLayerNodeDepth ) ;
}
if ( CollectionUtils . isNotEmpty ( currentNodeAssociatedTaskList ) ) {
currentNodeAssociatedTaskList . forEach ( task - > task . setNodeName ( task . getTaskName ( ) ) ) ;
children . addAll ( currentNodeAssociatedTaskList ) ;
}
projectNodePo . setChildren ( children ) ;
return firstLayerNodeDepth ;
}
@Override
@@ -872,9 +1037,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
for ( TaskNodeTag taskNodeTag : tagList ) {
if ( " Tag1 " . equals ( taskNodeTag . getValue ( ) ) ) {
if ( CollectionUtils . isNotEmpty ( tag1List ) ) {
tag1List . addAll ( i dMap. get ( taskNodeTag . getKey ( ) ) ) ;
tag1List . addAll ( taskI dMap. get ( taskNodeTag . getKey ( ) ) ) ;
} else {
tag1List = i dMap. get ( taskNodeTag . getKey ( ) ) ;
tag1List = taskI dMap. get ( taskNodeTag . getKey ( ) ) ;
}
if ( CollectionUtils . isNotEmpty ( tag1List ) ) {
projectNode . setTag1 ( tag1List ) ;
@@ -891,9 +1056,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
for ( TaskNodeTag taskNodeTag : tagList ) {
if ( " Tag2 " . equals ( taskNodeTag . getValue ( ) ) ) {
if ( CollectionUtils . isNotEmpty ( tag2List ) ) {
tag2List . addAll ( i dMap. get ( taskNodeTag . getKey ( ) ) ) ;
tag2List . addAll ( taskI dMap. get ( taskNodeTag . getKey ( ) ) ) ;
} else {
tag2List = i dMap. get ( taskNodeTag . getKey ( ) ) ;
tag2List = taskI dMap. get ( taskNodeTag . getKey ( ) ) ;
}
if ( CollectionUtils . isNotEmpty ( tag2List ) ) {
projectNode . setTag2 ( tag2List ) ;
@@ -910,9 +1075,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
for ( TaskNodeTag taskNodeTag : tagList ) {
if ( " Tag3 " . equals ( taskNodeTag . getValue ( ) ) ) {
if ( CollectionUtils . isNotEmpty ( tag3List ) ) {
tag3List . addAll ( i dMap. get ( taskNodeTag . getKey ( ) ) ) ;
tag3List . addAll ( taskI dMap. get ( taskNodeTag . getKey ( ) ) ) ;
} else {
tag3List = i dMap. get ( taskNodeTag . getKey ( ) ) ;
tag3List = taskI dMap. get ( taskNodeTag . getKey ( ) ) ;
}
if ( CollectionUtils . isNotEmpty ( tag3List ) ) {
projectNode . setTag3 ( tag3List ) ;
@@ -929,9 +1094,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
for ( TaskNodeTag taskNodeTag : tagList ) {
if ( " Tag4 " . equals ( taskNodeTag . getValue ( ) ) ) {
if ( CollectionUtils . isNotEmpty ( tag4List ) ) {
tag4List . addAll ( i dMap. get ( taskNodeTag . getKey ( ) ) ) ;
tag4List . addAll ( taskI dMap. get ( taskNodeTag . getKey ( ) ) ) ;
} else {
tag4List = i dMap. get ( taskNodeTag . getKey ( ) ) ;
tag4List = taskI dMap. get ( taskNodeTag . getKey ( ) ) ;
}
if ( CollectionUtils . isNotEmpty ( tag4List ) ) {
projectNode . setTag4 ( tag4List ) ;
@@ -948,9 +1113,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
for ( TaskNodeTag taskNodeTag : tagList ) {
if ( " Tag5 " . equals ( taskNodeTag . getValue ( ) ) ) {
if ( CollectionUtils . isNotEmpty ( tag5List ) ) {
tag5List . addAll ( i dMap. get ( taskNodeTag . getKey ( ) ) ) ;
tag5List . addAll ( taskI dMap. get ( taskNodeTag . getKey ( ) ) ) ;
} else {
tag5List = i dMap. get ( taskNodeTag . getKey ( ) ) ;
tag5List = taskI dMap. get ( taskNodeTag . getKey ( ) ) ;
}
if ( CollectionUtils . isNotEmpty ( tag5List ) ) {
projectNode . setTag5 ( tag5List ) ;
@@ -967,9 +1132,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
for ( TaskNodeTag taskNodeTag : tagList ) {
if ( " Tag6 " . equals ( taskNodeTag . getValue ( ) ) ) {
if ( CollectionUtils . isNotEmpty ( tag6List ) ) {
tag6List . addAll ( i dMap. get ( taskNodeTag . getKey ( ) ) ) ;
tag6List . addAll ( taskI dMap. get ( taskNodeTag . getKey ( ) ) ) ;
} else {
tag6List = i dMap. get ( taskNodeTag . getKey ( ) ) ;
tag6List = taskI dMap. get ( taskNodeTag . getKey ( ) ) ;
}
if ( CollectionUtils . isNotEmpty ( tag6List ) ) {
projectNode . setTag6 ( tag6List ) ;
@@ -986,9 +1151,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
for ( TaskNodeTag taskNodeTag : tagList ) {
if ( " Tag7 " . equals ( taskNodeTag . getValue ( ) ) ) {
if ( CollectionUtils . isNotEmpty ( tag7List ) ) {
tag7List . addAll ( i dMap. get ( taskNodeTag . getKey ( ) ) ) ;
tag7List . addAll ( taskI dMap. get ( taskNodeTag . getKey ( ) ) ) ;
} else {
tag7List = i dMap. get ( taskNodeTag . getKey ( ) ) ;
tag7List = taskI dMap. get ( taskNodeTag . getKey ( ) ) ;
}
if ( CollectionUtils . isNotEmpty ( tag7List ) ) {
projectNode . setTag7 ( tag7List ) ;
@@ -1005,9 +1170,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
for ( TaskNodeTag taskNodeTag : tagList ) {
if ( " Tag8 " . equals ( taskNodeTag . getValue ( ) ) ) {
if ( CollectionUtils . isNotEmpty ( tag8List ) ) {
tag8List . addAll ( i dMap. get ( taskNodeTag . getKey ( ) ) ) ;
tag8List . addAll ( taskI dMap. get ( taskNodeTag . getKey ( ) ) ) ;
} else {
tag8List = i dMap. get ( taskNodeTag . getKey ( ) ) ;
tag8List = taskI dMap. get ( taskNodeTag . getKey ( ) ) ;
}
if ( CollectionUtils . isNotEmpty ( tag8List ) ) {
projectNode . setTag8 ( tag8List ) ;
@@ -1024,9 +1189,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
for ( TaskNodeTag taskNodeTag : tagList ) {
if ( " Tag9 " . equals ( taskNodeTag . getValue ( ) ) ) {
if ( CollectionUtils . isNotEmpty ( tag9List ) ) {
tag9List . addAll ( i dMap. get ( taskNodeTag . getKey ( ) ) ) ;
tag9List . addAll ( taskI dMap. get ( taskNodeTag . getKey ( ) ) ) ;
} else {
tag9List = i dMap. get ( taskNodeTag . getKey ( ) ) ;
tag9List = taskI dMap. get ( taskNodeTag . getKey ( ) ) ;
}
if ( CollectionUtils . isNotEmpty ( tag9List ) ) {
projectNode . setTag9 ( tag9List ) ;
@@ -1043,9 +1208,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
for ( TaskNodeTag taskNodeTag : tagList ) {
if ( " Tag10 " . equals ( taskNodeTag . getValue ( ) ) ) {
if ( CollectionUtils . isNotEmpty ( tag10List ) ) {
tag10List . addAll ( i dMap. get ( taskNodeTag . getKey ( ) ) ) ;
tag10List . addAll ( taskI dMap. get ( taskNodeTag . getKey ( ) ) ) ;
} else {
tag10List = i dMap. get ( taskNodeTag . getKey ( ) ) ;
tag10List = taskI dMap. get ( taskNodeTag . getKey ( ) ) ;
}
if ( CollectionUtils . isNotEmpty ( tag10List ) ) {
projectNode . setTag10 ( tag10List ) ;
@@ -1093,6 +1258,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
}
tagList . add ( projectNode . getUuid ( ) ) ;
idMap . put ( projectNode . getNodeType ( ) , tagList ) ;
taskIdMap . put ( projectNode . getNodeType ( ) , tagList ) ;
projectNodeList . add ( projectNode ) ;
List < TaskMemberNode > taskMemberNodeList = projectNode . getMemberList ( ) ;
if ( CollectionUtils . isNotEmpty ( taskMemberNodeList ) ) {
@@ -1169,205 +1335,15 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
List < TaskExtraNode > taskNodeExtraList = new ArrayList < > ( ) ;
List < TaskNode > projectNodePerformanceList = new ArrayList < > ( ) ;
List < TaskExtraNode > projectNodePerformanceExtraList = new ArrayList < > ( ) ;
List< String> newAllProjectNodeList = new ArrayList < > ( ) ;
List< TaskNode> eachProjectNodeList = new ArrayList < > ( ) ;
// List< String> newAllProjectNodeList = new ArrayList<>() ;
// List< TaskNode> eachProjectNodeList = new ArrayList<>() ;
for ( TaskNode taskNode : taskNodeTree . getNodeList ( ) ) {
currentTopNodeType = taskNode . getNodeType ( ) ;
traverseTaskNode ( taskNode . getPid ( ) , tenantId , VersionEnum . INITIAL . getCode ( ) , taskNode , projectNodeList , projectNodeMemberList , projectNodeExtraList , taskNodeList , taskNodeMemberList , taskNodeExtraList , projectNodePerformanceList , projectNodePerformanceExtraList , tagList ) ;
eachProjectNodeList = projectNodeList. stream( ) . filter ( node - > ! newAllProjectNodeList. contains( node . getUuid ( ) ) ) . toList ( ) ;
newAllProjectNodeList. addAll( eachProjectNodeList. stream( ) . map ( TaskNode : : getUuid ) . toList ( ) ) ;
for ( TaskNode projectNode : eachProjectNodeList ) {
List < String > tag1List = projectNode . getTag1 ( ) ;
if ( CollectionUtils . isNotEmpty ( tag1List ) ) {
if ( tag1List . contains ( null ) ) {
tag1List = tag1List . stream ( ) . filter ( ObjectUtils : : isNotEmpty ) . collect ( Collectors . toList ( ) ) ;
for ( TaskNodeTag taskNodeTag : tagList ) {
if ( " Tag1 " . equals ( taskNodeTag . getValue ( ) ) ) {
if ( CollectionUtils . isNotEmpty ( tag1List ) ) {
tag1List . addAll ( idMap . get ( taskNodeTag . getKey ( ) ) ) ;
} else {
tag1List = idMap . get ( taskNodeTag . getKey ( ) ) ;
}
if ( CollectionUtils . isNotEmpty ( tag1List ) ) {
projectNode . setTag1 ( tag1List ) ;
}
}
}
}
}
// eachProjectNodeList = projectNodeList. stream().filter(node -> ! newAllProjectNodeList. contains(node.getUuid())).toList() ;
// newAllProjectNodeList. addAll( eachProjectNodeList. stream().map(TaskNode::getUuid).toList()) ;
List < String > tag2List = projectNode . getTag2 ( ) ;
if ( CollectionUtils . isNotEmpty ( tag2List ) ) {
if ( tag2List . contains ( null ) ) {
tag2List = tag2List . stream ( ) . filter ( ObjectUtils : : isNotEmpty ) . collect ( Collectors . toList ( ) ) ;
for ( TaskNodeTag taskNodeTag : tagList ) {
if ( " Tag2 " . equals ( taskNodeTag . getValue ( ) ) ) {
if ( CollectionUtils . isNotEmpty ( tag2List ) ) {
tag2List . addAll ( idMap . get ( taskNodeTag . getKey ( ) ) ) ;
} else {
tag2List = idMap . get ( taskNodeTag . getKey ( ) ) ;
}
if ( CollectionUtils . isNotEmpty ( tag2List ) ) {
projectNode . setTag2 ( tag2List ) ;
}
}
}
}
}
List < String > tag3List = projectNode . getTag3 ( ) ;
if ( CollectionUtils . isNotEmpty ( tag3List ) ) {
if ( tag3List . contains ( null ) ) {
tag3List = tag3List . stream ( ) . filter ( ObjectUtils : : isNotEmpty ) . collect ( Collectors . toList ( ) ) ;
for ( TaskNodeTag taskNodeTag : tagList ) {
if ( " Tag3 " . equals ( taskNodeTag . getValue ( ) ) ) {
if ( CollectionUtils . isNotEmpty ( tag3List ) ) {
tag3List . addAll ( idMap . get ( taskNodeTag . getKey ( ) ) ) ;
} else {
tag3List = idMap . get ( taskNodeTag . getKey ( ) ) ;
}
if ( CollectionUtils . isNotEmpty ( tag3List ) ) {
projectNode . setTag3 ( tag3List ) ;
}
}
}
}
}
List < String > tag4List = projectNode . getTag4 ( ) ;
if ( CollectionUtils . isNotEmpty ( tag4List ) ) {
if ( tag4List . contains ( null ) ) {
tag4List = tag4List . stream ( ) . filter ( ObjectUtils : : isNotEmpty ) . collect ( Collectors . toList ( ) ) ;
for ( TaskNodeTag taskNodeTag : tagList ) {
if ( " Tag4 " . equals ( taskNodeTag . getValue ( ) ) ) {
if ( CollectionUtils . isNotEmpty ( tag4List ) ) {
tag4List . addAll ( idMap . get ( taskNodeTag . getKey ( ) ) ) ;
} else {
tag4List = idMap . get ( taskNodeTag . getKey ( ) ) ;
}
if ( CollectionUtils . isNotEmpty ( tag4List ) ) {
projectNode . setTag4 ( tag4List ) ;
}
}
}
}
}
List < String > tag5List = projectNode . getTag5 ( ) ;
if ( CollectionUtils . isNotEmpty ( tag5List ) ) {
if ( tag5List . contains ( null ) ) {
tag5List = tag5List . stream ( ) . filter ( ObjectUtils : : isNotEmpty ) . collect ( Collectors . toList ( ) ) ;
for ( TaskNodeTag taskNodeTag : tagList ) {
if ( " Tag5 " . equals ( taskNodeTag . getValue ( ) ) ) {
if ( CollectionUtils . isNotEmpty ( tag5List ) ) {
tag5List . addAll ( idMap . get ( taskNodeTag . getKey ( ) ) ) ;
} else {
tag5List = idMap . get ( taskNodeTag . getKey ( ) ) ;
}
if ( CollectionUtils . isNotEmpty ( tag5List ) ) {
projectNode . setTag5 ( tag5List ) ;
}
}
}
}
}
List < String > tag6List = projectNode . getTag6 ( ) ;
if ( CollectionUtils . isNotEmpty ( tag6List ) ) {
if ( tag6List . contains ( null ) ) {
tag6List = tag6List . stream ( ) . filter ( ObjectUtils : : isNotEmpty ) . collect ( Collectors . toList ( ) ) ;
for ( TaskNodeTag taskNodeTag : tagList ) {
if ( " Tag6 " . equals ( taskNodeTag . getValue ( ) ) ) {
if ( CollectionUtils . isNotEmpty ( tag6List ) ) {
tag6List . addAll ( idMap . get ( taskNodeTag . getKey ( ) ) ) ;
} else {
tag6List = idMap . get ( taskNodeTag . getKey ( ) ) ;
}
if ( CollectionUtils . isNotEmpty ( tag6List ) ) {
projectNode . setTag6 ( tag6List ) ;
}
}
}
}
}
List < String > tag7List = projectNode . getTag7 ( ) ;
if ( CollectionUtils . isNotEmpty ( tag7List ) ) {
if ( tag7List . contains ( null ) ) {
tag7List = tag7List . stream ( ) . filter ( ObjectUtils : : isNotEmpty ) . collect ( Collectors . toList ( ) ) ;
for ( TaskNodeTag taskNodeTag : tagList ) {
if ( " Tag7 " . equals ( taskNodeTag . getValue ( ) ) ) {
if ( CollectionUtils . isNotEmpty ( tag7List ) ) {
tag7List . addAll ( idMap . get ( taskNodeTag . getKey ( ) ) ) ;
} else {
tag7List = idMap . get ( taskNodeTag . getKey ( ) ) ;
}
if ( CollectionUtils . isNotEmpty ( tag7List ) ) {
projectNode . setTag7 ( tag7List ) ;
}
}
}
}
}
List < String > tag8List = projectNode . getTag8 ( ) ;
if ( CollectionUtils . isNotEmpty ( tag8List ) ) {
if ( tag8List . contains ( null ) ) {
tag8List = tag8List . stream ( ) . filter ( ObjectUtils : : isNotEmpty ) . collect ( Collectors . toList ( ) ) ;
for ( TaskNodeTag taskNodeTag : tagList ) {
if ( " Tag8 " . equals ( taskNodeTag . getValue ( ) ) ) {
if ( CollectionUtils . isNotEmpty ( tag8List ) ) {
tag8List . addAll ( idMap . get ( taskNodeTag . getKey ( ) ) ) ;
} else {
tag8List = idMap . get ( taskNodeTag . getKey ( ) ) ;
}
if ( CollectionUtils . isNotEmpty ( tag8List ) ) {
projectNode . setTag8 ( tag8List ) ;
}
}
}
}
}
List < String > tag9List = projectNode . getTag9 ( ) ;
if ( CollectionUtils . isNotEmpty ( tag9List ) ) {
if ( tag9List . contains ( null ) ) {
tag9List = tag9List . stream ( ) . filter ( ObjectUtils : : isNotEmpty ) . collect ( Collectors . toList ( ) ) ;
for ( TaskNodeTag taskNodeTag : tagList ) {
if ( " Tag9 " . equals ( taskNodeTag . getValue ( ) ) ) {
if ( CollectionUtils . isNotEmpty ( tag9List ) ) {
tag9List . addAll ( idMap . get ( taskNodeTag . getKey ( ) ) ) ;
} else {
tag9List = idMap . get ( taskNodeTag . getKey ( ) ) ;
}
if ( CollectionUtils . isNotEmpty ( tag9List ) ) {
projectNode . setTag9 ( tag9List ) ;
}
}
}
}
}
List < String > tag10List = projectNode . getTag10 ( ) ;
if ( CollectionUtils . isNotEmpty ( tag10List ) ) {
if ( tag10List . contains ( null ) ) {
tag10List = tag10List . stream ( ) . filter ( ObjectUtils : : isNotEmpty ) . collect ( Collectors . toList ( ) ) ;
for ( TaskNodeTag taskNodeTag : tagList ) {
if ( " Tag10 " . equals ( taskNodeTag . getValue ( ) ) ) {
if ( CollectionUtils . isNotEmpty ( tag10List ) ) {
tag10List . addAll ( idMap . get ( taskNodeTag . getKey ( ) ) ) ;
} else {
tag10List = idMap . get ( taskNodeTag . getKey ( ) ) ;
}
if ( CollectionUtils . isNotEmpty ( tag10List ) ) {
projectNode . setTag10 ( tag10List ) ;
}
}
}
}
}
}
idMap . clear ( ) ;
taskIdMap . clear ( ) ;
}
SimpleDateFormat format = new SimpleDateFormat ( " yyyy-MM-dd HH:mm:ss " ) ;
String createTime = format . format ( new Date ( ) ) ;
@@ -1780,32 +1756,231 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
// log.info("调用创建文件夹的返回值为:{}", response);
}
private void traverseTaskNode ( String parentId , String tenantId , String nodeVersion , TaskNode p rojectNode, List < TaskNode > projectNodeList , List < TaskMemberNode > projectNodeMemberList , List < TaskExtraNode > projectNodeExtraList , List < TaskNode > taskNodeList , List < TaskMemberNode > taskNodeMemberList , List < TaskExtraNode > taskNodeExtraList , List < TaskNode > taskPerformanceList , List < TaskExtraNode > performanceExtraList , List < TaskNodeTag > tagList ) {
private void traverseTaskNode ( String parentId , String tenantId , String nodeVersion , TaskNode eachP rojectNode, List < TaskNode > projectNodeList , List < TaskMemberNode > projectNodeMemberList , List < TaskExtraNode > projectNodeExtraList , List < TaskNode > taskNodeList , List < TaskMemberNode > taskNodeMemberList , List < TaskExtraNode > taskNodeExtraList , List < TaskNode > taskPerformanceList , List < TaskExtraNode > performanceExtraList , List < TaskNodeTag > tagList ) {
// if (!bStringNotBlank(projectNode.getUuid())) {//兼容在已有节点下添加分析项情况
// projectNode.setUuid(generateUuid());
// }
log . info ( " 当前顶级节点类型为:{} " , currentTopNodeType ) ;
projectNode . setUuid ( generateUuid ( ) ) ;
p rojectNode. setParentId ( StringUtils . isNotEmpty ( parentId ) ? parentId : " 0 " ) ;
p rojectNode. setNode Id ( projectNode . getParentId ( ) ) ;
p rojectNode. setNodeVersion ( nodeVersion ) ;
p rojectNode. setTenantId ( tenantId ) ;
String nodeType = p rojectNode. g etNodeType ( ) ;
List < TaskNode > childrenNodeList = p rojectNode. getChildren ( ) ;
eachP rojectNode. setUuid ( generateUuid ( ) ) ;
eachP rojectNode. setParent Id ( StringUtils . isNotEmpty ( parentId ) ? parentId : " 0 " ) ;
eachP rojectNode. setNodeId ( eachProjectNode . getParentId ( ) ) ;
eachP rojectNode. setNodeVersion ( nodeVersion ) ;
eachP rojectNode. s etTenantId ( tenantId ) ;
String nodeType = eachP rojectNode. getNodeType ( ) ;
List < TaskNode > childrenNodeList = eachProjectNode . getChildren ( ) ;
if ( SystemConstants . TASK_TAG . equals ( nodeType ) ) {
handleTaskExtraAndMember ( p rojectNode, taskNodeList , taskNodeMemberList , taskNodeExtraList , tagList ) ;
handleTaskExtraAndMember ( eachP rojectNode, taskNodeList , taskNodeMemberList , taskNodeExtraList , tagList ) ;
} else if ( SystemConstants . PERFORMANCE_TAG . equals ( nodeType ) ) {
p rojectNode. setTaskId ( parentId ) ;
handlePerformanceExtra ( p rojectNode, taskPerformanceList , performanceExtraList ) ;
eachP rojectNode. setTaskId ( parentId ) ;
handlePerformanceExtra ( eachP rojectNode, taskPerformanceList , performanceExtraList ) ;
} else {
handleNodeExtraAndMember ( p rojectNode, projectNodeList , projectNodeMemberList , projectNodeExtraList ) ;
handleNodeExtraAndMember ( eachP rojectNode, projectNodeList , projectNodeMemberList , projectNodeExtraList ) ;
}
if ( CollectionUtils . isEmpty ( childrenNodeList ) ) {
for ( TaskNode projectNode : projectNodeList ) {
List < String > tag1List = projectNode . getTag1 ( ) ;
if ( CollectionUtils . isNotEmpty ( tag1List ) ) {
if ( tag1List . contains ( null ) ) {
tag1List = tag1List . stream ( ) . filter ( ObjectUtils : : isNotEmpty ) . collect ( Collectors . toList ( ) ) ;
for ( TaskNodeTag taskNodeTag : tagList ) {
if ( " Tag1 " . equals ( taskNodeTag . getValue ( ) ) ) {
if ( CollectionUtils . isNotEmpty ( tag1List ) ) {
tag1List . addAll ( idMap . get ( taskNodeTag . getKey ( ) ) ) ;
} else {
tag1List = idMap . get ( taskNodeTag . getKey ( ) ) ;
}
if ( CollectionUtils . isNotEmpty ( tag1List ) ) {
projectNode . setTag1 ( tag1List ) ;
}
}
}
}
}
List < String > tag2List = projectNode . getTag2 ( ) ;
if ( CollectionUtils . isNotEmpty ( tag2List ) ) {
if ( tag2List . contains ( null ) ) {
tag2List = tag2List . stream ( ) . filter ( ObjectUtils : : isNotEmpty ) . collect ( Collectors . toList ( ) ) ;
for ( TaskNodeTag taskNodeTag : tagList ) {
if ( " Tag2 " . equals ( taskNodeTag . getValue ( ) ) ) {
if ( CollectionUtils . isNotEmpty ( tag2List ) ) {
tag2List . addAll ( idMap . get ( taskNodeTag . getKey ( ) ) ) ;
} else {
tag2List = idMap . get ( taskNodeTag . getKey ( ) ) ;
}
if ( CollectionUtils . isNotEmpty ( tag2List ) ) {
projectNode . setTag2 ( tag2List ) ;
}
}
}
}
}
List < String > tag3List = projectNode . getTag3 ( ) ;
if ( CollectionUtils . isNotEmpty ( tag3List ) ) {
if ( tag3List . contains ( null ) ) {
tag3List = tag3List . stream ( ) . filter ( ObjectUtils : : isNotEmpty ) . collect ( Collectors . toList ( ) ) ;
for ( TaskNodeTag taskNodeTag : tagList ) {
if ( " Tag3 " . equals ( taskNodeTag . getValue ( ) ) ) {
if ( CollectionUtils . isNotEmpty ( tag3List ) ) {
tag3List . addAll ( idMap . get ( taskNodeTag . getKey ( ) ) ) ;
} else {
tag3List = idMap . get ( taskNodeTag . getKey ( ) ) ;
}
if ( CollectionUtils . isNotEmpty ( tag3List ) ) {
projectNode . setTag3 ( tag3List ) ;
}
}
}
}
}
List < String > tag4List = projectNode . getTag4 ( ) ;
if ( CollectionUtils . isNotEmpty ( tag4List ) ) {
if ( tag4List . contains ( null ) ) {
tag4List = tag4List . stream ( ) . filter ( ObjectUtils : : isNotEmpty ) . collect ( Collectors . toList ( ) ) ;
for ( TaskNodeTag taskNodeTag : tagList ) {
if ( " Tag4 " . equals ( taskNodeTag . getValue ( ) ) ) {
if ( CollectionUtils . isNotEmpty ( tag4List ) ) {
tag4List . addAll ( idMap . get ( taskNodeTag . getKey ( ) ) ) ;
} else {
tag4List = idMap . get ( taskNodeTag . getKey ( ) ) ;
}
if ( CollectionUtils . isNotEmpty ( tag4List ) ) {
projectNode . setTag4 ( tag4List ) ;
}
}
}
}
}
List < String > tag5List = projectNode . getTag5 ( ) ;
if ( CollectionUtils . isNotEmpty ( tag5List ) ) {
if ( tag5List . contains ( null ) ) {
tag5List = tag5List . stream ( ) . filter ( ObjectUtils : : isNotEmpty ) . collect ( Collectors . toList ( ) ) ;
for ( TaskNodeTag taskNodeTag : tagList ) {
if ( " Tag5 " . equals ( taskNodeTag . getValue ( ) ) ) {
if ( CollectionUtils . isNotEmpty ( tag5List ) ) {
tag5List . addAll ( idMap . get ( taskNodeTag . getKey ( ) ) ) ;
} else {
tag5List = idMap . get ( taskNodeTag . getKey ( ) ) ;
}
if ( CollectionUtils . isNotEmpty ( tag5List ) ) {
projectNode . setTag5 ( tag5List ) ;
}
}
}
}
}
List < String > tag6List = projectNode . getTag6 ( ) ;
if ( CollectionUtils . isNotEmpty ( tag6List ) ) {
if ( tag6List . contains ( null ) ) {
tag6List = tag6List . stream ( ) . filter ( ObjectUtils : : isNotEmpty ) . collect ( Collectors . toList ( ) ) ;
for ( TaskNodeTag taskNodeTag : tagList ) {
if ( " Tag6 " . equals ( taskNodeTag . getValue ( ) ) ) {
if ( CollectionUtils . isNotEmpty ( tag6List ) ) {
tag6List . addAll ( idMap . get ( taskNodeTag . getKey ( ) ) ) ;
} else {
tag6List = idMap . get ( taskNodeTag . getKey ( ) ) ;
}
if ( CollectionUtils . isNotEmpty ( tag6List ) ) {
projectNode . setTag6 ( tag6List ) ;
}
}
}
}
}
List < String > tag7List = projectNode . getTag7 ( ) ;
if ( CollectionUtils . isNotEmpty ( tag7List ) ) {
if ( tag7List . contains ( null ) ) {
tag7List = tag7List . stream ( ) . filter ( ObjectUtils : : isNotEmpty ) . collect ( Collectors . toList ( ) ) ;
for ( TaskNodeTag taskNodeTag : tagList ) {
if ( " Tag7 " . equals ( taskNodeTag . getValue ( ) ) ) {
if ( CollectionUtils . isNotEmpty ( tag7List ) ) {
tag7List . addAll ( idMap . get ( taskNodeTag . getKey ( ) ) ) ;
} else {
tag7List = idMap . get ( taskNodeTag . getKey ( ) ) ;
}
if ( CollectionUtils . isNotEmpty ( tag7List ) ) {
projectNode . setTag7 ( tag7List ) ;
}
}
}
}
}
List < String > tag8List = projectNode . getTag8 ( ) ;
if ( CollectionUtils . isNotEmpty ( tag8List ) ) {
if ( tag8List . contains ( null ) ) {
tag8List = tag8List . stream ( ) . filter ( ObjectUtils : : isNotEmpty ) . collect ( Collectors . toList ( ) ) ;
for ( TaskNodeTag taskNodeTag : tagList ) {
if ( " Tag8 " . equals ( taskNodeTag . getValue ( ) ) ) {
if ( CollectionUtils . isNotEmpty ( tag8List ) ) {
tag8List . addAll ( idMap . get ( taskNodeTag . getKey ( ) ) ) ;
} else {
tag8List = idMap . get ( taskNodeTag . getKey ( ) ) ;
}
if ( CollectionUtils . isNotEmpty ( tag8List ) ) {
projectNode . setTag8 ( tag8List ) ;
}
}
}
}
}
List < String > tag9List = projectNode . getTag9 ( ) ;
if ( CollectionUtils . isNotEmpty ( tag9List ) ) {
if ( tag9List . contains ( null ) ) {
tag9List = tag9List . stream ( ) . filter ( ObjectUtils : : isNotEmpty ) . collect ( Collectors . toList ( ) ) ;
for ( TaskNodeTag taskNodeTag : tagList ) {
if ( " Tag9 " . equals ( taskNodeTag . getValue ( ) ) ) {
if ( CollectionUtils . isNotEmpty ( tag9List ) ) {
tag9List . addAll ( idMap . get ( taskNodeTag . getKey ( ) ) ) ;
} else {
tag9List = idMap . get ( taskNodeTag . getKey ( ) ) ;
}
if ( CollectionUtils . isNotEmpty ( tag9List ) ) {
projectNode . setTag9 ( tag9List ) ;
}
}
}
}
}
List < String > tag10List = projectNode . getTag10 ( ) ;
if ( CollectionUtils . isNotEmpty ( tag10List ) ) {
if ( tag10List . contains ( null ) ) {
tag10List = tag10List . stream ( ) . filter ( ObjectUtils : : isNotEmpty ) . collect ( Collectors . toList ( ) ) ;
for ( TaskNodeTag taskNodeTag : tagList ) {
if ( " Tag10 " . equals ( taskNodeTag . getValue ( ) ) ) {
if ( CollectionUtils . isNotEmpty ( tag10List ) ) {
tag10List . addAll ( idMap . get ( taskNodeTag . getKey ( ) ) ) ;
} else {
tag10List = idMap . get ( taskNodeTag . getKey ( ) ) ;
}
if ( CollectionUtils . isNotEmpty ( tag10List ) ) {
projectNode . setTag10 ( tag10List ) ;
}
}
}
}
}
}
for ( Map . Entry < String , List < String > > entry : idMap . entrySet ( ) ) {
if ( ! currentTopNodeType . equals ( entry . getKey ( ) ) ) {
entry . setValue ( null ) ;
}
}
return ;
}
// 处理子节点
for ( TaskNode node : childrenNodeList ) {
traverseTaskNode ( p rojectNode. getUuid ( ) , tenantId , nodeVersion , node , projectNodeList , projectNodeMemberList , projectNodeExtraList , taskNodeList , taskNodeMemberList , taskNodeExtraList , taskPerformanceList , performanceExtraList , tagList ) ;
traverseTaskNode ( eachP rojectNode. getUuid ( ) , tenantId , nodeVersion , node , projectNodeList , projectNodeMemberList , projectNodeExtraList , taskNodeList , taskNodeMemberList , taskNodeExtraList , taskPerformanceList , performanceExtraList , tagList ) ;
}
}