|
@@ -221,30 +221,30 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
|
|
|
|
@Override
|
|
|
public IPage<TreeNodeVOByTabType> tabTypeLazyTreeAll(IPage<TreeNodeVOByTabType> page, Long parentId, String titleName, Boolean hasPartFormula) {
|
|
|
- boolean base=false;
|
|
|
- if(hasPartFormula==null){
|
|
|
- hasPartFormula=true;
|
|
|
+ boolean base = false;
|
|
|
+ if (hasPartFormula == null) {
|
|
|
+ hasPartFormula = true;
|
|
|
}
|
|
|
if ((parentId + "").equals("12345678910")) {
|
|
|
page.setSize(100);
|
|
|
- base=true;
|
|
|
+ base = true;
|
|
|
}
|
|
|
- List<TreeNodeVOByTabType>data ;
|
|
|
- if(SelectorModel.ID.equals(parentId)){
|
|
|
- data =this.baseList();
|
|
|
- }else{
|
|
|
- data= baseMapper.tabTypeLazyTreeAll(page, parentId, titleName);
|
|
|
+ List<TreeNodeVOByTabType> data;
|
|
|
+ if (SelectorModel.ID.equals(parentId)) {
|
|
|
+ data = this.baseList();
|
|
|
+ } else {
|
|
|
+ data = baseMapper.tabTypeLazyTreeAll(page, parentId, titleName);
|
|
|
}
|
|
|
- addBase(data,base);
|
|
|
- if(base&&!hasPartFormula){
|
|
|
- data.removeIf(e->e.getId()!=20&&!e.getId().equals(SelectorModel.ID));
|
|
|
+ addBase(data, base);
|
|
|
+ if (base && !hasPartFormula) {
|
|
|
+ data.removeIf(e -> e.getId() != 20 && !e.getId().equals(SelectorModel.ID));
|
|
|
}
|
|
|
return page.setRecords(data);
|
|
|
}
|
|
|
|
|
|
|
|
|
- public void addBase(List<TreeNodeVOByTabType> data,Boolean base){
|
|
|
- if(base){
|
|
|
+ public void addBase(List<TreeNodeVOByTabType> data, Boolean base) {
|
|
|
+ if (base) {
|
|
|
TreeNodeVOByTabType baseInfo = new TreeNodeVOByTabType();
|
|
|
baseInfo.setTitle(SelectorModel.NODE_NAME);
|
|
|
/*baseInfo.setPrimaryKeyId("BASIN");*/
|
|
@@ -254,11 +254,12 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
|
data.add(baseInfo);
|
|
|
}
|
|
|
}
|
|
|
- public List<TreeNodeVOByTabType> baseList(){
|
|
|
- Map<String,String[]> titleMap = new HashMap<>();
|
|
|
- titleMap.put(BaseInfo.TBN_CH,new String[]{BaseInfo.TBN,BaseInfo.ID});
|
|
|
- titleMap.put(MeterPeriodInfo.TBN_CH,new String[]{MeterPeriodInfo.TBN,MeterPeriodInfo.ID});
|
|
|
- return titleMap.entrySet().stream().map(kv->{
|
|
|
+
|
|
|
+ public List<TreeNodeVOByTabType> baseList() {
|
|
|
+ Map<String, String[]> titleMap = new HashMap<>();
|
|
|
+ titleMap.put(BaseInfo.TBN_CH, new String[]{BaseInfo.TBN, BaseInfo.ID});
|
|
|
+ titleMap.put(MeterPeriodInfo.TBN_CH, new String[]{MeterPeriodInfo.TBN, MeterPeriodInfo.ID});
|
|
|
+ return titleMap.entrySet().stream().map(kv -> {
|
|
|
TreeNodeVOByTabType tn = new TreeNodeVOByTabType();
|
|
|
tn.setTitle(kv.getKey());
|
|
|
tn.setTabType(SelectorModel.NODE_NAME);
|
|
@@ -1415,16 +1416,17 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
|
//获取当前节点对应节点信息
|
|
|
WbsTreePrivate wbsTreePrivate = baseMapper.selectOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, primaryKeyId));
|
|
|
//获取项目信息
|
|
|
- ProjectInfo projectInfo = projectInfoMapper.selectOne(Wrappers.<ProjectInfo>lambdaQuery().select(ProjectInfo::getReferenceWbsTemplateType, ProjectInfo::getReferenceWbsTemplateTypeTrial).eq(ProjectInfo::getId, wbsTreePrivate.getProjectId()));
|
|
|
+ ProjectInfo projectInfo = projectInfoMapper.selectOne(Wrappers.<ProjectInfo>lambdaQuery().eq(ProjectInfo::getId, wbsTreePrivate.getProjectId()));
|
|
|
//结果集
|
|
|
List<WbsTreePrivate> insertDataPrivateList = new ArrayList<>();
|
|
|
List<WbsTreeContract> insertDataContractList = new ArrayList<>();
|
|
|
|
|
|
if (("1").equals(wbsTreePrivate.getWbsType())) {
|
|
|
if (("public").equals(projectInfo.getReferenceWbsTemplateType())) {
|
|
|
- /*TODO-------------------------------------质检公有引用同步--------------------------------------------*/
|
|
|
+ /*-------------------------------------质检公有引用同步--------------------------------------------*/
|
|
|
//获取当前节点对应的公有引用树下的元素表
|
|
|
WbsTree wbsTree = wbsTreeMapper.selectOne(Wrappers.<WbsTree>lambdaQuery().select(WbsTree::getAncestors, WbsTree::getWbsId, WbsTree::getId).eq(WbsTree::getId, wbsTreePrivate.getId()));
|
|
|
+
|
|
|
List<WbsTree> wbsTreesPublicTables;
|
|
|
if (wbsTree.getAncestors().equals("0")) {
|
|
|
//根节点
|
|
@@ -1485,11 +1487,10 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
|
}
|
|
|
|
|
|
} else if (("private").equals(projectInfo.getReferenceWbsTemplateType())) {
|
|
|
- /*TODO-------------------------------------质检私有引用同步--------------------------------------------*/
|
|
|
+ /*-------------------------------------质检私有引用同步--------------------------------------------*/
|
|
|
//根据wbsTreePrivate的wbsId=私有引用的pKeyId来获取引用树根节点
|
|
|
- WbsTreePrivate wbsTreePrivateRoot = baseMapper.selectOne(Wrappers.<WbsTreePrivate>lambdaQuery()
|
|
|
- .select(WbsTreePrivate::getWbsId, WbsTreePrivate::getProjectId)
|
|
|
- .eq(WbsTreePrivate::getPKeyId, wbsTreePrivate.getWbsId()));
|
|
|
+ WbsTreePrivate wbsTreePrivateRoot = baseMapper.selectOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, wbsTreePrivate.getWbsId()));
|
|
|
+
|
|
|
//获取当前私有引用树的元素表信息
|
|
|
List<WbsTreePrivate> wbsTreePrivateRootTables;
|
|
|
if (wbsTreePrivate.getAncestors().equals("0")) {
|
|
@@ -1549,12 +1550,14 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
if (("2").equals(wbsTreePrivate.getWbsType())) {
|
|
|
if (("public").equals(projectInfo.getReferenceWbsTemplateTypeTrial())) {
|
|
|
- /*TODO-------------------------------------试验公有引用同步--------------------------------------------*/
|
|
|
+ /*-------------------------------------试验公有引用同步--------------------------------------------*/
|
|
|
//获取当前节点对应的公有引用树下的元素表
|
|
|
WbsTree wbsTree = wbsTreeMapper.selectOne(Wrappers.<WbsTree>lambdaQuery().eq(WbsTree::getId, wbsTreePrivate.getId()));
|
|
|
List<WbsTree> wbsTreesPublicTables;
|
|
|
+
|
|
|
if (wbsTree.getAncestors().equals("0")) {
|
|
|
//根节点
|
|
|
wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>lambdaQuery()
|
|
@@ -1613,9 +1616,10 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
|
}
|
|
|
|
|
|
} else if (("private").equals(projectInfo.getReferenceWbsTemplateTypeTrial())) {
|
|
|
- /*TODO-------------------------------------试验私有引用同步--------------------------------------------*/
|
|
|
+ /*-------------------------------------试验私有引用同步--------------------------------------------*/
|
|
|
//根据wbsTreePrivate的wbsId=私有引用的pKeyId来获取引用树根节点
|
|
|
WbsTreePrivate wbsTreePrivateRoot = baseMapper.selectOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, wbsTreePrivate.getWbsId()));
|
|
|
+
|
|
|
//获取当前私有引用树的元素表信息
|
|
|
List<WbsTreePrivate> wbsTreePrivateRootTables;
|
|
|
if (wbsTreePrivate.getAncestors().equals("0")) {
|
|
@@ -1676,6 +1680,134 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ if (("3").equals(wbsTreePrivate.getWbsType())) {
|
|
|
+ if (("public").equals(projectInfo.getReferenceWbsTemplateTypeMeter())) {
|
|
|
+ /*-------------------------------------计量公有引用同步--------------------------------------------*/
|
|
|
+ //获取当前节点对应的公有引用树下的元素表
|
|
|
+ WbsTree wbsTree = wbsTreeMapper.selectOne(Wrappers.<WbsTree>lambdaQuery().eq(WbsTree::getId, wbsTreePrivate.getId()));
|
|
|
+ List<WbsTree> wbsTreesPublicTables;
|
|
|
+ if (wbsTree.getAncestors().equals("0")) {
|
|
|
+ //根节点
|
|
|
+ wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
|
|
|
+ .select(WbsTree::getId, WbsTree::getParentId)
|
|
|
+ .eq(WbsTree::getWbsId, wbsTree.getWbsId()).eq(WbsTree::getType, 2)
|
|
|
+ /*.eq(WbsTree::getStatus,1)*/
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
|
|
|
+ .select(WbsTree::getId, WbsTree::getParentId)
|
|
|
+ .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()
|
|
|
+ .select(WbsTreePrivate::getType, WbsTreePrivate::getId, WbsTreePrivate::getAncestors)
|
|
|
+ .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());
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取新增的公有元素表addPublicTable
|
|
|
+ List<WbsTree> addPublicTable = wbsTreesPublicTables.stream().filter(f ->
|
|
|
+ !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.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());
|
|
|
+
|
|
|
+ //构造
|
|
|
+ List<Long> ids = addPublicTables.stream().map(WbsTree::getId).collect(Collectors.toList());
|
|
|
+ if (ids.size() > 0) {
|
|
|
+ List<WbsTree> resultDataList = wbsTreeMapper.selectList(Wrappers.<WbsTree>lambdaQuery().in(WbsTree::getId, ids));
|
|
|
+ for (WbsTree tree : resultDataList) {
|
|
|
+ WbsTreePrivate dataPrivate = BeanUtil.copyProperties(tree, WbsTreePrivate.class);
|
|
|
+ if (dataPrivate != null) {
|
|
|
+ dataPrivate.setPKeyId(SnowFlakeUtil.getId());
|
|
|
+ dataPrivate.setWbsType(wbsTreePrivate.getWbsType());
|
|
|
+ dataPrivate.setProjectId(wbsTreePrivate.getProjectId());
|
|
|
+ dataPrivate.setFullName(dataPrivate.getNodeName());
|
|
|
+ dataPrivate.setInitTableId(tree.getInitTableId().toString());
|
|
|
+ insertDataPrivateList.add(dataPrivate);//新增
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ } else if (("private").equals(projectInfo.getReferenceWbsTemplateTypeMeter())) {
|
|
|
+ /*-------------------------------------计量私有引用同步--------------------------------------------*/
|
|
|
+ //根据wbsTreePrivate的wbsId=私有引用的pKeyId来获取引用树根节点
|
|
|
+ WbsTreePrivate wbsTreePrivateRoot = baseMapper.selectOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, wbsTreePrivate.getWbsId()));
|
|
|
+
|
|
|
+ //获取当前私有引用树的元素表信息
|
|
|
+ List<WbsTreePrivate> wbsTreePrivateRootTables;
|
|
|
+ if (wbsTreePrivate.getAncestors().equals("0")) {
|
|
|
+ //根节点
|
|
|
+ wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
|
|
|
+ .select(WbsTreePrivate::getId, WbsTreePrivate::getParentId, WbsTreePrivate::getPKeyId)
|
|
|
+ .eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId()).eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId()).eq(WbsTreePrivate::getType, 2)
|
|
|
+ /*.eq(WbsTreePrivate::getStatus, 1)*/
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
|
|
|
+ .select(WbsTreePrivate::getId, WbsTreePrivate::getParentId, WbsTreePrivate::getPKeyId)
|
|
|
+ .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>lambdaQuery()
|
|
|
+ .select(WbsTreePrivate::getType, WbsTreePrivate::getId, WbsTreePrivate::getAncestors)
|
|
|
+ .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());
|
|
|
+
|
|
|
+ //判断当前新增的表在私有wbs中是否存在上级节点,存在表示可以新增,不存在表示不新增
|
|
|
+ List<WbsTreePrivate> addPrivateTables = addPrivateTable.stream().filter(node ->
|
|
|
+ wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())).collect(Collectors.toList());
|
|
|
+
|
|
|
+ //构造
|
|
|
+ List<Long> ids = addPrivateTables.stream().map(WbsTreePrivate::getPKeyId).collect(Collectors.toList());
|
|
|
+ if (ids.size() > 0) {
|
|
|
+ List<WbsTreePrivate> resultDataList = baseMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery().in(WbsTreePrivate::getPKeyId, ids));
|
|
|
+ for (WbsTreePrivate tree : resultDataList) {
|
|
|
+ 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());
|
|
|
+ dataPrivate.setInitTableId(tree.getInitTableId());
|
|
|
+ insertDataPrivateList.add(dataPrivate);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
//新增同步到项目
|
|
|
if (!insertDataPrivateList.isEmpty()) {
|
|
|
List<List<WbsTreePrivate>> partition = Lists.partition(insertDataPrivateList, 1000);
|
|
@@ -1706,6 +1838,9 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
|
wbsTreeContract.setIsBussShow(1);
|
|
|
wbsTreeContract.setIsDeleted(0);
|
|
|
wbsTreeContract.setStatus(1);
|
|
|
+
|
|
|
+ wbsTreeContract.setIsTypePrivatePid(wbsTreeContract.getPKeyId()); //记录原始表的pKeyId
|
|
|
+
|
|
|
wbsTreeContract.setPKeyId(SnowFlakeUtil.getId());
|
|
|
wbsTreeContract.setParentId(addOrCopyOrYsNode.getId());
|
|
|
wbsTreeContract.setContractId(addOrCopyOrYsNode.getContractId());
|
|
@@ -1721,6 +1856,9 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
|
wbsTreeContract.setIsBussShow(1);
|
|
|
wbsTreeContract.setIsDeleted(0);
|
|
|
wbsTreeContract.setStatus(1);
|
|
|
+
|
|
|
+ wbsTreeContract.setIsTypePrivatePid(wbsTreeContract.getPKeyId()); //记录原始表的pKeyId
|
|
|
+
|
|
|
wbsTreeContract.setPKeyId(SnowFlakeUtil.getId());
|
|
|
wbsTreeContract.setParentId(addOrCopyOrYsNode.getId());
|
|
|
wbsTreeContract.setContractId(addOrCopyOrYsNode.getContractId());
|
|
@@ -2422,10 +2560,10 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
- public Boolean hasPart(String id){
|
|
|
- if(Func.isNotBlank(id)) {
|
|
|
- List<Map<String,Object>> mapList =this.jdbcTemplate.queryForList("select a.id from m_wbs_tree a join m_wbs_info b on a.wbs_id=b.id where a.id="+id+" and b.wbs_type=3 union select p_key_id from m_wbs_tree_private where p_key_id ="+id+" and wbs_type =3");
|
|
|
- return mapList.size()==0;
|
|
|
+ public Boolean hasPart(String id) {
|
|
|
+ if (Func.isNotBlank(id)) {
|
|
|
+ List<Map<String, Object>> mapList = this.jdbcTemplate.queryForList("select a.id from m_wbs_tree a join m_wbs_info b on a.wbs_id=b.id where a.id=" + id + " and b.wbs_type=3 union select p_key_id from m_wbs_tree_private where p_key_id =" + id + " and wbs_type =3");
|
|
|
+ return mapList.size() == 0;
|
|
|
}
|
|
|
return true;
|
|
|
}
|