From 7c2a99603f4fa002597861457911c6dc4eb0759e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Mon, 21 Feb 2022 01:56:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=8A=82=E7=82=B9=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E3=80=81=E6=A0=87=E7=AD=BE=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/xm/core/PubTool.java | 7 ++++- .../com/xm/core/service/XmMenuService.java | 18 +++++++++---- .../core/service/XmProjectPhaseService.java | 24 ++++++++++++----- .../com/xm/core/service/XmProjectService.java | 6 ++++- .../com/xm/core/service/XmTaskService.java | 26 ++++++++++++++----- .../xm/core/dao/XmProjectPhaseMapper.xml | 2 +- 6 files changed, 62 insertions(+), 21 deletions(-) diff --git a/xm-core/src/main/java/com/xm/core/PubTool.java b/xm-core/src/main/java/com/xm/core/PubTool.java index 49189126..6bb986ad 100644 --- a/xm-core/src/main/java/com/xm/core/PubTool.java +++ b/xm-core/src/main/java/com/xm/core/PubTool.java @@ -3,6 +3,11 @@ package com.xm.core; public class PubTool { public static String getPidPaths(String pidPahts, String trimId){ - return pidPahts.substring(0,pidPahts.indexOf(trimId+",")); + int i=pidPahts.indexOf(trimId+","); + if(i>0){ + return pidPahts.substring(0,i); + }else{ + return pidPahts; + } } } diff --git a/xm-core/src/main/java/com/xm/core/service/XmMenuService.java b/xm-core/src/main/java/com/xm/core/service/XmMenuService.java index 129cea05..4f993ae6 100644 --- a/xm-core/src/main/java/com/xm/core/service/XmMenuService.java +++ b/xm-core/src/main/java/com/xm/core/service/XmMenuService.java @@ -128,9 +128,15 @@ public class XmMenuService extends BaseService { Tips tips = new Tips("成功"); if (!StringUtils.hasText(currNode.getPmenuId()) || "0".equals(currNode.getPmenuId())) { currNode.setPidPaths("0," + currNode.getMenuId() + ","); + currNode.setLvl(2); return tips; } else { List parentList=this.getParentList(currNode); + if(parentList==null || parentList.size()==0){ + currNode.setPidPaths("0,"+currNode.getPmenuId()+","+currNode.getMenuId()+","); + currNode.setLvl(2); + return tips; + } String idPath="0,"; for (int i = parentList.size() - 1; i >= 0; i--) { idPath=idPath+parentList.get(i).getMenuId()+","; @@ -148,7 +154,7 @@ public class XmMenuService extends BaseService { List parentList=new ArrayList<>(); XmMenu current=currNode; while (true){ - if(!StringUtils.hasText(currNode.getPmenuId()) || "0".equals(currNode.getPmenuId())){ + if(!StringUtils.hasText(current.getPmenuId()) || "0".equals(current.getPmenuId())){ return parentList; } XmMenu query=new XmMenu(); @@ -165,16 +171,18 @@ public class XmMenuService extends BaseService { List parentList=new ArrayList<>(); XmMenu current=currNode; while (true){ - if(!StringUtils.hasText(currNode.getPmenuId()) || "0".equals(currNode.getPmenuId())){ + if(!StringUtils.hasText(current.getPmenuId()) || "0".equals(current.getPmenuId())){ return parentList; } XmMenu query=new XmMenu(); query.setMenuId(current.getPmenuId()); - current=nodes.stream().filter(i->i.getMenuId().equals(query.getMenuId())).findFirst().get(); - if(current==null){ + Optional optional=nodes.stream().filter(i->i.getMenuId().equals(query.getMenuId())).findFirst(); + if(optional.isPresent()){ + current=optional.get(); + parentList.add(current); + }else{ return parentList; } - parentList.add(current); } } diff --git a/xm-core/src/main/java/com/xm/core/service/XmProjectPhaseService.java b/xm-core/src/main/java/com/xm/core/service/XmProjectPhaseService.java index 6f81aab6..f5cd4c96 100644 --- a/xm-core/src/main/java/com/xm/core/service/XmProjectPhaseService.java +++ b/xm-core/src/main/java/com/xm/core/service/XmProjectPhaseService.java @@ -265,7 +265,7 @@ public class XmProjectPhaseService extends BaseService { } for (XmProjectPhase node : nodes) { if(!StringUtils.hasText(node.getParentPhaseId())){ - node.setPidPaths("0,"); + node.setPidPaths("0,"+node.getId()+","); continue; } if(hadCalcMap.containsKey(node.getParentPhaseId())){ @@ -273,6 +273,10 @@ public class XmProjectPhaseService extends BaseService { node.setPidPaths(idPaths+node.getId()+","); }else{ List pnodeList=this.getParentList(node,nodes); + if(pnodeList==null ||pnodeList.size()==0){ + node.setPidPaths("0,"+node.getParentPhaseId()+","+node.getId()+","); + continue; + } XmProjectPhase topParent=pnodeList.get(pnodeList.size()-1); String idPath="0,"; if(hadCalcMap.containsKey(topParent.getParentPhaseId())){ @@ -303,9 +307,15 @@ public class XmProjectPhaseService extends BaseService { Tips tips = new Tips("成功"); if (!StringUtils.hasText(currNode.getParentPhaseId()) || "0".equals(currNode.getParentPhaseId())) { currNode.setPidPaths("0," + currNode.getId() + ","); + currNode.setLvl(1); return tips; } else { List parentList=this.getParentList(currNode); + if(parentList==null ||parentList.size()==0){ + currNode.setPidPaths("0,"+currNode.getParentPhaseId()+","+currNode.getId()+","); + currNode.setLvl(2); + return tips; + } String idPath="0,"; for (int i = parentList.size() - 1; i >= 0; i--) { idPath=idPath+parentList.get(i).getId()+","; @@ -323,7 +333,7 @@ public class XmProjectPhaseService extends BaseService { List parentList=new ArrayList<>(); XmProjectPhase current=currNode; while (true){ - if(!StringUtils.hasText(currNode.getParentPhaseId()) || "0".equals(currNode.getParentPhaseId())){ + if(!StringUtils.hasText(current.getParentPhaseId()) || "0".equals(current.getParentPhaseId())){ return parentList; } XmProjectPhase query=new XmProjectPhase(); @@ -340,16 +350,18 @@ public class XmProjectPhaseService extends BaseService { List parentList=new ArrayList<>(); XmProjectPhase current=currNode; while (true){ - if(!StringUtils.hasText(currNode.getParentPhaseId()) || "0".equals(currNode.getParentPhaseId())){ + if(!StringUtils.hasText(current.getParentPhaseId()) || "0".equals(current.getParentPhaseId())){ return parentList; } XmProjectPhase query=new XmProjectPhase(); query.setId(current.getParentPhaseId()); - current=nodes.stream().filter(i->i.getId().equals(query.getId())).findFirst().get(); - if(current==null){ + Optional optional=nodes.stream().filter(i->i.getId().equals(query.getId())).findFirst(); + if(!optional.isPresent()){ + current=optional.get(); + parentList.add(current); + }else { return parentList; } - parentList.add(current); } } diff --git a/xm-core/src/main/java/com/xm/core/service/XmProjectService.java b/xm-core/src/main/java/com/xm/core/service/XmProjectService.java index d5ef7f4b..c729b547 100644 --- a/xm-core/src/main/java/com/xm/core/service/XmProjectService.java +++ b/xm-core/src/main/java/com/xm/core/service/XmProjectService.java @@ -105,7 +105,10 @@ public class XmProjectService extends BaseService { String newId=newIdMap.get(oldId); node.setProjectId(xmProjectTo.getId()); node.setId(newId); - node.setParentPhaseId(newIdMap.get(node.getParentPhaseId())); + if(StringUtils.hasText(node.getParentPhaseId())){ + node.setParentPhaseId(newIdMap.get(node.getParentPhaseId())); + } + node.setCtime(new Date()); node.setMngUserid(user.getUserid()); node.setMngUsername(user.getUsername()); @@ -114,6 +117,7 @@ public class XmProjectService extends BaseService { node.setBizFlowState(""); node.setBizProcInstId(null); } + this.xmProjectPhaseService.parentIdPathsCalcBeforeSave(xmProjectPhases); this.xmProjectPhaseService.doBatchInsert(xmProjectPhases); } diff --git a/xm-core/src/main/java/com/xm/core/service/XmTaskService.java b/xm-core/src/main/java/com/xm/core/service/XmTaskService.java index 2695fc68..464d095a 100644 --- a/xm-core/src/main/java/com/xm/core/service/XmTaskService.java +++ b/xm-core/src/main/java/com/xm/core/service/XmTaskService.java @@ -427,7 +427,7 @@ public class XmTaskService extends BaseService { } for (XmTask node : nodes) { if(!StringUtils.hasText(node.getParentTaskid())){ - node.setPidPaths("0,"); + node.setPidPaths("0,"+node.getId()+","); continue; } if(hadCalcMap.containsKey(node.getParentTaskid())){ @@ -435,6 +435,10 @@ public class XmTaskService extends BaseService { node.setPidPaths(idPaths+node.getId()+","); }else{ List pnodeList=this.getParentList(node,nodes); + if(pnodeList==null ||pnodeList.size()==0){ + node.setPidPaths("0,"+node.getParentTaskid()+","+node.getId()+","); + continue; + } XmTask topParent=pnodeList.get(pnodeList.size()-1); String idPath="0,"; if(hadCalcMap.containsKey(topParent.getParentTaskid())){ @@ -468,6 +472,11 @@ public class XmTaskService extends BaseService { return tips; } else { List parentList=this.getParentList(currNode); + if(parentList==null ||parentList.size()==0){ + currNode.setPidPaths("0,"+currNode.getParentTaskid()+","+currNode.getId()+","); + currNode.setLvl(2); + return tips; + } String idPath="0,"; for (int i = parentList.size() - 1; i >= 0; i--) { idPath=idPath+parentList.get(i).getId()+","; @@ -485,7 +494,7 @@ public class XmTaskService extends BaseService { List parentList=new ArrayList<>(); XmTask current=currNode; while (true){ - if(!StringUtils.hasText(currNode.getParentTaskid()) || "0".equals(currNode.getParentTaskid())){ + if(!StringUtils.hasText(current.getParentTaskid()) || "0".equals(current.getParentTaskid())){ return parentList; } XmTask query=new XmTask(); @@ -502,16 +511,19 @@ public class XmTaskService extends BaseService { List parentList=new ArrayList<>(); XmTask current=currNode; while (true){ - if(!StringUtils.hasText(currNode.getParentTaskid()) || "0".equals(currNode.getParentTaskid())){ + if(!StringUtils.hasText(current.getParentTaskid()) || "0".equals(current.getParentTaskid())){ return parentList; } XmTask query=new XmTask(); query.setId(current.getParentTaskid()); - current=nodes.stream().filter(i->i.getId().equals(query.getId())).findFirst().get(); - if(current==null){ + Optional optional=nodes.stream().filter(i->i.getId().equals(query.getId())).findFirst(); + if(optional.isPresent()){ + current=optional.get(); + parentList.add(current); + }else{ return parentList; } - parentList.add(current); + } } @@ -526,7 +538,7 @@ public class XmTaskService extends BaseService { if(!pidPaths.startsWith("0,")){ return; } - if("0".equals(node.getNtype())){ + if("0".equals(node.getNtype())&&pidPaths.endsWith(id+",")){ pidPaths=pidPaths.substring(2,pidPaths.indexOf(id)); }else{ pidPaths=pidPaths.substring(2); diff --git a/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmProjectPhaseMapper.xml b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmProjectPhaseMapper.xml index 981d22be..ba6b2fd4 100644 --- a/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmProjectPhaseMapper.xml +++ b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmProjectPhaseMapper.xml @@ -110,7 +110,7 @@ sum(t.task_budget_at) as task_budget_at FROM xm_project_phase t WHERE - t.parent_taskid=#{item} + t.parent_phase_id=#{item} GROUP BY t.project_id, t.parent_phase_id