1.技术监督试运行bug修改
2.审核不通过展示表单信息和审核信息
This commit is contained in:
@@ -4,6 +4,8 @@ import com.njcn.bpm.pojo.dto.BpmProcessInstanceCreateReqDTO;
|
||||
import com.njcn.bpm.pojo.dto.PageResult;
|
||||
import com.njcn.bpm.pojo.param.instance.BpmProcessInstanceCancelParam;
|
||||
import com.njcn.bpm.pojo.param.instance.BpmProcessInstancePageParam;
|
||||
import com.njcn.bpm.pojo.param.task.BpmTaskRejectParam;
|
||||
import org.flowable.engine.TaskService;
|
||||
import org.flowable.engine.delegate.event.FlowableCancelledEvent;
|
||||
import org.flowable.engine.history.HistoricProcessInstance;
|
||||
import org.flowable.engine.runtime.ProcessInstance;
|
||||
@@ -146,6 +148,13 @@ public interface IBpmProcessInstanceService {
|
||||
*/
|
||||
void updateProcessInstanceReject(String id, String reason);
|
||||
|
||||
/**
|
||||
* 更新 ProcessInstance 拓展记录为不通过
|
||||
*
|
||||
* @param id 流程编号
|
||||
* @param reason 理由。例如说,审批不通过时,需要传递该值
|
||||
*/
|
||||
void updateProcessInstanceFromReject(String id, String reason, TaskService taskService, BpmTaskRejectParam bpmTaskRejectParam);
|
||||
/**
|
||||
* 用于测试过程删除流程,正式环境慎用
|
||||
* @author cdf
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.njcn.bpm.service.task.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
@@ -13,6 +14,7 @@ import com.njcn.bpm.pojo.dto.BpmProcessInstanceCreateReqDTO;
|
||||
import com.njcn.bpm.pojo.dto.PageResult;
|
||||
import com.njcn.bpm.pojo.param.instance.BpmProcessInstanceCancelParam;
|
||||
import com.njcn.bpm.pojo.param.instance.BpmProcessInstancePageParam;
|
||||
import com.njcn.bpm.pojo.param.task.BpmTaskRejectParam;
|
||||
import com.njcn.bpm.service.IBpmProcessDefinitionService;
|
||||
import com.njcn.bpm.service.task.IBpmProcessInstanceService;
|
||||
import com.njcn.bpm.strategy.BpmTaskCandidateStartUserSelectStrategy;
|
||||
@@ -30,6 +32,7 @@ import org.flowable.bpmn.model.UserTask;
|
||||
import org.flowable.common.engine.impl.identity.Authentication;
|
||||
import org.flowable.engine.HistoryService;
|
||||
import org.flowable.engine.RuntimeService;
|
||||
import org.flowable.engine.TaskService;
|
||||
import org.flowable.engine.delegate.event.FlowableCancelledEvent;
|
||||
import org.flowable.engine.history.HistoricProcessInstance;
|
||||
import org.flowable.engine.repository.ProcessDefinition;
|
||||
@@ -72,7 +75,7 @@ public class BpmProcessInstanceServiceImpl implements IBpmProcessInstanceService
|
||||
@Resource
|
||||
private IBpmProcessDefinitionService processDefinitionService;
|
||||
|
||||
// @Resource
|
||||
// @Resource
|
||||
// private BpmMessageService messageService;
|
||||
//
|
||||
@Resource
|
||||
@@ -90,7 +93,6 @@ public class BpmProcessInstanceServiceImpl implements IBpmProcessInstanceService
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public List<ProcessInstance> getProcessInstances(Set<String> ids) {
|
||||
return runtimeService.createProcessInstanceQuery().processInstanceIds(ids).list();
|
||||
@@ -115,7 +117,7 @@ public class BpmProcessInstanceServiceImpl implements IBpmProcessInstanceService
|
||||
.orderByProcessInstanceStartTime().desc();
|
||||
if (userId != null) { // 【我的流程】菜单时,需要传递该字段
|
||||
processInstanceQuery.startedBy(userId);
|
||||
} else if (bpmProcessInstancePageParam.getStartUserId() != null) { // 【管理流程】菜单时,才会传递该字段
|
||||
} else if (bpmProcessInstancePageParam.getStartUserId() != null) { // 【管理流程】菜单时,才会传递该字段
|
||||
processInstanceQuery.startedBy(bpmProcessInstancePageParam.getStartUserId());
|
||||
}
|
||||
if (StrUtil.isNotEmpty(bpmProcessInstancePageParam.getName())) {
|
||||
@@ -144,7 +146,7 @@ public class BpmProcessInstanceServiceImpl implements IBpmProcessInstanceService
|
||||
}
|
||||
// 查询列表
|
||||
int offset = PageFactory.getPageSize(bpmProcessInstancePageParam) * (PageFactory.getPageNum(bpmProcessInstancePageParam) - 1);
|
||||
List<HistoricProcessInstance> processInstanceList = processInstanceQuery.listPage(offset, PageFactory.getPageSize(bpmProcessInstancePageParam));
|
||||
List<HistoricProcessInstance> processInstanceList = processInstanceQuery.listPage(offset, PageFactory.getPageSize(bpmProcessInstancePageParam));
|
||||
return new PageResult<>(processInstanceList, processInstanceCount);
|
||||
}
|
||||
|
||||
@@ -226,7 +228,7 @@ public class BpmProcessInstanceServiceImpl implements IBpmProcessInstanceService
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancelProcessInstanceByStartUser(String userId, BpmProcessInstanceCancelParam cancelReqVO) {
|
||||
public void cancelProcessInstanceByStartUser(String userId, BpmProcessInstanceCancelParam cancelReqVO) {
|
||||
// 1.1 校验流程实例存在
|
||||
ProcessInstance instance = getProcessInstance(cancelReqVO.getProcessInstanceId());
|
||||
if (instance == null) {
|
||||
@@ -285,9 +287,18 @@ public class BpmProcessInstanceServiceImpl implements IBpmProcessInstanceService
|
||||
|
||||
@Override
|
||||
public void updateProcessInstanceWhenApprove(ProcessInstance instance) {
|
||||
//判断传入参数是否是,不通过信息不通过则需要更新流程信息为不通过
|
||||
Integer processInstanceStatus = BpmProcessInstanceStatusEnum.APPROVE.getStatus();
|
||||
Map<String, Object> processVariables = instance.getProcessVariables();
|
||||
if (processVariables.containsKey(BpmConstants.PROCESS_INSTANCE_VARIABLE_STATUS)) {
|
||||
Integer stata =Integer.valueOf(processVariables.get(BpmConstants.PROCESS_INSTANCE_VARIABLE_STATUS).toString());
|
||||
if (BpmProcessInstanceStatusEnum.REJECT.getStatus()==stata) {
|
||||
processInstanceStatus = BpmProcessInstanceStatusEnum.REJECT.getStatus();
|
||||
}
|
||||
}
|
||||
// 1. 更新流程实例 status
|
||||
runtimeService.setVariable(instance.getId(), BpmConstants.PROCESS_INSTANCE_VARIABLE_STATUS,
|
||||
BpmProcessInstanceStatusEnum.APPROVE.getStatus());
|
||||
processInstanceStatus);
|
||||
|
||||
// 2. 发送流程被【通过】的消息
|
||||
// messageService.sendMessageWhenProcessInstanceApprove(BpmProcessInstanceConvert.INSTANCE.buildProcessInstanceApproveMessage(instance));
|
||||
@@ -296,7 +307,7 @@ public class BpmProcessInstanceServiceImpl implements IBpmProcessInstanceService
|
||||
// 注意:此时如果去查询 ProcessInstance 的话,字段是不全的,所以去查询了 HistoricProcessInstance
|
||||
HistoricProcessInstance processInstance = getHistoricProcessInstance(instance.getId());
|
||||
processInstanceEventPublisher.sendProcessInstanceResultEvent(
|
||||
BpmProcessInstanceConvert.INSTANCE.buildProcessInstanceStatusEvent(this, processInstance, BpmProcessInstanceStatusEnum.APPROVE.getStatus()));
|
||||
BpmProcessInstanceConvert.INSTANCE.buildProcessInstanceStatusEvent(this, processInstance, processInstanceStatus));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -314,7 +325,31 @@ public class BpmProcessInstanceServiceImpl implements IBpmProcessInstanceService
|
||||
|
||||
// 4. 发送流程实例的状态事件
|
||||
processInstanceEventPublisher.sendProcessInstanceResultEvent(
|
||||
BpmProcessInstanceConvert.INSTANCE.buildProcessInstanceStatusEvent(this, processInstance,reason ,BpmProcessInstanceStatusEnum.REJECT.getStatus()));
|
||||
BpmProcessInstanceConvert.INSTANCE.buildProcessInstanceStatusEvent(this, processInstance, reason, BpmProcessInstanceStatusEnum.REJECT.getStatus()));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateProcessInstanceFromReject(String id, String reason, TaskService taskService, BpmTaskRejectParam bpmTaskRejectParam) {
|
||||
// 1. 更新流程实例 status
|
||||
runtimeService.setVariable(id, BpmConstants.PROCESS_INSTANCE_VARIABLE_STATUS, BpmProcessInstanceStatusEnum.REJECT.getStatus());
|
||||
|
||||
// 2. 删除流程实例,以实现驳回任务时,取消整个审批流程
|
||||
ProcessInstance processInstance = getProcessInstance(id);
|
||||
// 3.3 调用 BPM complete 去完成任务
|
||||
// 其中,variables 是存储动态表单到 local 任务级别。过滤一下,避免 ProcessInstance 系统级的变量被占用
|
||||
if (CollectionUtil.isNotEmpty(bpmTaskRejectParam.getVariables())) {
|
||||
Map<String, Object> variables = FlowableUtils.filterTaskFormVariable(bpmTaskRejectParam.getVariables());
|
||||
taskService.complete(bpmTaskRejectParam.getId(), variables, false);
|
||||
} else {
|
||||
taskService.complete(bpmTaskRejectParam.getId());
|
||||
}
|
||||
//这是删除所有信息,
|
||||
// deleteProcessInstance(id, StrUtil.format(BpmDeleteReasonEnum.REJECT_TASK.format(reason)));
|
||||
// 4. 发送流程实例的状态事件
|
||||
processInstanceEventPublisher.sendProcessInstanceResultEvent(
|
||||
BpmProcessInstanceConvert.INSTANCE.buildProcessInstanceStatusEvent(this, processInstance, reason, BpmProcessInstanceStatusEnum.REJECT.getStatus()));
|
||||
|
||||
}
|
||||
|
||||
public void deleteProcessInstance(String id, String reason) {
|
||||
|
||||
@@ -346,7 +346,7 @@ public class BpmTaskServiceImpl implements IBpmTaskService {
|
||||
BpmCommentTypeEnum.REJECT.formatComment(bpmTaskRejectParam.getReason()));
|
||||
|
||||
// 3. 更新流程实例,审批不通过!
|
||||
processInstanceService.updateProcessInstanceReject(instance.getProcessInstanceId(), bpmTaskRejectParam.getReason());
|
||||
processInstanceService.updateProcessInstanceFromReject(instance.getProcessInstanceId(), bpmTaskRejectParam.getReason(), taskService, bpmTaskRejectParam);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user