Browse Source

优化 撤回处理的代码

master
PoffyZhang 1 year ago
parent
commit
a08d373c6c
3 changed files with 12 additions and 6 deletions
  1. +9
    -3
      pmapi/src/main/java/com/ningdatech/pmapi/todocenter/handle/WithDrawHandle.java
  2. +1
    -1
      pmapi/src/main/java/com/ningdatech/pmapi/todocenter/manage/HandlerManage.java
  3. +2
    -2
      pmapi/src/main/java/com/ningdatech/pmapi/todocenter/manage/TodoCenterManage.java

+ 9
- 3
pmapi/src/main/java/com/ningdatech/pmapi/todocenter/handle/WithDrawHandle.java View File

@@ -157,13 +157,17 @@ public class WithDrawHandle {
}
//进入上一个节点的标识
Boolean enterBefore = Boolean.FALSE;
//假设 作为当前会签的第一个点
String thisAndOrNodeId = curr.getNodeId();
//假设 作为上一个会签/或签的第一个点
ProgressNode beforeAndOrNode = null;
for(int i = progressNodes.size() - 2;i >= 0;i--){
//说明有会签 或签
if(progressNodes.get(i).getNodeId().equals(thisAndOrNodeId)){
//还在当前节点
if(!enterBefore){
if(thisAndOr.isEmpty()){
//放入当前的那个点
thisAndOr.add(curr);
}
thisAndOr.add(progressNodes.get(i));
@@ -171,12 +175,15 @@ public class WithDrawHandle {
//如果在上个节点了
else{
if(beforeAndOr.isEmpty()){
beforeAndOr.add(curr);
//放入假设的那个点
beforeAndOr.add(beforeAndOrNode);
}
beforeAndOr.add(progressNodes.get(i));
}
}else{
thisAndOrNodeId = progressNodes.get(i).getNodeId();
//存在假设可能
beforeAndOrNode = progressNodes.get(i);
if(!enterBefore){
beforeNode = progressNodes.get(i);
enterBefore = Boolean.TRUE;
@@ -193,8 +200,7 @@ public class WithDrawHandle {
* 2.并且流程 尚未开始审批
* @return
*/
public boolean canRootWithDraw(HistoricProcessInstance instance) {
String employeeCode = LoginUserUtil.loginUserDetail().getEmployeeCode();
public boolean canRootWithDraw(HistoricProcessInstance instance,String employeeCode) {
String startUserId = instance.getStartUserId();
//如果流程发起人 不是 当前登录人 直接返回false
if(StringUtils.isBlank(employeeCode) || StringUtils.isBlank(startUserId)


+ 1
- 1
pmapi/src/main/java/com/ningdatech/pmapi/todocenter/manage/HandlerManage.java View File

@@ -186,7 +186,7 @@ public class HandlerManage {
/**
* 发起人 撤回逻辑
*/
public void rootWithDraw(Project declaredProject, HistoricProcessInstance instance) {
public void rootWithDraw(Project declaredProject) {
Long userId = LoginUserUtil.getUserId();
// 若是流程发起人点击撤回,项目回到上一个状态,需调用状态机更新项目状态,流程状态更新为审核通过
switch (Objects.requireNonNull(ProjectStatusEnum.getValue(declaredProject.getStatus()))) {


+ 2
- 2
pmapi/src/main/java/com/ningdatech/pmapi/todocenter/manage/TodoCenterManage.java View File

@@ -336,11 +336,11 @@ public class TodoCenterManage {
* 不判断前端传的taskId
* 1.先判断 用户是否是ROOT 发起人 并且流程没有开始审批
*/
if(withDrawHandle.canRootWithDraw(instance)){
if(withDrawHandle.canRootWithDraw(instance,employeeCode)){
// 登录用户是流程发起人,且是流程发起人撤回
processTaskService.rootWithdrawTask(param, employeeCode);
//发起人撤回
handlerManage.rootWithDraw(declaredProject,instance);
handlerManage.rootWithDraw(declaredProject);
}else{
// 2.如果用户不是ROOT发起人 或者 不满足root撤回 那么必定要判断 他是不是上个节点审批人 或者 当前会签已审批的审批人
// 这里有个小操作 check的同时 把对应的操作人的taskId 也塞入


Loading…
Cancel
Save