Browse Source

修改bug

master
PoffyZhang 1 year ago
parent
commit
ba520fd3ec
1 changed files with 28 additions and 35 deletions
  1. +28
    -35
      pmapi/src/main/java/com/ningdatech/pmapi/todocenter/handle/WithDrawHandle.java

+ 28
- 35
pmapi/src/main/java/com/ningdatech/pmapi/todocenter/handle/WithDrawHandle.java View File

@@ -12,7 +12,6 @@ import com.wflow.workflow.bean.dto.ReqProcessHandlerDTO;
import com.wflow.workflow.bean.process.ProgressNode;
import com.wflow.workflow.bean.process.enums.NodeTypeEnum;
import com.wflow.workflow.bean.vo.ProcessProgressVo;
import com.wflow.workflow.enums.ProcessHandlerEnum;
import com.wflow.workflow.enums.ProcessStatusEnum;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -132,58 +131,52 @@ public class WithDrawHandle {

Boolean isAndOr = Boolean.FALSE;

//还有种情况是 会签 或签 并且在当前节点 并且已经通过
//判断当前子流程是否结束 如果结束了 必不能撤回
Boolean thisSubNodeOver = Boolean.FALSE;
//当前节点是 会签|或签的情况
if(CollUtil.isNotEmpty(thisAndOr)){
Integer finishNodes = 0;
for(ProgressNode n : thisAndOr){
if(n.getUserId().equals(String.valueOf(user.getUserId())) &&
Objects.nonNull(n.getFinishTime())
){
//肯定是可以撤回的
if(Objects.nonNull(n.getFinishTime())){
//当前会签 有审批过的 那么上个会签|或签 无论如何 就不可能可以撤回了
beforeAndOr = Collections.emptyList();
finishNodes ++;
}
//找到了 当前的操作人 在当前的 会签|或签 中 并且已经审批了
if(n.getUserId().equals(user.getEmployeeCode()) &&
Objects.nonNull(n.getFinishTime())){
beforeProgressNode = n;
//说明当前操作人 在上个会签或者或签节点
isAndOr = Boolean.TRUE;
if(Objects.nonNull(n.getResult()) && n.getResult().equals(ProcessHandlerEnum.BACK)){
//如果上个节点被退回了 直接返回false
return Boolean.FALSE;
}

if(taskId.equals(n.getTaskId())){
//说明当前操作人 在这个会签或者或签节点
beforeProgressNode = n;
return Boolean.TRUE;
}
}
}
}

//
if(isAndOr){
//在本个会签节点有 但是taskId对不上 那这种情况话 其它task都不能撤回了
return Boolean.FALSE;
//如果都审批过了 结束了 那说明此子流程已经结束了 不能再撤回了
if(finishNodes.equals(thisAndOr.size())){
return Boolean.FALSE;
}
}else{
//如果当前不是会签|或签 就判断 当前最后一个节点 结束了没
//如果结束了 也同样 直接不能撤回
if(Objects.nonNull(currentProgressNode.getFinishTime())){
return Boolean.FALSE;
}
}

//如果上个会签没取到 还有种情况是 会签 或签 并且在上个节点
if(!isAndOr && CollUtil.isNotEmpty(beforeAndOr)) {
for (ProgressNode n : beforeAndOr) {
if (n.getUserId().equals(String.valueOf(user.getUserId()))
if (n.getUserId().equals(user.getEmployeeCode())
&& !TodoCenterContant.Handler.OR_SIGN_FLAG.equals(n.getWithdrawFlag())) {
if(Objects.nonNull(n.getResult()) && n.getResult().equals(ProcessHandlerEnum.BACK)){
//如果上个节点被退回了 直接返回false
return Boolean.FALSE;
}
beforeProgressNode = n;
//说明当前操作人 在上个会签或者或签节点
isAndOr = Boolean.TRUE;
if(taskId.equals(n.getTaskId())){
beforeProgressNode = n;
//肯定是可以撤回的
return Boolean.TRUE;
}
break;
}
}
}

if(!isAndOr && (Objects.isNull(beforeProgressNode)
|| !String.valueOf(user.getUserId()).equals(beforeProgressNode.getUserId()))
|| !taskId.equals(beforeProgressNode.getTaskId())
|| beforeProgressNode.getResult().equals(ProcessHandlerEnum.BACK)){
|| !user.getEmployeeCode().equals(beforeProgressNode.getUserId()))){
return Boolean.FALSE;
}



Loading…
Cancel
Save