mirror of
https://gitee.com/huangge1199_admin/vue-pro.git
synced 2024-11-22 23:31:52 +08:00
BPM:增加 task 的审批建议
This commit is contained in:
parent
ba502fc528
commit
c4688d887c
@ -15,7 +15,7 @@ public enum BpmCommentTypeEnum {
|
|||||||
APPROVE("1", "审批通过", ""), // 理由:直接使用用户的评论
|
APPROVE("1", "审批通过", ""), // 理由:直接使用用户的评论
|
||||||
REJECT("2", "不通过", ""),
|
REJECT("2", "不通过", ""),
|
||||||
CANCEL("3", "已取消", ""),
|
CANCEL("3", "已取消", ""),
|
||||||
BACK("4", "退回", ""),
|
BACK("4", "退回", ""), // 理由:直接使用用户的评论
|
||||||
DELEGATE("5", "委派", ""),
|
DELEGATE("5", "委派", ""),
|
||||||
ADD_SIGN("6", "加签", "[{}]{}给了[{}],理由为:{}"),
|
ADD_SIGN("6", "加签", "[{}]{}给了[{}],理由为:{}"),
|
||||||
SUB_SIGN("7", "减签", "[{}]操作了【减签】,审批人[{}]的任务被取消"),
|
SUB_SIGN("7", "减签", "[{}]操作了【减签】,审批人[{}]的任务被取消"),
|
||||||
|
@ -5,13 +5,13 @@ import lombok.AllArgsConstructor;
|
|||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 流程实例的结果
|
* 流程任务 Task 的状态枚举
|
||||||
*
|
*
|
||||||
* @author jason
|
* @author jason
|
||||||
*/
|
*/
|
||||||
@Getter
|
@Getter
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public enum BpmProcessInstanceResultEnum {
|
public enum BpmTaskStatustEnum {
|
||||||
|
|
||||||
RUNNING(1, "审批中"),
|
RUNNING(1, "审批中"),
|
||||||
APPROVE(2, "审批通过"),
|
APPROVE(2, "审批通过"),
|
||||||
@ -43,28 +43,28 @@ public enum BpmProcessInstanceResultEnum {
|
|||||||
// WAIT_BEFORE_TASK(9, "处理中【待前置任务完成】");
|
// WAIT_BEFORE_TASK(9, "处理中【待前置任务完成】");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 结果
|
* 状态
|
||||||
* <p>
|
* <p>
|
||||||
* 如果新增时,注意 {@link #isEndResult(Integer)} 是否需要变更
|
* 如果新增时,注意 {@link #isEndStatus(Integer)} 是否需要变更
|
||||||
*/
|
*/
|
||||||
private final Integer result;
|
private final Integer status;
|
||||||
/**
|
/**
|
||||||
* 描述
|
* 名字
|
||||||
*/
|
*/
|
||||||
private final String desc;
|
private final String name;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 判断该结果是否已经处于 End 最终结果
|
* 判断该状态是否已经处于 End 最终状态
|
||||||
* <p>
|
* <p>
|
||||||
* 主要用于一些结果更新的逻辑,如果已经是最终结果,就不再进行更新
|
* 主要用于一些状态更新的逻辑,如果已经是最终状态,就不再进行更新
|
||||||
*
|
*
|
||||||
* @param result 结果
|
* @param status 状态
|
||||||
* @return 是否
|
* @return 是否
|
||||||
*/
|
*/
|
||||||
public static boolean isEndResult(Integer result) {
|
public static boolean isEndStatus(Integer status) {
|
||||||
return ObjectUtils.equalsAny(result,
|
return ObjectUtils.equalsAny(status,
|
||||||
APPROVE.getResult(), REJECT.getResult(), CANCEL.getResult(),
|
APPROVE.getStatus(), REJECT.getStatus(), CANCEL.getStatus(),
|
||||||
BACK.getResult(), APPROVING.getResult());
|
BACK.getStatus(), APPROVING.getStatus());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -27,7 +27,10 @@ public class BpmTaskRespVO {
|
|||||||
private Long durationInMillis;
|
private Long durationInMillis;
|
||||||
|
|
||||||
@Schema(description = "任务状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
|
@Schema(description = "任务状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
|
||||||
private Integer status; // 参见 BpmProcessInstanceResultEnum 枚举
|
private Integer status; // 参见 BpmTaskStatusEnum 枚举
|
||||||
|
|
||||||
|
@Schema(description = "审批理由", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
|
||||||
|
private String reason;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 负责人的用户信息
|
* 负责人的用户信息
|
||||||
|
@ -57,6 +57,7 @@ public interface BpmTaskConvert {
|
|||||||
List<BpmTaskRespVO> taskVOList = CollectionUtils.convertList(pageResult.getList(), task -> {
|
List<BpmTaskRespVO> taskVOList = CollectionUtils.convertList(pageResult.getList(), task -> {
|
||||||
BpmTaskRespVO taskVO = BeanUtils.toBean(task, BpmTaskRespVO.class);
|
BpmTaskRespVO taskVO = BeanUtils.toBean(task, BpmTaskRespVO.class);
|
||||||
taskVO.setStatus((Integer) task.getTaskLocalVariables().get(BpmConstants.TASK_VARIABLE_STATUS));
|
taskVO.setStatus((Integer) task.getTaskLocalVariables().get(BpmConstants.TASK_VARIABLE_STATUS));
|
||||||
|
taskVO.setReason((String) task.getTaskLocalVariables().get(BpmConstants.TASK_VARIABLE_REASON));
|
||||||
// 流程实例
|
// 流程实例
|
||||||
HistoricProcessInstance processInstance = processInstanceMap.get(taskVO.getProcessInstanceId());
|
HistoricProcessInstance processInstance = processInstanceMap.get(taskVO.getProcessInstanceId());
|
||||||
if (processInstance != null) {
|
if (processInstance != null) {
|
||||||
@ -76,6 +77,7 @@ public interface BpmTaskConvert {
|
|||||||
List<BpmTaskRespVO> taskVOList = CollectionUtils.convertList(taskList, task -> {
|
List<BpmTaskRespVO> taskVOList = CollectionUtils.convertList(taskList, task -> {
|
||||||
BpmTaskRespVO taskVO = BeanUtils.toBean(task, BpmTaskRespVO.class);
|
BpmTaskRespVO taskVO = BeanUtils.toBean(task, BpmTaskRespVO.class);
|
||||||
taskVO.setStatus((Integer) task.getTaskLocalVariables().get(BpmConstants.TASK_VARIABLE_STATUS));
|
taskVO.setStatus((Integer) task.getTaskLocalVariables().get(BpmConstants.TASK_VARIABLE_STATUS));
|
||||||
|
taskVO.setReason((String) task.getTaskLocalVariables().get(BpmConstants.TASK_VARIABLE_REASON));
|
||||||
// 流程实例
|
// 流程实例
|
||||||
AdminUserRespDTO startUser = userMap.get(NumberUtils.parseLong(processInstance.getStartUserId()));
|
AdminUserRespDTO startUser = userMap.get(NumberUtils.parseLong(processInstance.getStartUserId()));
|
||||||
taskVO.setProcessInstance(BeanUtils.toBean(processInstance, BpmTaskRespVO.ProcessInstance.class,
|
taskVO.setProcessInstance(BeanUtils.toBean(processInstance, BpmTaskRespVO.ProcessInstance.class,
|
||||||
|
@ -1 +0,0 @@
|
|||||||
package cn.iocoder.yudao.module.bpm.convert.task;
|
|
@ -1,7 +1,7 @@
|
|||||||
package cn.iocoder.yudao.module.bpm.dal.dataobject.oa;
|
package cn.iocoder.yudao.module.bpm.dal.dataobject.oa;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
||||||
import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum;
|
import cn.iocoder.yudao.module.bpm.enums.task.BpmTaskStatustEnum;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
@ -59,7 +59,7 @@ public class BpmOALeaveDO extends BaseDO {
|
|||||||
/**
|
/**
|
||||||
* 请假的结果
|
* 请假的结果
|
||||||
*
|
*
|
||||||
* 枚举 {@link BpmProcessInstanceResultEnum}
|
* 枚举 {@link BpmTaskStatustEnum}
|
||||||
* 考虑到简单,所以直接复用了 BpmProcessInstanceResultEnum 枚举,也可以自己定义一个枚举哈
|
* 考虑到简单,所以直接复用了 BpmProcessInstanceResultEnum 枚举,也可以自己定义一个枚举哈
|
||||||
*/
|
*/
|
||||||
private Integer result;
|
private Integer result;
|
||||||
|
@ -22,5 +22,13 @@ public class BpmConstants {
|
|||||||
* @see org.flowable.task.api.Task#getTaskLocalVariables()
|
* @see org.flowable.task.api.Task#getTaskLocalVariables()
|
||||||
*/
|
*/
|
||||||
public static final String TASK_VARIABLE_STATUS = "TASK_STATUS";
|
public static final String TASK_VARIABLE_STATUS = "TASK_STATUS";
|
||||||
|
/**
|
||||||
|
* 任务的变量 - 理由
|
||||||
|
*
|
||||||
|
* 例如说:审批通过、不通过的理由
|
||||||
|
*
|
||||||
|
* @see org.flowable.task.api.Task#getTaskLocalVariables()
|
||||||
|
*/
|
||||||
|
public static final String TASK_VARIABLE_REASON = "TASK_REASON";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@ import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOALeavePageReqVO;
|
|||||||
import cn.iocoder.yudao.module.bpm.convert.oa.BpmOALeaveConvert;
|
import cn.iocoder.yudao.module.bpm.convert.oa.BpmOALeaveConvert;
|
||||||
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOALeaveDO;
|
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOALeaveDO;
|
||||||
import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOALeaveMapper;
|
import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOALeaveMapper;
|
||||||
import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum;
|
import cn.iocoder.yudao.module.bpm.enums.task.BpmTaskStatustEnum;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
@ -48,7 +48,7 @@ public class BpmOALeaveServiceImpl implements BpmOALeaveService {
|
|||||||
// 插入 OA 请假单
|
// 插入 OA 请假单
|
||||||
long day = LocalDateTimeUtil.between(createReqVO.getStartTime(), createReqVO.getEndTime()).toDays();
|
long day = LocalDateTimeUtil.between(createReqVO.getStartTime(), createReqVO.getEndTime()).toDays();
|
||||||
BpmOALeaveDO leave = BpmOALeaveConvert.INSTANCE.convert(createReqVO).setUserId(userId).setDay(day)
|
BpmOALeaveDO leave = BpmOALeaveConvert.INSTANCE.convert(createReqVO).setUserId(userId).setDay(day)
|
||||||
.setResult(BpmProcessInstanceResultEnum.RUNNING.getResult());
|
.setResult(BpmTaskStatustEnum.RUNNING.getStatus());
|
||||||
leaveMapper.insert(leave);
|
leaveMapper.insert(leave);
|
||||||
|
|
||||||
// 发起 BPM 流程
|
// 发起 BPM 流程
|
||||||
|
@ -14,7 +14,7 @@ import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils;
|
|||||||
import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.*;
|
import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.*;
|
||||||
import cn.iocoder.yudao.module.bpm.convert.task.BpmTaskConvert;
|
import cn.iocoder.yudao.module.bpm.convert.task.BpmTaskConvert;
|
||||||
import cn.iocoder.yudao.module.bpm.enums.task.BpmCommentTypeEnum;
|
import cn.iocoder.yudao.module.bpm.enums.task.BpmCommentTypeEnum;
|
||||||
import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum;
|
import cn.iocoder.yudao.module.bpm.enums.task.BpmTaskStatustEnum;
|
||||||
import cn.iocoder.yudao.module.bpm.enums.task.BpmTaskAddSignTypeEnum;
|
import cn.iocoder.yudao.module.bpm.enums.task.BpmTaskAddSignTypeEnum;
|
||||||
import cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmConstants;
|
import cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmConstants;
|
||||||
import cn.iocoder.yudao.module.bpm.service.definition.BpmModelService;
|
import cn.iocoder.yudao.module.bpm.service.definition.BpmModelService;
|
||||||
@ -178,15 +178,15 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 情况三:审批普通的任务。大多数情况下,都是这样
|
// 情况三:审批普通的任务。大多数情况下,都是这样
|
||||||
// 更新流程任务 status 为审批通过
|
// 3.1 更新 task 状态、原因
|
||||||
updateTaskStatus(task.getId(), BpmProcessInstanceResultEnum.APPROVE.getResult());
|
updateTaskStatus(task.getId(), BpmTaskStatustEnum.APPROVE.getStatus());
|
||||||
// 添加评论
|
// 3.2 添加评论
|
||||||
taskService.addComment(task.getId(), task.getProcessInstanceId(),
|
taskService.addComment(task.getId(), task.getProcessInstanceId(),
|
||||||
BpmCommentTypeEnum.APPROVE.getType(), reqVO.getReason());
|
BpmCommentTypeEnum.APPROVE.getType(), reqVO.getReason());
|
||||||
// 调用 BPM complete 去完成任务
|
// 3.3 调用 BPM complete 去完成任务
|
||||||
taskService.complete(task.getId(), instance.getProcessVariables());
|
taskService.complete(task.getId(), instance.getProcessVariables());
|
||||||
|
|
||||||
// 处理加签任务
|
// 【加签专属】处理加签任务
|
||||||
handleParentTaskIfSign(task.getParentTaskId());
|
handleParentTaskIfSign(task.getParentTaskId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -204,14 +204,14 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
|||||||
// new BpmTaskExtDO().setTaskId(task.getId()).setResult(BpmProcessInstanceResultEnum.SIGN_AFTER.getResult())
|
// new BpmTaskExtDO().setTaskId(task.getId()).setResult(BpmProcessInstanceResultEnum.SIGN_AFTER.getResult())
|
||||||
// .setReason(reqVO.getReason()).setEndTime(LocalDateTime.now()));
|
// .setReason(reqVO.getReason()).setEndTime(LocalDateTime.now()));
|
||||||
// TODO @芋艿:reqVO.reason???
|
// TODO @芋艿:reqVO.reason???
|
||||||
updateTaskStatus(task.getId(), BpmProcessInstanceResultEnum.APPROVING.getResult());
|
updateTaskStatus(task.getId(), BpmTaskStatustEnum.APPROVING.getStatus());
|
||||||
|
|
||||||
// 2. 激活子任务
|
// 2. 激活子任务
|
||||||
List<String> childrenTaskIdList = getChildrenTaskIdList(task.getId());
|
List<String> childrenTaskIdList = getChildrenTaskIdList(task.getId());
|
||||||
for (String childrenTaskId : childrenTaskIdList) {
|
for (String childrenTaskId : childrenTaskIdList) {
|
||||||
taskService.resolveTask(childrenTaskId);
|
taskService.resolveTask(childrenTaskId);
|
||||||
// 更新任务扩展表中子任务为进行中
|
// 更新任务扩展表中子任务为进行中
|
||||||
updateTaskStatus(childrenTaskId, BpmProcessInstanceResultEnum.RUNNING.getResult());
|
updateTaskStatus(childrenTaskId, BpmTaskStatustEnum.RUNNING.getStatus());
|
||||||
}
|
}
|
||||||
// 2.1 更新任务扩展表中子任务为进行中
|
// 2.1 更新任务扩展表中子任务为进行中
|
||||||
// taskExtMapper.updateBatchByTaskIdList(childrenTaskIdList,
|
// taskExtMapper.updateBatchByTaskIdList(childrenTaskIdList,
|
||||||
@ -252,11 +252,11 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
|||||||
// 3.1.1 owner 重新赋值给父任务的 assignee,这样它就可以被审批
|
// 3.1.1 owner 重新赋值给父任务的 assignee,这样它就可以被审批
|
||||||
taskService.resolveTask(parentTaskId);
|
taskService.resolveTask(parentTaskId);
|
||||||
// 3.1.2 更新流程任务 status
|
// 3.1.2 更新流程任务 status
|
||||||
updateTaskStatus(parentTaskId, BpmProcessInstanceResultEnum.RUNNING.getResult());
|
updateTaskStatus(parentTaskId, BpmTaskStatustEnum.RUNNING.getStatus());
|
||||||
// 3.2 情况二:处理向【向后】加签
|
// 3.2 情况二:处理向【向后】加签
|
||||||
} else if (BpmTaskAddSignTypeEnum.AFTER.getType().equals(scopeType)) {
|
} else if (BpmTaskAddSignTypeEnum.AFTER.getType().equals(scopeType)) {
|
||||||
// 3.2.1 完成自己(因为它已经没有子任务,所以也可以完成)
|
// 3.2.1 完成自己(因为它已经没有子任务,所以也可以完成)
|
||||||
updateTaskStatus(parentTaskId, BpmProcessInstanceResultEnum.APPROVE.getResult());
|
updateTaskStatus(parentTaskId, BpmTaskStatustEnum.APPROVE.getStatus());
|
||||||
taskService.complete(parentTaskId);
|
taskService.complete(parentTaskId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -299,7 +299,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
|||||||
// taskExtMapper.updateByTaskId(
|
// taskExtMapper.updateByTaskId(
|
||||||
// new BpmTaskExtDO().setTaskId(task.getId()).setResult(BpmProcessInstanceResultEnum.RUNNING.getResult())
|
// new BpmTaskExtDO().setTaskId(task.getId()).setResult(BpmProcessInstanceResultEnum.RUNNING.getResult())
|
||||||
// .setReason(reqVO.getReason()));
|
// .setReason(reqVO.getReason()));
|
||||||
updateTaskStatus(task.getId(), BpmProcessInstanceResultEnum.RUNNING.getResult());
|
updateTaskStatus(task.getId(), BpmTaskStatustEnum.RUNNING.getStatus());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -313,7 +313,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 更新流程实例为不通过
|
// 更新流程实例为不通过
|
||||||
updateTaskStatus(task.getId(), BpmProcessInstanceResultEnum.REJECT.getResult());
|
updateTaskStatus(task.getId(), BpmTaskStatustEnum.REJECT.getStatus());
|
||||||
processInstanceService.updateProcessInstanceExtReject(instance.getProcessInstanceId(), reqVO.getReason());
|
processInstanceService.updateProcessInstanceExtReject(instance.getProcessInstanceId(), reqVO.getReason());
|
||||||
|
|
||||||
// // 更新任务拓展表为不通过
|
// // 更新任务拓展表为不通过
|
||||||
@ -342,13 +342,21 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
|||||||
* @param status 状态
|
* @param status 状态
|
||||||
*/
|
*/
|
||||||
private void updateTaskStatus(String id, Integer status) {
|
private void updateTaskStatus(String id, Integer status) {
|
||||||
// try {
|
|
||||||
// } catch (FlowableObjectNotFoundException exception) {
|
|
||||||
// historyService.
|
|
||||||
// }
|
|
||||||
taskService.setVariableLocal(id, BpmConstants.TASK_VARIABLE_STATUS, status);
|
taskService.setVariableLocal(id, BpmConstants.TASK_VARIABLE_STATUS, status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新流程任务的 status 状态、reason 理由
|
||||||
|
*
|
||||||
|
* @param id 任务编号
|
||||||
|
* @param status 状态
|
||||||
|
* @param reason 理由(审批通过、审批不通过的理由)
|
||||||
|
*/
|
||||||
|
private void updateTaskStatus(String id, Integer status, String reason) {
|
||||||
|
taskService.setVariableLocal(id, BpmConstants.TASK_VARIABLE_STATUS, status);
|
||||||
|
taskService.setVariableLocal(id, BpmConstants.TASK_VARIABLE_REASON, reason);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 校验任务是否存在, 并且是否是分配给自己的任务
|
* 校验任务是否存在, 并且是否是分配给自己的任务
|
||||||
*
|
*
|
||||||
@ -382,7 +390,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
|||||||
// if (BpmTaskAddSignTypeEnum.AFTER_CHILDREN_TASK.getType().equals(task.getScopeType())) {
|
// if (BpmTaskAddSignTypeEnum.AFTER_CHILDREN_TASK.getType().equals(task.getScopeType())) {
|
||||||
// status = BpmProcessInstanceResultEnum.WAIT_BEFORE_TASK.getResult();
|
// status = BpmProcessInstanceResultEnum.WAIT_BEFORE_TASK.getResult();
|
||||||
// }
|
// }
|
||||||
updateTaskStatus(task.getId(), BpmProcessInstanceResultEnum.RUNNING.getResult());
|
updateTaskStatus(task.getId(), BpmTaskStatustEnum.RUNNING.getStatus());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -392,7 +400,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
|||||||
// .setEndTime(LocalDateTime.now());
|
// .setEndTime(LocalDateTime.now());
|
||||||
// taskExtMapper.updateByTaskId(taskExtDO);
|
// taskExtMapper.updateByTaskId(taskExtDO);
|
||||||
|
|
||||||
updateTaskStatus(task.getId(), BpmProcessInstanceResultEnum.APPROVE.getResult());
|
updateTaskStatus(task.getId(), BpmTaskStatustEnum.APPROVE.getStatus());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -405,11 +413,11 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Integer status = (Integer) task.getTaskLocalVariables().get(BpmConstants.TASK_VARIABLE_STATUS);
|
Integer status = (Integer) task.getTaskLocalVariables().get(BpmConstants.TASK_VARIABLE_STATUS);
|
||||||
if (BpmProcessInstanceResultEnum.isEndResult(status)) {
|
if (BpmTaskStatustEnum.isEndStatus(status)) {
|
||||||
log.error("[updateTaskExtCancel][taskId({}) 处于结果({}),无需进行更新]", taskId, status);
|
log.error("[updateTaskExtCancel][taskId({}) 处于结果({}),无需进行更新]", taskId, status);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
updateTaskStatus(taskId, BpmProcessInstanceResultEnum.CANCEL.getResult());
|
updateTaskStatus(taskId, BpmTaskStatustEnum.CANCEL.getStatus());
|
||||||
|
|
||||||
if (true) {
|
if (true) {
|
||||||
return;
|
return;
|
||||||
@ -438,7 +446,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
|||||||
// return;
|
// return;
|
||||||
// }
|
// }
|
||||||
Integer status = (Integer) task.getTaskLocalVariables().get(BpmConstants.TASK_VARIABLE_STATUS);
|
Integer status = (Integer) task.getTaskLocalVariables().get(BpmConstants.TASK_VARIABLE_STATUS);
|
||||||
if (BpmProcessInstanceResultEnum.isEndResult(status)) {
|
if (BpmTaskStatustEnum.isEndStatus(status)) {
|
||||||
log.error("[updateTaskExtCancel][taskId({}) 处于结果({}),无需进行更新]", taskId, status);
|
log.error("[updateTaskExtCancel][taskId({}) 处于结果({}),无需进行更新]", taskId, status);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -446,7 +454,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
|||||||
// 更新任务
|
// 更新任务
|
||||||
// taskExtMapper.updateById(new BpmTaskExtDO().setId(taskExt.getId()).setResult(BpmProcessInstanceResultEnum.CANCEL.getResult())
|
// taskExtMapper.updateById(new BpmTaskExtDO().setId(taskExt.getId()).setResult(BpmProcessInstanceResultEnum.CANCEL.getResult())
|
||||||
// .setEndTime(LocalDateTime.now()).setReason(BpmProcessInstanceDeleteReasonEnum.translateReason(task.getDeleteReason())));
|
// .setEndTime(LocalDateTime.now()).setReason(BpmProcessInstanceDeleteReasonEnum.translateReason(task.getDeleteReason())));
|
||||||
updateTaskStatus(taskId, BpmProcessInstanceResultEnum.CANCEL.getResult());
|
updateTaskStatus(taskId, BpmTaskStatustEnum.CANCEL.getStatus());
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
@ -520,19 +528,11 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
|||||||
throw exception(TASK_IS_PENDING);
|
throw exception(TASK_IS_PENDING);
|
||||||
}
|
}
|
||||||
// 1.2 校验源头和目标节点的关系,并返回目标元素
|
// 1.2 校验源头和目标节点的关系,并返回目标元素
|
||||||
FlowElement targetElement = validateTargetTaskCanReturn(task.getTaskDefinitionKey(), reqVO.getTargetTaskDefinitionKey(), task.getProcessDefinitionId());
|
FlowElement targetElement = validateTargetTaskCanReturn(task.getTaskDefinitionKey(),
|
||||||
|
reqVO.getTargetTaskDefinitionKey(), task.getProcessDefinitionId());
|
||||||
|
|
||||||
// 3. 更新任务扩展表 TODO 芋艿:需要提前搞
|
// 2. 调用 Flowable 框架的回退逻辑
|
||||||
updateTaskStatus(task.getId(), BpmProcessInstanceResultEnum.BACK.getResult());
|
returnTask(task, targetElement, reqVO);
|
||||||
|
|
||||||
// 2. 调用 flowable 框架的回退逻辑
|
|
||||||
returnTask0(task, targetElement, reqVO);
|
|
||||||
|
|
||||||
// 3. 更新任务扩展表
|
|
||||||
// updateTaskStatus(task.getId(), BpmProcessInstanceResultEnum.BACK.getResult());
|
|
||||||
// taskExtMapper.updateByTaskId(new BpmTaskExtDO().setTaskId(task.getId())
|
|
||||||
// .setResult(BpmProcessInstanceResultEnum.BACK.getResult())
|
|
||||||
// .setEndTime(LocalDateTime.now()).setReason(reqVO.getReason()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -568,7 +568,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
|||||||
* @param targetElement 需要回退到的目标任务
|
* @param targetElement 需要回退到的目标任务
|
||||||
* @param reqVO 前端参数封装
|
* @param reqVO 前端参数封装
|
||||||
*/
|
*/
|
||||||
public void returnTask0(Task currentTask, FlowElement targetElement, BpmTaskReturnReqVO reqVO) {
|
public void returnTask(Task currentTask, FlowElement targetElement, BpmTaskReturnReqVO reqVO) {
|
||||||
// 1. 获得所有需要回撤的任务 taskDefinitionKey,用于稍后的 moveActivityIdsToSingleActivityId 回撤
|
// 1. 获得所有需要回撤的任务 taskDefinitionKey,用于稍后的 moveActivityIdsToSingleActivityId 回撤
|
||||||
// 1.1 获取所有正常进行的任务节点 Key
|
// 1.1 获取所有正常进行的任务节点 Key
|
||||||
List<Task> taskList = taskService.createTaskQuery().processInstanceId(currentTask.getProcessInstanceId()).list();
|
List<Task> taskList = taskService.createTaskQuery().processInstanceId(currentTask.getProcessInstanceId()).list();
|
||||||
@ -584,11 +584,11 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
|||||||
if (!returnTaskKeyList.contains(task.getTaskDefinitionKey())) {
|
if (!returnTaskKeyList.contains(task.getTaskDefinitionKey())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// 2.1 添加评论
|
||||||
taskService.addComment(task.getId(), currentTask.getProcessInstanceId(),
|
taskService.addComment(task.getId(), currentTask.getProcessInstanceId(),
|
||||||
BpmCommentTypeEnum.BACK.getType().toString(), reqVO.getReason());
|
BpmCommentTypeEnum.BACK.getType(), reqVO.getReason());
|
||||||
|
// 2.2 更新 task 状态 + 原因
|
||||||
// TODO 芋艿:这里加下驳回的
|
updateTaskStatus(task.getId(), BpmTaskStatustEnum.BACK.getStatus(), reqVO.getReason());
|
||||||
updateTaskStatus(task.getId(), BpmProcessInstanceResultEnum.BACK.getResult());
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// 3. 执行驳回
|
// 3. 执行驳回
|
||||||
@ -626,7 +626,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
|||||||
// taskExtMapper.updateByTaskId(
|
// taskExtMapper.updateByTaskId(
|
||||||
// new BpmTaskExtDO().setTaskId(task.getId()).setResult(BpmProcessInstanceResultEnum.DELEGATE.getResult())
|
// new BpmTaskExtDO().setTaskId(task.getId()).setResult(BpmProcessInstanceResultEnum.DELEGATE.getResult())
|
||||||
// .setReason(reqVO.getReason()));
|
// .setReason(reqVO.getReason()));
|
||||||
updateTaskStatus(taskId, BpmProcessInstanceResultEnum.DELEGATE.getResult());
|
updateTaskStatus(taskId, BpmTaskStatustEnum.DELEGATE.getStatus());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -677,7 +677,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
|||||||
// 2.5 保存当前任务修改后的值
|
// 2.5 保存当前任务修改后的值
|
||||||
taskService.saveTask(taskEntity);
|
taskService.saveTask(taskEntity);
|
||||||
if (reqVO.getType().equals(BpmTaskAddSignTypeEnum.BEFORE.getType())) {
|
if (reqVO.getType().equals(BpmTaskAddSignTypeEnum.BEFORE.getType())) {
|
||||||
updateTaskStatus(taskEntity.getId(), BpmProcessInstanceResultEnum.WAIT.getResult()); // TODO 芋艿:貌似只能放在这个地方,不然会有并发修改的报错
|
updateTaskStatus(taskEntity.getId(), BpmTaskStatustEnum.WAIT.getStatus()); // TODO 芋艿:貌似只能放在这个地方,不然会有并发修改的报错
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. 创建加签任务
|
// 3. 创建加签任务
|
||||||
@ -767,7 +767,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
|||||||
taskService.saveTask(task);
|
taskService.saveTask(task);
|
||||||
// 3. TODO
|
// 3. TODO
|
||||||
if (BpmTaskAddSignTypeEnum.AFTER.getType().equals(parentTask.getScopeType())) {
|
if (BpmTaskAddSignTypeEnum.AFTER.getType().equals(parentTask.getScopeType())) {
|
||||||
updateTaskStatus(task.getId(), BpmProcessInstanceResultEnum.WAIT.getResult());
|
updateTaskStatus(task.getId(), BpmTaskStatustEnum.WAIT.getStatus());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ public class BpmnModelUtils {
|
|||||||
/**
|
/**
|
||||||
* 获得 BPMN 流程中,指定的元素们
|
* 获得 BPMN 流程中,指定的元素们
|
||||||
*
|
*
|
||||||
* @param model
|
* @param model 模型
|
||||||
* @param clazz 指定元素。例如说,{@link UserTask}、{@link Gateway} 等等
|
* @param clazz 指定元素。例如说,{@link UserTask}、{@link Gateway} 等等
|
||||||
* @return 元素们
|
* @return 元素们
|
||||||
*/
|
*/
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package cn.iocoder.yudao.module.crm.util;
|
package cn.iocoder.yudao.module.crm.util;
|
||||||
|
|
||||||
import cn.hutool.core.lang.Assert;
|
import cn.hutool.core.lang.Assert;
|
||||||
import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum;
|
import cn.iocoder.yudao.module.bpm.enums.task.BpmTaskStatustEnum;
|
||||||
import cn.iocoder.yudao.module.crm.enums.common.CrmAuditStatusEnum;
|
import cn.iocoder.yudao.module.crm.enums.common.CrmAuditStatusEnum;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -17,9 +17,9 @@ public class CrmAuditStatusUtils {
|
|||||||
* @param bpmResult BPM 审批结果
|
* @param bpmResult BPM 审批结果
|
||||||
*/
|
*/
|
||||||
public static Integer convertBpmResultToAuditStatus(Integer bpmResult) {
|
public static Integer convertBpmResultToAuditStatus(Integer bpmResult) {
|
||||||
Integer auditStatus = BpmProcessInstanceResultEnum.APPROVE.getResult().equals(bpmResult) ? CrmAuditStatusEnum.APPROVE.getStatus()
|
Integer auditStatus = BpmTaskStatustEnum.APPROVE.getStatus().equals(bpmResult) ? CrmAuditStatusEnum.APPROVE.getStatus()
|
||||||
: BpmProcessInstanceResultEnum.REJECT.getResult().equals(bpmResult) ? CrmAuditStatusEnum.REJECT.getStatus()
|
: BpmTaskStatustEnum.REJECT.getStatus().equals(bpmResult) ? CrmAuditStatusEnum.REJECT.getStatus()
|
||||||
: BpmProcessInstanceResultEnum.CANCEL.getResult().equals(bpmResult) ? BpmProcessInstanceResultEnum.CANCEL.getResult() : null;
|
: BpmTaskStatustEnum.CANCEL.getStatus().equals(bpmResult) ? BpmTaskStatustEnum.CANCEL.getStatus() : null;
|
||||||
Assert.notNull(auditStatus, "BPM 审批结果({}) 转换失败", bpmResult);
|
Assert.notNull(auditStatus, "BPM 审批结果({}) 转换失败", bpmResult);
|
||||||
return auditStatus;
|
return auditStatus;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user