From 84ef1f39efacb7ffe1f481344ee917fbb58e7e4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Fri, 25 Feb 2022 00:49:46 +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 --- .../com/xm/core/entity/XmProductCopyVo.java | 27 +++ .../com/xm/core/service/XmProductService.java | 118 +++++++++++-- .../com/xm/core/service/XmProjectService.java | 163 ++++++++++++------ .../java/com/xm/core/vo/XmProjectCopyVo.java | 19 +- 4 files changed, 253 insertions(+), 74 deletions(-) diff --git a/xm-core/src/main/java/com/xm/core/entity/XmProductCopyVo.java b/xm-core/src/main/java/com/xm/core/entity/XmProductCopyVo.java index 02ea0c77..b83db4de 100644 --- a/xm-core/src/main/java/com/xm/core/entity/XmProductCopyVo.java +++ b/xm-core/src/main/java/com/xm/core/entity/XmProductCopyVo.java @@ -10,6 +10,9 @@ public class XmProductCopyVo { String isTpl;//是否拷贝为模板 String copyMenu;//是否拷贝需求 + String copyPhase;//是否复制计划 0否1是 + String copyGroup;//是否复制组织架构 0否1是 + String copyGroupUser;//是否复制组织架构中用户 0否1是 public String getId() { return id; @@ -50,4 +53,28 @@ public class XmProductCopyVo { public void setCopyMenu(String copyMenu) { this.copyMenu = copyMenu; } + + public String getCopyPhase() { + return copyPhase; + } + + public void setCopyPhase(String copyPhase) { + this.copyPhase = copyPhase; + } + + public String getCopyGroup() { + return copyGroup; + } + + public void setCopyGroup(String copyGroup) { + this.copyGroup = copyGroup; + } + + public String getCopyGroupUser() { + return copyGroupUser; + } + + public void setCopyGroupUser(String copyGroupUser) { + this.copyGroupUser = copyGroupUser; + } } diff --git a/xm-core/src/main/java/com/xm/core/service/XmProductService.java b/xm-core/src/main/java/com/xm/core/service/XmProductService.java index e2d261f7..56740754 100644 --- a/xm-core/src/main/java/com/xm/core/service/XmProductService.java +++ b/xm-core/src/main/java/com/xm/core/service/XmProductService.java @@ -3,10 +3,7 @@ package com.xm.core.service; import com.mdp.core.err.BizException; import com.mdp.core.service.BaseService; import com.mdp.safe.client.entity.User; -import com.xm.core.entity.XmMenu; -import com.xm.core.entity.XmProduct; -import com.xm.core.entity.XmProductCopyVo; -import com.xm.core.entity.XmProject; +import com.xm.core.entity.*; import com.xm.core.service.cache.XmProductCacheService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -14,10 +11,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -38,6 +32,18 @@ public class XmProductService extends BaseService { @Autowired XmProductCacheService xmProductCacheService; + + + @Autowired + XmProjectGroupService groupService; + + @Autowired + XmProjectGroupUserService groupUserService; + + + @Autowired + XmProjectPhaseService xmProjectPhaseService; + /** * 产品不直接根项目关联,此函数作废了 * @param productId @@ -83,6 +89,7 @@ public class XmProductService extends BaseService { if(xmProductDb==null){ throw new BizException("产品不存在"); } + String isTpl=xmProduct.getIsTpl(); XmProduct xmProductTo=new XmProduct(); BeanUtils.copyProperties(xmProductDb,xmProductTo); xmProductTo.setId(this.createKey("id")); @@ -100,7 +107,7 @@ public class XmProductService extends BaseService { xmProductTo.setPmUsername(user.getUsername()); xmProductTo.setCtime(new Date()); xmProductTo.setPstatus("0"); - xmProductTo.setIsTpl(xmProduct.getIsTpl()); + xmProductTo.setIsTpl(isTpl); xmProductTo.setAssUserid(user.getUserid()); xmProductTo.setAssUsername(user.getUsername()); xmProductTo.setBizProcInstId(null); @@ -109,29 +116,114 @@ public class XmProductService extends BaseService { xmProductTo.setProductName(xmProduct.getProductName()+"(复制)"); } this.insert(xmProductTo); + + + Map newPhaseIdMap=new HashMap<>(); + if("1".equals(xmProduct.getCopyPhase())){ + XmProjectPhase phaseQuery=new XmProjectPhase(); + phaseQuery.setProductId(xmProductDb.getId()); + List xmProjectPhases=this.xmProjectPhaseService.selectListByWhere(phaseQuery); + if(xmProjectPhases!=null && xmProjectPhases.size()>0){ + for (XmProjectPhase node : xmProjectPhases) { + String id=this.xmProjectPhaseService.createKey("id"); + newPhaseIdMap.put(node.getId(),id); + } + for (XmProjectPhase node : xmProjectPhases) { + String oldId=node.getId(); + String newId=newPhaseIdMap.get(oldId); + node.setProjectId(null); + node.setProductId(xmProductTo.getId()); + node.setId(newId); + if(StringUtils.hasText(node.getParentPhaseId())){ + node.setParentPhaseId(newPhaseIdMap.get(node.getParentPhaseId())); + } + + node.setCtime(new Date()); + node.setMngUserid(user.getUserid()); + node.setMngUsername(user.getUsername()); + node.setIsTpl(isTpl); + node.setBranchId(user.getBranchId()); + node.setBizFlowState(""); + node.setBizProcInstId(null); + } + this.xmProjectPhaseService.parentIdPathsCalcBeforeSave(xmProjectPhases); + this.xmProjectPhaseService.doBatchInsert(xmProjectPhases); + } + + } + Map newMenuIdMap=new HashMap<>(); if("1".equals(xmProduct.getCopyMenu())){ XmMenu mq=new XmMenu(); mq.setProductId(xmProduct.getId()); List xmMenus=this.xmMenuService.selectListByWhere(mq); - Map idMap=new HashMap<>(); + if(xmMenus!=null && xmMenus.size()>0){ for (XmMenu node : xmMenus) { - idMap.put(node.getMenuId(),this.xmMenuService.createKey("id")); + newMenuIdMap.put(node.getMenuId(),this.xmMenuService.createKey("id")); } for (XmMenu node : xmMenus) { String oldId=node.getMenuId(); - String newId=idMap.get(oldId); + String newId=newMenuIdMap.get(oldId); node.setMenuId(newId); node.setProductId(xmProductTo.getId()); - node.setPmenuId(idMap.get(node.getPmenuId())); + node.setPmenuId(newMenuIdMap.get(node.getPmenuId())); + node.setPhaseId(newPhaseIdMap.get(node.getPhaseId())); node.setCtime(new Date()); node.setMmUserid(user.getUserid()); node.setMmUsername(user.getUsername()); + node.setIterationId(null); } this.xmMenuService.parentIdPathsCalcBeforeSave(xmMenus); this.xmMenuService.doBatchInsert(xmMenus); } } + + List groupsDb=new ArrayList<>(); + Map newGroupIdMap = new HashMap<>(); + if( "1".equals(xmProduct.getCopyGroup())||"1".equals(xmProduct.getCopyGroupUser())) { + XmProjectGroup groupQ = new XmProjectGroup(); + groupQ.setProductId(xmProductDb.getId()); + groupsDb = this.groupService.selectListByWhere(groupQ); + if (groupsDb != null && groupsDb.size() > 0) { + for (XmProjectGroup group : groupsDb) { + newGroupIdMap.put(group.getId(), this.groupService.createKey("id")); + } + for (XmProjectGroup node : groupsDb) { + String oldId = node.getId(); + String newId = newGroupIdMap.get(oldId); + node.setProductId(xmProductTo.getId()); + node.setId(newId); + node.setPgroupId(newGroupIdMap.get(node.getPgroupId())); + node.setBranchId(user.getBranchId()); + node.setProjectId(null); + node.setCtime(new Date()); + node.setAssUserid(user.getUserid()); + node.setAssUsername(user.getUsername()); + node.setLeaderUserid(user.getUserid()); + node.setLeaderUsername(user.getUsername()); + node.setIsTpl(isTpl); + node.setPgClass("1"); + } + this.groupService.parentIdPathsCalcBeforeSave(groupsDb); + this.groupService.batchInsert(groupsDb); + } + } + if(groupsDb.size()>0 && "1".equals(xmProduct.getCopyGroupUser())){ + XmProjectGroupUser userQ=new XmProjectGroupUser(); + userQ.setProductId(xmProductDb.getId()); + List usersDb=this.groupUserService.selectGroupUserListByProductId(xmProductDb.getId()); + if(usersDb!=null && usersDb.size()>0){ + for (XmProjectGroupUser node : usersDb) { + node.setProjectId(null); + node.setProductId(xmProductTo.getId()); + node.setGroupId(newGroupIdMap.get(node.getGroupId())); + node.setStatus("0"); + node.setJoinTime(new Date()); + node.setPgClass("1"); + } + this.groupUserService.batchInsert(usersDb); + } + } return xmProductTo; } 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 ddd9dc04..66022289 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 @@ -9,9 +9,7 @@ import com.mdp.core.utils.BaseUtils; import com.mdp.core.utils.DateUtils; import com.mdp.safe.client.entity.User; import com.mdp.safe.client.utils.LoginUtils; -import com.xm.core.entity.XmProject; -import com.xm.core.entity.XmProjectPhase; -import com.xm.core.entity.XmTask; +import com.xm.core.entity.*; import com.xm.core.service.cache.XmProjectCacheService; import com.xm.core.vo.XmProjectCopyVo; import com.xm.core.vo.XmProjectVo; @@ -22,10 +20,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; import java.math.BigDecimal; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * 父类已经支持增删改查操作,因此,即使本类什么也不写,也已经可以满足一般的增删改查操作了.
@@ -60,6 +55,12 @@ public class XmProjectService extends BaseService { XmProjectCacheService xmProjectCacheService; @Autowired XmProjectPhaseService xmProjectPhaseService; + + @Autowired + XmProjectGroupService groupService; + + @Autowired + XmProjectGroupUserService groupUserService; public XmProject getProjectFromCache(String projectId) { @@ -96,62 +97,112 @@ public class XmProjectService extends BaseService { XmProjectPhase phaseQuery=new XmProjectPhase(); phaseQuery.setProjectId(xmProjectDb.getId()); - List xmProjectPhases=this.xmProjectPhaseService.selectListByWhere(phaseQuery); - Map newIdMap=new HashMap<>(); - if(xmProjectPhases!=null && xmProjectPhases.size()>0){ - for (XmProjectPhase node : xmProjectPhases) { - String id=this.xmProjectPhaseService.createKey("id"); - newIdMap.put(node.getId(),id); - } - for (XmProjectPhase node : xmProjectPhases) { - String oldId=node.getId(); - String newId=newIdMap.get(oldId); - node.setProjectId(xmProjectTo.getId()); - node.setId(newId); - if(StringUtils.hasText(node.getParentPhaseId())){ - node.setParentPhaseId(newIdMap.get(node.getParentPhaseId())); + Map newPhaseIdMap=new HashMap<>(); + if("1".equals(xmProject.getCopyPhase()) ||"1".equals(xmProject.getCopyTask())){ + List xmProjectPhases=this.xmProjectPhaseService.selectListByWhere(phaseQuery); + if(xmProjectPhases!=null && xmProjectPhases.size()>0){ + for (XmProjectPhase node : xmProjectPhases) { + String id=this.xmProjectPhaseService.createKey("id"); + newPhaseIdMap.put(node.getId(),id); + } + for (XmProjectPhase node : xmProjectPhases) { + String oldId=node.getId(); + String newId=newPhaseIdMap.get(oldId); + node.setProjectId(xmProjectTo.getId()); + node.setId(newId); + if(StringUtils.hasText(node.getParentPhaseId())){ + node.setParentPhaseId(newPhaseIdMap.get(node.getParentPhaseId())); + } + + node.setCtime(new Date()); + node.setMngUserid(user.getUserid()); + node.setMngUsername(user.getUsername()); + node.setIsTpl(isTpl); + node.setBranchId(user.getBranchId()); + node.setBizFlowState(""); + node.setBizProcInstId(null); } + this.xmProjectPhaseService.parentIdPathsCalcBeforeSave(xmProjectPhases); + this.xmProjectPhaseService.doBatchInsert(xmProjectPhases); + } - node.setCtime(new Date()); - node.setMngUserid(user.getUserid()); - node.setMngUsername(user.getUsername()); - node.setIsTpl(isTpl); - node.setBranchId(user.getBranchId()); - node.setBizFlowState(""); - node.setBizProcInstId(null); + } + if("1".equals(xmProject.getCopyTask()) && "1".equals(xmProject.getCopyPhase())){ + XmTask taskQ=new XmTask(); + taskQ.setProjectId(xmProjectDb.getId()); + List xmTasks=this.xmTaskService.selectListByWhere(taskQ); + Map newTaskIdMap=new HashMap<>(); + if(xmTasks!=null && xmTasks.size()>0){ + for (XmTask node : xmTasks) { + newTaskIdMap.put(node.getId(),this.xmTaskService.createKey("id")); + } + for (XmTask node : xmTasks) { + String oldId=node.getId(); + String newId=newTaskIdMap.get(oldId); + node.setProjectId(xmProjectTo.getId()); + node.setId(newId); + node.setParentTaskid(newTaskIdMap.get(node.getParentTaskid())); + node.setCbranchId(user.getBranchId()); + node.setCdeptid(user.getDeptid()); + node.setCreateUsername(user.getUsername()); + node.setCreateUserid(user.getUserid()); + node.setCreateTime(new Date()); + node.setProjectPhaseId(newPhaseIdMap.get(node.getProjectPhaseId())); + node.setIsTpl(isTpl); + node.setMenuId(null); + node.setMenuName(null); + node.setProductId(null); + node.setProductName(null); + } + this.xmTaskService.parentIdPathsCalcBeforeSave(xmTasks); + this.xmTaskService.batchImportFromTemplate(xmTasks); } - this.xmProjectPhaseService.parentIdPathsCalcBeforeSave(xmProjectPhases); - this.xmProjectPhaseService.doBatchInsert(xmProjectPhases); } - XmTask taskQ=new XmTask(); - taskQ.setProjectId(xmProjectDb.getId()); - List xmTasks=this.xmTaskService.selectListByWhere(taskQ); - Map newTaskIdMap=new HashMap<>(); - if(xmTasks!=null && xmTasks.size()>0){ - for (XmTask node : xmTasks) { - newTaskIdMap.put(node.getId(),this.xmTaskService.createKey("id")); + List groupsDb=new ArrayList<>(); + Map newGroupIdMap = new HashMap<>(); + if( "1".equals(xmProject.getCopyGroup())||"1".equals(xmProject.getCopyGroupUser())) { + XmProjectGroup groupQ = new XmProjectGroup(); + groupQ.setProjectId(xmProjectDb.getId()); + groupsDb = this.groupService.selectListByWhere(groupQ); + if (groupsDb != null && groupsDb.size() > 0) { + for (XmProjectGroup group : groupsDb) { + newGroupIdMap.put(group.getId(), this.groupService.createKey("id")); + } + for (XmProjectGroup node : groupsDb) { + String oldId = node.getId(); + String newId = newGroupIdMap.get(oldId); + node.setProjectId(xmProjectTo.getId()); + node.setId(newId); + node.setPgroupId(newGroupIdMap.get(node.getPgroupId())); + node.setBranchId(user.getBranchId()); + node.setProductId(null); + node.setCtime(new Date()); + node.setAssUserid(user.getUserid()); + node.setAssUsername(user.getUsername()); + node.setLeaderUserid(user.getUserid()); + node.setLeaderUsername(user.getUsername()); + node.setIsTpl(isTpl); + node.setPgClass("0"); + } + this.groupService.parentIdPathsCalcBeforeSave(groupsDb); + this.groupService.batchInsert(groupsDb); } - for (XmTask node : xmTasks) { - String oldId=node.getId(); - String newId=newTaskIdMap.get(oldId); - node.setProjectId(xmProjectTo.getId()); - node.setId(newId); - node.setParentTaskid(newTaskIdMap.get(node.getParentTaskid())); - node.setCbranchId(user.getBranchId()); - node.setCdeptid(user.getDeptid()); - node.setCreateUsername(user.getUsername()); - node.setCreateUserid(user.getUserid()); - node.setCreateTime(new Date()); - node.setProjectPhaseId(newIdMap.get(node.getProjectPhaseId())); - node.setIsTpl(isTpl); - node.setMenuId(""); - node.setMenuName(""); - node.setProductId(""); - node.setProductName(""); + } + if(groupsDb.size()>0 && "1".equals(xmProject.getCopyGroupUser())){ + XmProjectGroupUser userQ=new XmProjectGroupUser(); + userQ.setProjectId(xmProjectDb.getId()); + List usersDb=this.groupUserService.selectGroupUserListByProjectId(xmProjectDb.getId()); + if(usersDb!=null && usersDb.size()>0){ + for (XmProjectGroupUser node : usersDb) { + node.setProjectId(xmProjectTo.getId()); + node.setGroupId(newGroupIdMap.get(node.getGroupId())); + node.setStatus("0"); + node.setJoinTime(new Date()); + node.setPgClass("0"); + } + this.groupUserService.batchInsert(usersDb); } - this.xmTaskService.parentIdPathsCalcBeforeSave(xmTasks); - this.xmTaskService.batchImportFromTemplate(xmTasks); } return xmProjectTo; } diff --git a/xm-core/src/main/java/com/xm/core/vo/XmProjectCopyVo.java b/xm-core/src/main/java/com/xm/core/vo/XmProjectCopyVo.java index f888b251..60689a56 100644 --- a/xm-core/src/main/java/com/xm/core/vo/XmProjectCopyVo.java +++ b/xm-core/src/main/java/com/xm/core/vo/XmProjectCopyVo.java @@ -7,7 +7,8 @@ public class XmProjectCopyVo { String isTpl;//是否复制为模板项目 0否1是 String copyPhase;//是否复制计划 0否1是 String copyTask;//是否复制任务 0否1是 - String copyGrup;//是否复制组织架构 0否1是 + String copyGroup;//是否复制组织架构 0否1是 + String copyGroupUser;//是否复制组织架构中用户 0否1是 public String getId() { return id; @@ -57,11 +58,19 @@ public class XmProjectCopyVo { this.copyTask = copyTask; } - public String getCopyGrup() { - return copyGrup; + public String getCopyGroup() { + return copyGroup; } - public void setCopyGrup(String copyGrup) { - this.copyGrup = copyGrup; + public void setCopyGroup(String copyGroup) { + this.copyGroup = copyGroup; + } + + public String getCopyGroupUser() { + return copyGroupUser; + } + + public void setCopyGroupUser(String copyGroupUser) { + this.copyGroupUser = copyGroupUser; } }