Browse Source

添加节点类型、标签等

master
陈裕财 4 years ago
parent
commit
a8ba01cf00
  1. 7
      xm-core/src/main/java/com/xm/core/PubTool.java
  2. 91
      xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java
  3. 21
      xm-core/src/main/java/com/xm/core/service/XmTaskService.java

7
xm-core/src/main/java/com/xm/core/PubTool.java

@ -1,5 +1,10 @@
package com.xm.core;
import org.springframework.util.StringUtils;
import java.util.Arrays;
import java.util.Set;
public class PubTool {
public static String getPidPaths(String pidPahts, String trimId){
@ -10,4 +15,6 @@ public class PubTool {
return pidPahts;
}
}
}

91
xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java

@ -481,8 +481,17 @@ public class XmTaskController {
m.put("tips", tips);
return m;
}
if(!xmTask.getProjectId().equals(xmTaskDb.getProjectId())){
return ResponseHelper.failed("projectId-err","请上送正确的项目编号[projectId]");
}
if(xmTaskDb.getChildrenCnt()!=null && xmTaskDb.getChildrenCnt()>0){
return ResponseHelper.failed("childrenCnt-no-0","有子任务不能删除");
}
if(xmTaskService.checkExistsExecuser(xmTaskDb)){
return ResponseHelper.failed("existsExecuser","有待验收、待结算的执行人,不能删除");
};
xmTaskService.deleteTask(xmTask);
xmTaskService.sumParents(xmTaskDb);
xmRecordService.addXmTaskRecord(xmTaskDb.getProjectId(), xmTaskDb.getId(), "项目-任务-删除任务", "删除任务"+xmTaskDb.getName());
}catch (BizException e) {
tips=e.getTips();
@ -981,43 +990,75 @@ public class XmTaskController {
m.put("tips", tips);
return m;
}
List<XmTask> allowTasks=new ArrayList<>();
List<XmTask> noAllowTasks=new ArrayList<>();
Map<String,XmTask> xmTaskMap=this.xmTaskService.selectTasksMapByTasks(xmTasks);
for (XmTask task : xmTaskMap.values()) {
if( !projectId.equals(task.getProjectId()) ){
List<XmTask> allowDelNodes=new ArrayList<>();
List<XmTask> noAllowNodes=new ArrayList<>();
Map<String,XmTask> delNodesDbMap=this.xmTaskService.selectTasksMapByTasks(xmTasks);
for (XmTask node : delNodesDbMap.values()) {
if( !projectId.equals(node.getProjectId()) ){
tips.setFailureMsg("所有任务必须同属于一个项目");
m.put("tips", tips);
return m;
}
boolean isHead=groupService.checkUserIsOtherUserTeamHead(pgroups,task.getCreateUserid(),user.getUserid());
boolean isHead=groupService.checkUserIsOtherUserTeamHead(pgroups,node.getCreateUserid(),user.getUserid());
if(!isHead){
noAllowTasks.add(task);
noAllowNodes.add(node);
}else {
allowTasks.add(task);
allowDelNodes.add(node);
}
}
List<String> noDelList=new ArrayList<>();
List<XmTask> delTasks=new ArrayList<>();
allowTasks.forEach(t->{
try {
delTasks.add(t);
} catch (BizException e) {
noDelList.add(t.getName());
}
});
if(delTasks.size()>0){
this.xmTaskService.doBatchDelete(delTasks);
if(allowDelNodes.size()==0){
return ResponseHelper.failed("noqx-del","组长或者管理人员可以删除管辖范围的任务,您无权限删除所选任务");
}
if(noDelList.size()>0 && allowTasks.size()>noDelList.size()) {
tips.setOkMsg("成功删除"+(allowTasks.size()-noDelList.size())+"条任务,其中以下任务可能存在未结算的执行人或者存在子任务,不允许删除"+StringUtils.arrayToCommaDelimitedString(noDelList.toArray()));
}if(noDelList.size()>0 && allowTasks.size()==noDelList.size()) {
tips.setFailureMsg("无法删除,所选任务都存在未结算执行人或者子任务");
List<XmTask> existsExecuserList=new ArrayList<>();
List<XmTask> noExecuserList=new ArrayList<>();
if(allowDelNodes.size()>0){
for (XmTask node : allowDelNodes) {
if(this.xmTaskService.checkExistsExecuser(node)){
existsExecuserList.add(node);
}else{
noExecuserList.add(node);
}
}
}
List<XmTask> hadChildNodes=new ArrayList<>();
List<XmTask> canDelNodes=new ArrayList<>();
if(noExecuserList.size()>0){
for (XmTask node : noExecuserList) {
if(node.getChildrenCnt()==null || node.getChildrenCnt()<=0){
canDelNodes.add(node);
continue;
}
long childCount=noExecuserList.stream().filter(i->node.getId().equals(i.getParentTaskid())).count();
if(childCount>=node.getChildrenCnt()){
canDelNodes.add(node);
}else{
hadChildNodes.add(node);
}
}
}
if(canDelNodes.size()>0){
this.xmTaskService.doBatchDelete(canDelNodes);
}
List<String> msgs=new ArrayList<>();
msgs.add("删除了"+canDelNodes.size()+"个任务。");
if(hadChildNodes.size()>0){
msgs.add("以下"+hadChildNodes.size()+"个任务,【"+hadChildNodes.stream().map(i->i.getName()).collect(Collectors.joining(","))+"】存在未删除的子任务,不能删除。");
}
if(noAllowNodes.size()>0){
msgs.add("以下"+noAllowNodes.size()+"个任务,【"+noAllowNodes.stream().map(i->i.getName()).collect(Collectors.joining(","))+"】您无权删除。");
}
if(existsExecuserList.size()>0){
msgs.add("以下"+existsExecuserList.size()+"个任务,【"+existsExecuserList.stream().map(i->i.getName()).collect(Collectors.joining(","))+"】存在待结算的执行人,不能删除。");
}
if(canDelNodes.size()==0){
tips.setFailureMsg(msgs.stream().collect(Collectors.joining("\n")));
}else{
tips.setOkMsg("成功删除"+allowTasks.size()+"条任务");
tips.setOkMsg(msgs.stream().collect(Collectors.joining("\n")));
}
}catch (BizException e) {
tips=e.getTips();
logger.error("",e);

21
xm-core/src/main/java/com/xm/core/service/XmTaskService.java

@ -189,7 +189,6 @@ public class XmTaskService extends BaseService {
public boolean checkExistsChildren(String taskId) {
Long i=this.selectOne("checkExistsChildren", taskId);
return i>0;
}
/**
* 有执行人有子任务都不允许删除
@ -197,17 +196,11 @@ public class XmTaskService extends BaseService {
*/
@Transactional
public void deleteTask(XmTask xmTask) {
if(checkExistsChildren(xmTask.getId())) {
throw new BizException("有子任务,不允许删除");
}
if(!"1".equals(xmTask.getNtype()) && checkExistsExecuser(xmTask.getId())>0) {
throw new BizException("有未结算的执行人,不允许删除该任务");
}
this.deleteByPk(xmTask);
if(StringUtils.hasText(xmTask.getParentTaskid())){
this.updateTaskChildrenCntByTaskId(xmTask.getParentTaskid());
}
xmRecordService.addXmTaskRecord(xmTask.getProjectId(), xmTask.getId(), "项目-任务-删除任务", "删除任务"+xmTask.getName());
this.sumParents(xmTask);
}
private Long checkExistsExecuser(String taskId) {
@ -598,5 +591,17 @@ public class XmTaskService extends BaseService {
}
}
public boolean checkExistsExecuser(XmTask node) {
String exec=node.getExeUserids();
if(!StringUtils.hasText(exec)){
return false;
}
if(exec.indexOf("(1)")>0 || exec.indexOf("(2)")>0|| exec.indexOf("(3)")>0|| exec.indexOf("(4)")>0|| exec.indexOf("(5)")>0){
return false;
}
return true;
}
}
Loading…
Cancel
Save