|
@@ -380,6 +380,7 @@ public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, A
|
|
|
archiveTree.setTitle(wbsTreeVO2.getTitle());
|
|
|
|
|
|
archiveTree.setIswbsNode(true);
|
|
|
+ archiveTree.setWbsNode2ArchiveTreeNodeId(parentId);
|
|
|
archiveTree.setId(wbsTreeVO2.getId());
|
|
|
archiveTree.setParentId(wbsTreeVO2.getParentId());
|
|
|
archiveTree.setExtId(wbsTreeVO2.getId());
|
|
@@ -414,9 +415,9 @@ public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, A
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
- public boolean saveArchiveAutoRule(Integer archiveAutoType, String nodeIds,boolean iswbsNode) {
|
|
|
+ public boolean saveArchiveAutoRule(Integer archiveAutoType, String nodeIds,boolean iswbsNode,Long projectId) {
|
|
|
if(iswbsNode){
|
|
|
- return saveArchiveAutoRule_WbsTreeNode(archiveAutoType, nodeIds);
|
|
|
+ return saveArchiveAutoRule_WbsTreeNode(archiveAutoType, nodeIds,projectId);
|
|
|
}else{
|
|
|
return saveArchiveAutoRule_ArchiveTreeNode(archiveAutoType, nodeIds);
|
|
|
}
|
|
@@ -477,7 +478,7 @@ public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, A
|
|
|
* @param nodeIds
|
|
|
* @return
|
|
|
*/
|
|
|
- private Boolean saveArchiveAutoRule_WbsTreeNode(Integer archiveAutoType, String nodeIds){
|
|
|
+ private Boolean saveArchiveAutoRule_WbsTreeNode(Integer archiveAutoType, String nodeIds,Long projectId){
|
|
|
try{
|
|
|
String[] ids = nodeIds.split(",");
|
|
|
Long archiveAutoGroupId=null;
|
|
@@ -492,14 +493,14 @@ public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, A
|
|
|
//步骤1:保存选择节点的立卷规则。
|
|
|
long nodeIdLong = Long.parseLong(nodeId);
|
|
|
//1.1最高规则和单独规则 将选择的wbs节点ID(wbsId),规则类型(archive_auto_type), 保存表m_archive_auto_rule_wbs
|
|
|
- WbsTree wbsTree = wbsTreeService.getById(nodeIdLong);
|
|
|
+ //WbsTree wbsTree = wbsTreeService.getById(nodeIdLong);
|
|
|
ArchiveAutoRuleWbs autoRuleWbs = new ArchiveAutoRuleWbs();
|
|
|
autoRuleWbs.setWbsId(nodeIdLong);
|
|
|
autoRuleWbs.setArchiveAutoType(archiveAutoType);
|
|
|
if(archiveAutoType==2){
|
|
|
autoRuleWbs.setArchiveAutoGroupId(archiveAutoGroupId);
|
|
|
}
|
|
|
- autoRuleWbs.setProjectId(0L);//TODO
|
|
|
+ autoRuleWbs.setProjectId(projectId);//项目ID 系统级为0
|
|
|
autoRuleWbs.setWbsRootId(null);//TODO
|
|
|
archiveAutoRuleWbsMapper.insert(autoRuleWbs);
|
|
|
}
|
|
@@ -577,7 +578,7 @@ public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, A
|
|
|
String selectNodeIds = dto.getSelectNodeIds();
|
|
|
List<String> selectNodeIdlist = Arrays.asList(selectNodeIds);
|
|
|
//先将同一分组的节点删除配置,。
|
|
|
- archiveAutoRuleWbsMapper.removeNodeForArchiveAutoRule_Group(groupId,0L);
|
|
|
+ archiveAutoRuleWbsMapper.removeNodeForArchiveAutoRule_Group(groupId,dto.getProjectId());
|
|
|
//然后再按照选择节点保存新的设置
|
|
|
for(String nodeId:selectNodeIdlist){
|
|
|
long nodeIdLong = Long.parseLong(nodeId);
|
|
@@ -587,8 +588,8 @@ public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, A
|
|
|
if(archiveAutoType==2){
|
|
|
autoRuleWbs.setArchiveAutoGroupId(groupId);
|
|
|
}
|
|
|
- autoRuleWbs.setProjectId(0L);//TODO
|
|
|
- autoRuleWbs.setWbsRootId(null);//TODO
|
|
|
+ autoRuleWbs.setProjectId(dto.getProjectId()==null?0L:dto.getProjectId());
|
|
|
+ autoRuleWbs.setWbsRootId(null);//TODO 不懂有没有这个东西
|
|
|
archiveAutoRuleWbsMapper.insert(autoRuleWbs);
|
|
|
}
|
|
|
}
|
|
@@ -604,22 +605,24 @@ public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, A
|
|
|
* 移除节点规则
|
|
|
* @param nodeId
|
|
|
*/
|
|
|
- public Map<String,String> removeArchiveAutoRule(Long nodeId,boolean iswbsNode){
|
|
|
+ public Map<String,String> removeArchiveAutoRule(Long nodeId,boolean iswbsNode,Long projectId){
|
|
|
Map<String,String> returnMap= new HashMap<>();
|
|
|
returnMap.put("code","1");
|
|
|
try{
|
|
|
if(iswbsNode){
|
|
|
- ArchiveAutoRuleWbs archiveAutoRuleWbs = archiveAutoRuleWbsMapper.selectById(nodeId);
|
|
|
- archiveAutoRuleWbs.setDelete(1);
|
|
|
- archiveAutoRuleWbs.setUpdateTime(new Date());
|
|
|
- archiveAutoRuleWbsMapper.updateById(archiveAutoRuleWbs);
|
|
|
+ ArchiveAutoRuleWbs autoRuleWbs = archiveAutoRuleWbsMapper.selectOne(Wrappers.<ArchiveAutoRuleWbs>lambdaQuery()
|
|
|
+ .eq(ArchiveAutoRuleWbs::getWbsId, nodeId)
|
|
|
+ .eq(ArchiveAutoRuleWbs::getIsDeleted, 0)
|
|
|
+ .eq(ArchiveAutoRuleWbs::getProjectId, projectId));
|
|
|
+ archiveAutoRuleWbsMapper.removeArchiveAutoRule(autoRuleWbs.getId(),new Date());
|
|
|
}else{
|
|
|
ArchiveTree node = baseMapper.selectById(nodeId);
|
|
|
Integer archiveAutoType = node.getArchiveAutoType();
|
|
|
if(archiveAutoType!=null){
|
|
|
//删除默认规则
|
|
|
if(archiveAutoType==1){
|
|
|
- baseMapper.removeAllSonNodeIdsForArchiveAutoRule_1(node.getArchiveAutoType(),node.getAncestors());
|
|
|
+ String ancestors = node.getAncestors()+","+nodeId;
|
|
|
+ baseMapper.removeAllSonNodeIdsForArchiveAutoRule_1(node.getArchiveAutoType(),ancestors,nodeId);
|
|
|
}
|
|
|
//删除节点及所有子节点 分类并卷规则
|
|
|
if(archiveAutoType==2){
|
|
@@ -627,7 +630,8 @@ public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, A
|
|
|
//删除规则 只能修改archive_auto_group_select=1的节点,
|
|
|
// 因为分类并卷规则影响范围包括下面所有子节点,如果给archive_auto_group_select=0的节点也就是范围内的子节点单独取消规则,会造成案卷归属节点错乱。
|
|
|
// (不理那么多,就这样限制先 。如业务非要发神经就要 TODO 验证节点的父节点是否为分类并卷规则,如是则取消。若无其他兄弟节点,继续往上验证。)
|
|
|
- baseMapper.removeAllSonNodeIdsForArchiveAutoRule_2(node.getArchiveAutoType(),node.getAncestors());
|
|
|
+ String ancestors = node.getAncestors()+","+nodeId;
|
|
|
+ baseMapper.removeAllSonNodeIdsForArchiveAutoRule_2(node.getArchiveAutoType(),ancestors,nodeId);
|
|
|
}else{
|
|
|
returnMap.put("code","0");
|
|
|
returnMap.put("msg","只能取消设置的节点,不能取消设置节点范围下节点");
|
|
@@ -635,7 +639,8 @@ public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, A
|
|
|
}
|
|
|
//删除节点及所有子节点 单独并卷规则
|
|
|
if(archiveAutoType==3){
|
|
|
- baseMapper.removeAllSonNodeIdsForArchiveAutoRule_3(node.getArchiveAutoType(),node.getAncestors());
|
|
|
+ String ancestors = node.getAncestors()+","+nodeId;
|
|
|
+ baseMapper.removeAllSonNodeIdsForArchiveAutoRule_3(node.getArchiveAutoType(),ancestors,nodeId);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -653,10 +658,10 @@ public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, A
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
- public Map<String,Object> getArchiveAutoRule(Long id,boolean iswbsNode) {
|
|
|
+ public Map<String,Object> getArchiveAutoRule(Long id,boolean iswbsNode,Long projectId,Long wbsNode2ArchiveTreeNodeId,String wbsId) {
|
|
|
|
|
|
if(iswbsNode){
|
|
|
- return getArchiveAutoRule_WbsTreeNode(id);
|
|
|
+ return getArchiveAutoRule_WbsTreeNode(id,projectId,wbsNode2ArchiveTreeNodeId,wbsId);
|
|
|
}else{
|
|
|
return getArchiveAutoRule_ArchiveTreeNode(id);
|
|
|
}
|
|
@@ -757,10 +762,137 @@ public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, A
|
|
|
* @param id
|
|
|
* @return
|
|
|
*/
|
|
|
- private Map<String,Object> getArchiveAutoRule_WbsTreeNode(Long id) {
|
|
|
+ private Map<String,Object> getArchiveAutoRule_WbsTreeNode(Long id,Long projectId,Long wbsNode2ArchiveTreeNodeId,String wbsId) {
|
|
|
Map<String,Object> map= new HashMap<>();
|
|
|
try{
|
|
|
- //TODO 需要了解关联的wbs节点
|
|
|
+ ArchiveTree archiveTree = baseMapper.selectById(wbsNode2ArchiveTreeNodeId);
|
|
|
+
|
|
|
+ //步骤1:找出wbs的规则设置
|
|
|
+ ArchiveAutoRuleWbs autoRuleWbs = archiveAutoRuleWbsMapper.selectOne(Wrappers.<ArchiveAutoRuleWbs>lambdaQuery()
|
|
|
+ .eq(ArchiveAutoRuleWbs::getWbsId, id)
|
|
|
+ .eq(ArchiveAutoRuleWbs::getIsDeleted, 0)
|
|
|
+ .eq(ArchiveAutoRuleWbs::getProjectId, projectId));
|
|
|
+
|
|
|
+ if(autoRuleWbs!=null){
|
|
|
+ Integer archiveAutoType = autoRuleWbs.getArchiveAutoType();
|
|
|
+
|
|
|
+
|
|
|
+ if(archiveAutoType!=null){
|
|
|
+
|
|
|
+ //获取wbs关联树
|
|
|
+ ArchiveTreeVO2 archiveTreeVO2 = getWbsArchiveTree(AuthUtil.getTenantId(),projectId,wbsNode2ArchiveTreeNodeId,wbsId,"1",Long.parseLong(archiveTree.getDisplayHierarchy()));
|
|
|
+ List<ArchiveTreeVO2> archiveTreeVO2List = new ArrayList<>();
|
|
|
+ ForestNodeMerger.getTreeListEx(archiveTreeVO2,archiveTreeVO2List);
|
|
|
+ Map<Long,ArchiveTreeVO2> ArchiveTreeVO2Map = new HashMap<>();
|
|
|
+ for(ArchiveTreeVO2 vo2:archiveTreeVO2List){
|
|
|
+ ArchiveTreeVO2Map.put(vo2.getId(),vo2);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(archiveAutoType==1){
|
|
|
+ //最高并卷层级 默认规则的节点 显示最高并卷层级节点
|
|
|
+ StringBuffer allName= new StringBuffer();
|
|
|
+ ArchiveTreeVO2 nameVo2 = ArchiveTreeVO2Map.get(id);
|
|
|
+ while (nameVo2.getParentId()!=0L){
|
|
|
+ allName.insert(0,nameVo2.getTitle());
|
|
|
+ allName.insert(0,"/");
|
|
|
+ Long parentId = nameVo2.getParentId();
|
|
|
+ nameVo2 = ArchiveTreeVO2Map.get(parentId);
|
|
|
+ }
|
|
|
+ //nameVo2.getParentId()==0L时加上名字
|
|
|
+ allName.insert(0,nameVo2.getTitle());
|
|
|
+
|
|
|
+ ArchiveTreeAutoRuleVO vo= new ArchiveTreeAutoRuleVO();
|
|
|
+ vo.setAllName(allName.toString());
|
|
|
+ vo.setNodeId(id);
|
|
|
+ vo.setArchiveAutoType(archiveAutoType);
|
|
|
+ map.put("type",archiveAutoType);
|
|
|
+ map.put("data",vo);
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+ if(archiveAutoType==2){
|
|
|
+ Long archiveAutoGroupId = autoRuleWbs.getArchiveAutoGroupId();
|
|
|
+ //用于分类并卷编辑树
|
|
|
+ List<ArchiveTreeAutoRuleVO> nodetree = new ArrayList<>();
|
|
|
+
|
|
|
+ //遍历wbs关联树 生成分类并将编辑树
|
|
|
+ for(ArchiveTreeVO2 vo2:archiveTreeVO2List){
|
|
|
+ //查询wbs节点是否有规则设置
|
|
|
+ ArchiveAutoRuleWbs autoRuleWbs2 = archiveAutoRuleWbsMapper.selectOne(Wrappers.<ArchiveAutoRuleWbs>lambdaQuery()
|
|
|
+ .eq(ArchiveAutoRuleWbs::getWbsId, vo2.getId())
|
|
|
+ .eq(ArchiveAutoRuleWbs::getIsDeleted, 0)
|
|
|
+ .eq(ArchiveAutoRuleWbs::getProjectId, projectId));
|
|
|
+ if(autoRuleWbs2!=null){
|
|
|
+ //如有规则,需过滤单独规则节点,和不同组的分类规则节点
|
|
|
+ if(autoRuleWbs2.getArchiveAutoType()!=3){
|
|
|
+
|
|
|
+ if(autoRuleWbs2.getArchiveAutoType()==1){
|
|
|
+ ArchiveTreeAutoRuleVO vo=new ArchiveTreeAutoRuleVO();
|
|
|
+ vo.setNodeId(vo2.getId());
|
|
|
+ vo.setParentId(vo2.getParentId());
|
|
|
+ vo.setNodeName(vo2.getTitle());
|
|
|
+ nodetree.add(vo);
|
|
|
+ }
|
|
|
+ //如有规则,需过滤不同组的分类规则节点
|
|
|
+ if(autoRuleWbs2.getArchiveAutoType()==2 && autoRuleWbs2.getArchiveAutoGroupId().equals(archiveAutoGroupId)){
|
|
|
+ ArchiveTreeAutoRuleVO vo=new ArchiveTreeAutoRuleVO();
|
|
|
+ vo.setNodeId(vo2.getId());
|
|
|
+ vo.setParentId(vo2.getParentId());
|
|
|
+ vo.setNodeName(vo2.getTitle());
|
|
|
+ nodetree.add(vo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ //没有规则的直接加上
|
|
|
+ ArchiveTreeAutoRuleVO vo=new ArchiveTreeAutoRuleVO();
|
|
|
+ vo.setNodeId(vo2.getId());
|
|
|
+ vo.setParentId(vo2.getParentId());
|
|
|
+ vo.setNodeName(vo2.getTitle());
|
|
|
+ nodetree.add(vo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ List<ArchiveTreeAutoRuleVO> merge = ForestNodeMerger.merge(nodetree);
|
|
|
+ //获取与当前节点设置同一分类分组的节点
|
|
|
+ List<ArchiveAutoRuleWbs> archiveAutoRuleWbs = archiveAutoRuleWbsMapper.selectList(Wrappers.<ArchiveAutoRuleWbs>lambdaQuery()
|
|
|
+ .eq(ArchiveAutoRuleWbs::getArchiveAutoGroupId,archiveAutoGroupId)
|
|
|
+ .eq(ArchiveAutoRuleWbs::getIsDeleted, 0)
|
|
|
+ .eq(ArchiveAutoRuleWbs::getProjectId, projectId));
|
|
|
+ StringBuffer nodeSelect = new StringBuffer();
|
|
|
+
|
|
|
+ for(ArchiveAutoRuleWbs node:archiveAutoRuleWbs){
|
|
|
+ nodeSelect.append(node.getWbsId()+",");
|
|
|
+ }
|
|
|
+
|
|
|
+ map.put("archiveAutoType",archiveAutoType);
|
|
|
+ map.put("archiveAutoGroupId",archiveAutoGroupId);
|
|
|
+ map.put("tree",merge);
|
|
|
+ map.put("selectNodeIds",nodeSelect.toString());
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+ if(archiveAutoType==3){
|
|
|
+ StringBuffer allName= new StringBuffer();
|
|
|
+ ArchiveTreeVO2 nameVo2 = ArchiveTreeVO2Map.get(id);
|
|
|
+ while (nameVo2.getParentId()!=0L){
|
|
|
+ allName.insert(0,nameVo2.getTitle());
|
|
|
+ allName.insert(0,"/");
|
|
|
+ Long parentId = nameVo2.getParentId();
|
|
|
+ nameVo2 = ArchiveTreeVO2Map.get(parentId);
|
|
|
+ }
|
|
|
+ //nameVo2.getParentId()==0L时加上名字
|
|
|
+ allName.insert(0,nameVo2.getTitle());
|
|
|
+
|
|
|
+ ArchiveTreeAutoRuleVO vo= new ArchiveTreeAutoRuleVO();
|
|
|
+ vo.setAllName(allName.toString());
|
|
|
+ vo.setNodeId(id);
|
|
|
+ vo.setArchiveAutoType(archiveAutoType);
|
|
|
+ map.put("type",archiveAutoType);
|
|
|
+ map.put("data",vo);
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}catch (Exception e){
|
|
|
e.printStackTrace();
|
|
|
return map;
|