|
@@ -710,18 +710,25 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
|
//获取公有wbs树新增的元素表
|
|
|
List<WbsTree> allNodeList = findAllNodeList(wbsTreeIds);
|
|
|
List<WbsTree> wbsTreeListAll = new ArrayList<>();
|
|
|
-
|
|
|
//获取公有wbs树所有的元素表
|
|
|
if (allNodeList != null) {
|
|
|
List<WbsTree> wbsTreeList = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
|
|
|
- .eq(WbsTree::getWbsId, pawDTO.getWbsId())
|
|
|
- .eq(WbsTree::getType, 2)
|
|
|
+ .eq(WbsTree::getWbsId, pawDTO.getWbsId())
|
|
|
+ .eq(WbsTree::getStatus, 1)
|
|
|
+ //.eq(WbsTree::getType, 2)
|
|
|
);
|
|
|
wbsTreeListAll.addAll(wbsTreeList);
|
|
|
}
|
|
|
|
|
|
+ //所有表单信息
|
|
|
+ List<WbsTree> wbsTreeListTables = wbsTreeListAll.stream().filter(f -> f.getType() == 2).collect(Collectors.toList());
|
|
|
+
|
|
|
+ //所有节点信息
|
|
|
+ List<WbsTree> wbsTreeListNodes = wbsTreeListAll.stream().filter(f -> f.getType() == 1).collect(Collectors.toList());
|
|
|
+
|
|
|
+
|
|
|
//公有元素表的id
|
|
|
- List<Long> collect1 = wbsTreeListAll.stream().map(WbsTree::getId).collect(Collectors.toList());
|
|
|
+ List<Long> collect1 = wbsTreeListTables.stream().map(WbsTree::getId).collect(Collectors.toList());
|
|
|
List<String> collect2 = collect1.stream().map(String::valueOf).collect(Collectors.toList());
|
|
|
|
|
|
//获取项目私有wbs树下当前所有的元素表
|
|
@@ -737,9 +744,13 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
|
|
|
|
List<String> diffRent1 = WbsTreeContractServiceImpl.getDiffrent(collect2, collect4);
|
|
|
|
|
|
+ //同步公有wbs节点信息,编辑修改后的节点信息到项目级wbs、合同段wbs
|
|
|
+ wbsTreePrivateService.updateBatchByIds(wbsTreeListNodes, pawDTO.getProjectId());
|
|
|
+
|
|
|
if (diffRent1.size() == 0) {
|
|
|
//当wbsTreeIds == "" 时 1.在第一次新增未选择wbs树时 2.同步新增的元素表时
|
|
|
- throw new ServiceException("未检测到当前引用的wbs树下有新增的元素表信息");
|
|
|
+ return true;
|
|
|
+ //throw new ServiceException("未检测到当前引用的wbs树下有新增的元素表信息");
|
|
|
|
|
|
} else {
|
|
|
if (collect2.size() > collect4.size()) {
|
|
@@ -748,58 +759,69 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
|
//公有同步元素表
|
|
|
diffRent1.stream().forEach(tableId -> {
|
|
|
WbsTree wbsTree = wbsTreeMapper.selectById(tableId);
|
|
|
- Long snowId1 = SnowFlakeUtil.getId();
|
|
|
- wbsTreePrivateMapper.insertCombination1(snowId1, wbsTree, pawDTO.getWbsType(), pawDTO.getProjectId());
|
|
|
-
|
|
|
- //找到当前新增成功的元素表
|
|
|
- WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getPKeyId, snowId1));
|
|
|
-
|
|
|
- //同步到该项目下的所有合同段
|
|
|
- for (ContractInfo contractInfoId : contractInfoIds) {
|
|
|
- WbsTreeContract wbsTreeContract = getWbsTreeContract(wbsTreePrivate, pawDTO);
|
|
|
- wbsTreeContract.setContractId(String.valueOf(contractInfoId.getId()));
|
|
|
-
|
|
|
- //判断元素表是否存在上级节点,存在则新增;不存在则表示没被引用,不新增
|
|
|
- WbsTreeContract wbsTreeContract1 = wbsTreeContractMapper.selectOne(Wrappers.<WbsTreeContract>query().lambda()
|
|
|
- .eq(WbsTreeContract::getProjectId, wbsTreeContract.getProjectId())
|
|
|
- .eq(WbsTreeContract::getContractId, contractInfoId.getId())
|
|
|
- .eq(WbsTreeContract::getType, 1)
|
|
|
- .eq(WbsTreeContract::getId, wbsTreePrivate.getParentId())
|
|
|
- );
|
|
|
- if (wbsTreeContract1 != null) {
|
|
|
- wbsTreeContractMapper.insert(wbsTreeContract);
|
|
|
-
|
|
|
- //新增同步到对应的复制或新增的父级节点下
|
|
|
- //获取当前新增表单的上级父节点
|
|
|
- WbsTreeContract wbsTreeContracts1 = wbsTreeContractMapper.selectOne(Wrappers.<WbsTreeContract>query().lambda()
|
|
|
- .eq(WbsTreeContract::getId, wbsTreeContract.getParentId())
|
|
|
+ //判断当前新增的表在私有wbs中是否存在上级节点,存在表示可以新增,不存在表示不新增
|
|
|
+ WbsTreePrivate wbsTreePrivate1 = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
+ .eq(WbsTreePrivate::getId, wbsTree.getParentId())
|
|
|
+ .eq(WbsTreePrivate::getWbsId, wbsTree.getWbsId())
|
|
|
+ .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
|
|
|
+ .eq(WbsTreePrivate::getStatus, 1)
|
|
|
+ );
|
|
|
+
|
|
|
+ if (wbsTreePrivate1 != null) {
|
|
|
+ //同步元素表
|
|
|
+ Long snowId1 = SnowFlakeUtil.getId();
|
|
|
+ wbsTreePrivateMapper.insertCombination1(snowId1, wbsTree, pawDTO.getWbsType(), pawDTO.getProjectId());
|
|
|
+
|
|
|
+ //2.同步到该项目下所有合同段wbs树
|
|
|
+ //找到当前新增成功的元素表
|
|
|
+ WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getPKeyId, snowId1));
|
|
|
+
|
|
|
+ for (ContractInfo contractInfoId : contractInfoIds) {
|
|
|
+ WbsTreeContract wbsTreeContract = getWbsTreeContract(wbsTreePrivate, pawDTO);
|
|
|
+ wbsTreeContract.setContractId(String.valueOf(contractInfoId.getId()));
|
|
|
+
|
|
|
+ //判断元素表是否存在上级节点,存在则新增;不存在则表示没被引用,不新增
|
|
|
+ WbsTreeContract wbsTreeContract1 = wbsTreeContractMapper.selectOne(Wrappers.<WbsTreeContract>query().lambda()
|
|
|
+ .eq(WbsTreeContract::getProjectId, wbsTreeContract.getProjectId())
|
|
|
.eq(WbsTreeContract::getContractId, contractInfoId.getId())
|
|
|
- .eq(WbsTreeContract::getProjectId, pawDTO.getProjectId())
|
|
|
- .eq(WbsTreeContract::getWbsId, pawDTO.getWbsId())
|
|
|
.eq(WbsTreeContract::getType, 1)
|
|
|
+ .eq(WbsTreeContract::getId, wbsTreePrivate.getParentId())
|
|
|
);
|
|
|
- if (wbsTreeContracts1 != null) {
|
|
|
- //获取上级父级节点同级别的复制或新增节点
|
|
|
- List<WbsTreeContract> wbsTreeContracts2 = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
|
|
|
- .eq(WbsTreeContract::getOldId, wbsTreeContracts1.getId())
|
|
|
+ if (wbsTreeContract1 != null) {
|
|
|
+ wbsTreeContractMapper.insert(wbsTreeContract);
|
|
|
+
|
|
|
+ //新增同步到对应的复制或新增的父级节点下
|
|
|
+ //获取当前新增表单的上级父节点
|
|
|
+ WbsTreeContract wbsTreeContracts1 = wbsTreeContractMapper.selectOne(Wrappers.<WbsTreeContract>query().lambda()
|
|
|
+ .eq(WbsTreeContract::getId, wbsTreeContract.getParentId())
|
|
|
.eq(WbsTreeContract::getContractId, contractInfoId.getId())
|
|
|
.eq(WbsTreeContract::getProjectId, pawDTO.getProjectId())
|
|
|
.eq(WbsTreeContract::getWbsId, pawDTO.getWbsId())
|
|
|
.eq(WbsTreeContract::getType, 1)
|
|
|
);
|
|
|
- if (wbsTreeContracts2.size() > 0) {
|
|
|
- //将表单同步到复制或新增的节点下
|
|
|
- for (WbsTreeContract treeContract : wbsTreeContracts2) {
|
|
|
- wbsTreeContract.setPKeyId(SnowFlakeUtil.getId());
|
|
|
- wbsTreeContract.setParentId(treeContract.getId());
|
|
|
- wbsTreeContractMapper.insert(wbsTreeContract);
|
|
|
+ if (wbsTreeContracts1 != null) {
|
|
|
+ //获取上级父级节点同级别的复制或新增节点
|
|
|
+ List<WbsTreeContract> wbsTreeContracts2 = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
|
|
|
+ .eq(WbsTreeContract::getOldId, wbsTreeContracts1.getId())
|
|
|
+ .eq(WbsTreeContract::getContractId, contractInfoId.getId())
|
|
|
+ .eq(WbsTreeContract::getProjectId, pawDTO.getProjectId())
|
|
|
+ .eq(WbsTreeContract::getWbsId, pawDTO.getWbsId())
|
|
|
+ .eq(WbsTreeContract::getType, 1)
|
|
|
+ );
|
|
|
+ if (wbsTreeContracts2.size() > 0) {
|
|
|
+ //将表单同步到复制或新增的节点下
|
|
|
+ for (WbsTreeContract treeContract : wbsTreeContracts2) {
|
|
|
+ wbsTreeContract.setPKeyId(SnowFlakeUtil.getId());
|
|
|
+ wbsTreeContract.setParentId(treeContract.getId());
|
|
|
+ wbsTreeContractMapper.insert(wbsTreeContract);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
+
|
|
|
return true;
|
|
|
}
|
|
|
}
|
|
@@ -810,15 +832,22 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
|
WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
.eq(WbsTreePrivate::getPKeyId, pawDTO.getPrimaryKeyId()));
|
|
|
|
|
|
- //获取所私有引用项目的wbs树的全部元素表
|
|
|
+ //获取私有引用项目的wbs树的全部元素表+节点信息
|
|
|
List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
- .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
|
|
|
- .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
|
|
|
- .eq(WbsTreePrivate::getType, 2)
|
|
|
+ .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
|
|
|
+ .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
|
|
|
+ .eq(WbsTreePrivate::getStatus, 1)
|
|
|
+ //.eq(WbsTreePrivate::getType, 2)
|
|
|
);
|
|
|
|
|
|
+ //私有引用项目的表单信息
|
|
|
+ List<WbsTreePrivate> WbsTreePrivateTables = wbsTreePrivates.stream().filter(f -> f.getType() == 2).collect(Collectors.toList());
|
|
|
+
|
|
|
+ //私有引用项目的节点信息
|
|
|
+ List<WbsTreePrivate> WbsTreePrivateNodes = wbsTreePrivates.stream().filter(f -> f.getType() == 1).collect(Collectors.toList());
|
|
|
+
|
|
|
//当前新增表单的id
|
|
|
- List<Long> collect1 = wbsTreePrivates.stream().map(WbsTreePrivate::getId).collect(Collectors.toList());
|
|
|
+ List<Long> collect1 = WbsTreePrivateTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList());
|
|
|
List<String> collect2 = collect1.stream().map(String::valueOf).collect(Collectors.toList());
|
|
|
|
|
|
//获取当前项目私有wbs树下当前所有的元素表
|
|
@@ -834,8 +863,12 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
|
|
|
|
List<String> diffRent1 = WbsTreeContractServiceImpl.getDiffrent(collect2, collect4);
|
|
|
|
|
|
+ //同步私有wbs节点信息,编辑修改后的节点信息到项目级wbs、合同段wbs
|
|
|
+ wbsTreePrivateService.updateBatchByIds2(WbsTreePrivateNodes, pawDTO.getProjectId(), pawDTO.getPrimaryKeyId());
|
|
|
+
|
|
|
if (diffRent1.size() == 0) {
|
|
|
- throw new ServiceException("未检测到当前引用的wbs树下有新增的元素表信息");
|
|
|
+ return true;
|
|
|
+ //throw new ServiceException("未检测到当前引用的wbs树下有新增的元素表信息");
|
|
|
|
|
|
} else {
|
|
|
if (collect2.size() > collect4.size()) {
|
|
@@ -855,51 +888,63 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
|
});
|
|
|
|
|
|
lists.stream().forEach(list -> {
|
|
|
- list.setPKeyId(SnowFlakeUtil.getId());
|
|
|
- list.setWbsId(pawDTO.getPrimaryKeyId());
|
|
|
- list.setProjectId(pawDTO.getProjectId());
|
|
|
-
|
|
|
- //同步到该项目下的所有合同段
|
|
|
- for (ContractInfo contractInfoId : contractInfoIds) {
|
|
|
- WbsTreeContract wbsTreeContract = getWbsTreeContract(list, pawDTO);
|
|
|
- wbsTreeContract.setContractId(String.valueOf(contractInfoId.getId()));
|
|
|
- wbsTreeContract.setWbsId(pawDTO.getPrimaryKeyId());
|
|
|
-
|
|
|
- //判断元素表是否存在上级节点,存在则新增;不存在则表示没被引用,不新增
|
|
|
- WbsTreeContract wbsTreeContract1 = wbsTreeContractMapper.selectOne(Wrappers.<WbsTreeContract>query().lambda()
|
|
|
- .eq(WbsTreeContract::getProjectId, wbsTreeContract.getProjectId())
|
|
|
- .eq(WbsTreeContract::getContractId, wbsTreeContract.getContractId())
|
|
|
- .eq(WbsTreeContract::getWbsId, wbsTreeContract.getWbsId())
|
|
|
- .eq(WbsTreeContract::getType, 1)
|
|
|
- .eq(WbsTreeContract::getId, wbsTreeContract.getParentId())
|
|
|
- );
|
|
|
- if (wbsTreeContract1 != null) {
|
|
|
- wbsTreeContractMapper.insert(wbsTreeContract);
|
|
|
-
|
|
|
- //新增同步到对应的复制或新增的父级节点下
|
|
|
- //获取当前新增表单的上级父节点
|
|
|
- WbsTreeContract wbsTreeContracts1 = wbsTreeContractMapper.selectOne(Wrappers.<WbsTreeContract>query().lambda()
|
|
|
- .eq(WbsTreeContract::getId, wbsTreeContract.getParentId())
|
|
|
- .eq(WbsTreeContract::getContractId, contractInfoId.getId())
|
|
|
- .eq(WbsTreeContract::getProjectId, pawDTO.getProjectId())
|
|
|
- .eq(WbsTreeContract::getWbsId, pawDTO.getPrimaryKeyId())
|
|
|
+ //判断当前新增的表在私有wbs中是否存在上级节点,存在表示可以新增,不存在表示不新增
|
|
|
+ WbsTreePrivate wbsTreePrivate1 = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
+ .eq(WbsTreePrivate::getId, list.getParentId())
|
|
|
+ .eq(WbsTreePrivate::getWbsId, pawDTO.getPrimaryKeyId())
|
|
|
+ .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
|
|
|
+ );
|
|
|
+
|
|
|
+ if (wbsTreePrivate1 != null) {
|
|
|
+ list.setPKeyId(SnowFlakeUtil.getId());
|
|
|
+ list.setWbsId(pawDTO.getPrimaryKeyId());
|
|
|
+ list.setProjectId(pawDTO.getProjectId());
|
|
|
+
|
|
|
+ //同步元素表
|
|
|
+ wbsTreePrivateService.save(list);
|
|
|
+
|
|
|
+ //同步到该项目下的所有合同段
|
|
|
+ for (ContractInfo contractInfoId : contractInfoIds) {
|
|
|
+ WbsTreeContract wbsTreeContract = getWbsTreeContract(list, pawDTO);
|
|
|
+ wbsTreeContract.setContractId(String.valueOf(contractInfoId.getId()));
|
|
|
+ wbsTreeContract.setWbsId(pawDTO.getPrimaryKeyId());
|
|
|
+
|
|
|
+ //判断元素表是否存在上级节点,存在则新增;不存在则表示没被引用,不新增
|
|
|
+ WbsTreeContract wbsTreeContract1 = wbsTreeContractMapper.selectOne(Wrappers.<WbsTreeContract>query().lambda()
|
|
|
+ .eq(WbsTreeContract::getProjectId, wbsTreeContract.getProjectId())
|
|
|
+ .eq(WbsTreeContract::getContractId, wbsTreeContract.getContractId())
|
|
|
+ .eq(WbsTreeContract::getWbsId, wbsTreeContract.getWbsId())
|
|
|
.eq(WbsTreeContract::getType, 1)
|
|
|
+ .eq(WbsTreeContract::getId, wbsTreeContract.getParentId())
|
|
|
);
|
|
|
- if (wbsTreeContracts1 != null) {
|
|
|
- //获取上级父级节点同级别的复制或新增节点
|
|
|
- List<WbsTreeContract> wbsTreeContracts2 = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
|
|
|
- .eq(WbsTreeContract::getOldId, wbsTreeContracts1.getId())
|
|
|
+ if (wbsTreeContract1 != null) {
|
|
|
+ wbsTreeContractMapper.insert(wbsTreeContract);
|
|
|
+
|
|
|
+ //新增同步到对应的复制或新增的父级节点下
|
|
|
+ //获取当前新增表单的上级父节点
|
|
|
+ WbsTreeContract wbsTreeContracts1 = wbsTreeContractMapper.selectOne(Wrappers.<WbsTreeContract>query().lambda()
|
|
|
+ .eq(WbsTreeContract::getId, wbsTreeContract.getParentId())
|
|
|
.eq(WbsTreeContract::getContractId, contractInfoId.getId())
|
|
|
.eq(WbsTreeContract::getProjectId, pawDTO.getProjectId())
|
|
|
.eq(WbsTreeContract::getWbsId, pawDTO.getPrimaryKeyId())
|
|
|
.eq(WbsTreeContract::getType, 1)
|
|
|
);
|
|
|
- if (wbsTreeContracts2.size() > 0) {
|
|
|
- //将表单同步到复制或新增的节点下
|
|
|
- for (WbsTreeContract treeContract : wbsTreeContracts2) {
|
|
|
- wbsTreeContract.setPKeyId(SnowFlakeUtil.getId());
|
|
|
- wbsTreeContract.setParentId(treeContract.getId());
|
|
|
- wbsTreeContractMapper.insert(wbsTreeContract);
|
|
|
+ if (wbsTreeContracts1 != null) {
|
|
|
+ //获取上级父级节点同级别的复制或新增节点
|
|
|
+ List<WbsTreeContract> wbsTreeContracts2 = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
|
|
|
+ .eq(WbsTreeContract::getOldId, wbsTreeContracts1.getId())
|
|
|
+ .eq(WbsTreeContract::getContractId, contractInfoId.getId())
|
|
|
+ .eq(WbsTreeContract::getProjectId, pawDTO.getProjectId())
|
|
|
+ .eq(WbsTreeContract::getWbsId, pawDTO.getPrimaryKeyId())
|
|
|
+ .eq(WbsTreeContract::getType, 1)
|
|
|
+ );
|
|
|
+ if (wbsTreeContracts2.size() > 0) {
|
|
|
+ //将表单同步到复制或新增的节点下
|
|
|
+ for (WbsTreeContract treeContract : wbsTreeContracts2) {
|
|
|
+ wbsTreeContract.setPKeyId(SnowFlakeUtil.getId());
|
|
|
+ wbsTreeContract.setParentId(treeContract.getId());
|
|
|
+ wbsTreeContractMapper.insert(wbsTreeContract);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -907,7 +952,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
|
}
|
|
|
});
|
|
|
|
|
|
- wbsTreePrivateService.saveBatch(lists, 10000);
|
|
|
return true;
|
|
|
}
|
|
|
}
|
|
@@ -959,11 +1003,9 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
|
throw new ServiceException(StringUtil.format("当前项目wbs树的节点已被 {} 引用中,删除失败", join));
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
baseMapper.deleteBatch(ids2, pawDTO.getPrimaryKeyId(), pawDTO.getProjectId());
|
|
|
baseMapper.deleteBatch2(ids2, pawDTO.getPrimaryKeyId(), pawDTO.getProjectId());
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
//2.新增
|