|
@@ -35,6 +35,7 @@ import org.springframework.scheduling.annotation.Async;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
+import java.lang.reflect.Field;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -47,6 +48,7 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
|
|
|
private final SaveUserInfoByProjectMapper saveUserInfoByProjectMapper;
|
|
|
private final SaveUserInfoByProjectServiceImpl saveUserInfoByProjectService;
|
|
|
private final WbsTreeContractMapper wbsTreeContractMapper;
|
|
|
+ private final WbsTreePrivateMapper wbsTreePrivateMapper;
|
|
|
private final JdbcTemplate jdbcTemplate;
|
|
|
private final IUserClient iUserClient;
|
|
|
private final InformationQueryClient informationQueryClient;
|
|
@@ -187,7 +189,7 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<WbsTreeContractVO> addNodeTree(String pKeyId) {
|
|
|
+ public List<WbsTreePrivateVO> addNodeTree(String pKeyId) {
|
|
|
WbsTreeContract parentNodeRoot = wbsTreeContractMapper.selectOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId, pKeyId).eq(WbsTreeContract::getStatus, 1));
|
|
|
if (parentNodeRoot != null) {
|
|
|
//oldId不等于空,说明是复制节点,通过oldId,去获取原始树节点
|
|
@@ -196,16 +198,105 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
|
|
|
}
|
|
|
List<WbsTreeContract> allNodes = this.getChildNodes(parentNodeRoot);
|
|
|
if (allNodes == null) {
|
|
|
- allNodes = new ArrayList<>();
|
|
|
+ //如果是最底层节点,那么直接返回null,最底层节点无法新增子节点
|
|
|
+ return null;
|
|
|
}
|
|
|
allNodes.add(parentNodeRoot);
|
|
|
|
|
|
- List<WbsTreeContractVO> resultAllNodes = BeanUtil.copyProperties(allNodes, WbsTreeContractVO.class);
|
|
|
- return buildWbsTreeByStreamChildNodeTree(resultAllNodes, parentNodeRoot);
|
|
|
+ //获取所有合同段树原始节点对应的项目树节点
|
|
|
+ List<Long> nodeIds = allNodes.stream().map(WbsTreeContract::getId).collect(Collectors.toList());
|
|
|
+
|
|
|
+ //重新赋值
|
|
|
+ List<WbsTreePrivate> projectTreeNodes = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery().in(WbsTreePrivate::getId, nodeIds)
|
|
|
+ .eq(WbsTreePrivate::getProjectId, parentNodeRoot.getProjectId()).eq(WbsTreePrivate::getWbsId, parentNodeRoot.getWbsId()).eq(WbsTreePrivate::getStatus, 1));
|
|
|
+ //构造树
|
|
|
+ List<WbsTreePrivateVO> resultAllNodes = BeanUtil.copyProperties(projectTreeNodes, WbsTreePrivateVO.class);
|
|
|
+ WbsTreePrivateVO parentNodeRootProject = BeanUtil.copyProperties(parentNodeRoot, WbsTreePrivateVO.class);
|
|
|
+ return buildWbsTreeByStreamChildNodeTreeProject(resultAllNodes, parentNodeRootProject);
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取树结构
|
|
|
+ *
|
|
|
+ * @param obj
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private WbsTreeContract recursionFindResourceRootNode(WbsTreeContract obj) {
|
|
|
+ if (obj.getOldId() != null) {
|
|
|
+ WbsTreeContract obj1 = wbsTreeContractMapper.selectOne(Wrappers.<WbsTreeContract>lambdaQuery()
|
|
|
+ .eq(WbsTreeContract::getId, obj.getOldId())
|
|
|
+ .eq(WbsTreeContract::getContractId, obj.getContractId()));
|
|
|
+ if (obj1 != null && obj1.getOldId() != null) {
|
|
|
+ obj1 = this.recursionFindResourceRootNode(obj1);
|
|
|
+ } else {
|
|
|
+ // 已经到达原始节点,返回当前节点的id
|
|
|
+ return obj1 != null ? obj1 : obj;
|
|
|
+ }
|
|
|
+ obj = obj1;
|
|
|
+ }
|
|
|
+ return obj;
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<WbsTreeContract> getChildNodes(WbsTreeContract obj) {
|
|
|
+ List<WbsTreeContract> wbsTreeContracts = Collections.singletonList(obj);
|
|
|
+ List<WbsTreeContract> result = new ArrayList<>();
|
|
|
+ this.recursionGetChildNodes(wbsTreeContracts, result, obj.getContractId());
|
|
|
+ if (result.size() > 0) {
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void recursionGetChildNodes(List<WbsTreeContract> list, List<WbsTreeContract> result, String contractId) {
|
|
|
+ List<Long> ids = list.stream().map(WbsTreeContract::getId).collect(Collectors.toList());
|
|
|
+ if (ids.size() > 0) {
|
|
|
+ //只查询原始节点
|
|
|
+ List<WbsTreeContract> query = jdbcTemplate.query("select * from m_wbs_tree_contract where type = 1 and old_id is null and parent_id in(" + org.apache.commons.lang.StringUtils.join(ids, ",") + ") and status = 1 and is_deleted = 0 and contract_id = " + contractId, new BeanPropertyRowMapper<>(WbsTreeContract.class));
|
|
|
+ if (query.size() > 0) {
|
|
|
+ result.addAll(query);
|
|
|
+ recursionGetChildNodes(query, result, contractId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 构建项目树
|
|
|
+ *
|
|
|
+ * @param nodes
|
|
|
+ * @param parentNodeRoot
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<WbsTreePrivateVO> buildWbsTreeByStreamChildNodeTreeProject(List<WbsTreePrivateVO> nodes, WbsTreePrivate parentNodeRoot) {
|
|
|
+ List<WbsTreePrivateVO> list = nodes.stream().filter(f -> f.getId().equals(parentNodeRoot.getId())).collect(Collectors.toList());
|
|
|
+ Map<Long, List<WbsTreePrivateVO>> map = nodes.stream().collect(Collectors.groupingBy(WbsTreePrivateVO::getParentId));
|
|
|
+ this.recursionFnTreeChildNodeProject(list, map);
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void recursionFnTreeChildNodeProject(List<WbsTreePrivateVO> list, Map<Long, List<WbsTreePrivateVO>> map) {
|
|
|
+ for (WbsTreePrivateVO wbsTreePrivateVO : list) {
|
|
|
+ List<WbsTreePrivateVO> childrenList = map.get(wbsTreePrivateVO.getId());
|
|
|
+ wbsTreePrivateVO.setChildren(childrenList);
|
|
|
+ if (childrenList != null && childrenList.size() > 0) {
|
|
|
+ wbsTreePrivateVO.setHasChildren(true);
|
|
|
+ recursionFnTreeProject(childrenList, map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void recursionFnTreeProject(List<WbsTreePrivateVO> list, Map<Long, List<WbsTreePrivateVO>> map) {
|
|
|
+ for (WbsTreePrivateVO wbsTreePrivateVO : list) {
|
|
|
+ List<WbsTreePrivateVO> childrenList = map.get(wbsTreePrivateVO.getId());
|
|
|
+ wbsTreePrivateVO.setChildren(childrenList);
|
|
|
+ if (childrenList != null && childrenList.size() > 0) {
|
|
|
+ wbsTreePrivateVO.setHasChildren(true);
|
|
|
+ recursionFnTreeProject(childrenList, map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public List<ContractInfo> getContractListByProjectId(Long projectId) {
|
|
|
return contractInfoMapper.getContractListByProjectId(projectId);
|
|
@@ -453,64 +544,6 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- public List<WbsTreeContractVO> buildWbsTreeByStreamChildNodeTree(List<WbsTreeContractVO> nodes, WbsTreeContract parentNodeRoot) {
|
|
|
- List<WbsTreeContractVO> list = nodes.stream().filter(f -> f.getId().equals(parentNodeRoot.getId())).collect(Collectors.toList());
|
|
|
- Map<Long, List<WbsTreeContractVO>> map = nodes.stream().collect(Collectors.groupingBy(WbsTreeContractVO::getParentId));
|
|
|
- this.recursionFnTreeChildNode(list, map);
|
|
|
- return list;
|
|
|
- }
|
|
|
-
|
|
|
- public void recursionFnTreeChildNode(List<WbsTreeContractVO> list, Map<Long, List<WbsTreeContractVO>> map) {
|
|
|
- for (WbsTreeContractVO wbsTreeContractVO : list) {
|
|
|
- List<WbsTreeContractVO> childrenList = map.get(wbsTreeContractVO.getId());
|
|
|
- wbsTreeContractVO.setChildren(childrenList);
|
|
|
- if (childrenList != null && childrenList.size() > 0) {
|
|
|
- wbsTreeContractVO.setHasChildren(true);
|
|
|
- recursionFnTree(childrenList, map);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private List<WbsTreeContract> getChildNodes(WbsTreeContract obj) {
|
|
|
- List<WbsTreeContract> wbsTreeContracts = Collections.singletonList(obj);
|
|
|
- List<WbsTreeContract> result = new ArrayList<>();
|
|
|
- this.recursionGetChildNodes(wbsTreeContracts, result, obj.getContractId());
|
|
|
- if (result.size() > 0) {
|
|
|
- return result;
|
|
|
- }
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- private WbsTreeContract recursionFindResourceRootNode(WbsTreeContract obj) {
|
|
|
- if (obj.getOldId() != null) {
|
|
|
- WbsTreeContract obj1 = wbsTreeContractMapper.selectOne(Wrappers.<WbsTreeContract>lambdaQuery()
|
|
|
- .eq(WbsTreeContract::getId, obj.getOldId())
|
|
|
- .eq(WbsTreeContract::getContractId, obj.getContractId()));
|
|
|
- if (obj1 != null && obj1.getOldId() != null) {
|
|
|
- obj1 = this.recursionFindResourceRootNode(obj1);
|
|
|
- } else {
|
|
|
- // 已经到达原始节点,返回当前节点的id
|
|
|
- return obj1 != null ? obj1 : obj;
|
|
|
- }
|
|
|
- obj = obj1;
|
|
|
- }
|
|
|
- return obj;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- private void recursionGetChildNodes(List<WbsTreeContract> list, List<WbsTreeContract> result, String contractId) {
|
|
|
- List<Long> ids = list.stream().map(WbsTreeContract::getId).collect(Collectors.toList());
|
|
|
- if (ids.size() > 0) {
|
|
|
- //只查询原始节点
|
|
|
- List<WbsTreeContract> query = jdbcTemplate.query("select * from m_wbs_tree_contract where type = 1 and old_id is null and parent_id in(" + org.apache.commons.lang.StringUtils.join(ids, ",") + ") and status = 1 and is_deleted = 0 and contract_id = " + contractId, new BeanPropertyRowMapper<>(WbsTreeContract.class));
|
|
|
- if (query.size() > 0) {
|
|
|
- result.addAll(query);
|
|
|
- recursionGetChildNodes(query, result, contractId);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
@Override
|
|
|
public List<WbsTreeContractVO6> tree6List(String wbsId, String projectId, String contractId) {
|
|
|
return baseMapper.tree6(Long.parseLong(wbsId), Long.parseLong(projectId), Long.parseLong(contractId));
|
|
@@ -671,7 +704,7 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
|
|
|
}
|
|
|
ContractInfo contractInfo1 = baseMapper.selectById(contractInfo.getId());
|
|
|
try {
|
|
|
- int integer = archiveTreeContractMapper.updateByNodeName(contractInfo1.getContractName(),contractInfo.getContractName(),contractInfo.getId());
|
|
|
+ int integer = archiveTreeContractMapper.updateByNodeName(contractInfo1.getContractName(), contractInfo.getContractName(), contractInfo.getId());
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
@@ -894,5 +927,4 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
|
|
|
this.updateById(contractInfo);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
}
|