|
@@ -457,7 +457,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
List<WbsTreePrivate> listPrivate = new ArrayList<>();
|
|
List<WbsTreePrivate> listPrivate = new ArrayList<>();
|
|
List<WbsTreeContract> listContract = new ArrayList<>();
|
|
List<WbsTreeContract> listContract = new ArrayList<>();
|
|
//获取当前项目下所有合同段信息
|
|
//获取当前项目下所有合同段信息
|
|
- List<ContractInfo> contractInfos = contractInfoMapper.selectList(Wrappers.<ContractInfo>query().lambda().eq(ContractInfo::getPId, projectId));
|
|
|
|
|
|
+ List<ContractInfo> contractInfos = contractInfoMapper.selectList(Wrappers.<ContractInfo>query().lambda().select(ContractInfo::getId).eq(ContractInfo::getPId, projectId));
|
|
|
|
|
|
for (WbsTreePrivate wbsTreePrivate : wbsTreePrivates) {
|
|
for (WbsTreePrivate wbsTreePrivate : wbsTreePrivates) {
|
|
for (WbsTreePrivate treePrivateNow : wbsTreePrivatesAllNow) {
|
|
for (WbsTreePrivate treePrivateNow : wbsTreePrivatesAllNow) {
|
|
@@ -471,8 +471,8 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
|| (ObjectUtils.isNotEmpty(wbsTreePrivate.getImportMatchingInfo()) && !wbsTreePrivate.getImportMatchingInfo().equals(treePrivateNow.getImportMatchingInfo()))
|
|
|| (ObjectUtils.isNotEmpty(wbsTreePrivate.getImportMatchingInfo()) && !wbsTreePrivate.getImportMatchingInfo().equals(treePrivateNow.getImportMatchingInfo()))
|
|
|| (ObjectUtils.isNotEmpty(wbsTreePrivate.getMixRatioTestIds()) && !wbsTreePrivate.getMixRatioTestIds().equals(treePrivateNow.getMixRatioTestIds()))
|
|
|| (ObjectUtils.isNotEmpty(wbsTreePrivate.getMixRatioTestIds()) && !wbsTreePrivate.getMixRatioTestIds().equals(treePrivateNow.getMixRatioTestIds()))
|
|
|| (ObjectUtils.isNotEmpty(wbsTreePrivate.getInitTableId()) && !wbsTreePrivate.getInitTableId().equals(treePrivateNow.getInitTableId()))
|
|
|| (ObjectUtils.isNotEmpty(wbsTreePrivate.getInitTableId()) && !wbsTreePrivate.getInitTableId().equals(treePrivateNow.getInitTableId()))
|
|
- || (ObjectUtils.isNotEmpty(wbsTreePrivate.getInitTableName()) && !wbsTreePrivate.getInitTableName().equals(treePrivateNow.getInitTableName()))
|
|
|
|
- )) {
|
|
|
|
|
|
+ || (ObjectUtils.isNotEmpty(wbsTreePrivate.getInitTableName()) && !wbsTreePrivate.getInitTableName().equals(treePrivateNow.getInitTableName())
|
|
|
|
+ || (ObjectUtils.isNotEmpty(wbsTreePrivate.getHtmlUrl()) && !wbsTreePrivate.getHtmlUrl().equals(treePrivateNow.getHtmlUrl()))))) {
|
|
//修改项目wbs信息
|
|
//修改项目wbs信息
|
|
WbsTreePrivate wbsPrivate = BeanUtil.copyProperties(wbsTreePrivate, WbsTreePrivate.class);
|
|
WbsTreePrivate wbsPrivate = BeanUtil.copyProperties(wbsTreePrivate, WbsTreePrivate.class);
|
|
if (wbsPrivate != null) {
|
|
if (wbsPrivate != null) {
|
|
@@ -493,14 +493,18 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ //修改到项目
|
|
if (listPrivate.size() > 0) {
|
|
if (listPrivate.size() > 0) {
|
|
baseMapper.updateBatchWbsPrivate(listPrivate);
|
|
baseMapper.updateBatchWbsPrivate(listPrivate);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ //修改到合同段
|
|
if (listContract.size() > 0) {
|
|
if (listContract.size() > 0) {
|
|
//获取合同段下的复制、新增节点
|
|
//获取合同段下的复制、新增节点
|
|
List<WbsTreeContract> wbsTreeContractsCopyOrAddAll = new ArrayList<>();
|
|
List<WbsTreeContract> wbsTreeContractsCopyOrAddAll = new ArrayList<>();
|
|
for (ContractInfo contractInfo : contractInfos) {
|
|
for (ContractInfo contractInfo : contractInfos) {
|
|
List<WbsTreeContract> wbsTreeContractsCopyOrAdd = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>lambdaQuery()
|
|
List<WbsTreeContract> wbsTreeContractsCopyOrAdd = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>lambdaQuery()
|
|
|
|
+ .select(WbsTreeContract::getId, WbsTreeContract::getOldId, WbsTreeContract::getProjectId, WbsTreeContract::getContractId)
|
|
.eq(WbsTreeContract::getProjectId, projectId)
|
|
.eq(WbsTreeContract::getProjectId, projectId)
|
|
.eq(WbsTreeContract::getContractId, contractInfo.getId())
|
|
.eq(WbsTreeContract::getContractId, contractInfo.getId())
|
|
.eq(WbsTreeContract::getWbsType, wbsType)
|
|
.eq(WbsTreeContract::getWbsType, wbsType)
|
|
@@ -520,6 +524,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
obj2.setMajorDataType(obj1.getMajorDataType());
|
|
obj2.setMajorDataType(obj1.getMajorDataType());
|
|
obj2.setTableType(obj1.getTableType());
|
|
obj2.setTableType(obj1.getTableType());
|
|
obj2.setTableOwner(obj1.getTableOwner());
|
|
obj2.setTableOwner(obj1.getTableOwner());
|
|
|
|
+ obj2.setHtmlUrl(obj1.getHtmlUrl());
|
|
listContractAdd.add(obj2);
|
|
listContractAdd.add(obj2);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -574,57 +579,110 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
public boolean syncNodeParam(String projectId) {
|
|
public boolean syncNodeParam(String projectId) {
|
|
if (StringUtils.isNotEmpty(projectId)) {
|
|
if (StringUtils.isNotEmpty(projectId)) {
|
|
//获取项目节点树
|
|
//获取项目节点树
|
|
- List<WbsTreePrivate> wbsTreePrivateAllNow = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getProjectId, projectId).eq(WbsTreePrivate::getStatus, 1).eq(WbsTreePrivate::getType, 1));
|
|
|
|
|
|
+ List<WbsTreePrivate> wbsTreePrivateAllNow = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
|
+ .select(WbsTreePrivate::getPKeyId, WbsTreePrivate::getId, WbsTreePrivate::getWbsId)
|
|
|
|
+ .eq(WbsTreePrivate::getProjectId, projectId).eq(WbsTreePrivate::getStatus, 1).eq(WbsTreePrivate::getType, 1));
|
|
String wbsId = wbsTreePrivateAllNow.stream().map(WbsTreePrivate::getWbsId).findAny().orElse(null);
|
|
String wbsId = wbsTreePrivateAllNow.stream().map(WbsTreePrivate::getWbsId).findAny().orElse(null);
|
|
if (StringUtils.isNotEmpty(wbsId)) {
|
|
if (StringUtils.isNotEmpty(wbsId)) {
|
|
-
|
|
|
|
List<WbsParamVO> paramListData = new ArrayList<>();
|
|
List<WbsParamVO> paramListData = new ArrayList<>();
|
|
//获取公有树
|
|
//获取公有树
|
|
- List<WbsTree> treePublicNodeAll = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda().eq(WbsTree::getWbsId, wbsId).eq(WbsTree::getStatus, 1).eq(WbsTree::getType, 1));
|
|
|
|
|
|
+ Map<Long, WbsTree> treePublicNodeAll = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
|
|
|
|
+ .select(WbsTree::getId)
|
|
|
|
+ .eq(WbsTree::getWbsId, wbsId).eq(WbsTree::getStatus, 1)
|
|
|
|
+ .eq(WbsTree::getType, 1))
|
|
|
|
+ .stream().collect(Collectors.toMap(WbsTree::getId, Function.identity()));
|
|
|
|
|
|
if (treePublicNodeAll.size() > 0) {
|
|
if (treePublicNodeAll.size() > 0) {
|
|
- //公有引用
|
|
|
|
|
|
+ //TODO ---------公有引用同步---------
|
|
|
|
+ Map<String, Long> map = new HashMap<>();
|
|
for (WbsTreePrivate wbsTreePrivate : wbsTreePrivateAllNow) {
|
|
for (WbsTreePrivate wbsTreePrivate : wbsTreePrivateAllNow) {
|
|
- for (WbsTree wbsTree : treePublicNodeAll) {
|
|
|
|
- if (wbsTree.getId().equals(wbsTreePrivate.getId())) {
|
|
|
|
- String sql = "select * from m_wbs_param where node_id = " + wbsTree.getId();
|
|
|
|
- List<WbsParam> wbsParamList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(WbsParam.class));
|
|
|
|
- //获取公有节点参数
|
|
|
|
- if (wbsParamList.size() > 0) {
|
|
|
|
- for (WbsParam wbsParam : wbsParamList) {
|
|
|
|
- WbsParamVO param = BeanUtil.copyProperties(wbsParam, WbsParamVO.class);
|
|
|
|
- if (param != null) {
|
|
|
|
- param.setOldId(wbsParam.getId());
|
|
|
|
- param.setNodeId(wbsTreePrivate.getPKeyId());
|
|
|
|
- param.setId(SnowFlakeUtil.getId());
|
|
|
|
- paramListData.add(param);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ WbsTree wbsTree = treePublicNodeAll.get(wbsTreePrivate.getId());
|
|
|
|
+ if (wbsTree != null) {
|
|
|
|
+ map.put(wbsTreePrivate.getPKeyId() + "," + wbsTree.getId(), wbsTree.getId());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Set<String> keyIds = map.keySet();
|
|
|
|
+ List<Long> wbsTreeIds = new ArrayList<>(map.values());
|
|
|
|
+ List<WbsParam> wbsParamList = new ArrayList<>();
|
|
|
|
+ //分组查询
|
|
|
|
+ List<List<Long>> partition = Lists.partition(wbsTreeIds, 1000);
|
|
|
|
+ for (List<Long> ids : partition) {
|
|
|
|
+ String sql = "select id,name,k,v,node_id,remark from m_wbs_param where node_id in (" + org.apache.commons.lang.StringUtils.join(ids, ",") + ")";
|
|
|
|
+ List<WbsParam> wbsParams = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(WbsParam.class));
|
|
|
|
+ wbsParamList.addAll(wbsParams);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for (String ids : keyIds) {
|
|
|
|
+ String nodePKeyIdNow = ids.split(",")[0];
|
|
|
|
+ String nodeIdOld = ids.split(",")[1];
|
|
|
|
+ List<WbsParam> wbsParams = wbsParamList.stream().filter(f -> ObjectUtils.isNotEmpty(f.getNodeId()) && f.getNodeId().toString().equals(nodeIdOld)).collect(Collectors.toList());
|
|
|
|
+ //获取引用的节点参数
|
|
|
|
+ if (wbsParams.size() > 0) {
|
|
|
|
+ for (WbsParam wbsParam : wbsParams) {
|
|
|
|
+ WbsParamVO param = BeanUtil.copyProperties(wbsParam, WbsParamVO.class);
|
|
|
|
+ if (param != null) {
|
|
|
|
+ param.setProjectId(Long.parseLong(projectId));
|
|
|
|
+ param.setId(SnowFlakeUtil.getId());
|
|
|
|
+ param.setNodeId(Long.parseLong(nodePKeyIdNow));
|
|
|
|
+ param.setOldId(wbsParam.getId());
|
|
|
|
+ param.setType(1);
|
|
|
|
+ param.setStatus(1);
|
|
|
|
+ param.setIsDeleted(0);
|
|
|
|
+ paramListData.add(param);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
} else {
|
|
} else {
|
|
- //私有引用 - 获取原始引用私有树
|
|
|
|
- WbsTreePrivate treePrivateRootNode = baseMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getPKeyId, wbsId).eq(WbsTreePrivate::getParentId, 0L).eq(WbsTreePrivate::getStatus, 1).eq(WbsTreePrivate::getType, 1));
|
|
|
|
- List<WbsTreePrivate> treePrivateNodeAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getWbsId, treePrivateRootNode.getWbsId()).eq(WbsTreePrivate::getProjectId, treePrivateRootNode.getProjectId()).eq(WbsTreePrivate::getStatus, 1).eq(WbsTreePrivate::getType, 1));
|
|
|
|
|
|
+ //TODO ---------私有引用同步---------
|
|
|
|
+ Map<String, Long> map = new HashMap<>();
|
|
|
|
+ WbsTreePrivate treePrivateRootNode = baseMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
|
+ .select(WbsTreePrivate::getWbsId, WbsTreePrivate::getProjectId)
|
|
|
|
+ .eq(WbsTreePrivate::getPKeyId, wbsId).eq(WbsTreePrivate::getParentId, 0L).eq(WbsTreePrivate::getStatus, 1).eq(WbsTreePrivate::getType, 1));
|
|
|
|
+
|
|
|
|
+ Map<Long, WbsTreePrivate> treePrivateNodeAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
|
+ .select(WbsTreePrivate::getPKeyId, WbsTreePrivate::getId)
|
|
|
|
+ .eq(WbsTreePrivate::getWbsId, treePrivateRootNode.getWbsId()).eq(WbsTreePrivate::getProjectId, treePrivateRootNode.getProjectId())
|
|
|
|
+ .eq(WbsTreePrivate::getStatus, 1).eq(WbsTreePrivate::getType, 1)).stream().collect(Collectors.toMap(WbsTreePrivate::getId, Function.identity()));
|
|
|
|
|
|
for (WbsTreePrivate wbsTreePrivate : wbsTreePrivateAllNow) {
|
|
for (WbsTreePrivate wbsTreePrivate : wbsTreePrivateAllNow) {
|
|
- for (WbsTreePrivate wbsTreePrivateYS : treePrivateNodeAll) {
|
|
|
|
- if (wbsTreePrivateYS.getId().equals(wbsTreePrivate.getId())) {
|
|
|
|
- String sql = "select * from m_wbs_param where node_id = " + wbsTreePrivateYS.getPKeyId();
|
|
|
|
- List<WbsParam> wbsParamList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(WbsParam.class));
|
|
|
|
- if (wbsParamList.size() > 0) {
|
|
|
|
- for (WbsParam wbsParam : wbsParamList) {
|
|
|
|
- WbsParamVO param = BeanUtil.copyProperties(wbsParam, WbsParamVO.class);
|
|
|
|
- if (param != null) {
|
|
|
|
- param.setOldId(wbsParam.getId());
|
|
|
|
- param.setNodeId(wbsTreePrivate.getPKeyId());
|
|
|
|
- param.setId(SnowFlakeUtil.getId());
|
|
|
|
- paramListData.add(param);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ WbsTreePrivate wbsTreePrivateYS = treePrivateNodeAll.get(wbsTreePrivate.getId());
|
|
|
|
+ if (wbsTreePrivateYS != null) {
|
|
|
|
+ map.put(wbsTreePrivate.getPKeyId() + "," + wbsTreePrivateYS.getPKeyId(), wbsTreePrivateYS.getPKeyId());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Set<String> keyIds = map.keySet();
|
|
|
|
+ List<Long> wbsTreeIds = new ArrayList<>(map.values());
|
|
|
|
+ List<WbsParam> wbsParamList = new ArrayList<>();
|
|
|
|
+ //分组查询
|
|
|
|
+ List<List<Long>> partition = Lists.partition(wbsTreeIds, 1000);
|
|
|
|
+ for (List<Long> ids : partition) {
|
|
|
|
+ String sql = "select id,name,k,v,node_id,remark from m_wbs_param where node_id in (" + org.apache.commons.lang.StringUtils.join(ids, ",") + ")";
|
|
|
|
+ List<WbsParam> wbsParams = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(WbsParam.class));
|
|
|
|
+ wbsParamList.addAll(wbsParams);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for (String ids : keyIds) {
|
|
|
|
+ String nodePKeyIdNow = ids.split(",")[0];
|
|
|
|
+ String nodePKeyIdYs = ids.split(",")[1];
|
|
|
|
+ List<WbsParam> wbsParams = wbsParamList.stream().filter(f -> ObjectUtils.isNotEmpty(f.getNodeId()) && f.getNodeId().toString().equals(nodePKeyIdYs)).collect(Collectors.toList());
|
|
|
|
+ //获取引用的节点参数
|
|
|
|
+ if (wbsParams.size() > 0) {
|
|
|
|
+ for (WbsParam wbsParam : wbsParams) {
|
|
|
|
+ WbsParamVO param = BeanUtil.copyProperties(wbsParam, WbsParamVO.class);
|
|
|
|
+ if (param != null) {
|
|
|
|
+ param.setProjectId(Long.parseLong(projectId));
|
|
|
|
+ param.setId(SnowFlakeUtil.getId());
|
|
|
|
+ param.setNodeId(Long.parseLong(nodePKeyIdNow));
|
|
|
|
+ param.setOldId(wbsParam.getId());
|
|
|
|
+ param.setType(1);
|
|
|
|
+ param.setStatus(1);
|
|
|
|
+ param.setIsDeleted(0);
|
|
|
|
+ paramListData.add(param);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -633,18 +691,39 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
|
|
|
|
List<WbsParam> updateList = new ArrayList<>();
|
|
List<WbsParam> updateList = new ArrayList<>();
|
|
List<WbsParam> insertList = new ArrayList<>();
|
|
List<WbsParam> insertList = new ArrayList<>();
|
|
|
|
+ List<WbsParam> paramListOldAll = new ArrayList<>();
|
|
|
|
+
|
|
|
|
+ List<Long> oldIds = paramListData.stream().map(WbsParamVO::getOldId).distinct().collect(Collectors.toList());
|
|
|
|
+ //分组查询
|
|
|
|
+ List<List<Long>> partition = Lists.partition(oldIds, 1000);
|
|
|
|
+ for (List<Long> ids : partition) {
|
|
|
|
+ String sql1 = "select id,name,k,v,node_id,remark from m_wbs_param where id in( " + org.apache.commons.lang.StringUtils.join(ids, ",") + ")";
|
|
|
|
+ List<WbsParam> query = jdbcTemplate.query(sql1, new BeanPropertyRowMapper<>(WbsParam.class));
|
|
|
|
+ paramListOldAll.addAll(query);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //转换为map
|
|
|
|
+ Map<Long, WbsParam> mapOld = paramListOldAll.stream().collect(Collectors.toMap(WbsParam::getId, Function.identity()));
|
|
|
|
+
|
|
|
|
+ //获取当前项目的节点参数
|
|
|
|
+ List<WbsParam> paramListNow = wbsParamMapper.selectList(Wrappers.<WbsParam>lambdaQuery()
|
|
|
|
+ .select(WbsParam::getK, WbsParam::getV, WbsParam::getName, WbsParam::getId, WbsParam::getRemark, WbsParam::getNodeId)
|
|
|
|
+ .eq(WbsParam::getProjectId, Long.parseLong(projectId)));
|
|
|
|
+
|
|
//判断是否存在
|
|
//判断是否存在
|
|
Iterator<WbsParamVO> iterator = paramListData.iterator();
|
|
Iterator<WbsParamVO> iterator = paramListData.iterator();
|
|
while (iterator.hasNext()) {
|
|
while (iterator.hasNext()) {
|
|
WbsParamVO next = iterator.next();
|
|
WbsParamVO next = iterator.next();
|
|
|
|
|
|
//获取引用的节点上的源参数信息
|
|
//获取引用的节点上的源参数信息
|
|
- String sql1 = "select * from m_wbs_param where id = " + next.getOldId();
|
|
|
|
- WbsParam oldObj = jdbcTemplate.query(sql1, new BeanPropertyRowMapper<>(WbsParam.class)).stream().findAny().orElse(null);
|
|
|
|
-
|
|
|
|
|
|
+ WbsParam oldObj = mapOld.get(next.getOldId());
|
|
//获取被引用的节点上的现参数信息
|
|
//获取被引用的节点上的现参数信息
|
|
- String sql2 = "select * from m_wbs_param where name = '" + next.getName() + "' and k = '" + next.getK() + "' and v = '" + next.getV() + "' and node_id = " + next.getNodeId() + " and remark = '" + next.getRemark() + "' and is_deleted = 0 and status = 1";
|
|
|
|
- WbsParam newObj = jdbcTemplate.query(sql2, new BeanPropertyRowMapper<>(WbsParam.class)).stream().findAny().orElse(null);
|
|
|
|
|
|
+ WbsParam newObj = paramListNow.stream().filter(f -> f.getK().equals(next.getK())
|
|
|
|
+ && f.getV().equals(next.getV())
|
|
|
|
+ && f.getName().equals(next.getName())
|
|
|
|
+ && f.getRemark().equals(next.getRemark())
|
|
|
|
+ && f.getNodeId().equals(next.getNodeId())
|
|
|
|
+ ).findAny().orElse(null);
|
|
|
|
|
|
if (oldObj != null && newObj != null) {
|
|
if (oldObj != null && newObj != null) {
|
|
//如果源节点参数与现节点参数名称、K、V、备注一致,那么就跳过
|
|
//如果源节点参数与现节点参数名称、K、V、备注一致,那么就跳过
|
|
@@ -653,10 +732,14 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
|
|
|
|
//如果源节点参数与现节点参数名称、K一致,V、备注不一致,那么就修改当前名称下的节点参数
|
|
//如果源节点参数与现节点参数名称、K一致,V、备注不一致,那么就修改当前名称下的节点参数
|
|
} else if (oldObj.getName().equals(newObj.getName()) && oldObj.getK().equals(newObj.getK()) && (!oldObj.getV().equals(newObj.getV()) || !oldObj.getRemark().equals(newObj.getRemark()))) {
|
|
} else if (oldObj.getName().equals(newObj.getName()) && oldObj.getK().equals(newObj.getK()) && (!oldObj.getV().equals(newObj.getV()) || !oldObj.getRemark().equals(newObj.getRemark()))) {
|
|
|
|
+ newObj.setProjectId(Long.parseLong(projectId));
|
|
newObj.setName(oldObj.getName());
|
|
newObj.setName(oldObj.getName());
|
|
newObj.setK(oldObj.getK());
|
|
newObj.setK(oldObj.getK());
|
|
newObj.setV(oldObj.getV());
|
|
newObj.setV(oldObj.getV());
|
|
newObj.setRemark(oldObj.getRemark());
|
|
newObj.setRemark(oldObj.getRemark());
|
|
|
|
+ newObj.setType(1);
|
|
|
|
+ newObj.setStatus(1);
|
|
|
|
+ newObj.setIsDeleted(0);
|
|
updateList.add(newObj);
|
|
updateList.add(newObj);
|
|
|
|
|
|
//如果源节点参数与现节点参数名称不一致,那么新增
|
|
//如果源节点参数与现节点参数名称不一致,那么新增
|
|
@@ -666,16 +749,22 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
|
|
|
|
} else if (oldObj != null) {
|
|
} else if (oldObj != null) {
|
|
//二次过滤,节点名称、节点id相同,修改
|
|
//二次过滤,节点名称、节点id相同,修改
|
|
- String sql3 = "select * from m_wbs_param where name = '" + next.getName() + "' and node_id = " + next.getNodeId() + " and is_deleted = 0 and status = 1";
|
|
|
|
- List<WbsParam> query = jdbcTemplate.query(sql3, new BeanPropertyRowMapper<>(WbsParam.class));
|
|
|
|
|
|
+ List<WbsParam> query = paramListNow.stream().filter(f -> f.getName().equals(next.getName())
|
|
|
|
+ && f.getNodeId().equals(next.getNodeId())
|
|
|
|
+ ).collect(Collectors.toList());
|
|
|
|
+
|
|
if (query.size() > 0) {
|
|
if (query.size() > 0) {
|
|
for (WbsParam wbsParam : query) {
|
|
for (WbsParam wbsParam : query) {
|
|
if (oldObj.getName().equals(wbsParam.getName())) {
|
|
if (oldObj.getName().equals(wbsParam.getName())) {
|
|
//修改
|
|
//修改
|
|
|
|
+ wbsParam.setProjectId(Long.parseLong(projectId));
|
|
wbsParam.setName(next.getName());
|
|
wbsParam.setName(next.getName());
|
|
wbsParam.setK(next.getK());
|
|
wbsParam.setK(next.getK());
|
|
wbsParam.setV(next.getV());
|
|
wbsParam.setV(next.getV());
|
|
wbsParam.setRemark(next.getRemark());
|
|
wbsParam.setRemark(next.getRemark());
|
|
|
|
+ wbsParam.setType(1);
|
|
|
|
+ wbsParam.setStatus(1);
|
|
|
|
+ wbsParam.setIsDeleted(0);
|
|
updateList.add(wbsParam);
|
|
updateList.add(wbsParam);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -691,7 +780,13 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
this.wbsParamServiceImpl.updateBatchById(updateList, 1000);
|
|
this.wbsParamServiceImpl.updateBatchById(updateList, 1000);
|
|
}
|
|
}
|
|
if (insertList.size() > 0) {
|
|
if (insertList.size() > 0) {
|
|
- this.wbsParamServiceImpl.saveBatch(insertList, 1000);
|
|
|
|
|
|
+ //异步新增
|
|
|
|
+ List<List<WbsParam>> partition1 = Lists.partition(insertList, 1000);
|
|
|
|
+ CompletableFuture<Void> handle = CompletableFuture.allOf(partition1.stream().map(addList ->
|
|
|
|
+ CompletableFuture.runAsync(() -> {
|
|
|
|
+ wbsParamServiceImpl.insertBatch(addList, 1000);
|
|
|
|
+ }, executor)).toArray(CompletableFuture[]::new));
|
|
|
|
+ handle.join();
|
|
}
|
|
}
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
@@ -712,34 +807,19 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
|
|
|
|
if (("1").equals(wbsTreePrivate.getWbsType())) {
|
|
if (("1").equals(wbsTreePrivate.getWbsType())) {
|
|
if (("public").equals(projectInfo.getReferenceWbsTemplateType())) {
|
|
if (("public").equals(projectInfo.getReferenceWbsTemplateType())) {
|
|
- /*TODO-------------------------------------公有引用同步--------------------------------------------*/
|
|
|
|
|
|
+ /*TODO-------------------------------------质检公有引用同步--------------------------------------------*/
|
|
//获取当前节点对应的公有引用树下的元素表
|
|
//获取当前节点对应的公有引用树下的元素表
|
|
- WbsTree wbsTree = wbsTreeMapper.selectOne(Wrappers.<WbsTree>query().lambda()
|
|
|
|
- .eq(WbsTree::getId, wbsTreePrivate.getId())
|
|
|
|
- );
|
|
|
|
|
|
+ WbsTree wbsTree = wbsTreeMapper.selectOne(Wrappers.<WbsTree>query().lambda().eq(WbsTree::getId, wbsTreePrivate.getId()));
|
|
List<WbsTree> wbsTreesPublicTables;
|
|
List<WbsTree> wbsTreesPublicTables;
|
|
if (wbsTree.getAncestors().equals("0")) {
|
|
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)
|
|
|
|
- );
|
|
|
|
|
|
+ wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda().eq(WbsTree::getWbsId, wbsTree.getWbsId()).eq(WbsTree::getType, 2).eq(WbsTree::getStatus, 1));
|
|
} else {
|
|
} 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())
|
|
|
|
- );
|
|
|
|
|
|
+ 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> 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> wbsTreePrivatesProjectNodes = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
|
|
|
|
|
|
List<WbsTreePrivate> wbsTreePrivatesProjectTables;
|
|
List<WbsTreePrivate> wbsTreePrivatesProjectTables;
|
|
@@ -752,22 +832,17 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
|
|
|
|
//获取新增的公有元素表addPublicTable
|
|
//获取新增的公有元素表addPublicTable
|
|
List<WbsTree> addPublicTable = wbsTreesPublicTables.stream().filter(f ->
|
|
List<WbsTree> addPublicTable = wbsTreesPublicTables.stream().filter(f ->
|
|
- !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.getId()))
|
|
|
|
- .collect(Collectors.toList());
|
|
|
|
|
|
+ !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.getId())).collect(Collectors.toList());
|
|
|
|
|
|
//判断当前新增的表在项目的wbs树中是否存在上级节点,存在表示可以新增,不存在表示不新增
|
|
//判断当前新增的表在项目的wbs树中是否存在上级节点,存在表示可以新增,不存在表示不新增
|
|
List<WbsTree> addPublicTables = addPublicTable.stream().filter(node ->
|
|
List<WbsTree> addPublicTables = addPublicTable.stream().filter(node ->
|
|
- wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())
|
|
|
|
- ).collect(Collectors.toList());
|
|
|
|
|
|
+ wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())).collect(Collectors.toList());
|
|
|
|
|
|
//获取当前项目下所有施工合同段id
|
|
//获取当前项目下所有施工合同段id
|
|
List<ContractInfo> contractInfos = contractInfoMapper.selectList(Wrappers.<ContractInfo>query().lambda().eq(ContractInfo::getPId, wbsTreePrivate.getProjectId()));
|
|
List<ContractInfo> contractInfos = contractInfoMapper.selectList(Wrappers.<ContractInfo>query().lambda().eq(ContractInfo::getPId, wbsTreePrivate.getProjectId()));
|
|
|
|
|
|
//获取当前项目下所有合同段树
|
|
//获取当前项目下所有合同段树
|
|
- List<WbsTreeContract> treeContractListAll = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
|
|
|
|
- .eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId())
|
|
|
|
- .eq(WbsTreeContract::getStatus, 1)
|
|
|
|
- );
|
|
|
|
|
|
+ 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> 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());
|
|
List<WbsTreeContract> treeContractListAllTables = treeContractListAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
|
|
|
|
|
|
@@ -856,35 +931,20 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
}
|
|
}
|
|
|
|
|
|
} else if (("private").equals(projectInfo.getReferenceWbsTemplateType())) {
|
|
} else if (("private").equals(projectInfo.getReferenceWbsTemplateType())) {
|
|
- /*TODO-------------------------------------私有引用同步--------------------------------------------*/
|
|
|
|
|
|
+ /*TODO-------------------------------------质检私有引用同步--------------------------------------------*/
|
|
//根据wbsTreePrivate的wbsId=私有引用的pKeyId来获取引用树根节点
|
|
//根据wbsTreePrivate的wbsId=私有引用的pKeyId来获取引用树根节点
|
|
WbsTreePrivate wbsTreePrivateRoot = baseMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getPKeyId, wbsTreePrivate.getWbsId()));
|
|
WbsTreePrivate wbsTreePrivateRoot = baseMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getPKeyId, wbsTreePrivate.getWbsId()));
|
|
//获取当前私有引用树的元素表信息
|
|
//获取当前私有引用树的元素表信息
|
|
List<WbsTreePrivate> wbsTreePrivateRootTables;
|
|
List<WbsTreePrivate> wbsTreePrivateRootTables;
|
|
if (wbsTreePrivate.getAncestors().equals("0")) {
|
|
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)
|
|
|
|
- );
|
|
|
|
|
|
+ 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 {
|
|
} 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())
|
|
|
|
- );
|
|
|
|
|
|
+ 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> 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> wbsTreePrivatesProjectNodes = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
|
|
List<WbsTreePrivate> wbsTreePrivatesProjectTables;
|
|
List<WbsTreePrivate> wbsTreePrivatesProjectTables;
|
|
@@ -897,22 +957,17 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
|
|
|
|
//获取新增的私有元素表addPrivateTable
|
|
//获取新增的私有元素表addPrivateTable
|
|
List<WbsTreePrivate> addPrivateTable = wbsTreePrivateRootTables.stream().filter(f ->
|
|
List<WbsTreePrivate> addPrivateTable = wbsTreePrivateRootTables.stream().filter(f ->
|
|
- !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.getId()))
|
|
|
|
- .collect(Collectors.toList());
|
|
|
|
|
|
+ !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.getId())).collect(Collectors.toList());
|
|
|
|
|
|
//获取当前项目下所有施工合同段id
|
|
//获取当前项目下所有施工合同段id
|
|
List<ContractInfo> contractInfos = contractInfoMapper.selectContractIdByProjectId(wbsTreePrivate.getProjectId());
|
|
List<ContractInfo> contractInfos = contractInfoMapper.selectContractIdByProjectId(wbsTreePrivate.getProjectId());
|
|
|
|
|
|
//判断当前新增的表在私有wbs中是否存在上级节点,存在表示可以新增,不存在表示不新增
|
|
//判断当前新增的表在私有wbs中是否存在上级节点,存在表示可以新增,不存在表示不新增
|
|
List<WbsTreePrivate> addPrivateTables = addPrivateTable.stream().filter(node ->
|
|
List<WbsTreePrivate> addPrivateTables = addPrivateTable.stream().filter(node ->
|
|
- wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())
|
|
|
|
- ).collect(Collectors.toList());
|
|
|
|
|
|
+ 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> 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> 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());
|
|
List<WbsTreeContract> treeContractListAllTables = treeContractListAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
|
|
|
|
|
|
@@ -999,34 +1054,19 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
}
|
|
}
|
|
if (("2").equals(wbsTreePrivate.getWbsType())) {
|
|
if (("2").equals(wbsTreePrivate.getWbsType())) {
|
|
if (("public").equals(projectInfo.getReferenceWbsTemplateTypeTrial())) {
|
|
if (("public").equals(projectInfo.getReferenceWbsTemplateTypeTrial())) {
|
|
- /*TODO-------------------------------------公有引用同步--------------------------------------------*/
|
|
|
|
|
|
+ /*TODO-------------------------------------试验公有引用同步--------------------------------------------*/
|
|
//获取当前节点对应的公有引用树下的元素表
|
|
//获取当前节点对应的公有引用树下的元素表
|
|
- WbsTree wbsTree = wbsTreeMapper.selectOne(Wrappers.<WbsTree>query().lambda()
|
|
|
|
- .eq(WbsTree::getId, wbsTreePrivate.getId())
|
|
|
|
- );
|
|
|
|
|
|
+ WbsTree wbsTree = wbsTreeMapper.selectOne(Wrappers.<WbsTree>query().lambda().eq(WbsTree::getId, wbsTreePrivate.getId()));
|
|
List<WbsTree> wbsTreesPublicTables;
|
|
List<WbsTree> wbsTreesPublicTables;
|
|
if (wbsTree.getAncestors().equals("0")) {
|
|
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)
|
|
|
|
- );
|
|
|
|
|
|
+ wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda().eq(WbsTree::getWbsId, wbsTree.getWbsId()).eq(WbsTree::getType, 2).eq(WbsTree::getStatus, 1));
|
|
} else {
|
|
} 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())
|
|
|
|
- );
|
|
|
|
|
|
+ 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> 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> wbsTreePrivatesProjectNodes = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
|
|
|
|
|
|
List<WbsTreePrivate> wbsTreePrivatesProjectTables;
|
|
List<WbsTreePrivate> wbsTreePrivatesProjectTables;
|
|
@@ -1039,22 +1079,17 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
|
|
|
|
//获取新增的公有元素表addPublicTable
|
|
//获取新增的公有元素表addPublicTable
|
|
List<WbsTree> addPublicTable = wbsTreesPublicTables.stream().filter(f ->
|
|
List<WbsTree> addPublicTable = wbsTreesPublicTables.stream().filter(f ->
|
|
- !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.getId()))
|
|
|
|
- .collect(Collectors.toList());
|
|
|
|
|
|
+ !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.getId())).collect(Collectors.toList());
|
|
|
|
|
|
//判断当前新增的表在项目的wbs树中是否存在上级节点,存在表示可以新增,不存在表示不新增
|
|
//判断当前新增的表在项目的wbs树中是否存在上级节点,存在表示可以新增,不存在表示不新增
|
|
List<WbsTree> addPublicTables = addPublicTable.stream().filter(node ->
|
|
List<WbsTree> addPublicTables = addPublicTable.stream().filter(node ->
|
|
- wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())
|
|
|
|
- ).collect(Collectors.toList());
|
|
|
|
|
|
+ wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())).collect(Collectors.toList());
|
|
|
|
|
|
//获取当前项目下所有施工合同段id
|
|
//获取当前项目下所有施工合同段id
|
|
List<ContractInfo> contractInfos = contractInfoMapper.selectList(Wrappers.<ContractInfo>query().lambda().eq(ContractInfo::getPId, wbsTreePrivate.getProjectId()));
|
|
List<ContractInfo> contractInfos = contractInfoMapper.selectList(Wrappers.<ContractInfo>query().lambda().eq(ContractInfo::getPId, wbsTreePrivate.getProjectId()));
|
|
|
|
|
|
//获取当前项目下所有合同段树
|
|
//获取当前项目下所有合同段树
|
|
- List<WbsTreeContract> treeContractListAll = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
|
|
|
|
- .eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId())
|
|
|
|
- .eq(WbsTreeContract::getStatus, 1)
|
|
|
|
- );
|
|
|
|
|
|
+ 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> 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());
|
|
List<WbsTreeContract> treeContractListAllTables = treeContractListAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
|
|
|
|
|
|
@@ -1143,35 +1178,20 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
}
|
|
}
|
|
|
|
|
|
} else if (("private").equals(projectInfo.getReferenceWbsTemplateTypeTrial())) {
|
|
} else if (("private").equals(projectInfo.getReferenceWbsTemplateTypeTrial())) {
|
|
- /*TODO-------------------------------------私有引用同步--------------------------------------------*/
|
|
|
|
|
|
+ /*TODO-------------------------------------试验私有引用同步--------------------------------------------*/
|
|
//根据wbsTreePrivate的wbsId=私有引用的pKeyId来获取引用树根节点
|
|
//根据wbsTreePrivate的wbsId=私有引用的pKeyId来获取引用树根节点
|
|
WbsTreePrivate wbsTreePrivateRoot = baseMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getPKeyId, wbsTreePrivate.getWbsId()));
|
|
WbsTreePrivate wbsTreePrivateRoot = baseMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getPKeyId, wbsTreePrivate.getWbsId()));
|
|
//获取当前私有引用树的元素表信息
|
|
//获取当前私有引用树的元素表信息
|
|
List<WbsTreePrivate> wbsTreePrivateRootTables;
|
|
List<WbsTreePrivate> wbsTreePrivateRootTables;
|
|
if (wbsTreePrivate.getAncestors().equals("0")) {
|
|
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)
|
|
|
|
- );
|
|
|
|
|
|
+ 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 {
|
|
} 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())
|
|
|
|
- );
|
|
|
|
|
|
+ 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> 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> wbsTreePrivatesProjectNodes = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
|
|
List<WbsTreePrivate> wbsTreePrivatesProjectTables;
|
|
List<WbsTreePrivate> wbsTreePrivatesProjectTables;
|
|
@@ -1184,22 +1204,17 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
|
|
|
|
//获取新增的私有元素表addPrivateTable
|
|
//获取新增的私有元素表addPrivateTable
|
|
List<WbsTreePrivate> addPrivateTable = wbsTreePrivateRootTables.stream().filter(f ->
|
|
List<WbsTreePrivate> addPrivateTable = wbsTreePrivateRootTables.stream().filter(f ->
|
|
- !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.getId()))
|
|
|
|
- .collect(Collectors.toList());
|
|
|
|
|
|
+ !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.getId())).collect(Collectors.toList());
|
|
|
|
|
|
//获取当前项目下所有施工合同段id
|
|
//获取当前项目下所有施工合同段id
|
|
List<ContractInfo> contractInfos = contractInfoMapper.selectContractIdByProjectId(wbsTreePrivate.getProjectId());
|
|
List<ContractInfo> contractInfos = contractInfoMapper.selectContractIdByProjectId(wbsTreePrivate.getProjectId());
|
|
|
|
|
|
//判断当前新增的表在私有wbs中是否存在上级节点,存在表示可以新增,不存在表示不新增
|
|
//判断当前新增的表在私有wbs中是否存在上级节点,存在表示可以新增,不存在表示不新增
|
|
List<WbsTreePrivate> addPrivateTables = addPrivateTable.stream().filter(node ->
|
|
List<WbsTreePrivate> addPrivateTables = addPrivateTable.stream().filter(node ->
|
|
- wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())
|
|
|
|
- ).collect(Collectors.toList());
|
|
|
|
|
|
+ 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> 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> 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());
|
|
List<WbsTreeContract> treeContractListAllTables = treeContractListAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
|
|
|
|
|
|
@@ -1297,6 +1312,152 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public boolean syncProjectEVisa(String projectId) {
|
|
|
|
+ if (StringUtils.isNotEmpty(projectId)) {
|
|
|
|
+ ProjectInfo projectInfo = projectInfoMapper.selectById(projectId);
|
|
|
|
+ if (projectInfo != null && ("private").equals(projectInfo.getReferenceWbsTemplateType()) && ObjectUtils.isNotEmpty(projectInfo.getReferenceWbsTemplateId())) {
|
|
|
|
+ //构造参数集合
|
|
|
|
+ List<TextdictInfo> insertData = new ArrayList<>();
|
|
|
|
+ Map<Long, List<TextdictInfo>> textDictInfoData = new HashMap<>();
|
|
|
|
+
|
|
|
|
+ //获取当前引用的项目节点树的根节点信息
|
|
|
|
+ WbsTreePrivate oneRecordRoot = this.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().select(WbsTreePrivate::getProjectId, WbsTreePrivate::getWbsId).eq(WbsTreePrivate::getPKeyId, projectInfo.getReferenceWbsTemplateId()));
|
|
|
|
+
|
|
|
|
+ //获取当前项目下节点树所有节点、表、独立表
|
|
|
|
+ String sqlNodeTreeAllNow = "SELECT p_key_id,id,type,parent_id,html_url FROM m_wbs_tree_private WHERE project_id = " + projectId + " AND STATUS = 1 AND is_deleted = 0 AND (((type = 1 OR type = 2) AND wbs_type = 1) OR (type= 10 AND parent_id = -10 ))";
|
|
|
|
+ List<WbsTreePrivate> wbsTreePrivatesNodeAndTabNow = jdbcTemplate.query(sqlNodeTreeAllNow, new BeanPropertyRowMapper<>(WbsTreePrivate.class));
|
|
|
|
+ Map<Long, WbsTreePrivate> wbsTreePrivatesTableDL = wbsTreePrivatesNodeAndTabNow.stream().filter(f -> f.getType().equals(10) && f.getParentId().equals(-10L)).collect(Collectors.toMap(WbsTreePrivate::getId, Function.identity()));
|
|
|
|
+
|
|
|
|
+ //获取当前项目节点树
|
|
|
|
+ Map<Long, WbsTreePrivate> nowNodeTreeAll = wbsTreePrivatesNodeAndTabNow.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList()).stream()
|
|
|
|
+ .collect(Collectors.toMap(WbsTreePrivate::getId, Function.identity()));
|
|
|
|
+
|
|
|
|
+ //获取当前引用的节点树下所有节点、表、独立表
|
|
|
|
+ String sqlNodeTreeAllOld = "SELECT p_key_id,id,type,parent_id FROM m_wbs_tree_private WHERE project_id = " + oneRecordRoot.getProjectId() + " AND STATUS = 1 AND is_deleted = 0 AND (((type = 1 OR type = 2) AND wbs_id = " + oneRecordRoot.getWbsId() + ") OR ((type= 10 OR parent_id = -10 ) AND wbs_id IS NULL))";
|
|
|
|
+ List<WbsTreePrivate> wbsTreePrivatesNodeAndTab = jdbcTemplate.query(sqlNodeTreeAllOld, new BeanPropertyRowMapper<>(WbsTreePrivate.class));
|
|
|
|
+
|
|
|
|
+ //获取当前对应电签位置配置信息
|
|
|
|
+ List<WbsTreePrivate> collect1 = wbsTreePrivatesNodeAndTab.stream().filter(f -> f.getType().equals(10) || f.getType().equals(2)).collect(Collectors.toList());
|
|
|
|
+ List<Long> pKeyIds = collect1.stream().map(WbsTreePrivate::getPKeyId).collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ //分组查询
|
|
|
|
+ List<TextdictInfo> textDictInfosAll = new ArrayList<>();
|
|
|
|
+ List<List<Long>> partition = Lists.partition(pKeyIds, 1000);
|
|
|
|
+ for (List<Long> ids : partition) {
|
|
|
|
+ String sql = "select id,name,type,tab_id,col_key,sig_role_id,is_deleted,sig_role_name,col_name,pyzbx,pyzby from m_textdict_info where tab_id in(" + org.apache.commons.lang.StringUtils.join(ids, ",") + ")";
|
|
|
|
+ List<TextdictInfo> textDictInfos = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(TextdictInfo.class));
|
|
|
|
+ textDictInfosAll.addAll(textDictInfos);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //转换map
|
|
|
|
+ Map<String, List<TextdictInfo>> collect3 = textDictInfosAll.stream().collect(Collectors.groupingBy(TextdictInfo::getTabId));
|
|
|
|
+
|
|
|
|
+ //构造原始电签信息
|
|
|
|
+ for (WbsTreePrivate wbsTreePrivate : collect1) {
|
|
|
|
+ if (wbsTreePrivate.getType() == 2) {
|
|
|
|
+ WbsTreePrivate obj = nowNodeTreeAll.get(wbsTreePrivate.getParentId());
|
|
|
|
+ assert obj != null;
|
|
|
|
+ List<TextdictInfo> textDictInfos = collect3.get(String.valueOf(wbsTreePrivate.getPKeyId()));
|
|
|
|
+ if (textDictInfos != null && textDictInfos.size() > 0) {
|
|
|
|
+ textDictInfoData.put(wbsTreePrivate.getId(), textDictInfos);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (wbsTreePrivate.getType() == 10 && wbsTreePrivate.getParentId() == -10) { //type=10,parentId=-10 独立库
|
|
|
|
+ //判断是否存在独立表单,存在则不新增
|
|
|
|
+ WbsTreePrivate wbsTreePrivate1 = wbsTreePrivatesTableDL.get(wbsTreePrivate.getId());
|
|
|
|
+ if (ObjectUtils.isEmpty(wbsTreePrivate1)) {
|
|
|
|
+ //根据元素表pKeyId,获取电签位置匹配信息、编辑默认信息
|
|
|
|
+ List<TextdictInfo> textDictInfos = collect3.get(String.valueOf(wbsTreePrivate.getPKeyId()));
|
|
|
|
+ if (textDictInfos != null && textDictInfos.size() > 0) {
|
|
|
|
+ textDictInfoData.put(wbsTreePrivate.getId(), textDictInfos);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //只同步独立库中有关联过清表的元素表type=10,以及原始方式的元素表type=2
|
|
|
|
+ List<WbsTreePrivate> collect = wbsTreePrivatesNodeAndTabNow.stream().filter(f -> f.getType().equals(2) || (f.getHtmlUrl() != null && f.getType().equals(10))).collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ collect.forEach(tree -> {
|
|
|
|
+ List<TextdictInfo> textDictInfos = textDictInfoData.get(tree.getId());
|
|
|
|
+ if (textDictInfos != null) {
|
|
|
|
+ for (TextdictInfo textdictInfo : textDictInfos) {
|
|
|
|
+ TextdictInfo obj = BeanUtil.copyProperties(textdictInfo, TextdictInfo.class);
|
|
|
|
+ assert obj != null;
|
|
|
|
+ obj.setId(SnowFlakeUtil.getId());
|
|
|
|
+ obj.setTabId(tree.getPKeyId().toString()); //重新赋值绑定到对应的表上
|
|
|
|
+ insertData.add(obj);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ //去重,删除当前表的电签信息
|
|
|
|
+ List<String> collect2 = insertData.stream().map(TextdictInfo::getTabId).collect(Collectors.toList());
|
|
|
|
+ List<List<String>> partitionDel = Lists.partition(collect2, 1000);
|
|
|
|
+ for (List<String> ids : partitionDel) {
|
|
|
|
+ String delSql = "delete from m_textdict_info where tab_id in (" + org.apache.commons.lang.StringUtils.join(ids, ",") + ")";
|
|
|
|
+ jdbcTemplate.execute(delSql);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //异步新增
|
|
|
|
+ List<List<TextdictInfo>> partition1 = Lists.partition(insertData, 1000);
|
|
|
|
+ CompletableFuture<Void> handle = CompletableFuture.allOf(partition1.stream().map(addList ->
|
|
|
|
+ CompletableFuture.runAsync(() -> {
|
|
|
|
+ textDictInfoService.insertBatch(addList, 1000);
|
|
|
|
+ }, executor)).toArray(CompletableFuture[]::new));
|
|
|
|
+ handle.join();
|
|
|
|
+
|
|
|
|
+ return true;
|
|
|
|
+ } else {
|
|
|
|
+ throw new ServiceException("当前项目关联的wbs树不是私有关联");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void eVisInfoRepeatDel(String pid) {
|
|
|
|
+ //获取当前项目下节点树所有节点、表、独立表
|
|
|
|
+ String sqlNodeTreeAllNow = "SELECT p_key_id,id,type,parent_id,html_url FROM m_wbs_tree_private WHERE project_id = " + pid + " AND STATUS = 1 AND is_deleted = 0 AND (((type = 1 OR type = 2) AND wbs_type = 1) OR (type= 10 AND parent_id = -10 ))";
|
|
|
|
+ List<WbsTreePrivate> wbsTreePrivatesNodeAndTabNow = jdbcTemplate.query(sqlNodeTreeAllNow, new BeanPropertyRowMapper<>(WbsTreePrivate.class));
|
|
|
|
+
|
|
|
|
+ //获取当前对应电签位置配置信息
|
|
|
|
+ List<WbsTreePrivate> collect1 = wbsTreePrivatesNodeAndTabNow.stream().filter(f -> f.getType().equals(10) || f.getType().equals(2)).collect(Collectors.toList());
|
|
|
|
+ List<Long> pKeyIds = collect1.stream().map(WbsTreePrivate::getPKeyId).collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ //分组查询电签信息
|
|
|
|
+ List<TextdictInfo> textDictInfosAll = new ArrayList<>();
|
|
|
|
+ List<List<Long>> partition = Lists.partition(pKeyIds, 1000);
|
|
|
|
+ for (List<Long> ids : partition) {
|
|
|
|
+ String sql = "select id,tab_id,col_key,col_name,sig_role_id,sig_role_name from m_textdict_info where tab_id in(" + org.apache.commons.lang.StringUtils.join(ids, ",") + ")";
|
|
|
|
+ List<TextdictInfo> textDictInfos = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(TextdictInfo.class));
|
|
|
|
+ textDictInfosAll.addAll(textDictInfos);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //去重,解决之前由于删除接口重复保存,导致数据重复问题
|
|
|
|
+ List<TextdictInfo> list = textDictInfosAll.stream().collect(
|
|
|
|
+ Collectors.collectingAndThen(
|
|
|
|
+ Collectors.toCollection(() -> new TreeSet<>(
|
|
|
|
+ Comparator.comparing(o -> o.getTabId() + ";" + o.getSigRoleId() + ";" + o.getColKey() + ";" + o.getSigRoleName() + ";" + o.getColName()
|
|
|
|
+ )
|
|
|
|
+ )), ArrayList::new));
|
|
|
|
+
|
|
|
|
+ List<Long> idsAll = textDictInfosAll.stream().map(TextdictInfo::getId).collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ List<Long> saveIds = list.stream().map(TextdictInfo::getId).collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ List<Long> delIds = idsAll.stream().filter(f -> !saveIds.contains(f)).collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ List<List<Long>> partition1 = Lists.partition(delIds, 1000);
|
|
|
|
+ for (List<Long> ids : partition1) {
|
|
|
|
+ String delSql = "delete from m_textdict_info where id in (" + org.apache.commons.lang.StringUtils.join(ids, ",") + ")";
|
|
|
|
+ jdbcTemplate.execute(delSql);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public R addWbsTreeContractInfo(String nodeId, String primaryKeyIds, long contractId) {
|
|
public R addWbsTreeContractInfo(String nodeId, String primaryKeyIds, long contractId) {
|
|
if (com.alibaba.cloud.commons.lang.StringUtils.isEmpty(nodeId)) {
|
|
if (com.alibaba.cloud.commons.lang.StringUtils.isEmpty(nodeId)) {
|
|
@@ -1503,13 +1664,13 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
if (wbsTableOwnerRoleList.size() == 0) {
|
|
if (wbsTableOwnerRoleList.size() == 0) {
|
|
throw new ServiceException("当前用户角色未授权,请先分配角色查看元素表相对应的权限");
|
|
throw new ServiceException("当前用户角色未授权,请先分配角色查看元素表相对应的权限");
|
|
}
|
|
}
|
|
|
|
+ //角色权限
|
|
|
|
+ List<String> roleAndTabOwners = wbsTableOwnerRoleList.stream().map(WbsTableOwnerRole::getTableOwnerNumber).collect(Collectors.toList());
|
|
|
|
|
|
- List<String> tableOwnerNumbers = wbsTableOwnerRoleList.stream().map(WbsTableOwnerRole::getTableOwnerNumber).collect(Collectors.toList());
|
|
|
|
-
|
|
|
|
|
|
+ //表单权限
|
|
List<String> tableOwnerList = null;
|
|
List<String> tableOwnerList = null;
|
|
if (org.apache.commons.lang.StringUtils.isNotEmpty(tableOwner)) {
|
|
if (org.apache.commons.lang.StringUtils.isNotEmpty(tableOwner)) {
|
|
String tableOwners = "";
|
|
String tableOwners = "";
|
|
- //此处加载字典owner_type
|
|
|
|
if (tableOwner.equals("1")) {
|
|
if (tableOwner.equals("1")) {
|
|
tableOwners = "1,2,3";
|
|
tableOwners = "1,2,3";
|
|
} else if (tableOwner.equals("2")) {
|
|
} else if (tableOwner.equals("2")) {
|
|
@@ -1518,7 +1679,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
tableOwnerList = Func.toStrList(tableOwners);
|
|
tableOwnerList = Func.toStrList(tableOwners);
|
|
}
|
|
}
|
|
|
|
|
|
- List<WbsTreePrivate> wbsTreePrivates = baseMapper.selectWbsTreeContractList(tableOwnerNumbers, tableType, wbsTreePrivate.getProjectId(), wbsTreePrivate.getWbsId(), wbsTreePrivate.getId(), tableOwnerList);
|
|
|
|
|
|
+ List<WbsTreePrivate> wbsTreePrivates = baseMapper.selectWbsTreeContractList(roleAndTabOwners, tableType, wbsTreePrivate.getProjectId(), wbsTreePrivate.getWbsId(), wbsTreePrivate.getId(), tableOwnerList);
|
|
|
|
|
|
if (ObjectUtil.isNotEmpty(id)) { //编辑
|
|
if (ObjectUtil.isNotEmpty(id)) { //编辑
|
|
//获取当前试验记录信息中的表状态
|
|
//获取当前试验记录信息中的表状态
|
|
@@ -1625,148 +1786,6 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
|
|
return R.data(table + "");
|
|
return R.data(table + "");
|
|
}
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
|
- public boolean syncProjectEVisa(String projectId) {
|
|
|
|
- if (StringUtils.isNotEmpty(projectId)) {
|
|
|
|
- ProjectInfo projectInfo = projectInfoMapper.selectById(projectId);
|
|
|
|
- if (projectInfo != null && ("private").equals(projectInfo.getReferenceWbsTemplateType()) && ObjectUtils.isNotEmpty(projectInfo.getReferenceWbsTemplateId())) {
|
|
|
|
- //构造参数集合
|
|
|
|
- List<TextdictInfo> insertData = new ArrayList<>();
|
|
|
|
- Map<String, List<TextdictInfo>> textDictInfoData = new HashMap<>();
|
|
|
|
-
|
|
|
|
- //获取当前引用的项目节点树的根节点信息
|
|
|
|
- WbsTreePrivate oneRecordRoot = this.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, projectInfo.getReferenceWbsTemplateId()));
|
|
|
|
-
|
|
|
|
- //获取当前项目下节点树所有节点、表、独立表
|
|
|
|
- String sqlNodeTreeAllNow = "SELECT p_key_id,id,type,parent_id,html_url FROM m_wbs_tree_private WHERE project_id = " + projectId + " AND STATUS = 1 AND is_deleted = 0 AND (((type = 1 OR type = 2) AND wbs_type = 1) OR (type= 10 AND parent_id = -10 ))";
|
|
|
|
- List<WbsTreePrivate> wbsTreePrivatesNodeAndTabNow = jdbcTemplate.query(sqlNodeTreeAllNow, new BeanPropertyRowMapper<>(WbsTreePrivate.class));
|
|
|
|
- List<WbsTreePrivate> wbsTreePrivatesTableDL = wbsTreePrivatesNodeAndTabNow.stream().filter(f -> f.getType().equals(10) && f.getParentId().equals(-10L)).collect(Collectors.toList());
|
|
|
|
-
|
|
|
|
- //获取当前项目节点树
|
|
|
|
- Map<Long, WbsTreePrivate> nowNodeTreeAll = wbsTreePrivatesNodeAndTabNow.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList()).stream()
|
|
|
|
- .collect(Collectors.toMap(WbsTreePrivate::getId, Function.identity()));
|
|
|
|
-
|
|
|
|
- //获取当前引用的节点树下所有节点、表、独立表
|
|
|
|
- String sqlNodeTreeAllOld = "SELECT p_key_id,id,type,parent_id FROM m_wbs_tree_private WHERE project_id = " + oneRecordRoot.getProjectId() + " AND STATUS = 1 AND is_deleted = 0 AND (((type = 1 OR type = 2) AND wbs_id = " + oneRecordRoot.getWbsId() + ") OR ((type= 10 OR parent_id = -10 ) AND wbs_id IS NULL))";
|
|
|
|
- List<WbsTreePrivate> wbsTreePrivatesNodeAndTab = jdbcTemplate.query(sqlNodeTreeAllOld, new BeanPropertyRowMapper<>(WbsTreePrivate.class));
|
|
|
|
-
|
|
|
|
- //获取当前对应电签位置配置信息
|
|
|
|
- List<WbsTreePrivate> collect1 = wbsTreePrivatesNodeAndTab.stream().filter(f -> f.getType().equals(10) || f.getType().equals(2)).collect(Collectors.toList());
|
|
|
|
- List<Long> pKeyIds = collect1.stream().map(WbsTreePrivate::getPKeyId).collect(Collectors.toList());
|
|
|
|
-
|
|
|
|
- //分组查询
|
|
|
|
- List<TextdictInfo> textDictInfosAll = new ArrayList<>();
|
|
|
|
- List<List<Long>> partition = Lists.partition(pKeyIds, 1000);
|
|
|
|
- for (List<Long> ids : partition) {
|
|
|
|
- String sql = "select id,name,type,tab_id,col_key,sig_role_id,is_deleted,sig_role_name,col_name,pyzbx,pyzby from m_textdict_info where tab_id in(" + org.apache.commons.lang.StringUtils.join(ids, ",") + ")";
|
|
|
|
- List<TextdictInfo> textDictInfos = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(TextdictInfo.class));
|
|
|
|
- textDictInfosAll.addAll(textDictInfos);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- Map<String, List<TextdictInfo>> collect3 = textDictInfosAll.stream().collect(Collectors.groupingBy(TextdictInfo::getTabId));
|
|
|
|
-
|
|
|
|
- //构造原始电签信息
|
|
|
|
- for (WbsTreePrivate wbsTreePrivate : collect1) {
|
|
|
|
- if (wbsTreePrivate.getType() == 2) {
|
|
|
|
- WbsTreePrivate obj = nowNodeTreeAll.get(wbsTreePrivate.getParentId());
|
|
|
|
- assert obj != null;
|
|
|
|
- List<TextdictInfo> textDictInfos = collect3.get(String.valueOf(wbsTreePrivate.getPKeyId()));
|
|
|
|
- if (textDictInfos != null && textDictInfos.size() > 0) {
|
|
|
|
- textDictInfoData.put(wbsTreePrivate.getPKeyId() + "," + wbsTreePrivate.getId(), textDictInfos);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (wbsTreePrivate.getType() == 10 && wbsTreePrivate.getParentId() == -10) { //type=10,parentId=-10 独立库
|
|
|
|
- //判断是否存在独立表单,存在则不新增
|
|
|
|
- List<WbsTreePrivate> collect = wbsTreePrivatesTableDL.stream().filter(f -> f.getId().equals(wbsTreePrivate.getId())).collect(Collectors.toList());
|
|
|
|
- if (collect.size() == 0) {
|
|
|
|
- //根据元素表pKeyId,获取电签位置匹配信息、编辑默认信息
|
|
|
|
- List<TextdictInfo> textDictInfos = collect3.get(String.valueOf(wbsTreePrivate.getPKeyId()));
|
|
|
|
- if (textDictInfos != null && textDictInfos.size() > 0) {
|
|
|
|
- textDictInfoData.put(wbsTreePrivate.getPKeyId() + "," + wbsTreePrivate.getId(), textDictInfos);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- //只同步独立库中有关联过清表的元素表type=10,以及原始方式的元素表type=2
|
|
|
|
- List<WbsTreePrivate> collect = wbsTreePrivatesNodeAndTabNow.stream().filter(f -> f.getType().equals(2) || (f.getHtmlUrl() != null && f.getType().equals(10))).collect(Collectors.toList());
|
|
|
|
-
|
|
|
|
- collect.forEach(tree -> {
|
|
|
|
- textDictInfoData.forEach((k, v) -> {
|
|
|
|
- String nodeId = k.split(",")[1];
|
|
|
|
- if (tree.getId().equals(Long.parseLong(nodeId))) {
|
|
|
|
- for (TextdictInfo textdictInfo : v) {
|
|
|
|
- TextdictInfo obj = BeanUtil.copyProperties(textdictInfo, TextdictInfo.class);
|
|
|
|
- assert obj != null;
|
|
|
|
- obj.setTabId(String.valueOf(tree.getPKeyId())); //重新赋值绑定到对应的表上
|
|
|
|
- obj.setId(SnowFlakeUtil.getId());
|
|
|
|
- insertData.add(obj);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- });
|
|
|
|
-
|
|
|
|
- //去重,删除当前表的电签信息
|
|
|
|
- List<String> collect2 = insertData.stream().map(TextdictInfo::getTabId).collect(Collectors.toList());
|
|
|
|
- List<List<String>> partitionDel = Lists.partition(collect2, 1000);
|
|
|
|
- for (List<String> ids : partitionDel) {
|
|
|
|
- String delSql = "delete from m_textdict_info where tab_id in (" + org.apache.commons.lang.StringUtils.join(ids, ",") + ")";
|
|
|
|
- jdbcTemplate.execute(delSql);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- //新增
|
|
|
|
- textDictInfoService.insertBatch(insertData, 1000);
|
|
|
|
-
|
|
|
|
- return true;
|
|
|
|
- } else {
|
|
|
|
- throw new ServiceException("当前项目关联的wbs树不是私有关联");
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public void eVisInfoRepeatDel(String pid) {
|
|
|
|
- //获取当前项目下节点树所有节点、表、独立表
|
|
|
|
- String sqlNodeTreeAllNow = "SELECT p_key_id,id,type,parent_id,html_url FROM m_wbs_tree_private WHERE project_id = " + pid + " AND STATUS = 1 AND is_deleted = 0 AND (((type = 1 OR type = 2) AND wbs_type = 1) OR (type= 10 AND parent_id = -10 ))";
|
|
|
|
- List<WbsTreePrivate> wbsTreePrivatesNodeAndTabNow = jdbcTemplate.query(sqlNodeTreeAllNow, new BeanPropertyRowMapper<>(WbsTreePrivate.class));
|
|
|
|
-
|
|
|
|
- //获取当前对应电签位置配置信息
|
|
|
|
- List<WbsTreePrivate> collect1 = wbsTreePrivatesNodeAndTabNow.stream().filter(f -> f.getType().equals(10) || f.getType().equals(2)).collect(Collectors.toList());
|
|
|
|
- List<Long> pKeyIds = collect1.stream().map(WbsTreePrivate::getPKeyId).collect(Collectors.toList());
|
|
|
|
-
|
|
|
|
- //分组查询电签信息
|
|
|
|
- List<TextdictInfo> textDictInfosAll = new ArrayList<>();
|
|
|
|
- List<List<Long>> partition = Lists.partition(pKeyIds, 1000);
|
|
|
|
- for (List<Long> ids : partition) {
|
|
|
|
- String sql = "select id,tab_id,col_key,col_name,sig_role_id,sig_role_name from m_textdict_info where tab_id in(" + org.apache.commons.lang.StringUtils.join(ids, ",") + ")";
|
|
|
|
- List<TextdictInfo> textDictInfos = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(TextdictInfo.class));
|
|
|
|
- textDictInfosAll.addAll(textDictInfos);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- //去重,解决之前由于删除接口重复保存,导致数据重复问题
|
|
|
|
- List<TextdictInfo> list = textDictInfosAll.stream().collect(
|
|
|
|
- Collectors.collectingAndThen(
|
|
|
|
- Collectors.toCollection(() -> new TreeSet<>(
|
|
|
|
- Comparator.comparing(o -> o.getTabId() + ";" + o.getSigRoleId() + ";" + o.getColKey() + ";" + o.getSigRoleName() + ";" + o.getColName()
|
|
|
|
- )
|
|
|
|
- )), ArrayList::new));
|
|
|
|
-
|
|
|
|
- List<Long> idsAll = textDictInfosAll.stream().map(TextdictInfo::getId).collect(Collectors.toList());
|
|
|
|
-
|
|
|
|
- List<Long> saveIds = list.stream().map(TextdictInfo::getId).collect(Collectors.toList());
|
|
|
|
-
|
|
|
|
- List<Long> delIds = idsAll.stream().filter(f -> !saveIds.contains(f)).collect(Collectors.toList());
|
|
|
|
-
|
|
|
|
- List<List<Long>> partition1 = Lists.partition(delIds, 1000);
|
|
|
|
- for (List<Long> ids : partition1) {
|
|
|
|
- String delSql = "delete from m_textdict_info where id in (" + org.apache.commons.lang.StringUtils.join(ids, ",") + ")";
|
|
|
|
- jdbcTemplate.execute(delSql);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
public boolean insertBatch(Collection<WbsTreePrivate> entityList, int batchSize) {
|
|
public boolean insertBatch(Collection<WbsTreePrivate> entityList, int batchSize) {
|
|
try {
|
|
try {
|