|
@@ -71,10 +71,6 @@ public class ZhcxItpTemplateServiceImpl extends ServiceImpl<ZhcxItpTemplateDao,
|
|
|
if(StringUtils.isNotBlank(copyNodesDo.getPath())){
|
|
|
pids.addAll(Arrays.asList(copyNodesDo.getPath().split(",")));
|
|
|
}
|
|
|
- // 获取小构件关联的大构件 jnp add
|
|
|
- if(StringUtils.isNotBlank(copyNodesDo.getPnodeid())){
|
|
|
- pids.add(copyNodesDo.getPnodeid());
|
|
|
- }
|
|
|
// 获取所有子节点
|
|
|
for (ZhcxItpTemplateNodesDo tempNodesDo : tempNodesDos) {
|
|
|
if(StringUtils.isNotBlank(tempNodesDo.getPath())){
|
|
@@ -84,26 +80,62 @@ public class ZhcxItpTemplateServiceImpl extends ServiceImpl<ZhcxItpTemplateDao,
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ // 前端选中的节点的所有父节点
|
|
|
if(pids != null && pids.size()>0){
|
|
|
List<ZhcxItpTemplateNodesDo> pidNodesDos = zhcxItpTemplateNodesService.list(
|
|
|
new LambdaQueryWrapper<ZhcxItpTemplateNodesDo>().in(ZhcxItpTemplateNodesDo::getId,pids));
|
|
|
- // 补充获取没选中漏掉的大构件 jnp add
|
|
|
- List<String> bigpids = new ArrayList<>();
|
|
|
- for (ZhcxItpTemplateNodesDo pidNodesDo : pidNodesDos) {
|
|
|
- if (StringUtils.isNotBlank(pidNodesDo.getPnodeid())) {
|
|
|
- bigpids.add(pidNodesDo.getPnodeid());
|
|
|
+ if(pidNodesDos != null){
|
|
|
+ allCopyNodes.addAll(pidNodesDos);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 小构件关联的大构件
|
|
|
+ Set<String> bigPids = new HashSet<>();
|
|
|
+ // 大构件关联的小构件
|
|
|
+ Set<String> bigChildids = new HashSet<>();
|
|
|
+ for (ZhcxItpTemplateNodesDo copyNodesDo : allCopyNodes) {
|
|
|
+ // 获取小构件关联的大构件
|
|
|
+ if(StringUtils.isNotBlank(copyNodesDo.getPnodeid())){
|
|
|
+ bigPids.add(copyNodesDo.getPnodeid());
|
|
|
+ }
|
|
|
+ // 获取所有子节点
|
|
|
+ for (ZhcxItpTemplateNodesDo tempNodesDo : tempNodesDos) {
|
|
|
+ // 判断是否有小构件归属当前大构件
|
|
|
+ if(StringUtils.isNotBlank(tempNodesDo.getPnodeid()) && tempNodesDo.getPnodeid().equals(copyNodesDo.getId())){
|
|
|
+ bigChildids.add(tempNodesDo.getId());
|
|
|
}
|
|
|
}
|
|
|
- if(bigpids != null && bigpids.size()>0) {
|
|
|
- List<ZhcxItpTemplateNodesDo> bigpidNodesDos = zhcxItpTemplateNodesService.list(
|
|
|
- new LambdaQueryWrapper<ZhcxItpTemplateNodesDo>().in(ZhcxItpTemplateNodesDo::getId,bigpids));
|
|
|
- if(bigpidNodesDos != null){
|
|
|
- allCopyNodes.addAll(bigpidNodesDos);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 小构件关联的大构件父节点,以及归属小构件的所有子节点报验点
|
|
|
+ Set<String> gsgjids = new HashSet<>();
|
|
|
+ gsgjids.addAll(bigPids);
|
|
|
+ gsgjids.addAll(bigChildids);
|
|
|
+ List<ZhcxItpTemplateNodesDo> gsgjNodesDos = new ArrayList<>();
|
|
|
+ Set<String> bigPidsPids = new HashSet<>();
|
|
|
+ for (ZhcxItpTemplateNodesDo tempNodesDo : tempNodesDos) {
|
|
|
+ // 归属小构件的所有子节点报验点
|
|
|
+ for (String bigChildid : bigChildids) {
|
|
|
+ if(StringUtils.isNotBlank(tempNodesDo.getPath())){
|
|
|
+ if(tempNodesDo.getPath().contains(bigChildid)){
|
|
|
+ gsgjNodesDos.add(tempNodesDo);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- //补充获取没选中的大构件end jnp add
|
|
|
- if(pidNodesDos != null){
|
|
|
- allCopyNodes.addAll(pidNodesDos);
|
|
|
+ // 小构件关联的大构件父节点
|
|
|
+ if(gsgjids.contains(tempNodesDo.getId())){
|
|
|
+ bigPidsPids.addAll(Arrays.asList(tempNodesDo.getPath().split(",")));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ gsgjids.addAll(bigPidsPids);
|
|
|
+ if(gsgjids != null && gsgjids.size()>0){
|
|
|
+ gsgjNodesDos.addAll(zhcxItpTemplateNodesService.list(
|
|
|
+ new LambdaQueryWrapper<ZhcxItpTemplateNodesDo>().in(ZhcxItpTemplateNodesDo::getId,gsgjids)));
|
|
|
+ }
|
|
|
+ // 整体去重
|
|
|
+ for (ZhcxItpTemplateNodesDo gsgjNodesDo : gsgjNodesDos) {
|
|
|
+ List<ZhcxItpTemplateNodesDo> hasNodes = allCopyNodes.stream().filter(v -> v.getId().equals(gsgjNodesDo.getId())).collect(Collectors.toList());
|
|
|
+ if(hasNodes == null || hasNodes.size() == 0){
|
|
|
+ allCopyNodes.add(gsgjNodesDo);
|
|
|
}
|
|
|
}
|
|
|
}
|