Browse Source

添加节点类型、标签等

master
陈裕财 4 years ago
parent
commit
3fd15cab18
  1. 60
      xm-core/src/main/java/com/xm/core/ctrl/XmProjectController.java
  2. 104
      xm-core/src/main/java/com/xm/core/service/XmProjectService.java
  3. 30
      xm-core/src/main/java/com/xm/core/service/XmTaskService.java

60
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分别为:<br>
@ -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({
@ -352,6 +363,49 @@ public class XmProjectController {
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<String,Object> copyTo(@RequestBody XmProject xmProject) {
Map<String,Object> 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<XmProject> 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;
}
/**

104
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<XmProjectPhase> xmProjectPhases=this.xmProjectPhaseService.selectListByWhere(phaseQuery);
Map<String,String> 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<XmTask> xmTasks=this.xmTaskService.selectListByWhere(taskQ);
Map<String,String> 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;
}
/**

30
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<XmTask> xmTasks) {
this.batchInsert(xmTasks);
List<XmTaskSkill> xmTaskSkillList=new ArrayList<>();
xmTasks.forEach(new Consumer<XmTask>() {
@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;i<nameList.length;i++) {
XmTaskSkill ts=new XmTaskSkill();
ts.setTaskSkillId(idList[i]);
ts.setTaskId(t.getId());
ts.setTaskSkillName(nameList[i]);
ts.setId(XmTaskService.this.xmTaskSkillService.createKey("id"));
xmTaskSkillList.add(ts);
}
}
});
if(xmTaskSkillList.size()>0){
xmTaskSkillService.batchInsert(xmTaskSkillList);
}
List<XmTask> 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){

Loading…
Cancel
Save