PoffyZhang 1 рік тому
джерело
коміт
a7ced5d78b
3 змінених файлів з 45 додано та 30 видалено
  1. +2
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/projectlib/helper/ProjectHelper.java
  2. +4
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/req/ProjectListReq.java
  3. +39
    -30
      pmapi/src/main/java/com/ningdatech/pmapi/todocenter/handle/WithDrawHandle.java

+ 2
- 0
pmapi/src/main/java/com/ningdatech/pmapi/projectlib/helper/ProjectHelper.java Переглянути файл

@@ -1,5 +1,6 @@
package com.ningdatech.pmapi.projectlib.helper;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -47,6 +48,7 @@ public class ProjectHelper {

.like(req.getBuildOrg() != null, Project::getBuildOrgName, req.getBuildOrg())
.eq(req.getBuildOrgCode() != null, Project::getBuildOrgCode, req.getBuildOrgCode())
.like(StringUtils.isNotBlank(req.getBuildOrgName()), Project::getBuildOrgName, req.getBuildOrgName())
.eq(req.getSuperOrgCode() != null, Project::getSuperOrgCode, req.getSuperOrgCode())
.eq(req.getIsTemporaryAugment() != null, Project::getIsTemporaryAugment, req.getIsTemporaryAugment())
//状态 阶段 list


+ 4
- 0
pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/req/ProjectListReq.java Переглянути файл

@@ -36,9 +36,13 @@ public class ProjectListReq extends PagePo {

@ApiModelProperty("申报单位")
private String buildOrg;

@ApiModelProperty("申报单位code")
private String buildOrgCode;

@ApiModelProperty("申报单位名")
private String buildOrgName;

@ApiModelProperty("主管单位code")
private String superOrgCode;



+ 39
- 30
pmapi/src/main/java/com/ningdatech/pmapi/todocenter/handle/WithDrawHandle.java Переглянути файл

@@ -12,6 +12,7 @@ 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;
@@ -85,10 +86,12 @@ public class WithDrawHandle {
return Boolean.FALSE;
}

String taskId = param.getTaskId();

//1.判断出 当前审批人和上一个审批人 如果传了taskid
ProgressNode progressNode = StringUtils.isBlank(param.getTaskId()) ?
ProgressNode progressNode = StringUtils.isBlank(taskId) ?
currentProgressInfo.get(currentProgressInfo.size() - 1)
: findSubNodeByTaskId(param.getTaskId(),currentProgressInfo);
: findSubNodeByTaskId(taskId,currentProgressInfo);

if (Objects.isNull(progressNode)){
return Boolean.FALSE;
@@ -129,52 +132,58 @@ public class WithDrawHandle {

Boolean isAndOr = Boolean.FALSE;

//判断当前子流程是否结束 如果结束了 必不能撤回
Boolean thisSubNodeOver = Boolean.FALSE;
//当前节点是 会签|或签的情况
//还有种情况是 会签 或签 并且在当前节点 并且已经通过
if(CollUtil.isNotEmpty(thisAndOr)){
Integer finishNodes = 0;
for(ProgressNode n : thisAndOr){
if(Objects.nonNull(n.getFinishTime())){
//当前会签 有审批过的 那么上个会签|或签 无论如何 就不可能可以撤回了
beforeAndOr = Collections.emptyList();
finishNodes ++;
}
//找到了 当前的操作人 在当前的 会签|或签 中 并且已经审批了
if(n.getUserId().equals(user.getEmployeeCode()) &&
Objects.nonNull(n.getFinishTime())){
beforeProgressNode = n;
//说明当前操作人 在上个会签或者或签节点
if(n.getUserId().equals(String.valueOf(user.getUserId())) &&
Objects.nonNull(n.getFinishTime())
){
//肯定是可以撤回的
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(finishNodes.equals(thisAndOr.size())){
return Boolean.FALSE;
}
}else{
//如果当前不是会签|或签 就判断 当前最后一个节点 结束了没
//如果结束了 也同样 直接不能撤回
if(Objects.nonNull(currentProgressNode.getFinishTime())){
return Boolean.FALSE;
}
}

//
if(isAndOr){
//在本个会签节点有 但是taskId对不上 那这种情况话 其它task都不能撤回了
return Boolean.FALSE;
}

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

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



Завантаження…
Відмінити
Зберегти