流程消息推送修改

This commit is contained in:
furongxin 2024-04-09 22:02:33 +08:00
parent 442685e8d9
commit 1693bb20d0
5 changed files with 76 additions and 95 deletions

View File

@ -68,7 +68,8 @@ public class BpmTaskCurrentAssignLeaderScript extends BpmTaskAssignLeaderAbstrac
for (int i = 0; i < dept.getLevel(); i++) { for (int i = 0; i < dept.getLevel(); i++) {
if (i == 0) { //第一次查找 判断审批人是否为发起人部门负责人 if (i == 0) { //第一次查找 判断审批人是否为发起人部门负责人
if (!dept.getLeaderUserId().toString().equals(processInstance.getStartUserId())){ //如果发起人不是所在部门负责人时 if (assigneeUserId.toString().equals(processInstance.getStartUserId())
&& !dept.getLeaderUserId().toString().equals(processInstance.getStartUserId())){ //如果发起人不是所在部门负责人时
count = 1; count = 1;
break; break;

View File

@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmTaskExtDO; import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmTaskExtDO;
import cn.iocoder.yudao.module.bpm.service.task.BpmActivityService; import cn.iocoder.yudao.module.bpm.service.task.BpmActivityService;
import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService;
import cn.iocoder.yudao.module.bpm.service.task.BpmTaskService; import cn.iocoder.yudao.module.bpm.service.task.BpmTaskService;
import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -38,10 +37,6 @@ public class BpmTaskEventListener extends AbstractFlowableEngineEventListener {
@Lazy // 解决循环依赖 @Lazy // 解决循环依赖
private BpmActivityService activityService; private BpmActivityService activityService;
@Resource
@Lazy // 解决循环依赖
private BpmProcessInstanceService processInstanceService;
public static final Set<FlowableEngineEventType> TASK_EVENTS = ImmutableSet.<FlowableEngineEventType>builder() public static final Set<FlowableEngineEventType> TASK_EVENTS = ImmutableSet.<FlowableEngineEventType>builder()
.add(FlowableEngineEventType.TASK_CREATED) .add(FlowableEngineEventType.TASK_CREATED)
.add(FlowableEngineEventType.TASK_ASSIGNED) .add(FlowableEngineEventType.TASK_ASSIGNED)
@ -57,9 +52,6 @@ public class BpmTaskEventListener extends AbstractFlowableEngineEventListener {
protected void taskCreated(FlowableEngineEntityEvent event) { protected void taskCreated(FlowableEngineEntityEvent event) {
Task task = (Task) event.getEntity(); Task task = (Task) event.getEntity();
taskService.createTaskExt(task); taskService.createTaskExt(task);
//在TASK创建时 监听审批人是否时发起人
taskService.approveAuto(task);
} }
@Override @Override

View File

@ -93,7 +93,7 @@ public class BpmMessageServiceImpl implements BpmMessageService {
if (ccOpenId != null) { if (ccOpenId != null) {
subscribeMessageSendApi.sendApprovalResultNotification( subscribeMessageSendApi.sendApprovalResultNotification(
BpmMessageConvert.INSTANCE.convertApprovalResultNotification( BpmMessageConvert.INSTANCE.convertApprovalResultNotification(
openId, reqDTO.getProcessInstanceName(), reqDTO.getCreateTime(), "抄送", reqDTO.getReason(), ccOpenId, reqDTO.getProcessInstanceName(), reqDTO.getCreateTime(), "抄送", reqDTO.getReason(),
reqDTO.getProcessInstanceId(), reqDTO.getProcessInstanceId(),
/** /**
* 跳转小程序类型developer为开发版trial为体验版formal为正式版默认为正式版 * 跳转小程序类型developer为开发版trial为体验版formal为正式版默认为正式版
@ -150,9 +150,10 @@ public class BpmMessageServiceImpl implements BpmMessageService {
//站内信 //站内信
notifyMessageSendApi.sendSingleMessageToAdmin(BpmMessageConvert.INSTANCE.convert1( notifyMessageSendApi.sendSingleMessageToAdmin(BpmMessageConvert.INSTANCE.convert1(
reqDTO.getAssigneeUserId(), BpmMessageEnum.TASK_ASSIGNED.getSmsTemplateCode(), templateParams)); reqDTO.getAssigneeUserId(), BpmMessageEnum.TASK_ASSIGNED.getSmsTemplateCode(), templateParams));
//微信小程序订阅消息 //微信小程序订阅消息
//发送OA流程待办提醒 //发送OA流程待办提醒
String openId = getUserOpenId(reqDTO.getStartUserId()); //只有在微信小程序登陆过用户才会有openid String openId = getUserOpenId(assigneeUserId); //只有在微信小程序登陆过用户才会有openid
if (openId != null) { if (openId != null) {
subscribeMessageSendApi.sendProcessToDoReminder(BpmMessageConvert.INSTANCE.convertProcessToDoReminder( subscribeMessageSendApi.sendProcessToDoReminder(BpmMessageConvert.INSTANCE.convertProcessToDoReminder(
openId, reqDTO.getProcessInstanceName(), reqDTO.getStartUserNickname(), reqDTO.getCreateTime(), reqDTO.getSchedule(), openId, reqDTO.getProcessInstanceName(), reqDTO.getStartUserNickname(), reqDTO.getCreateTime(), reqDTO.getSchedule(),
@ -172,7 +173,7 @@ public class BpmMessageServiceImpl implements BpmMessageService {
private String getUserOpenId(Long userId) { private String getUserOpenId(Long userId) {
AdminUserRespDTO adminUserRespDTO = adminUserApi.getUser(userId).getData(); AdminUserRespDTO adminUserRespDTO = adminUserApi.getUser(userId).getData();
String openId = adminUserRespDTO.getOpenId();
return openId; return adminUserRespDTO.getOpenId();
} }
} }

View File

@ -196,11 +196,4 @@ public interface BpmTaskService {
* @return 当前任务的taskId * @return 当前任务的taskId
*/ */
String getCurrentTaskIdByProcessInstanceId(String processInstanceId) ; String getCurrentTaskIdByProcessInstanceId(String processInstanceId) ;
/**
* 监听 判断流程审批人是否是发起人
* @param task
*/
void approveAuto(Task task);
} }

View File

@ -66,7 +66,6 @@ import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.*;
/** /**
* 流程任务实例 Service 实现类 * 流程任务实例 Service 实现类
* *
* @author jason * @author jason
*/ */
@Slf4j @Slf4j
@ -107,9 +106,9 @@ public class BpmTaskServiceImpl implements BpmTaskService {
@Override @Override
public PageResult<BpmTaskDonePageItemRespVO> getCCTaskPage(Long userId, BpmTaskDonePageReqVO pageVO) { public PageResult<BpmTaskDonePageItemRespVO> getCCTaskPage(Long userId, BpmTaskDonePageReqVO pageVO) {
// 查询被抄送的Task // 查询被抄送的Task
BpmProcessInstanceMyPageReqVO reqVO = new BpmProcessInstanceMyPageReqVO() ; BpmProcessInstanceMyPageReqVO reqVO = new BpmProcessInstanceMyPageReqVO();
reqVO.setName(pageVO.getName()) ; reqVO.setName(pageVO.getName());
reqVO.setCreateTime(pageVO.getCreateTime()) ; reqVO.setCreateTime(pageVO.getCreateTime());
// 通过 BpmProcessInstanceExtDO 先查询到对应的分页 // 通过 BpmProcessInstanceExtDO 先查询到对应的分页
PageResult<BpmProcessInstanceExtDO> pageResult = processInstanceExtMapper.selectCCPage(userId, reqVO); PageResult<BpmProcessInstanceExtDO> pageResult = processInstanceExtMapper.selectCCPage(userId, reqVO);
if (CollUtil.isEmpty(pageResult.getList())) { if (CollUtil.isEmpty(pageResult.getList())) {
@ -132,7 +131,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap( Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
convertSet(historicProcessInstanceMap.values(), instance -> Long.valueOf(instance.getStartUserId()))); convertSet(historicProcessInstanceMap.values(), instance -> Long.valueOf(instance.getStartUserId())));
// 拼接结果 // 拼接结果
return new PageResult<>(BpmTaskConvert.INSTANCE.convertListCC(pageResult.getList(),bpmTaskExtDOMap,historicProcessInstanceMap,userMap),new Long(pageResult.getTotal())); return new PageResult<>(BpmTaskConvert.INSTANCE.convertListCC(pageResult.getList(), bpmTaskExtDOMap, historicProcessInstanceMap, userMap), new Long(pageResult.getTotal()));
} }
@Override @Override
@ -142,7 +141,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
.orderByTaskCreateTime().desc(); // 创建时间倒序 .orderByTaskCreateTime().desc(); // 创建时间倒序
if (StrUtil.isNotBlank(pageVO.getName())) { if (StrUtil.isNotBlank(pageVO.getName())) {
//流程定义的名称 //流程定义的名称
taskQuery.processDefinitionName(pageVO.getName()) ; taskQuery.processDefinitionName(pageVO.getName());
// taskQuery.taskNameLike("%" + pageVO.getName() + "%"); // taskQuery.taskNameLike("%" + pageVO.getName() + "%");
} }
if (ArrayUtil.get(pageVO.getCreateTime(), 0) != null) { if (ArrayUtil.get(pageVO.getCreateTime(), 0) != null) {
@ -153,7 +152,6 @@ public class BpmTaskServiceImpl implements BpmTaskService {
} }
// 执行查询 // 执行查询
List<Task> tasks = taskQuery.listPage(PageUtils.getStart(pageVO), pageVO.getPageSize()); List<Task> tasks = taskQuery.listPage(PageUtils.getStart(pageVO), pageVO.getPageSize());
if (CollUtil.isEmpty(tasks)) { if (CollUtil.isEmpty(tasks)) {
@ -174,13 +172,13 @@ public class BpmTaskServiceImpl implements BpmTaskService {
@Override @Override
public PageResult<BpmTaskDonePageItemRespVO> getDoneTaskPage(Long userId, BpmTaskDonePageReqVO pageVO) { public PageResult<BpmTaskDonePageItemRespVO> getDoneTaskPage(Long userId, BpmTaskDonePageReqVO pageVO) {
//查询bpm_task_ext扩展表 接受人是自己不是自动审批的任务, 按任务名称分组 //查询bpm_task_ext扩展表 接受人是自己不是自动审批的任务, 按任务名称分组
LambdaQueryWrapperX<BpmTaskExtDO> queryWrapperX = new LambdaQueryWrapperX<>() ; LambdaQueryWrapperX<BpmTaskExtDO> queryWrapperX = new LambdaQueryWrapperX<>();
queryWrapperX.eq(BpmTaskExtDO::getAssigneeUserId, userId); queryWrapperX.eq(BpmTaskExtDO::getAssigneeUserId, userId);
queryWrapperX.ne(BpmTaskExtDO::getReason,BpmConstants.AUTO_APPRAVAL) ; queryWrapperX.ne(BpmTaskExtDO::getReason, BpmConstants.AUTO_APPRAVAL);
queryWrapperX.eq(BpmTaskExtDO::getDeleted, false) ; queryWrapperX.eq(BpmTaskExtDO::getDeleted, false);
queryWrapperX.groupBy(BpmTaskExtDO::getName) ; queryWrapperX.groupBy(BpmTaskExtDO::getName);
queryWrapperX.select(BpmTaskExtDO::getName) ; queryWrapperX.select(BpmTaskExtDO::getName);
List<BpmTaskExtDO> list = taskExtMapper.selectList(queryWrapperX) ; List<BpmTaskExtDO> list = taskExtMapper.selectList(queryWrapperX);
List<String> taskNames = list.stream().map(BpmTaskExtDO::getName) List<String> taskNames = list.stream().map(BpmTaskExtDO::getName)
.collect(Collectors.toList()); .collect(Collectors.toList());
@ -188,26 +186,26 @@ public class BpmTaskServiceImpl implements BpmTaskService {
HistoricTaskInstanceQuery taskQuery = historyService.createHistoricTaskInstanceQuery().finished() // 已完成 HistoricTaskInstanceQuery taskQuery = historyService.createHistoricTaskInstanceQuery().finished() // 已完成
.taskAssignee(String.valueOf(userId)) // 分配给自己 .taskAssignee(String.valueOf(userId)) // 分配给自己
.orderByHistoricTaskInstanceEndTime().desc(); // 审批时间倒序 .orderByHistoricTaskInstanceEndTime().desc(); // 审批时间倒序
if( taskNames != null && !taskNames.isEmpty()) { if (taskNames != null && !taskNames.isEmpty()) {
/** /**
* 条件是 已被分配的任务的名称分组数据作为条件查询 * 条件是 已被分配的任务的名称分组数据作为条件查询
*/ */
taskQuery.taskNameIn(taskNames) ; taskQuery.taskNameIn(taskNames);
}else { } else {
/** /**
* taskNames是空或者没有数据表示没有任何分配给自己的任务且分自动审批的任务 * taskNames是空或者没有数据表示没有任何分配给自己的任务且分自动审批的任务
* 那么就输出一个不存在的任务名称可以让数据查询不出来 * 那么就输出一个不存在的任务名称可以让数据查询不出来
*/ */
taskQuery.taskName("//////") ; taskQuery.taskName("//////");
} }
if (StrUtil.isNotBlank(pageVO.getName())) { if (StrUtil.isNotBlank(pageVO.getName())) {
// taskQuery.taskNameLike("%" + pageVO.getName() + "%"); // taskQuery.taskNameLike("%" + pageVO.getName() + "%");
//流程定义的名称 //流程定义的名称
taskQuery.processDefinitionName(pageVO.getName()) ; taskQuery.processDefinitionName(pageVO.getName());
} }
LocalDateTime[] localDateTimes = pageVO.getCreateTime() ; LocalDateTime[] localDateTimes = pageVO.getCreateTime();
if( localDateTimes != null) { if (localDateTimes != null) {
if (localDateTimes[0] != null) { if (localDateTimes[0] != null) {
taskQuery.taskCreatedAfter(DateUtils.of(localDateTimes[0])); taskQuery.taskCreatedAfter(DateUtils.of(localDateTimes[0]));
} }
@ -369,7 +367,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
* 判定流程的走向这里是流程审核节点就是流程设计中的任意审核节点 * 判定流程的走向这里是流程审核节点就是流程设计中的任意审核节点
* 根据当前审核人的岗位判定流程走向 * 根据当前审核人的岗位判定流程走向
*/ */
Map<String, Object> paramMap = instance.getProcessVariables() ; Map<String, Object> paramMap = instance.getProcessVariables();
// // 获得 User // // 获得 User
// AdminUserRespDTO examineUser = adminUserApi.getUser(userId).getCheckedData(); // AdminUserRespDTO examineUser = adminUserApi.getUser(userId).getCheckedData();
@ -403,7 +401,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
paramMap.put("level", startDeptInfo.getLevel().toString()); paramMap.put("level", startDeptInfo.getLevel().toString());
} }
if( postIds == null || postIds.isEmpty() ) { if (postIds == null || postIds.isEmpty()) {
// 当前审批用户未配置岗位 // 当前审批用户未配置岗位
// 操作失败原因您未配置岗位请联系管理员操作 // 操作失败原因您未配置岗位请联系管理员操作
throw exception(TASK_OPERATE_FAIL_USER_NO_POST); throw exception(TASK_OPERATE_FAIL_USER_NO_POST);
@ -421,7 +419,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
paramMap.put("user_id", userId.toString()); paramMap.put("user_id", userId.toString());
paramMap.put("dept_id", startUser.getDeptId().toString()); //配置发起人部门id paramMap.put("dept_id", startUser.getDeptId().toString()); //配置发起人部门id
paramMap.put("approve_reason",reqVO.getReason()) ; //通过原因---因为Task任务的通过是通过监听事件处理的reason数据无法传递给监听函数所以通过此中方法传递 paramMap.put("approve_reason", reqVO.getReason()); //通过原因---因为Task任务的通过是通过监听事件处理的reason数据无法传递给监听函数所以通过此中方法传递
taskService.complete(task.getId(), paramMap); taskService.complete(task.getId(), paramMap);
// 更新任务拓展表为通过 // 更新任务拓展表为通过
taskExtMapper.updateByTaskId( taskExtMapper.updateByTaskId(
@ -476,7 +474,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
// 3. 处理加签情况 // 3. 处理加签情况
String scopeType = parentTask.getScopeType(); String scopeType = parentTask.getScopeType();
if(!validateSignType(scopeType)){ if (!validateSignType(scopeType)) {
return; return;
} }
// 3.1 情况一处理向前加签 // 3.1 情况一处理向前加签
@ -659,7 +657,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
*/ */
private Task validateTask(Long userId, String taskId) { private Task validateTask(Long userId, String taskId) {
Task task = validateTaskExist(taskId); Task task = validateTaskExist(taskId);
if( userId != null ) { if (userId != null) {
if (!Objects.equals(userId, NumberUtils.parseLong(task.getAssignee()))) { if (!Objects.equals(userId, NumberUtils.parseLong(task.getAssignee()))) {
throw exception(TASK_OPERATE_FAIL_ASSIGN_NOT_SELF); throw exception(TASK_OPERATE_FAIL_ASSIGN_NOT_SELF);
} }
@ -721,26 +719,60 @@ public class BpmTaskServiceImpl implements BpmTaskService {
@Override @Override
public void updateTaskExtAssign(Task task) { public void updateTaskExtAssign(Task task) {
BpmTaskExtDO taskExtDO = // BpmTaskExtDO taskExtDO =
new BpmTaskExtDO().setAssigneeUserId(NumberUtils.parseLong(task.getAssignee())).setTaskId(task.getId()); // new BpmTaskExtDO().setAssigneeUserId(NumberUtils.parseLong(task.getAssignee())).setTaskId(task.getId());
taskExtMapper.updateByTaskId(taskExtDO); // taskExtMapper.updateByTaskId(taskExtDO);
// 发送通知在事务提交时批量执行操作所以直接查询会无法查询到 ProcessInstance所以这里是通过监听事务的提交来实现 // 发送通知在事务提交时批量执行操作所以直接查询会无法查询到 ProcessInstance所以这里是通过监听事务的提交来实现
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() { TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
@Override @Override
public void afterCommit() { public void afterCommit() {
if (StrUtil.isNotEmpty(task.getAssignee())) { if (StrUtil.isNotEmpty(task.getAssignee())) {
ProcessInstance processInstance =
processInstanceService.getProcessInstance(task.getProcessInstanceId()); ProcessInstance processInstance = processInstanceService.getProcessInstance(task.getProcessInstanceId());
if( processInstance != null ) { if (processInstance != null) {
// 获得任务列表 // 获得任务列表
List<BpmTaskRespVO> BpmTaskRespVOs = getTaskListByProcessInstanceId(processInstance.getProcessInstanceId()) ; List<BpmTaskRespVO> BpmTaskRespVOs = getTaskListByProcessInstanceId(processInstance.getProcessInstanceId());
AdminUserRespDTO startUser = adminUserApi.getUser(Long.valueOf(processInstance.getStartUserId())).getCheckedData(); AdminUserRespDTO startUser = adminUserApi.getUser(Long.valueOf(processInstance.getStartUserId())).getCheckedData();
//发送信息通知
messageService.sendMessageWhenTaskAssigned( messageService.sendMessageWhenTaskAssigned(
BpmTaskConvert.INSTANCE.convert(processInstance, startUser, task, BpmTaskRespVOs)); BpmTaskConvert.INSTANCE.convert(processInstance, startUser, task, BpmTaskRespVOs));
} }
} }
} }
@Override
public void afterCompletion(int status) {
if(TransactionSynchronization.STATUS_COMMITTED == status){
ProcessInstance processInstance = processInstanceService.getProcessInstance(task.getProcessInstanceId());
//如果当前审批人是流程发起人则自动通过当前审批节点
if (processInstance.getStartUserId().equals(task.getAssignee())) {
BpmTaskApproveReqVO reqVO = new BpmTaskApproveReqVO();
reqVO.setId(task.getId());
reqVO.setReason(BpmConstants.AUTO_APPRAVAL);
approveTask(Long.valueOf(task.getAssignee()), reqVO);
} else {
//判断 当前审批人是否在该流程中 已通过审批
//如果有则自动审批通过该审批人节点
Long count = taskExtMapper.selectListCount(Long.valueOf(task.getAssignee()), task.getProcessInstanceId());
if (count > 0L) {
BpmTaskApproveReqVO reqVO = new BpmTaskApproveReqVO();
reqVO.setId(task.getId());
reqVO.setReason(BpmConstants.AUTO_APPRAVAL);
approveTask(Long.valueOf(task.getAssignee()), reqVO);
}
}
}
}
}); });
} }
@ -1083,11 +1115,12 @@ public class BpmTaskServiceImpl implements BpmTaskService {
/** /**
* 判断当前类型是否为加签 * 判断当前类型是否为加签
*
* @param scopeType 任务的 scopeType * @param scopeType 任务的 scopeType
* @return 当前 scopeType 为加签则返回 true * @return 当前 scopeType 为加签则返回 true
*/ */
private boolean validateSignType(String scopeType){ private boolean validateSignType(String scopeType) {
return StrUtil.equalsAny(scopeType,BpmTaskAddSignTypeEnum.BEFORE.getType(),scopeType, BpmTaskAddSignTypeEnum.AFTER.getType()); return StrUtil.equalsAny(scopeType, BpmTaskAddSignTypeEnum.BEFORE.getType(), scopeType, BpmTaskAddSignTypeEnum.AFTER.getType());
} }
/** /**
@ -1105,7 +1138,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
//控制遍历的次数不超过 Byte.MAX_VALUE避免脏数据造成死循环 //控制遍历的次数不超过 Byte.MAX_VALUE避免脏数据造成死循环
int count = 0; int count = 0;
// TODO @海< 的前后空格要注意哈 // TODO @海< 的前后空格要注意哈
while (!stack.isEmpty() && count<Byte.MAX_VALUE) { while (!stack.isEmpty() && count < Byte.MAX_VALUE) {
// 1.2 弹出栈顶任务ID // 1.2 弹出栈顶任务ID
String taskId = stack.pop(); String taskId = stack.pop();
// 1.3 将任务ID添加到结果集合中 // 1.3 将任务ID添加到结果集合中
@ -1179,49 +1212,10 @@ public class BpmTaskServiceImpl implements BpmTaskService {
System.out.println("当前任务节点名称: " + currentTask.getName()); System.out.println("当前任务节点名称: " + currentTask.getName());
System.out.println("当前任务节点创建时间: " + currentTask.getCreateTime()); System.out.println("当前任务节点创建时间: " + currentTask.getCreateTime());
System.out.println("当前任务节点分配给: " + currentTask.getAssignee()); System.out.println("当前任务节点分配给: " + currentTask.getAssignee());
return currentTask.getId() ; return currentTask.getId();
} else { } else {
System.out.println("没有找到当前进行中的任务节点"); System.out.println("没有找到当前进行中的任务节点");
throw exception(TASK_NOT_EXISTS); throw exception(TASK_NOT_EXISTS);
} }
} }
/**
* 监听 判断流程审批人是否是发起人
* @param task
*/
@Override
public void approveAuto(Task task) {
//在事务提交后 进行判断
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
@Override
public void afterCommit() {
ProcessInstance processInstance = processInstanceService.getProcessInstance(task.getProcessInstanceId());
//如果当前审批人是流程发起人则自动通过当前审批节点
if (processInstance.getStartUserId().equals(task.getAssignee())) {
BpmTaskApproveReqVO reqVO = new BpmTaskApproveReqVO();
reqVO.setId(task.getId());
reqVO.setReason(BpmConstants.AUTO_APPRAVAL);
approveTask(Long.valueOf(task.getAssignee()), reqVO);
}else {
//判断 当前审批人是否在该流程中 已通过审批
//如果有则自动审批通过该审批人节点
Long count = taskExtMapper.selectListCount(Long.valueOf(task.getAssignee()), task.getProcessInstanceId());
if (count > 0L) {
BpmTaskApproveReqVO reqVO = new BpmTaskApproveReqVO();
reqVO.setId(task.getId());
reqVO.setReason(BpmConstants.AUTO_APPRAVAL);
approveTask(Long.valueOf(task.getAssignee()), reqVO);
}
}
}
});
}
} }