|
@@ -10,6 +10,7 @@ import lombok.AllArgsConstructor;
|
|
|
import org.springblade.common.utils.SnowFlakeUtil;
|
|
|
import org.springblade.core.log.exception.ServiceException;
|
|
|
import org.springblade.core.mp.base.BaseServiceImpl;
|
|
|
+import org.springblade.core.secure.utils.AuthUtil;
|
|
|
import org.springblade.core.tool.api.R;
|
|
|
import org.springblade.core.tool.node.ForestNodeMerger;
|
|
|
import org.springblade.core.tool.utils.BeanUtil;
|
|
@@ -350,6 +351,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
|
|| (ObjectUtils.isNotEmpty(wbsTree.getTableType()) && !wbsTree.getTableType().equals(wbsTreePrivate.getTableType()))
|
|
|
|| (ObjectUtils.isNotEmpty(wbsTree.getTableOwner()) && !wbsTree.getTableOwner().equals(wbsTreePrivate.getTableOwner()))
|
|
|
|| (ObjectUtils.isNotEmpty(wbsTree.getImportMatchingInfo()) && !wbsTree.getImportMatchingInfo().equals(wbsTreePrivate.getImportMatchingInfo()))
|
|
|
+ || (ObjectUtils.isNotEmpty(wbsTree.getMixRatioTestIds()) && !wbsTree.getMixRatioTestIds().equals(wbsTreePrivate.getMixRatioTestIds()))
|
|
|
)) {
|
|
|
//修改项目wbs信息
|
|
|
WbsTreePrivate wbsPrivate = BeanUtil.copyProperties(wbsTree, WbsTreePrivate.class);
|
|
@@ -396,6 +398,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
|
|| (ObjectUtils.isNotEmpty(wbsTreePrivate.getTableType()) && !wbsTreePrivate.getTableType().equals(treePrivateNow.getTableType()))
|
|
|
|| (ObjectUtils.isNotEmpty(wbsTreePrivate.getTableOwner()) && !wbsTreePrivate.getTableOwner().equals(treePrivateNow.getTableOwner()))
|
|
|
|| (ObjectUtils.isNotEmpty(wbsTreePrivate.getImportMatchingInfo()) && !wbsTreePrivate.getImportMatchingInfo().equals(treePrivateNow.getImportMatchingInfo()))
|
|
|
+ || (ObjectUtils.isNotEmpty(wbsTreePrivate.getMixRatioTestIds()) && !wbsTreePrivate.getMixRatioTestIds().equals(treePrivateNow.getMixRatioTestIds()))
|
|
|
)) {
|
|
|
//修改项目wbs信息
|
|
|
WbsTreePrivate wbsPrivate = BeanUtil.copyProperties(wbsTreePrivate, WbsTreePrivate.class);
|
|
@@ -586,140 +589,282 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
|
List<WbsTreePrivate> insertDataPrivateList = new ArrayList<>();
|
|
|
List<WbsTreeContract> insertDataContractList = new ArrayList<>();
|
|
|
|
|
|
- if (("public").equals(projectInfo.getReferenceWbsTemplateType())) {
|
|
|
- /*TODO-------------------------------------公有引用同步--------------------------------------------*/
|
|
|
- //获取当前节点对应的公有引用树下的元素表
|
|
|
- WbsTree wbsTree = wbsTreeMapper.selectOne(Wrappers.<WbsTree>query().lambda()
|
|
|
- .eq(WbsTree::getId, wbsTreePrivate.getId())
|
|
|
- );
|
|
|
- List<WbsTree> wbsTreesPublicTables;
|
|
|
- if (wbsTree.getAncestors().equals("0")) {
|
|
|
- //根节点
|
|
|
- wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
|
|
|
- .eq(WbsTree::getWbsId, wbsTree.getWbsId())
|
|
|
- .eq(WbsTree::getType, 2)
|
|
|
- .eq(WbsTree::getStatus, 1)
|
|
|
+ if (("1").equals(wbsTreePrivate.getWbsType())) {
|
|
|
+ if (("public").equals(projectInfo.getReferenceWbsTemplateType())) {
|
|
|
+ /*TODO-------------------------------------公有引用同步--------------------------------------------*/
|
|
|
+ //获取当前节点对应的公有引用树下的元素表
|
|
|
+ WbsTree wbsTree = wbsTreeMapper.selectOne(Wrappers.<WbsTree>query().lambda()
|
|
|
+ .eq(WbsTree::getId, wbsTreePrivate.getId())
|
|
|
);
|
|
|
- } else {
|
|
|
- wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
|
|
|
- .eq(WbsTree::getWbsId, wbsTree.getWbsId())
|
|
|
- .eq(WbsTree::getType, 2)
|
|
|
- .eq(WbsTree::getStatus, 1)
|
|
|
- .like(WbsTree::getAncestors, wbsTree.getId())
|
|
|
+ List<WbsTree> wbsTreesPublicTables;
|
|
|
+ if (wbsTree.getAncestors().equals("0")) {
|
|
|
+ //根节点
|
|
|
+ wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
|
|
|
+ .eq(WbsTree::getWbsId, wbsTree.getWbsId())
|
|
|
+ .eq(WbsTree::getType, 2)
|
|
|
+ .eq(WbsTree::getStatus, 1)
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
|
|
|
+ .eq(WbsTree::getWbsId, wbsTree.getWbsId())
|
|
|
+ .eq(WbsTree::getType, 2)
|
|
|
+ .eq(WbsTree::getStatus, 1)
|
|
|
+ .like(WbsTree::getAncestors, wbsTree.getId())
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取当前项目树下的元素表 节点
|
|
|
+ List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
+ .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
|
|
|
+ .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
|
|
|
+ .eq(WbsTreePrivate::getStatus, 1)
|
|
|
);
|
|
|
- }
|
|
|
+ List<WbsTreePrivate> wbsTreePrivatesProjectNodes = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
|
|
|
+
|
|
|
+ List<WbsTreePrivate> wbsTreePrivatesProjectTables;
|
|
|
+ if (wbsTreePrivate.getAncestors().equals("0")) {
|
|
|
+ //根节点
|
|
|
+ wbsTreePrivatesProjectTables = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
|
|
|
+ } else {
|
|
|
+ wbsTreePrivatesProjectTables = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(2) && f.getAncestors().contains(String.valueOf(wbsTreePrivate.getId()))).collect(Collectors.toList());
|
|
|
+ }
|
|
|
|
|
|
- //获取当前项目树下的元素表 节点
|
|
|
- List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
- .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
|
|
|
- .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
|
|
|
- .eq(WbsTreePrivate::getStatus, 1)
|
|
|
- );
|
|
|
- List<WbsTreePrivate> wbsTreePrivatesProjectNodes = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
|
|
|
+ //获取新增的公有元素表addPublicTable
|
|
|
+ List<WbsTree> addPublicTable = wbsTreesPublicTables.stream().filter(f ->
|
|
|
+ !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.getId()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
|
- List<WbsTreePrivate> wbsTreePrivatesProjectTables;
|
|
|
- if (wbsTreePrivate.getAncestors().equals("0")) {
|
|
|
- //根节点
|
|
|
- wbsTreePrivatesProjectTables = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
|
|
|
- } else {
|
|
|
- wbsTreePrivatesProjectTables = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(2) && f.getAncestors().contains(String.valueOf(wbsTreePrivate.getId()))).collect(Collectors.toList());
|
|
|
- }
|
|
|
+ //判断当前新增的表在项目的wbs树中是否存在上级节点,存在表示可以新增,不存在表示不新增
|
|
|
+ List<WbsTree> addPublicTables = addPublicTable.stream().filter(node ->
|
|
|
+ wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())
|
|
|
+ ).collect(Collectors.toList());
|
|
|
|
|
|
- //获取新增的公有元素表addPublicTable
|
|
|
- List<WbsTree> addPublicTable = wbsTreesPublicTables.stream().filter(f ->
|
|
|
- !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.getId()))
|
|
|
- .collect(Collectors.toList());
|
|
|
+ //获取当前项目下所有施工合同段id
|
|
|
+ List<ContractInfo> contractInfos = contractInfoMapper.selectList(Wrappers.<ContractInfo>query().lambda().eq(ContractInfo::getPId, wbsTreePrivate.getProjectId()));
|
|
|
|
|
|
- //判断当前新增的表在项目的wbs树中是否存在上级节点,存在表示可以新增,不存在表示不新增
|
|
|
- List<WbsTree> addPublicTables = addPublicTable.stream().filter(node ->
|
|
|
- wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())
|
|
|
- ).collect(Collectors.toList());
|
|
|
+ //获取当前项目下所有合同段树
|
|
|
+ List<WbsTreeContract> treeContractListAll = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
|
|
|
+ .eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId())
|
|
|
+ .eq(WbsTreeContract::getStatus, 1)
|
|
|
+ );
|
|
|
+ List<WbsTreeContract> treeContractListAllNodes = treeContractListAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
|
|
|
+ List<WbsTreeContract> treeContractListAllTables = treeContractListAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
|
|
|
+
|
|
|
+ //构造
|
|
|
+ for (WbsTree tree : addPublicTables) {
|
|
|
+ WbsTreePrivate dataPrivate = BeanUtil.copyProperties(tree, WbsTreePrivate.class);
|
|
|
+ if (dataPrivate != null) {
|
|
|
+ Long idPrivate = SnowFlakeUtil.getId();
|
|
|
+ dataPrivate.setPKeyId(idPrivate);
|
|
|
+ dataPrivate.setWbsType(wbsTreePrivate.getWbsType());
|
|
|
+ dataPrivate.setProjectId(wbsTreePrivate.getProjectId());
|
|
|
+ dataPrivate.setFullName(dataPrivate.getNodeName());
|
|
|
+ //新增
|
|
|
+ insertDataPrivateList.add(dataPrivate);
|
|
|
+
|
|
|
+ /*同步到该项目下所有合同段*/
|
|
|
+ //找到当前新增成功的元素表
|
|
|
+ for (ContractInfo contractInfo : contractInfos) {
|
|
|
+ WbsTreeContract dataContract = BeanUtil.copyProperties(dataPrivate, WbsTreeContract.class);
|
|
|
+ if (dataContract != null) {
|
|
|
+ Long idContract = SnowFlakeUtil.getId();
|
|
|
+ dataContract.setPKeyId(idContract);
|
|
|
+ dataContract.setContractType(contractInfo.getContractType());
|
|
|
+ dataContract.setWbsType(Integer.valueOf(dataPrivate.getWbsType()));
|
|
|
+ dataContract.setWbsId(dataPrivate.getWbsId());
|
|
|
+ dataContract.setContractId(String.valueOf(contractInfo.getId()));
|
|
|
+ dataContract.setFullName(dataContract.getNodeName());
|
|
|
+ dataContract.setIsBussShow(1);
|
|
|
+ if (dataPrivate.getType() == 2) {
|
|
|
+ dataContract.setIsTypePrivatePid(dataPrivate.getPKeyId());
|
|
|
+ }
|
|
|
|
|
|
- //获取当前项目下所有施工合同段id
|
|
|
- List<ContractInfo> contractInfos = contractInfoMapper.selectList(Wrappers.<ContractInfo>query().lambda().eq(ContractInfo::getPId, wbsTreePrivate.getProjectId()));
|
|
|
+ //判断元素表是否存在合同段,存在则不新增;不存在则表示没被引用,新增
|
|
|
+ WbsTreeContract resultTreeContract = treeContractListAllTables.stream().filter(f ->
|
|
|
+ f.getId().equals(dataContract.getId())
|
|
|
+ && f.getNodeName().equals(dataContract.getNodeName())
|
|
|
+ && f.getWbsId().equals(dataContract.getWbsId())
|
|
|
+ && f.getProjectId().equals(wbsTreePrivate.getProjectId())
|
|
|
+ && f.getContractId().equals(String.valueOf(contractInfo.getId()))
|
|
|
+ && f.getStatus().equals(1)
|
|
|
+ ).findAny().orElse(null);
|
|
|
+ if (resultTreeContract != null) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
|
|
|
- //获取当前项目下所有合同段树
|
|
|
- List<WbsTreeContract> treeContractListAll = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
|
|
|
- .eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId())
|
|
|
- .eq(WbsTreeContract::getStatus, 1)
|
|
|
- );
|
|
|
- List<WbsTreeContract> treeContractListAllNodes = treeContractListAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
|
|
|
- List<WbsTreeContract> treeContractListAllTables = treeContractListAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
|
|
|
-
|
|
|
- //构造
|
|
|
- for (WbsTree tree : addPublicTables) {
|
|
|
- WbsTreePrivate dataPrivate = BeanUtil.copyProperties(tree, WbsTreePrivate.class);
|
|
|
- if (dataPrivate != null) {
|
|
|
- Long idPrivate = SnowFlakeUtil.getId();
|
|
|
- dataPrivate.setPKeyId(idPrivate);
|
|
|
- dataPrivate.setWbsType(wbsTreePrivate.getWbsType());
|
|
|
- dataPrivate.setProjectId(wbsTreePrivate.getProjectId());
|
|
|
- dataPrivate.setFullName(dataPrivate.getNodeName());
|
|
|
- //新增
|
|
|
- insertDataPrivateList.add(dataPrivate);
|
|
|
-
|
|
|
- /*同步到该项目下所有合同段*/
|
|
|
- //找到当前新增成功的元素表
|
|
|
- for (ContractInfo contractInfo : contractInfos) {
|
|
|
- WbsTreeContract dataContract = BeanUtil.copyProperties(dataPrivate, WbsTreeContract.class);
|
|
|
- if (dataContract != null) {
|
|
|
- Long idContract = SnowFlakeUtil.getId();
|
|
|
- dataContract.setPKeyId(idContract);
|
|
|
- dataContract.setContractType(contractInfo.getContractType());
|
|
|
- dataContract.setWbsType(Integer.valueOf(dataPrivate.getWbsType()));
|
|
|
- dataContract.setWbsId(dataPrivate.getWbsId());
|
|
|
- dataContract.setContractId(String.valueOf(contractInfo.getId()));
|
|
|
- dataContract.setFullName(dataContract.getNodeName());
|
|
|
- dataContract.setIsBussShow(1);
|
|
|
- if (dataPrivate.getType() == 2) {
|
|
|
- dataContract.setIsTypePrivatePid(dataPrivate.getPKeyId());
|
|
|
+ //判断元素表在合同段wbs树中是否存在上级节点,存在则新增;不存在则不新增
|
|
|
+ WbsTreeContract dataContractParent = treeContractListAllNodes.stream().filter(f ->
|
|
|
+ f.getContractId().equals(String.valueOf(contractInfo.getId()))
|
|
|
+ && f.getProjectId().equals(dataContract.getProjectId())
|
|
|
+ && f.getStatus().equals(1)
|
|
|
+ && f.getType().equals(1)
|
|
|
+ && f.getId().equals(dataContract.getParentId())
|
|
|
+ ).findAny().orElse(null);
|
|
|
+
|
|
|
+ if (dataContractParent != null) {
|
|
|
+ //新增
|
|
|
+ insertDataContractList.add(dataContract);
|
|
|
+
|
|
|
+ //获取上级父级节点同级别的复制或新增节点
|
|
|
+ List<WbsTreeContract> dataContractEquallyNodes = treeContractListAllNodes.stream().filter(f ->
|
|
|
+ (ObjectUtils.isNotEmpty(f.getOldId()) && f.getOldId().equals(String.valueOf(dataContractParent.getId())))
|
|
|
+ && f.getContractId().equals(String.valueOf(contractInfo.getId()))
|
|
|
+ && f.getWbsId().equals(dataContractParent.getWbsId())
|
|
|
+ && f.getProjectId().equals(dataContractParent.getProjectId())
|
|
|
+ && f.getStatus().equals(1)
|
|
|
+ && f.getType().equals(1)
|
|
|
+ ).collect(Collectors.toList());
|
|
|
+
|
|
|
+ if (dataContractEquallyNodes.size() > 0) {
|
|
|
+ //将表单同步到复制或新增的节点下
|
|
|
+ for (WbsTreeContract treeContractCopy : dataContractEquallyNodes) {
|
|
|
+ WbsTreeContract dataContractCopyOrAdd = BeanUtil.copyProperties(dataContract, WbsTreeContract.class);
|
|
|
+ if (dataContractCopyOrAdd != null) {
|
|
|
+ dataContractCopyOrAdd.setPKeyId(SnowFlakeUtil.getId());
|
|
|
+ dataContractCopyOrAdd.setParentId(treeContractCopy.getId());
|
|
|
+
|
|
|
+ insertDataContractList.add(dataContractCopyOrAdd);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- //判断元素表是否存在合同段,存在则不新增;不存在则表示没被引用,新增
|
|
|
- WbsTreeContract resultTreeContract = treeContractListAllTables.stream().filter(f ->
|
|
|
- f.getId().equals(dataContract.getId())
|
|
|
- && f.getNodeName().equals(dataContract.getNodeName())
|
|
|
- && f.getWbsId().equals(dataContract.getWbsId())
|
|
|
- && f.getProjectId().equals(wbsTreePrivate.getProjectId())
|
|
|
- && f.getContractId().equals(String.valueOf(contractInfo.getId()))
|
|
|
- && f.getStatus().equals(1)
|
|
|
- ).findAny().orElse(null);
|
|
|
- if (resultTreeContract != null) {
|
|
|
- continue;
|
|
|
- }
|
|
|
+ } else if (("private").equals(projectInfo.getReferenceWbsTemplateType())) {
|
|
|
+ /*TODO-------------------------------------私有引用同步--------------------------------------------*/
|
|
|
+ //根据wbsTreePrivate的wbsId=私有引用的pKeyId来获取引用树根节点
|
|
|
+ WbsTreePrivate wbsTreePrivateRoot = baseMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getPKeyId, wbsTreePrivate.getWbsId()));
|
|
|
+ //获取当前私有引用树的元素表信息
|
|
|
+ List<WbsTreePrivate> wbsTreePrivateRootTables;
|
|
|
+ if (wbsTreePrivate.getAncestors().equals("0")) {
|
|
|
+ //根节点
|
|
|
+ wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
+ .eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId())
|
|
|
+ .eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId())
|
|
|
+ .eq(WbsTreePrivate::getType, 2)
|
|
|
+ .eq(WbsTreePrivate::getStatus, 1)
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
+ .eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId())
|
|
|
+ .eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId())
|
|
|
+ .eq(WbsTreePrivate::getType, 2)
|
|
|
+ .eq(WbsTreePrivate::getStatus, 1)
|
|
|
+ .like(WbsTreePrivate::getAncestors, wbsTreePrivate.getId())
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取当前项目选择的节点下的所有元素表 节点
|
|
|
+ List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
+ .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
|
|
|
+ .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
|
|
|
+ .eq(WbsTreePrivate::getStatus, 1)
|
|
|
+ );
|
|
|
+
|
|
|
+ List<WbsTreePrivate> wbsTreePrivatesProjectNodes = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
|
|
|
+ List<WbsTreePrivate> wbsTreePrivatesProjectTables;
|
|
|
+ if (wbsTreePrivate.getAncestors().equals("0")) {
|
|
|
+ //根节点
|
|
|
+ wbsTreePrivatesProjectTables = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
|
|
|
+ } else {
|
|
|
+ wbsTreePrivatesProjectTables = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(2) && f.getAncestors().contains(String.valueOf(wbsTreePrivate.getId()))).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取新增的私有元素表addPrivateTable
|
|
|
+ List<WbsTreePrivate> addPrivateTable = wbsTreePrivateRootTables.stream().filter(f ->
|
|
|
+ !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.getId()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ //获取当前项目下所有施工合同段id
|
|
|
+ List<ContractInfo> contractInfos = contractInfoMapper.selectContractIdByProjectId(wbsTreePrivate.getProjectId());
|
|
|
|
|
|
- //判断元素表在合同段wbs树中是否存在上级节点,存在则新增;不存在则不新增
|
|
|
- WbsTreeContract dataContractParent = treeContractListAllNodes.stream().filter(f ->
|
|
|
- f.getContractId().equals(String.valueOf(contractInfo.getId()))
|
|
|
- && f.getProjectId().equals(dataContract.getProjectId())
|
|
|
- && f.getStatus().equals(1)
|
|
|
- && f.getType().equals(1)
|
|
|
- && f.getId().equals(dataContract.getParentId())
|
|
|
- ).findAny().orElse(null);
|
|
|
-
|
|
|
- if (dataContractParent != null) {
|
|
|
- //新增
|
|
|
- insertDataContractList.add(dataContract);
|
|
|
-
|
|
|
- //获取上级父级节点同级别的复制或新增节点
|
|
|
- List<WbsTreeContract> dataContractEquallyNodes = treeContractListAllNodes.stream().filter(f ->
|
|
|
- (ObjectUtils.isNotEmpty(f.getOldId()) && f.getOldId().equals(String.valueOf(dataContractParent.getId())))
|
|
|
+ //判断当前新增的表在私有wbs中是否存在上级节点,存在表示可以新增,不存在表示不新增
|
|
|
+ List<WbsTreePrivate> addPrivateTables = addPrivateTable.stream().filter(node ->
|
|
|
+ wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())
|
|
|
+ ).collect(Collectors.toList());
|
|
|
+
|
|
|
+ //获取当前项目下所有合同段树
|
|
|
+ List<WbsTreeContract> treeContractListAll = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
|
|
|
+ .eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId())
|
|
|
+ .eq(WbsTreeContract::getStatus, 1)
|
|
|
+ );
|
|
|
+ List<WbsTreeContract> treeContractListAllNodes = treeContractListAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
|
|
|
+ List<WbsTreeContract> treeContractListAllTables = treeContractListAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
|
|
|
+
|
|
|
+ //构造
|
|
|
+ for (WbsTreePrivate tree : addPrivateTables) {
|
|
|
+ WbsTreePrivate dataPrivate = BeanUtil.copyProperties(tree, WbsTreePrivate.class);
|
|
|
+ if (dataPrivate != null) {
|
|
|
+ dataPrivate.setPKeyId(SnowFlakeUtil.getId());
|
|
|
+ dataPrivate.setWbsId(wbsTreePrivate.getWbsId());
|
|
|
+ dataPrivate.setWbsType(tree.getWbsType());
|
|
|
+ dataPrivate.setProjectId(wbsTreePrivate.getProjectId());
|
|
|
+ insertDataPrivateList.add(dataPrivate);
|
|
|
+
|
|
|
+ //同步到该项目下的所有合同段
|
|
|
+ for (ContractInfo contractInfo : contractInfos) {
|
|
|
+ WbsTreeContract wbsTreeContract = BeanUtil.copyProperties(dataPrivate, WbsTreeContract.class);
|
|
|
+ if (wbsTreeContract != null) {
|
|
|
+ wbsTreeContract.setPKeyId(SnowFlakeUtil.getId());
|
|
|
+ wbsTreeContract.setWbsId(dataPrivate.getWbsId());
|
|
|
+ wbsTreeContract.setWbsType(Integer.valueOf(dataPrivate.getWbsType()));
|
|
|
+ wbsTreeContract.setProjectId(wbsTreePrivate.getProjectId());
|
|
|
+ wbsTreeContract.setContractType(contractInfo.getContractType());
|
|
|
+ wbsTreeContract.setContractId(String.valueOf(contractInfo.getId()));
|
|
|
+ wbsTreeContract.setIsBussShow(1);
|
|
|
+ if (dataPrivate.getType() == 2) {
|
|
|
+ wbsTreeContract.setIsTypePrivatePid(dataPrivate.getPKeyId());
|
|
|
+ }
|
|
|
+
|
|
|
+ //判断元素表是否存在合同段,存在则不新增;不存在则新增
|
|
|
+ WbsTreeContract resultTreeContract = treeContractListAllTables.stream().filter(f ->
|
|
|
+ f.getId().equals(wbsTreeContract.getId())
|
|
|
+ && f.getNodeName().equals(wbsTreeContract.getNodeName())
|
|
|
+ && f.getWbsId().equals(wbsTreeContract.getWbsId())
|
|
|
+ && f.getProjectId().equals(wbsTreePrivate.getProjectId())
|
|
|
&& f.getContractId().equals(String.valueOf(contractInfo.getId()))
|
|
|
- && f.getWbsId().equals(dataContractParent.getWbsId())
|
|
|
- && f.getProjectId().equals(dataContractParent.getProjectId())
|
|
|
&& f.getStatus().equals(1)
|
|
|
- && f.getType().equals(1)
|
|
|
- ).collect(Collectors.toList());
|
|
|
-
|
|
|
- if (dataContractEquallyNodes.size() > 0) {
|
|
|
- //将表单同步到复制或新增的节点下
|
|
|
- for (WbsTreeContract treeContractCopy : dataContractEquallyNodes) {
|
|
|
- WbsTreeContract dataContractCopyOrAdd = BeanUtil.copyProperties(dataContract, WbsTreeContract.class);
|
|
|
- if (dataContractCopyOrAdd != null) {
|
|
|
- dataContractCopyOrAdd.setPKeyId(SnowFlakeUtil.getId());
|
|
|
- dataContractCopyOrAdd.setParentId(treeContractCopy.getId());
|
|
|
+ ).findAny().orElse(null);
|
|
|
+ if (resultTreeContract != null) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
|
|
|
- insertDataContractList.add(dataContractCopyOrAdd);
|
|
|
+ //判断元素表是否存在上级节点,存在则新增;不存在则表示没被引用,不新增
|
|
|
+ WbsTreeContract wbsTreeContract1 = treeContractListAllNodes.stream().filter(f ->
|
|
|
+ f.getContractId().equals(wbsTreeContract.getContractId())
|
|
|
+ && f.getProjectId().equals(wbsTreeContract.getProjectId())
|
|
|
+ && f.getWbsId().equals(wbsTreeContract.getWbsId())
|
|
|
+ && f.getStatus().equals(1)
|
|
|
+ && f.getType().equals(1)
|
|
|
+ && f.getId().equals(wbsTreeContract.getParentId())
|
|
|
+ ).findAny().orElse(null);
|
|
|
+
|
|
|
+ if (wbsTreeContract1 != null) {
|
|
|
+ insertDataContractList.add(wbsTreeContract);
|
|
|
+
|
|
|
+ //获取上级父级节点同级别的复制或新增节点
|
|
|
+ List<WbsTreeContract> wbsTreeContracts2 = treeContractListAllNodes.stream().filter(f ->
|
|
|
+ (ObjectUtils.isNotEmpty(f.getOldId()) && f.getOldId().equals(String.valueOf(wbsTreeContract1.getId())))
|
|
|
+ && f.getContractId().equals(String.valueOf(contractInfo.getId()))
|
|
|
+ && f.getWbsId().equals(wbsTreePrivate.getWbsId())
|
|
|
+ && f.getProjectId().equals(wbsTreePrivate.getProjectId())
|
|
|
+ && f.getStatus().equals(1)
|
|
|
+ && f.getType().equals(1)
|
|
|
+ ).collect(Collectors.toList());
|
|
|
+
|
|
|
+ if (wbsTreeContracts2.size() > 0) {
|
|
|
+ //将表单同步到复制或新增的节点下
|
|
|
+ for (WbsTreeContract treeContract : wbsTreeContracts2) {
|
|
|
+ WbsTreeContract wbsTreeContract2 = BeanUtil.copyProperties(wbsTreeContract, WbsTreeContract.class);
|
|
|
+ if (wbsTreeContract2 != null) {
|
|
|
+ wbsTreeContract2.setPKeyId(SnowFlakeUtil.getId());
|
|
|
+ wbsTreeContract2.setParentId(treeContract.getId());
|
|
|
+
|
|
|
+ insertDataContractList.add(wbsTreeContract2);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -728,138 +873,283 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- } else if (("private").equals(projectInfo.getReferenceWbsTemplateType())) {
|
|
|
- /*TODO-------------------------------------私有引用同步--------------------------------------------*/
|
|
|
- //根据wbsTreePrivate的wbsId=私有引用的pKeyId来获取引用树根节点
|
|
|
- WbsTreePrivate wbsTreePrivateRoot = baseMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getPKeyId, wbsTreePrivate.getWbsId()));
|
|
|
- //获取当前私有引用树的元素表信息
|
|
|
- List<WbsTreePrivate> wbsTreePrivateRootTables;
|
|
|
- if (wbsTreePrivate.getAncestors().equals("0")) {
|
|
|
- //根节点
|
|
|
- wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
- .eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId())
|
|
|
- .eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId())
|
|
|
- .eq(WbsTreePrivate::getType, 2)
|
|
|
- .eq(WbsTreePrivate::getStatus, 1)
|
|
|
+ }
|
|
|
+ if (("2").equals(wbsTreePrivate.getWbsType())) {
|
|
|
+ if (("public").equals(projectInfo.getReferenceWbsTemplateTypeTrial())) {
|
|
|
+ /*TODO-------------------------------------公有引用同步--------------------------------------------*/
|
|
|
+ //获取当前节点对应的公有引用树下的元素表
|
|
|
+ WbsTree wbsTree = wbsTreeMapper.selectOne(Wrappers.<WbsTree>query().lambda()
|
|
|
+ .eq(WbsTree::getId, wbsTreePrivate.getId())
|
|
|
);
|
|
|
- } else {
|
|
|
- wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
- .eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId())
|
|
|
- .eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId())
|
|
|
- .eq(WbsTreePrivate::getType, 2)
|
|
|
+ List<WbsTree> wbsTreesPublicTables;
|
|
|
+ if (wbsTree.getAncestors().equals("0")) {
|
|
|
+ //根节点
|
|
|
+ wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
|
|
|
+ .eq(WbsTree::getWbsId, wbsTree.getWbsId())
|
|
|
+ .eq(WbsTree::getType, 2)
|
|
|
+ .eq(WbsTree::getStatus, 1)
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
|
|
|
+ .eq(WbsTree::getWbsId, wbsTree.getWbsId())
|
|
|
+ .eq(WbsTree::getType, 2)
|
|
|
+ .eq(WbsTree::getStatus, 1)
|
|
|
+ .like(WbsTree::getAncestors, wbsTree.getId())
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取当前项目树下的元素表 节点
|
|
|
+ List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
+ .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
|
|
|
+ .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
|
|
|
.eq(WbsTreePrivate::getStatus, 1)
|
|
|
- .like(WbsTreePrivate::getAncestors, wbsTreePrivate.getId())
|
|
|
);
|
|
|
- }
|
|
|
+ List<WbsTreePrivate> wbsTreePrivatesProjectNodes = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
|
|
|
+
|
|
|
+ List<WbsTreePrivate> wbsTreePrivatesProjectTables;
|
|
|
+ if (wbsTreePrivate.getAncestors().equals("0")) {
|
|
|
+ //根节点
|
|
|
+ wbsTreePrivatesProjectTables = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
|
|
|
+ } else {
|
|
|
+ wbsTreePrivatesProjectTables = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(2) && f.getAncestors().contains(String.valueOf(wbsTreePrivate.getId()))).collect(Collectors.toList());
|
|
|
+ }
|
|
|
|
|
|
- //获取当前项目选择的节点下的所有元素表 节点
|
|
|
- List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
- .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
|
|
|
- .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
|
|
|
- .eq(WbsTreePrivate::getStatus, 1)
|
|
|
- );
|
|
|
+ //获取新增的公有元素表addPublicTable
|
|
|
+ List<WbsTree> addPublicTable = wbsTreesPublicTables.stream().filter(f ->
|
|
|
+ !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.getId()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
|
- List<WbsTreePrivate> wbsTreePrivatesProjectNodes = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
|
|
|
- List<WbsTreePrivate> wbsTreePrivatesProjectTables;
|
|
|
- if (wbsTreePrivate.getAncestors().equals("0")) {
|
|
|
- //根节点
|
|
|
- wbsTreePrivatesProjectTables = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
|
|
|
- } else {
|
|
|
- wbsTreePrivatesProjectTables = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(2) && f.getAncestors().contains(String.valueOf(wbsTreePrivate.getId()))).collect(Collectors.toList());
|
|
|
- }
|
|
|
+ //判断当前新增的表在项目的wbs树中是否存在上级节点,存在表示可以新增,不存在表示不新增
|
|
|
+ List<WbsTree> addPublicTables = addPublicTable.stream().filter(node ->
|
|
|
+ wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())
|
|
|
+ ).collect(Collectors.toList());
|
|
|
|
|
|
- //获取新增的私有元素表addPrivateTable
|
|
|
- List<WbsTreePrivate> addPrivateTable = wbsTreePrivateRootTables.stream().filter(f ->
|
|
|
- !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.getId()))
|
|
|
- .collect(Collectors.toList());
|
|
|
+ //获取当前项目下所有施工合同段id
|
|
|
+ List<ContractInfo> contractInfos = contractInfoMapper.selectList(Wrappers.<ContractInfo>query().lambda().eq(ContractInfo::getPId, wbsTreePrivate.getProjectId()));
|
|
|
|
|
|
- //获取当前项目下所有施工合同段id
|
|
|
- List<ContractInfo> contractInfos = contractInfoMapper.selectContractIdByProjectId(wbsTreePrivate.getProjectId());
|
|
|
+ //获取当前项目下所有合同段树
|
|
|
+ List<WbsTreeContract> treeContractListAll = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
|
|
|
+ .eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId())
|
|
|
+ .eq(WbsTreeContract::getStatus, 1)
|
|
|
+ );
|
|
|
+ List<WbsTreeContract> treeContractListAllNodes = treeContractListAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
|
|
|
+ List<WbsTreeContract> treeContractListAllTables = treeContractListAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
|
|
|
+
|
|
|
+ //构造
|
|
|
+ for (WbsTree tree : addPublicTables) {
|
|
|
+ WbsTreePrivate dataPrivate = BeanUtil.copyProperties(tree, WbsTreePrivate.class);
|
|
|
+ if (dataPrivate != null) {
|
|
|
+ Long idPrivate = SnowFlakeUtil.getId();
|
|
|
+ dataPrivate.setPKeyId(idPrivate);
|
|
|
+ dataPrivate.setWbsType(wbsTreePrivate.getWbsType());
|
|
|
+ dataPrivate.setProjectId(wbsTreePrivate.getProjectId());
|
|
|
+ dataPrivate.setFullName(dataPrivate.getNodeName());
|
|
|
+ //新增
|
|
|
+ insertDataPrivateList.add(dataPrivate);
|
|
|
+
|
|
|
+ /*同步到该项目下所有合同段*/
|
|
|
+ //找到当前新增成功的元素表
|
|
|
+ for (ContractInfo contractInfo : contractInfos) {
|
|
|
+ WbsTreeContract dataContract = BeanUtil.copyProperties(dataPrivate, WbsTreeContract.class);
|
|
|
+ if (dataContract != null) {
|
|
|
+ Long idContract = SnowFlakeUtil.getId();
|
|
|
+ dataContract.setPKeyId(idContract);
|
|
|
+ dataContract.setContractType(contractInfo.getContractType());
|
|
|
+ dataContract.setWbsType(Integer.valueOf(dataPrivate.getWbsType()));
|
|
|
+ dataContract.setWbsId(dataPrivate.getWbsId());
|
|
|
+ dataContract.setContractId(String.valueOf(contractInfo.getId()));
|
|
|
+ dataContract.setFullName(dataContract.getNodeName());
|
|
|
+ dataContract.setIsBussShow(1);
|
|
|
+ if (dataPrivate.getType() == 2) {
|
|
|
+ dataContract.setIsTypePrivatePid(dataPrivate.getPKeyId());
|
|
|
+ }
|
|
|
|
|
|
- //判断当前新增的表在私有wbs中是否存在上级节点,存在表示可以新增,不存在表示不新增
|
|
|
- List<WbsTreePrivate> addPrivateTables = addPrivateTable.stream().filter(node ->
|
|
|
- wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())
|
|
|
- ).collect(Collectors.toList());
|
|
|
+ //判断元素表是否存在合同段,存在则不新增;不存在则表示没被引用,新增
|
|
|
+ WbsTreeContract resultTreeContract = treeContractListAllTables.stream().filter(f ->
|
|
|
+ f.getId().equals(dataContract.getId())
|
|
|
+ && f.getNodeName().equals(dataContract.getNodeName())
|
|
|
+ && f.getWbsId().equals(dataContract.getWbsId())
|
|
|
+ && f.getProjectId().equals(wbsTreePrivate.getProjectId())
|
|
|
+ && f.getContractId().equals(String.valueOf(contractInfo.getId()))
|
|
|
+ && f.getStatus().equals(1)
|
|
|
+ ).findAny().orElse(null);
|
|
|
+ if (resultTreeContract != null) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
|
|
|
- //获取当前项目下所有合同段树
|
|
|
- List<WbsTreeContract> treeContractListAll = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
|
|
|
- .eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId())
|
|
|
- .eq(WbsTreeContract::getStatus, 1)
|
|
|
- );
|
|
|
- List<WbsTreeContract> treeContractListAllNodes = treeContractListAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
|
|
|
- List<WbsTreeContract> treeContractListAllTables = treeContractListAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
|
|
|
-
|
|
|
- //构造
|
|
|
- for (WbsTreePrivate tree : addPrivateTables) {
|
|
|
- WbsTreePrivate dataPrivate = BeanUtil.copyProperties(tree, WbsTreePrivate.class);
|
|
|
- if (dataPrivate != null) {
|
|
|
- dataPrivate.setPKeyId(SnowFlakeUtil.getId());
|
|
|
- dataPrivate.setWbsId(wbsTreePrivate.getWbsId());
|
|
|
- dataPrivate.setWbsType(tree.getWbsType());
|
|
|
- dataPrivate.setProjectId(wbsTreePrivate.getProjectId());
|
|
|
- insertDataPrivateList.add(dataPrivate);
|
|
|
-
|
|
|
- //同步到该项目下的所有合同段
|
|
|
- for (ContractInfo contractInfo : contractInfos) {
|
|
|
- WbsTreeContract wbsTreeContract = BeanUtil.copyProperties(dataPrivate, WbsTreeContract.class);
|
|
|
- if (wbsTreeContract != null) {
|
|
|
- wbsTreeContract.setPKeyId(SnowFlakeUtil.getId());
|
|
|
- wbsTreeContract.setWbsId(dataPrivate.getWbsId());
|
|
|
- wbsTreeContract.setWbsType(Integer.valueOf(dataPrivate.getWbsType()));
|
|
|
- wbsTreeContract.setProjectId(wbsTreePrivate.getProjectId());
|
|
|
- wbsTreeContract.setContractType(contractInfo.getContractType());
|
|
|
- wbsTreeContract.setContractId(String.valueOf(contractInfo.getId()));
|
|
|
- wbsTreeContract.setIsBussShow(1);
|
|
|
- if (dataPrivate.getType() == 2) {
|
|
|
- wbsTreeContract.setIsTypePrivatePid(dataPrivate.getPKeyId());
|
|
|
+ //判断元素表在合同段wbs树中是否存在上级节点,存在则新增;不存在则不新增
|
|
|
+ WbsTreeContract dataContractParent = treeContractListAllNodes.stream().filter(f ->
|
|
|
+ f.getContractId().equals(String.valueOf(contractInfo.getId()))
|
|
|
+ && f.getProjectId().equals(dataContract.getProjectId())
|
|
|
+ && f.getStatus().equals(1)
|
|
|
+ && f.getType().equals(1)
|
|
|
+ && f.getId().equals(dataContract.getParentId())
|
|
|
+ ).findAny().orElse(null);
|
|
|
+
|
|
|
+ if (dataContractParent != null) {
|
|
|
+ //新增
|
|
|
+ insertDataContractList.add(dataContract);
|
|
|
+
|
|
|
+ //获取上级父级节点同级别的复制或新增节点
|
|
|
+ List<WbsTreeContract> dataContractEquallyNodes = treeContractListAllNodes.stream().filter(f ->
|
|
|
+ (ObjectUtils.isNotEmpty(f.getOldId()) && f.getOldId().equals(String.valueOf(dataContractParent.getId())))
|
|
|
+ && f.getContractId().equals(String.valueOf(contractInfo.getId()))
|
|
|
+ && f.getWbsId().equals(dataContractParent.getWbsId())
|
|
|
+ && f.getProjectId().equals(dataContractParent.getProjectId())
|
|
|
+ && f.getStatus().equals(1)
|
|
|
+ && f.getType().equals(1)
|
|
|
+ ).collect(Collectors.toList());
|
|
|
+
|
|
|
+ if (dataContractEquallyNodes.size() > 0) {
|
|
|
+ //将表单同步到复制或新增的节点下
|
|
|
+ for (WbsTreeContract treeContractCopy : dataContractEquallyNodes) {
|
|
|
+ WbsTreeContract dataContractCopyOrAdd = BeanUtil.copyProperties(dataContract, WbsTreeContract.class);
|
|
|
+ if (dataContractCopyOrAdd != null) {
|
|
|
+ dataContractCopyOrAdd.setPKeyId(SnowFlakeUtil.getId());
|
|
|
+ dataContractCopyOrAdd.setParentId(treeContractCopy.getId());
|
|
|
+
|
|
|
+ insertDataContractList.add(dataContractCopyOrAdd);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- //判断元素表是否存在合同段,存在则不新增;不存在则新增
|
|
|
- WbsTreeContract resultTreeContract = treeContractListAllTables.stream().filter(f ->
|
|
|
- f.getId().equals(wbsTreeContract.getId())
|
|
|
- && f.getNodeName().equals(wbsTreeContract.getNodeName())
|
|
|
- && f.getWbsId().equals(wbsTreeContract.getWbsId())
|
|
|
- && f.getProjectId().equals(wbsTreePrivate.getProjectId())
|
|
|
- && f.getContractId().equals(String.valueOf(contractInfo.getId()))
|
|
|
- && f.getStatus().equals(1)
|
|
|
- ).findAny().orElse(null);
|
|
|
- if (resultTreeContract != null) {
|
|
|
- continue;
|
|
|
- }
|
|
|
+ } else if (("private").equals(projectInfo.getReferenceWbsTemplateTypeTrial())) {
|
|
|
+ /*TODO-------------------------------------私有引用同步--------------------------------------------*/
|
|
|
+ //根据wbsTreePrivate的wbsId=私有引用的pKeyId来获取引用树根节点
|
|
|
+ WbsTreePrivate wbsTreePrivateRoot = baseMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getPKeyId, wbsTreePrivate.getWbsId()));
|
|
|
+ //获取当前私有引用树的元素表信息
|
|
|
+ List<WbsTreePrivate> wbsTreePrivateRootTables;
|
|
|
+ if (wbsTreePrivate.getAncestors().equals("0")) {
|
|
|
+ //根节点
|
|
|
+ wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
+ .eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId())
|
|
|
+ .eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId())
|
|
|
+ .eq(WbsTreePrivate::getType, 2)
|
|
|
+ .eq(WbsTreePrivate::getStatus, 1)
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
+ .eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId())
|
|
|
+ .eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId())
|
|
|
+ .eq(WbsTreePrivate::getType, 2)
|
|
|
+ .eq(WbsTreePrivate::getStatus, 1)
|
|
|
+ .like(WbsTreePrivate::getAncestors, wbsTreePrivate.getId())
|
|
|
+ );
|
|
|
+ }
|
|
|
|
|
|
- //判断元素表是否存在上级节点,存在则新增;不存在则表示没被引用,不新增
|
|
|
- WbsTreeContract wbsTreeContract1 = treeContractListAllNodes.stream().filter(f ->
|
|
|
- f.getContractId().equals(wbsTreeContract.getContractId())
|
|
|
- && f.getProjectId().equals(wbsTreeContract.getProjectId())
|
|
|
- && f.getWbsId().equals(wbsTreeContract.getWbsId())
|
|
|
- && f.getStatus().equals(1)
|
|
|
- && f.getType().equals(1)
|
|
|
- && f.getId().equals(wbsTreeContract.getParentId())
|
|
|
- ).findAny().orElse(null);
|
|
|
-
|
|
|
- if (wbsTreeContract1 != null) {
|
|
|
- insertDataContractList.add(wbsTreeContract);
|
|
|
-
|
|
|
- //获取上级父级节点同级别的复制或新增节点
|
|
|
- List<WbsTreeContract> wbsTreeContracts2 = treeContractListAllNodes.stream().filter(f ->
|
|
|
- (ObjectUtils.isNotEmpty(f.getOldId()) && f.getOldId().equals(String.valueOf(wbsTreeContract1.getId())))
|
|
|
- && f.getContractId().equals(String.valueOf(contractInfo.getId()))
|
|
|
- && f.getWbsId().equals(wbsTreePrivate.getWbsId())
|
|
|
+ //获取当前项目选择的节点下的所有元素表 节点
|
|
|
+ List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
+ .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
|
|
|
+ .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
|
|
|
+ .eq(WbsTreePrivate::getStatus, 1)
|
|
|
+ );
|
|
|
+
|
|
|
+ List<WbsTreePrivate> wbsTreePrivatesProjectNodes = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
|
|
|
+ List<WbsTreePrivate> wbsTreePrivatesProjectTables;
|
|
|
+ if (wbsTreePrivate.getAncestors().equals("0")) {
|
|
|
+ //根节点
|
|
|
+ wbsTreePrivatesProjectTables = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
|
|
|
+ } else {
|
|
|
+ wbsTreePrivatesProjectTables = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(2) && f.getAncestors().contains(String.valueOf(wbsTreePrivate.getId()))).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取新增的私有元素表addPrivateTable
|
|
|
+ List<WbsTreePrivate> addPrivateTable = wbsTreePrivateRootTables.stream().filter(f ->
|
|
|
+ !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.getId()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ //获取当前项目下所有施工合同段id
|
|
|
+ List<ContractInfo> contractInfos = contractInfoMapper.selectContractIdByProjectId(wbsTreePrivate.getProjectId());
|
|
|
+
|
|
|
+ //判断当前新增的表在私有wbs中是否存在上级节点,存在表示可以新增,不存在表示不新增
|
|
|
+ List<WbsTreePrivate> addPrivateTables = addPrivateTable.stream().filter(node ->
|
|
|
+ wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())
|
|
|
+ ).collect(Collectors.toList());
|
|
|
+
|
|
|
+ //获取当前项目下所有合同段树
|
|
|
+ List<WbsTreeContract> treeContractListAll = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
|
|
|
+ .eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId())
|
|
|
+ .eq(WbsTreeContract::getStatus, 1)
|
|
|
+ );
|
|
|
+ List<WbsTreeContract> treeContractListAllNodes = treeContractListAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
|
|
|
+ List<WbsTreeContract> treeContractListAllTables = treeContractListAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
|
|
|
+
|
|
|
+ //构造
|
|
|
+ for (WbsTreePrivate tree : addPrivateTables) {
|
|
|
+ WbsTreePrivate dataPrivate = BeanUtil.copyProperties(tree, WbsTreePrivate.class);
|
|
|
+ if (dataPrivate != null) {
|
|
|
+ dataPrivate.setPKeyId(SnowFlakeUtil.getId());
|
|
|
+ dataPrivate.setWbsId(wbsTreePrivate.getWbsId());
|
|
|
+ dataPrivate.setWbsType(tree.getWbsType());
|
|
|
+ dataPrivate.setProjectId(wbsTreePrivate.getProjectId());
|
|
|
+ insertDataPrivateList.add(dataPrivate);
|
|
|
+
|
|
|
+ //同步到该项目下的所有合同段
|
|
|
+ for (ContractInfo contractInfo : contractInfos) {
|
|
|
+ WbsTreeContract wbsTreeContract = BeanUtil.copyProperties(dataPrivate, WbsTreeContract.class);
|
|
|
+ if (wbsTreeContract != null) {
|
|
|
+ wbsTreeContract.setPKeyId(SnowFlakeUtil.getId());
|
|
|
+ wbsTreeContract.setWbsId(dataPrivate.getWbsId());
|
|
|
+ wbsTreeContract.setWbsType(Integer.valueOf(dataPrivate.getWbsType()));
|
|
|
+ wbsTreeContract.setProjectId(wbsTreePrivate.getProjectId());
|
|
|
+ wbsTreeContract.setContractType(contractInfo.getContractType());
|
|
|
+ wbsTreeContract.setContractId(String.valueOf(contractInfo.getId()));
|
|
|
+ wbsTreeContract.setIsBussShow(1);
|
|
|
+ if (dataPrivate.getType() == 2) {
|
|
|
+ wbsTreeContract.setIsTypePrivatePid(dataPrivate.getPKeyId());
|
|
|
+ }
|
|
|
+
|
|
|
+ //判断元素表是否存在合同段,存在则不新增;不存在则新增
|
|
|
+ WbsTreeContract resultTreeContract = treeContractListAllTables.stream().filter(f ->
|
|
|
+ f.getId().equals(wbsTreeContract.getId())
|
|
|
+ && f.getNodeName().equals(wbsTreeContract.getNodeName())
|
|
|
+ && f.getWbsId().equals(wbsTreeContract.getWbsId())
|
|
|
&& f.getProjectId().equals(wbsTreePrivate.getProjectId())
|
|
|
+ && f.getContractId().equals(String.valueOf(contractInfo.getId()))
|
|
|
&& f.getStatus().equals(1)
|
|
|
- && f.getType().equals(1)
|
|
|
- ).collect(Collectors.toList());
|
|
|
-
|
|
|
- if (wbsTreeContracts2.size() > 0) {
|
|
|
- //将表单同步到复制或新增的节点下
|
|
|
- for (WbsTreeContract treeContract : wbsTreeContracts2) {
|
|
|
- WbsTreeContract wbsTreeContract2 = BeanUtil.copyProperties(wbsTreeContract, WbsTreeContract.class);
|
|
|
- if (wbsTreeContract2 != null) {
|
|
|
- wbsTreeContract2.setPKeyId(SnowFlakeUtil.getId());
|
|
|
- wbsTreeContract2.setParentId(treeContract.getId());
|
|
|
+ ).findAny().orElse(null);
|
|
|
+ if (resultTreeContract != null) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
|
|
|
- insertDataContractList.add(wbsTreeContract2);
|
|
|
+ //判断元素表是否存在上级节点,存在则新增;不存在则表示没被引用,不新增
|
|
|
+ WbsTreeContract wbsTreeContract1 = treeContractListAllNodes.stream().filter(f ->
|
|
|
+ f.getContractId().equals(wbsTreeContract.getContractId())
|
|
|
+ && f.getProjectId().equals(wbsTreeContract.getProjectId())
|
|
|
+ && f.getWbsId().equals(wbsTreeContract.getWbsId())
|
|
|
+ && f.getStatus().equals(1)
|
|
|
+ && f.getType().equals(1)
|
|
|
+ && f.getId().equals(wbsTreeContract.getParentId())
|
|
|
+ ).findAny().orElse(null);
|
|
|
+
|
|
|
+ if (wbsTreeContract1 != null) {
|
|
|
+ insertDataContractList.add(wbsTreeContract);
|
|
|
+
|
|
|
+ //获取上级父级节点同级别的复制或新增节点
|
|
|
+ List<WbsTreeContract> wbsTreeContracts2 = treeContractListAllNodes.stream().filter(f ->
|
|
|
+ (ObjectUtils.isNotEmpty(f.getOldId()) && f.getOldId().equals(String.valueOf(wbsTreeContract1.getId())))
|
|
|
+ && f.getContractId().equals(String.valueOf(contractInfo.getId()))
|
|
|
+ && f.getWbsId().equals(wbsTreePrivate.getWbsId())
|
|
|
+ && f.getProjectId().equals(wbsTreePrivate.getProjectId())
|
|
|
+ && f.getStatus().equals(1)
|
|
|
+ && f.getType().equals(1)
|
|
|
+ ).collect(Collectors.toList());
|
|
|
+
|
|
|
+ if (wbsTreeContracts2.size() > 0) {
|
|
|
+ //将表单同步到复制或新增的节点下
|
|
|
+ for (WbsTreeContract treeContract : wbsTreeContracts2) {
|
|
|
+ WbsTreeContract wbsTreeContract2 = BeanUtil.copyProperties(wbsTreeContract, WbsTreeContract.class);
|
|
|
+ if (wbsTreeContract2 != null) {
|
|
|
+ wbsTreeContract2.setPKeyId(SnowFlakeUtil.getId());
|
|
|
+ wbsTreeContract2.setParentId(treeContract.getId());
|
|
|
+
|
|
|
+ insertDataContractList.add(wbsTreeContract2);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -869,7 +1159,6 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
//新增
|
|
|
if (insertDataPrivateList.size() > 0) {
|
|
|
this.insertBatch(insertDataPrivateList, 1000);
|
|
@@ -937,6 +1226,44 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
|
return R.success("添加成功");
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public List<WbsTreePrivate> searchNodeAllTable(String primaryKeyId, String tableOwner, String tableType, String contractId, String projectId) {
|
|
|
+ WbsTreePrivate wbsTreePrivate = baseMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
+ .eq(WbsTreePrivate::getPKeyId, primaryKeyId));
|
|
|
+ if (wbsTreePrivate == null) {
|
|
|
+ return Collections.emptyList();
|
|
|
+ }
|
|
|
+
|
|
|
+ //当前项目合同段只会存在一个角色roleId
|
|
|
+ SaveUserInfoByProject userInfo = wbsTreeContractMapper.selectRoleInfo(AuthUtil.getUserId(), contractId, projectId);
|
|
|
+ if (userInfo == null) {
|
|
|
+ throw new ServiceException("请先分配当前用户对该合同段的角色信息");
|
|
|
+ }
|
|
|
+ String roleId = userInfo.getRoleId();
|
|
|
+
|
|
|
+ //获取当前用户角色与表单所属方关系信息
|
|
|
+ List<WbsTableOwnerRole> wbsTableOwnerRoleList = wbsTreeContractMapper.selectWbsTableOwnerRoleList(roleId);
|
|
|
+ if (wbsTableOwnerRoleList.size() == 0) {
|
|
|
+ throw new ServiceException("当前用户角色未授权,请先分配角色查看元素表相对应的权限");
|
|
|
+ }
|
|
|
+
|
|
|
+ List<String> tableOwnerNumbers = wbsTableOwnerRoleList.stream().map(WbsTableOwnerRole::getTableOwnerNumber).collect(Collectors.toList());
|
|
|
+
|
|
|
+ List<String> tableOwnerList = null;
|
|
|
+ if (org.apache.commons.lang.StringUtils.isNotEmpty(tableOwner)) {
|
|
|
+ String tableOwners = "";
|
|
|
+ //此处加载字典owner_type 固定写死 施工质检1= 1 2 3 , 监理抽检2= 4 5 6
|
|
|
+ if (tableOwner.equals("1")) {
|
|
|
+ tableOwners = "1,2,3";
|
|
|
+ } else if (tableOwner.equals("2")) {
|
|
|
+ tableOwners = "4,5,6";
|
|
|
+ }
|
|
|
+ tableOwnerList = Func.toStrList(tableOwners);
|
|
|
+ }
|
|
|
+
|
|
|
+ return baseMapper.selectWbsTreeContractList(tableOwnerNumbers, tableType, wbsTreePrivate.getProjectId(), wbsTreePrivate.getWbsId(), wbsTreePrivate.getId(), tableOwnerList);
|
|
|
+ }
|
|
|
+
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public boolean insertBatch(Collection<WbsTreePrivate> entityList, int batchSize) {
|
|
|
try {
|