diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmTaskExecuserController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmTaskExecuserController.java
index 307c7bba..b6db4077 100644
--- a/xm-core/src/main/java/com/xm/core/ctrl/XmTaskExecuserController.java
+++ b/xm-core/src/main/java/com/xm/core/ctrl/XmTaskExecuserController.java
@@ -29,6 +29,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
/**
* url编制采用rest风格,如对XM.xm_task_execuser xm_task_execuser的操作有增删改查,对应的url分别为:
@@ -125,7 +126,7 @@ public class XmTaskExecuserController {
}
if(!"0".equals(xmTask.getTaskState()) && !"1".equals(xmTask.getTaskState()) ){
- tips.setFailureMsg("该任务已经处于完工、结算计划,不允许再修改");
+ tips.setFailureMsg("该任务已经处于完工、结算状态,不允许再修改");
m.put("tips", tips);
return m;
}
@@ -171,35 +172,51 @@ public class XmTaskExecuserController {
m.put("tips", tips);
return m;
}
- String projectId=xmTaskExecusers.get(0).getProjectId();
- String taskId=xmTaskExecusers.get(0).getTaskId();
- XmTask xmTask= xmTaskService.selectOneObject(new XmTask(xmTaskExecusers.get(0).getTaskId()));
+ User user=LoginUtils.getCurrentUserInfo();
+ List xmTaskExecuserListDb=this.xmTaskExecuserService.selectListByIds(xmTaskExecusers.stream().map(i->i.getId()).collect(Collectors.toList()));
+ if(xmTaskExecuserListDb==null || xmTaskExecuserListDb.size()==0){
+ return ResponseHelper.failed("data-0","执行人/候选人都已不存在");
+ }
+ String taskId=xmTaskExecuserListDb.get(0).getTaskId();
+ XmTask xmTask= xmTaskService.selectOneObject(new XmTask(xmTaskExecuserListDb.get(0).getTaskId()));
if(xmTask==null ){
tips.setFailureMsg("任务已不存在");
m.put("tips", tips);
return m;
}
- User user=LoginUtils.getCurrentUserInfo();
boolean isTaskCreater=user.getUserid().equals(xmTask.getCreateUserid());
-
- List pgroups=groupService.getProjectGroupVoList(projectId);
- List noAllowUsers=new ArrayList<>();
- List allowUsers=new ArrayList<>();
+ boolean isExe=user.getUserid().equals(xmTask.getExecutorUserid());
+ List noAllowUsers=new ArrayList<>();
+ List allowUsers=new ArrayList<>();
List allowUserNames=new ArrayList<>();
- for (XmTaskExecuser xmTaskExecuser : xmTaskExecusers) {
+ List status5Names=new ArrayList<>();
+ List flowState1Names=new ArrayList<>();
+ boolean isPm=groupService.checkUserIsPmOrAssByPtype(user.getUserid(),xmTask.getPtype(),xmTask.getProjectId(),xmTask.getProductId());
+
+ for (XmTaskExecuser xmTaskExecuser : xmTaskExecuserListDb) {
if(!taskId.equals(xmTaskExecuser.getTaskId())){
tips.setFailureMsg("批量操作只允许在同一个任务进行");
break;
}
+ if(("3".equals(xmTaskExecuser.getStatus())||"5".equals(xmTaskExecuser.getStatus()))&&"1".equals(xmTask.getTaskClass())){
+ status5Names.add(xmTaskExecuser.getUsername());
+ continue;
+ }
+ if("1".equals(xmTaskExecuser.getBizFlowState())){
+ flowState1Names.add(xmTaskExecuser.getUsername());
+ continue;
+ }
if(!user.getUserid().equals(xmTaskExecuser.getUserid())) {//只有组长、任务责任人可以请别人请离开任务
- boolean isHead= groupService.checkUserIsOtherUserTeamHeadOrAss(pgroups, xmTaskExecuser.getUserid(), user.getUserid());
- if(isHead || isTaskCreater ) {
+ if(isTaskCreater||isExe||isPm){
allowUsers.add(xmTaskExecuser);
allowUserNames.add(xmTaskExecuser.getUsername());
- }else {
- noAllowUsers.add(xmTaskExecuser.getUsername());
- continue;
- }
+ }else{
+ Tips tips2=groupService.checkIsAdmOrTeamHeadOrAssByPtype(user,xmTaskExecuser.getUserid(),xmTask.getPtype(),xmTask.getProductId(),xmTask.getProjectId());
+ if(tips2.isOk()==false){
+ noAllowUsers.add(xmTaskExecuser.getUsername());
+ continue;
+ }
+ }
}else {//自己离开任务,可以的
allowUsers.add(xmTaskExecuser);
allowUserNames.add(xmTaskExecuser.getUsername());
@@ -207,20 +224,31 @@ public class XmTaskExecuserController {
}
if(tips.isOk() && allowUsers.size()>0) {
xmTaskExecuserService.batchLeave(allowUsers);
- if(noAllowUsers.size()>0){
- String usernamestr=StringUtils.arrayToDelimitedString(noAllowUsers.toArray(), "、");
- String allowUserNamesStr=StringUtils.arrayToDelimitedString(allowUserNames.toArray(), "、");
- tips.setOkMsg("成功将【"+allowUserNamesStr+"】请离任务,另外您无权请【"+usernamestr+"】离开任务,只有任务责任人、组长可以请执行人离开任务");
- }else{
- String allowUserNamesStr=StringUtils.arrayToDelimitedString(allowUserNames.toArray(), "、");
- tips.setOkMsg("成功将【"+allowUserNamesStr+"】请离任务");
- }
- }else {
- if(tips.isOk()){
- String usernamestr=StringUtils.arrayToDelimitedString(noAllowUsers.toArray(), "、");
- tips.setFailureMsg("您无权请【"+usernamestr+"】离开任务,只有任务责任人、组长可以请执行人离开任务");
- }
+ }
+ List msgs=new ArrayList<>();
+ if(noAllowUsers.size()>0){
+ String allowUserNamesStr=StringUtils.arrayToDelimitedString(allowUserNames.toArray(), "、");
+ msgs.add("成功将【"+allowUserNamesStr+"】请离任务;");
+ }
+ if(noAllowUsers.size()>0){
+ String allowUserNamesStr=StringUtils.arrayToDelimitedString(noAllowUsers.toArray(), "、");
+ msgs.add("以下人员您无权操作,【"+allowUserNamesStr+"】;");
+ }
+ if(status5Names.size()>0){
+ msgs.add("以下人员为待结算状态,暂时不能离开,【"+status5Names.stream().collect(Collectors.joining(","))+"】;");
+ }
+ if(flowState1Names.size()>0){
+ msgs.add("以下人员为审核中状态,暂时不能离开,【"+flowState1Names.stream().collect(Collectors.joining(","))+"】;");
+ }
+ if(allowUserNames.size()>0){
+ tips.setOkMsg(msgs.stream().collect(Collectors.joining(" ")));
+ }
+
+ if(allowUserNames.size()>0){
+ tips.setOkMsg(msgs.stream().collect(Collectors.joining(" ")));
+ }else{
+ tips.setFailureMsg(msgs.stream().collect(Collectors.joining(" ")));
}
}catch (BizException e) {
tips=e.getTips();
@@ -255,7 +283,7 @@ public class XmTaskExecuserController {
}
if(!"0".equals(xmTask.getTaskState()) && !"1".equals(xmTask.getTaskState()) ){
- tips.setFailureMsg("该任务已经处于完工、结算计划,不允许再修改");
+ tips.setFailureMsg("该任务已经处于完工、结算状态,不允许再修改");
m.put("tips", tips);
return m;
}
@@ -322,7 +350,7 @@ public class XmTaskExecuserController {
return m;
}
if(!"0".equals(xmTask.getTaskState()) && !"1".equals(xmTask.getTaskState()) ){
- tips.setFailureMsg("该任务已经处于完工、结算计划,不允许再修改");
+ tips.setFailureMsg("该任务已经处于完工、结算状态,不允许再修改");
m.put("tips", tips);
return m;
}
@@ -369,7 +397,7 @@ public class XmTaskExecuserController {
}
if(!"0".equals(xmTask.getTaskState()) && !"1".equals(xmTask.getTaskState()) ){
- tips.setFailureMsg("该任务已经处于完工、结算计划,不允许再修改");
+ tips.setFailureMsg("该任务已经处于完工、结算状态,不允许再修改");
m.put("tips", tips);
return m;
}
@@ -413,10 +441,9 @@ public class XmTaskExecuserController {
tips.setFailureMsg("任务已不存在");
m.put("tips", tips);
return m;
- }
-
+ }
if(!"0".equals(xmTask.getTaskState()) && !"1".equals(xmTask.getTaskState()) ){
- tips.setFailureMsg("该任务已经处于完工、结算计划,不允许再修改");
+ tips.setFailureMsg("该任务已经处于完工、结算状态,不需要提交测试");
m.put("tips", tips);
return m;
}
@@ -466,6 +493,9 @@ public class XmTaskExecuserController {
m.put("tips", tips);
return m;
}
+ if(!"0".equals(xmTask.getTaskState())){
+ return ResponseHelper.failed("taskState-not-0","当前任务状态不是候选、待领取状态,不能修改报价信息");
+ }
User user=LoginUtils.getCurrentUserInfo();
boolean isTaskCreater=user.getUserid().equals(xmTask.getCreateUserid());
String projectId=xmTaskExecuser.getProjectId();