工作流程审核不通过、预告警单处理、终端周期检测等需求

1、提交了主pom,因为需要引入达梦数据量;
2、提交了gateway的配置文件,因为部分接口没有添加到权限中,待后续增加后再注释
This commit is contained in:
2024-09-13 20:31:32 +08:00
parent 06493c07c3
commit ba6762587f
50 changed files with 1144 additions and 110 deletions

View File

@@ -97,6 +97,10 @@ public interface IBpmProcessInstanceService {
* @return 流程实例的分页
*/
PageResult<HistoricProcessInstance> getProcessInstancePage(String userId, BpmProcessInstancePageParam bpmProcessInstancePageParam);
List<HistoricProcessInstance> getRejectProcessInstanceList(String userIndex, Set<String> instanceIdSet);
//
// /**
// * 创建流程实例(提供给前端)
@@ -162,4 +166,5 @@ public interface IBpmProcessInstanceService {
*/
void delete(String id, String reason);
}

View File

@@ -175,6 +175,14 @@ public interface IBpmTaskService {
* @return 子任务列表
*/
List<Task> getTaskListByParentTaskId(String parentTaskId);
/**
* 根据用户id查询该用户所有的待办事项
*
* @param userIndex 用户id
* @return 所有待办任务
*/
List<Task> todoAllList(String userIndex);
//
// /**
// * 通过任务 ID查询任务名 Map

View File

@@ -9,6 +9,7 @@ import com.njcn.bpm.constant.BpmConstants;
import com.njcn.bpm.enums.BpmDeleteReasonEnum;
import com.njcn.bpm.enums.BpmProcessInstanceStatusEnum;
import com.njcn.bpm.enums.BpmResponseEnum;
import com.njcn.bpm.enums.BpmTaskStatusEnum;
import com.njcn.bpm.event.BpmProcessInstanceEventPublisher;
import com.njcn.bpm.pojo.dto.BpmProcessInstanceCreateReqDTO;
import com.njcn.bpm.pojo.dto.PageResult;
@@ -129,9 +130,13 @@ public class BpmProcessInstanceServiceImpl implements IBpmProcessInstanceService
if (StrUtil.isNotEmpty(bpmProcessInstancePageParam.getCategory())) {
processInstanceQuery.processDefinitionCategory(bpmProcessInstancePageParam.getCategory());
}
if (bpmProcessInstancePageParam.getStatus() != null) {
processInstanceQuery.variableValueEquals(BpmConstants.PROCESS_INSTANCE_VARIABLE_STATUS, bpmProcessInstancePageParam.getStatus());
}
//流程状态排除不通过的,不通过会放在待办中,一直到该流程通过
processInstanceQuery.variableValueNotEquals(BpmConstants.PROCESS_INSTANCE_VARIABLE_STATUS, BpmTaskStatusEnum.REJECT.getStatus());
String beginTimeStr = bpmProcessInstancePageParam.getSearchBeginTime();
String endTimeStr = bpmProcessInstancePageParam.getSearchEndTime();
@@ -150,6 +155,21 @@ public class BpmProcessInstanceServiceImpl implements IBpmProcessInstanceService
return new PageResult<>(processInstanceList, processInstanceCount);
}
@Override
public List<HistoricProcessInstance> getRejectProcessInstanceList(String userId, Set<String> instanceIdSet) {
HistoricProcessInstanceQuery processInstanceQuery = historyService.createHistoricProcessInstanceQuery()
// 只查询当前用户的流程实例
.startedBy(userId)
.includeProcessVariables()
// 只查询已驳回的流程实例
.variableValueEquals(BpmConstants.PROCESS_INSTANCE_VARIABLE_STATUS, BpmTaskStatusEnum.REJECT.getStatus())
//加上从业务表中产寻到的不通过的实例id
.processInstanceIds(instanceIdSet)
.processInstanceTenantId(FlowableUtils.getTenantId())
.orderByProcessInstanceStartTime().desc();
return processInstanceQuery.list();
}
// @Override
// @Transactional(rollbackFor = Exception.class)
// public String createProcessInstance(Long userId, @Valid BpmProcessInstanceCreateReqVO createReqVO) {
@@ -291,8 +311,8 @@ public class BpmProcessInstanceServiceImpl implements IBpmProcessInstanceService
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) {
Integer stata = Integer.valueOf(processVariables.get(BpmConstants.PROCESS_INSTANCE_VARIABLE_STATUS).toString());
if (BpmProcessInstanceStatusEnum.REJECT.getStatus() == stata) {
processInstanceStatus = BpmProcessInstanceStatusEnum.REJECT.getStatus();
}
}
@@ -306,7 +326,7 @@ public class BpmProcessInstanceServiceImpl implements IBpmProcessInstanceService
// 3. 发送流程实例的状态事件
// 注意:此时如果去查询 ProcessInstance 的话,字段是不全的,所以去查询了 HistoricProcessInstance
// 在审核不通过时,会触该信息,设置在审核通过时,才发送
if(BpmProcessInstanceStatusEnum.APPROVE.getStatus()==processInstanceStatus){
if (BpmProcessInstanceStatusEnum.APPROVE.getStatus() == processInstanceStatus) {
HistoricProcessInstance processInstance = getHistoricProcessInstance(instance.getId());
processInstanceEventPublisher.sendProcessInstanceResultEvent(
BpmProcessInstanceConvert.INSTANCE.buildProcessInstanceStatusEvent(this, processInstance, processInstanceStatus));

View File

@@ -112,6 +112,17 @@ public class BpmTaskServiceImpl implements IBpmTaskService {
return new PageResult<>(tasks, count);
}
@Override
public List<Task> todoAllList(String userIndex) {
TaskQuery taskQuery = taskService.createTaskQuery()
.taskAssignee(userIndex) // 分配给自己
.active()
.includeProcessVariables()
.orderByTaskCreateTime().desc(); // 创建时间倒序
return taskQuery.list();
}
@Override
public PageResult<HistoricTaskInstance> getTaskDonePage(String userId, BpmTaskParam.BpmTaskQueryParam bpmTaskQueryParam) {
HistoricTaskInstanceQuery taskQuery = historyService.createHistoricTaskInstanceQuery()
@@ -679,8 +690,8 @@ public class BpmTaskServiceImpl implements IBpmTaskService {
/**
* 创建加签子任务
*
* @param userIds 被加签的用户 ID
* @param taskEntity 被加签的任务
* @param userIds 被加签的用户 ID
* @param taskEntity 被加签的任务
*/
private void createSignTaskList(List<String> userIds, TaskEntityImpl taskEntity) {
if (CollUtil.isEmpty(userIds)) {
@@ -709,7 +720,7 @@ public class BpmTaskServiceImpl implements IBpmTaskService {
// 2.1 向前加签,设置审批人
if (BpmTaskSignTypeEnum.BEFORE.getType().equals(parentTask.getScopeType())) {
task.setAssignee(assignee);
// 2.2 向后加签,设置 owner 不设置 assignee 是因为不能同时审批,需要等父任务完成
// 2.2 向后加签,设置 owner 不设置 assignee 是因为不能同时审批,需要等父任务完成
} else {
task.setOwner(assignee);
}
@@ -811,6 +822,7 @@ public class BpmTaskServiceImpl implements IBpmTaskService {
return taskService.createNativeTaskQuery().sql(sql).parameter("parentTaskId", parentTaskId).list();
}
/**
* 获取子任务个数
*