From 3fd15cab1825bda0f7c7b7dcc9d5d0ef787029ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Sun, 20 Feb 2022 18:22:47 +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/ctrl/XmProjectController.java | 62 ++++++++++- .../com/xm/core/service/XmProjectService.java | 104 ++++++++++++++++-- .../com/xm/core/service/XmTaskService.java | 30 ----- 3 files changed, 155 insertions(+), 41 deletions(-) diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmProjectController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmProjectController.java index 7f9aec45..c51351f6 100644 --- a/xm-core/src/main/java/com/xm/core/ctrl/XmProjectController.java +++ b/xm-core/src/main/java/com/xm/core/ctrl/XmProjectController.java @@ -5,25 +5,30 @@ import com.mdp.audit.log.client.annotation.OperType; import com.mdp.core.entity.Tips; import com.mdp.core.err.BizException; import com.mdp.core.utils.RequestUtils; +import com.mdp.core.utils.ResponseHelper; import com.mdp.mybatis.PageUtils; import com.mdp.qx.HasQx; 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.service.XmProjectGroupService; +import com.xm.core.service.XmProjectPhaseService; import com.xm.core.service.XmProjectService; +import com.xm.core.service.XmTaskService; import com.xm.core.vo.XmProjectGroupVo; import com.xm.core.vo.XmProjectVo; import io.swagger.annotations.*; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.stream.Collectors; /** * url编制采用rest风格,如对XM.xm_project xm_project的操作有增删改查,对应的url分别为:
@@ -47,6 +52,12 @@ public class XmProjectController { private XmProjectService xmProjectService; @Autowired private XmProjectGroupService groupService; + @Autowired + private XmProjectPhaseService xmProjectPhaseService; + + + @Autowired + private XmTaskService xmTaskService; @ApiOperation( value = "查询xm_project信息列表",notes="listXmProject,条件之间是 and关系,模糊查询写法如 {studentName:'%才哥%'}") @ApiImplicitParams({ @@ -351,7 +362,50 @@ public class XmProjectController { m.put("tips", tips); return m; } - + + @ApiOperation( value = "存为模板",notes="editXmProject") + @ApiResponses({ + @ApiResponse(code = 200,response=XmProject.class, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}") + }) + @HasQx(value = "xm_core_xmProject_copy_to",name = "存为新项目",categoryId = "admin-xm",categoryName = "管理端-项目管理系统") + @RequestMapping(value="/copyTo",method=RequestMethod.POST) + public Map copyTo(@RequestBody XmProject xmProject) { + Map m = new HashMap<>(); + Tips tips=new Tips("成功更新一条数据"); + try{ + User user= LoginUtils.getCurrentUserInfo(); + if( !StringUtils.hasText(xmProject.getId())){ + return ResponseHelper.failed("id-0","请上送原项目编号参数id"); + } + if( !StringUtils.hasText(xmProject.getName())){ + return ResponseHelper.failed("name-0","请上送新项目名称"); + } + if(StringUtils.hasText(xmProject.getCode())){ + XmProject pq=new XmProject(); + pq.setBranchId(user.getBranchId()); + pq.setCode(xmProject.getCode()); + List xmProjectList=this.xmProjectService.selectListByWhere(pq); + if(xmProjectList!=null && xmProjectList.size()>0){ + return ResponseHelper.failed("code-exists","项目编码【"+xmProject.getCode()+"】已存在,,请重新输入新的项目编码,如果为空,后台自动生成"); + } + } + XmProject xmProjectDb=this.xmProjectService.getProjectFromCache(xmProject.getId()); + if(xmProjectDb==null){ + tips.setFailureMsg("项目不存在"); + m.put("tips", tips); + return m; + } + this.xmProjectService.copyProject(user,xmProject); + }catch (BizException e) { + tips=e.getTips(); + logger.error("",e); + }catch (Exception e) { + tips.setFailureMsg(e.getMessage()); + logger.error("",e); + } + m.put("tips", tips); + return m; + } /** 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 12e2e4c3..c0d834d1 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 @@ -10,6 +10,8 @@ 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.service.cache.XmProjectCacheService; import com.xm.core.vo.XmProjectVo; import org.springframework.beans.BeanUtils; @@ -32,8 +34,6 @@ import java.util.Map; @Service("xm.core.xmProjectService") public class XmProjectService extends BaseService { - @Autowired - XmProjectService xmProjectService; @@ -57,6 +57,8 @@ public class XmProjectService extends BaseService { @Autowired XmProjectCacheService xmProjectCacheService; + @Autowired + XmProjectPhaseService xmProjectPhaseService; public XmProject getProjectFromCache(String projectId) { @@ -68,6 +70,77 @@ public class XmProjectService extends BaseService { } return projectCahce; } + @Transactional + public XmProject copyProject(User user,XmProject xmProject){ + XmProject xmProjectDb=this.getProjectFromCache(xmProject.getId()); + if(xmProjectDb==null){ + return null; + } + String isTpl=xmProject.getIsTpl(); + XmProjectVo xmProjectTo=new XmProjectVo(); + BeanUtils.copyProperties(xmProjectDb,xmProjectTo); + xmProjectTo.setId(null); + xmProjectTo.setCode(xmProject.getCode()); + xmProjectTo.setName(xmProject.getName()); + if(StringUtils.hasText(xmProject.getName()) && xmProject.getName().equals(xmProjectDb.getName())){ + xmProjectTo.setName(xmProject.getName()+"(复制)"); + } + xmProjectTo.setGroups(null); + xmProjectTo.setIsTpl(isTpl); + xmProjectTo.setFromTplId(xmProjectDb.getId()); + this.saveProject(xmProjectTo); + + 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); + node.setParentPhaseId(newIdMap.get(node.getParentPhaseId())); + node.setCtime(new Date()); + node.setMngUserid(user.getUserid()); + node.setMngUsername(user.getUsername()); + node.setIsTpl(isTpl); + node.setBranchId(user.getBranchId()); + } + 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")); + } + for (XmTask node : xmTasks) { + String oldId=node.getId(); + String newId=newTaskIdMap.get(oldId); + node.setProjectId(xmProjectTo.getId()); + node.setId(newId); + node.setParentTaskid(newIdMap.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); + } + this.xmTaskService.parentIdPathsCalcBeforeSave(xmTasks); + this.xmTaskService.batchImportFromTemplate(xmTasks); + } + return xmProjectTo; + } public void clearProject(String projectId) { xmProjectCacheService.putProject(projectId, null); @@ -110,17 +183,18 @@ public class XmProjectService extends BaseService { tips.setFailureMsg("id不能事先预设,如果必须事先预设,请保持与code相同"); throw new BizException(tips); } - if(!StringUtils.isEmpty(xmProjectVo.getCode())) { + if(StringUtils.hasText(xmProjectVo.getCode())) { XmProject xmProjectQuery = new XmProject(); xmProjectQuery.setCode(xmProjectVo.getCode()); - if(xmProjectService.countByWhere(xmProjectQuery)>0){ + xmProjectQuery.setBranchId(user.getBranchId()); + if(this.countByWhere(xmProjectQuery)>0){ tips.setFailureMsg("编号重复,请修改编号再提交"); throw new BizException(tips); } - xmProjectVo.setId(xmProjectVo.getCode()); + xmProjectVo.setId(this.createKey("id")); }else { - xmProjectVo.setCode(sequenceService.getCommonNo("prj-"+xmProjectVo.getBranchId()+"-{date:yyymmddd}-{rand:4}")); - xmProjectVo.setId(xmProjectVo.getCode()); + xmProjectVo.setCode(this.createProjectCode(user.getBranchId())); + xmProjectVo.setId(this.createKey("id")); } //获取当前登录用户信息 @@ -135,6 +209,22 @@ public class XmProjectService extends BaseService { xmRecordService.addXmProjectRecord(xmProjectVo.getId(), "项目-新增项目", "新建项目"+xmProjectVo.getName(), JSONObject.toJSONString(xmProjectVo),null); return xmProjectVo; } + public String createProjectCode(String branchId){ + XmProject projectQ=new XmProject(); + projectQ.setBranchId(branchId); + long count=this.countByWhere(projectQ); + String seq=(count+1)+""; + int preLength=6-seq.length(); + + if(preLength>0){ + for (int i = 0; i < preLength; i++) { + seq="0"+seq; + } + } + String code=sequenceService.getCommonNo("prj-{date:yyyyMMdd}-"+seq+"-{rand:2}"); + return code; + + } /** 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 b0c1909e..2695fc68 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 @@ -366,36 +366,6 @@ public class XmTaskService extends BaseService { @Transactional public void batchImportFromTemplate(List xmTasks) { this.batchInsert(xmTasks); - List xmTaskSkillList=new ArrayList<>(); - xmTasks.forEach(new Consumer() { - - @Override - public void accept(XmTask t) { - String names=t.getTaskSkillNames(); - String ids=t.getTaskSkillIds(); - if(StringUtils.isEmpty(names)) { - return; - } - String[] nameList=names.split(","); - String[] idList=ids.split(","); - if(nameList.length != idList.length ) { - return; - } - for (int i=0;i0){ - - xmTaskSkillService.batchInsert(xmTaskSkillList); - } - List list= xmTasks.stream().filter(i->!xmTasks.stream().filter(k->k.getId().equals(i.getParentTaskid())).findAny().isPresent()).collect(Collectors.toList()); list=list.stream().filter(i->StringUtils.hasText(i.getParentTaskid())).collect(Collectors.toList()); if(list.size()>0){