|
@@ -24,17 +24,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
import com.github.yulichang.toolkit.MPJWrappers;
|
|
import com.github.yulichang.toolkit.MPJWrappers;
|
|
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
|
import com.xjrsoft.common.constant.GlobalConstant;
|
|
import com.xjrsoft.common.constant.GlobalConstant;
|
|
|
-import com.xjrsoft.common.enums.EnabledMark;
|
|
|
|
|
-import com.xjrsoft.common.enums.FormTemplateType;
|
|
|
|
|
-import com.xjrsoft.common.enums.WorkflowApproveType;
|
|
|
|
|
-import com.xjrsoft.common.enums.WorkflowAutoAgreeType;
|
|
|
|
|
-import com.xjrsoft.common.enums.WorkflowIsPrevChooseNextType;
|
|
|
|
|
-import com.xjrsoft.common.enums.WorkflowIsRecycleType;
|
|
|
|
|
-import com.xjrsoft.common.enums.WorkflowMultiInstanceFinishType;
|
|
|
|
|
-import com.xjrsoft.common.enums.WorkflowMultiInstanceType;
|
|
|
|
|
-import com.xjrsoft.common.enums.WorkflowNoHandlerType;
|
|
|
|
|
-import com.xjrsoft.common.enums.WorkflowRelationAuthType;
|
|
|
|
|
-import com.xjrsoft.common.enums.YesOrNoEnum;
|
|
|
|
|
|
|
+import com.xjrsoft.common.enums.*;
|
|
|
import com.xjrsoft.common.exception.MyException;
|
|
import com.xjrsoft.common.exception.MyException;
|
|
|
import com.xjrsoft.common.page.ConventPage;
|
|
import com.xjrsoft.common.page.ConventPage;
|
|
|
import com.xjrsoft.common.page.PageOutput;
|
|
import com.xjrsoft.common.page.PageOutput;
|
|
@@ -57,112 +47,13 @@ import com.xjrsoft.module.system.entity.Stamp;
|
|
|
import com.xjrsoft.module.system.service.IFileService;
|
|
import com.xjrsoft.module.system.service.IFileService;
|
|
|
import com.xjrsoft.module.system.service.IStampService;
|
|
import com.xjrsoft.module.system.service.IStampService;
|
|
|
import com.xjrsoft.module.workflow.constant.WorkflowConstant;
|
|
import com.xjrsoft.module.workflow.constant.WorkflowConstant;
|
|
|
-import com.xjrsoft.module.workflow.dto.AddOrSubSignDto;
|
|
|
|
|
-import com.xjrsoft.module.workflow.dto.ApproveDto;
|
|
|
|
|
-import com.xjrsoft.module.workflow.dto.ApproveMultiDto;
|
|
|
|
|
-import com.xjrsoft.module.workflow.dto.ApproveMultiInfoDto;
|
|
|
|
|
-import com.xjrsoft.module.workflow.dto.ApproveRecordListDto;
|
|
|
|
|
-import com.xjrsoft.module.workflow.dto.ApproveUserDto;
|
|
|
|
|
-import com.xjrsoft.module.workflow.dto.ApproveUserMultiDto;
|
|
|
|
|
-import com.xjrsoft.module.workflow.dto.CirculatedTaskPageDto;
|
|
|
|
|
-import com.xjrsoft.module.workflow.dto.DeployDto;
|
|
|
|
|
-import com.xjrsoft.module.workflow.dto.DraftPageDto;
|
|
|
|
|
-import com.xjrsoft.module.workflow.dto.FinishedTaskPageDto;
|
|
|
|
|
-import com.xjrsoft.module.workflow.dto.FormFinishedTaskDto;
|
|
|
|
|
-import com.xjrsoft.module.workflow.dto.GetAssigneeDto;
|
|
|
|
|
-import com.xjrsoft.module.workflow.dto.LaunchDto;
|
|
|
|
|
-import com.xjrsoft.module.workflow.dto.LaunchRelationTaskDto;
|
|
|
|
|
-import com.xjrsoft.module.workflow.dto.MonitorPageDto;
|
|
|
|
|
-import com.xjrsoft.module.workflow.dto.MoveRecycleDto;
|
|
|
|
|
-import com.xjrsoft.module.workflow.dto.MyExaminePageDto;
|
|
|
|
|
-import com.xjrsoft.module.workflow.dto.MyProcessPageDto;
|
|
|
|
|
-import com.xjrsoft.module.workflow.dto.PendingTaskPageDto;
|
|
|
|
|
-import com.xjrsoft.module.workflow.dto.ReLaunchDto;
|
|
|
|
|
-import com.xjrsoft.module.workflow.dto.RecycleDeleteDto;
|
|
|
|
|
-import com.xjrsoft.module.workflow.dto.RecycleProcessPageDto;
|
|
|
|
|
-import com.xjrsoft.module.workflow.dto.RejectNodeDto;
|
|
|
|
|
-import com.xjrsoft.module.workflow.dto.RelationTaskInfoDto;
|
|
|
|
|
-import com.xjrsoft.module.workflow.dto.RelationTaskPageDto;
|
|
|
|
|
-import com.xjrsoft.module.workflow.dto.RestartDto;
|
|
|
|
|
-import com.xjrsoft.module.workflow.dto.SaveDraftDto;
|
|
|
|
|
-import com.xjrsoft.module.workflow.dto.SetAssigneeDto;
|
|
|
|
|
-import com.xjrsoft.module.workflow.dto.SetSuspendedDto;
|
|
|
|
|
-import com.xjrsoft.module.workflow.dto.TransferDto;
|
|
|
|
|
-import com.xjrsoft.module.workflow.dto.UpdateDraftDto;
|
|
|
|
|
-import com.xjrsoft.module.workflow.dto.WithdrawDto;
|
|
|
|
|
-import com.xjrsoft.module.workflow.entity.WorkflowApproveRecord;
|
|
|
|
|
-import com.xjrsoft.module.workflow.entity.WorkflowCirculated;
|
|
|
|
|
-import com.xjrsoft.module.workflow.entity.WorkflowDelegate;
|
|
|
|
|
-import com.xjrsoft.module.workflow.entity.WorkflowDraft;
|
|
|
|
|
-import com.xjrsoft.module.workflow.entity.WorkflowExtra;
|
|
|
|
|
-import com.xjrsoft.module.workflow.entity.WorkflowFormRelation;
|
|
|
|
|
-import com.xjrsoft.module.workflow.entity.WorkflowRecord;
|
|
|
|
|
-import com.xjrsoft.module.workflow.entity.WorkflowSchema;
|
|
|
|
|
-import com.xjrsoft.module.workflow.entity.WorkflowSchemaHistory;
|
|
|
|
|
-import com.xjrsoft.module.workflow.entity.XjrWorkflowOperateRecord;
|
|
|
|
|
-import com.xjrsoft.module.workflow.mapper.WorkflowDelegateMapper;
|
|
|
|
|
-import com.xjrsoft.module.workflow.mapper.WorkflowExtraMapper;
|
|
|
|
|
-import com.xjrsoft.module.workflow.mapper.WorkflowRecordMapper;
|
|
|
|
|
-import com.xjrsoft.module.workflow.mapper.WorkflowSchemaHistoryMapper;
|
|
|
|
|
-import com.xjrsoft.module.workflow.mapper.WorkflowSchemaMapper;
|
|
|
|
|
-import com.xjrsoft.module.workflow.mapper.XjrWorkflowExtraMapper;
|
|
|
|
|
-import com.xjrsoft.module.workflow.mapper.XjrWorkflowOperateRecordMapper;
|
|
|
|
|
-import com.xjrsoft.module.workflow.model.ApiConfig;
|
|
|
|
|
-import com.xjrsoft.module.workflow.model.ApiRequestParamsConfig;
|
|
|
|
|
-import com.xjrsoft.module.workflow.model.AuthConfig;
|
|
|
|
|
-import com.xjrsoft.module.workflow.model.ButtonConfig;
|
|
|
|
|
-import com.xjrsoft.module.workflow.model.FormAssignmentConfig;
|
|
|
|
|
-import com.xjrsoft.module.workflow.model.FormConfig;
|
|
|
|
|
-import com.xjrsoft.module.workflow.model.MemberConfig;
|
|
|
|
|
-import com.xjrsoft.module.workflow.model.ProcessParamConfig;
|
|
|
|
|
-import com.xjrsoft.module.workflow.model.RelationProcessConfig;
|
|
|
|
|
-import com.xjrsoft.module.workflow.model.StartNodeConfig;
|
|
|
|
|
-import com.xjrsoft.module.workflow.model.UserTaskConfig;
|
|
|
|
|
-import com.xjrsoft.module.workflow.model.WorkflowSchemaConfig;
|
|
|
|
|
-import com.xjrsoft.module.workflow.service.IWorkflowApproveRecordService;
|
|
|
|
|
-import com.xjrsoft.module.workflow.service.IWorkflowCirculatedService;
|
|
|
|
|
-import com.xjrsoft.module.workflow.service.IWorkflowDraftService;
|
|
|
|
|
-import com.xjrsoft.module.workflow.service.IWorkflowExecuteService;
|
|
|
|
|
-import com.xjrsoft.module.workflow.service.IWorkflowExtraService;
|
|
|
|
|
-import com.xjrsoft.module.workflow.service.IWorkflowFormRelationService;
|
|
|
|
|
-import com.xjrsoft.module.workflow.service.IWorkflowRecordService;
|
|
|
|
|
-import com.xjrsoft.module.workflow.service.IXjrWorkflowOperateRecordService;
|
|
|
|
|
|
|
+import com.xjrsoft.module.workflow.dto.*;
|
|
|
|
|
+import com.xjrsoft.module.workflow.entity.*;
|
|
|
|
|
+import com.xjrsoft.module.workflow.mapper.*;
|
|
|
|
|
+import com.xjrsoft.module.workflow.model.*;
|
|
|
|
|
+import com.xjrsoft.module.workflow.service.*;
|
|
|
import com.xjrsoft.module.workflow.utils.WorkFlowUtil;
|
|
import com.xjrsoft.module.workflow.utils.WorkFlowUtil;
|
|
|
-import com.xjrsoft.module.workflow.vo.AllRecordListVo;
|
|
|
|
|
-import com.xjrsoft.module.workflow.vo.ApproveMultiInfoVo;
|
|
|
|
|
-import com.xjrsoft.module.workflow.vo.ApproveMultiVo;
|
|
|
|
|
-import com.xjrsoft.module.workflow.vo.CirculatedTaskPageVo;
|
|
|
|
|
-import com.xjrsoft.module.workflow.vo.DraftInfoVo;
|
|
|
|
|
-import com.xjrsoft.module.workflow.vo.DraftPageVo;
|
|
|
|
|
-import com.xjrsoft.module.workflow.vo.FinishedTaskPageVo;
|
|
|
|
|
-import com.xjrsoft.module.workflow.vo.FinishedTaskVo;
|
|
|
|
|
-import com.xjrsoft.module.workflow.vo.FormFinishedTaskVo;
|
|
|
|
|
-import com.xjrsoft.module.workflow.vo.GetAssigneeVo;
|
|
|
|
|
-import com.xjrsoft.module.workflow.vo.GetCountVo;
|
|
|
|
|
-import com.xjrsoft.module.workflow.vo.HistoryTaskVo;
|
|
|
|
|
-import com.xjrsoft.module.workflow.vo.LaunchAndApproveVo;
|
|
|
|
|
-import com.xjrsoft.module.workflow.vo.MonitorPageVo;
|
|
|
|
|
-import com.xjrsoft.module.workflow.vo.MyProcessPageVo;
|
|
|
|
|
-import com.xjrsoft.module.workflow.vo.PendingTaskVo;
|
|
|
|
|
-import com.xjrsoft.module.workflow.vo.ProcessInfoVo;
|
|
|
|
|
-import com.xjrsoft.module.workflow.vo.ProcessRecordListVo;
|
|
|
|
|
-import com.xjrsoft.module.workflow.vo.RecycleProcessInfoVo;
|
|
|
|
|
-import com.xjrsoft.module.workflow.vo.RecycleProcessPageVo;
|
|
|
|
|
-import com.xjrsoft.module.workflow.vo.RejectNodeVo;
|
|
|
|
|
-import com.xjrsoft.module.workflow.vo.RelationFormInfoVo;
|
|
|
|
|
-import com.xjrsoft.module.workflow.vo.RelationTaskInfoVo;
|
|
|
|
|
-import com.xjrsoft.module.workflow.vo.RelationTaskPageVo;
|
|
|
|
|
-import com.xjrsoft.module.workflow.vo.RestartVo;
|
|
|
|
|
-import com.xjrsoft.module.workflow.vo.StartNodeFormInfoVo;
|
|
|
|
|
-import com.xjrsoft.module.workflow.vo.StartProcessInfoVo;
|
|
|
|
|
-import com.xjrsoft.module.workflow.vo.StartProcessRelationTaskVo;
|
|
|
|
|
-import com.xjrsoft.module.workflow.vo.TaskInfoRelationTaskVo;
|
|
|
|
|
-import com.xjrsoft.module.workflow.vo.TaskInfoVo;
|
|
|
|
|
-import com.xjrsoft.module.workflow.vo.UserDefinedProcessRecordListVo;
|
|
|
|
|
-import com.xjrsoft.module.workflow.vo.UserTaskFormInfoVo;
|
|
|
|
|
-import com.xjrsoft.module.workflow.vo.UserTaskInfoVo;
|
|
|
|
|
-import com.xjrsoft.module.workflow.vo.UserTaskRelationTaskVo;
|
|
|
|
|
-import com.xjrsoft.module.workflow.vo.WorkflowSchemaInfoVo;
|
|
|
|
|
|
|
+import com.xjrsoft.module.workflow.vo.*;
|
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.AllArgsConstructor;
|
|
|
import lombok.SneakyThrows;
|
|
import lombok.SneakyThrows;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
@@ -172,12 +63,7 @@ import org.camunda.bpm.engine.HistoryService;
|
|
|
import org.camunda.bpm.engine.RepositoryService;
|
|
import org.camunda.bpm.engine.RepositoryService;
|
|
|
import org.camunda.bpm.engine.RuntimeService;
|
|
import org.camunda.bpm.engine.RuntimeService;
|
|
|
import org.camunda.bpm.engine.TaskService;
|
|
import org.camunda.bpm.engine.TaskService;
|
|
|
-import org.camunda.bpm.engine.history.HistoricActivityInstance;
|
|
|
|
|
-import org.camunda.bpm.engine.history.HistoricProcessInstance;
|
|
|
|
|
-import org.camunda.bpm.engine.history.HistoricProcessInstanceQuery;
|
|
|
|
|
-import org.camunda.bpm.engine.history.HistoricTaskInstance;
|
|
|
|
|
-import org.camunda.bpm.engine.history.HistoricTaskInstanceQuery;
|
|
|
|
|
-import org.camunda.bpm.engine.history.HistoricVariableInstance;
|
|
|
|
|
|
|
+import org.camunda.bpm.engine.history.*;
|
|
|
import org.camunda.bpm.engine.impl.persistence.entity.HistoricVariableInstanceEntity;
|
|
import org.camunda.bpm.engine.impl.persistence.entity.HistoricVariableInstanceEntity;
|
|
|
import org.camunda.bpm.engine.impl.persistence.entity.TaskEntity;
|
|
import org.camunda.bpm.engine.impl.persistence.entity.TaskEntity;
|
|
|
import org.camunda.bpm.engine.repository.Deployment;
|
|
import org.camunda.bpm.engine.repository.Deployment;
|
|
@@ -199,17 +85,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.ssssssss.magicapi.core.service.MagicAPIService;
|
|
import org.ssssssss.magicapi.core.service.MagicAPIService;
|
|
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
|
-import java.util.ArrayList;
|
|
|
|
|
-import java.util.Arrays;
|
|
|
|
|
-import java.util.Collection;
|
|
|
|
|
-import java.util.Comparator;
|
|
|
|
|
-import java.util.HashMap;
|
|
|
|
|
-import java.util.LinkedHashMap;
|
|
|
|
|
-import java.util.List;
|
|
|
|
|
-import java.util.ListIterator;
|
|
|
|
|
-import java.util.Map;
|
|
|
|
|
-import java.util.Objects;
|
|
|
|
|
-import java.util.Optional;
|
|
|
|
|
|
|
+import java.util.*;
|
|
|
import java.util.regex.Matcher;
|
|
import java.util.regex.Matcher;
|
|
|
import java.util.regex.Pattern;
|
|
import java.util.regex.Pattern;
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
@@ -1355,28 +1231,27 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
try {
|
|
try {
|
|
|
//表单提交完毕后 发起流程
|
|
//表单提交完毕后 发起流程
|
|
|
ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefinition.getId(), variableMap);
|
|
ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefinition.getId(), variableMap);
|
|
|
- System.out.println("newLaunch start 2");
|
|
|
|
|
|
|
+
|
|
|
List<Task> list = taskService.createTaskQuery().processInstanceId(processInstance.getId()).list();
|
|
List<Task> list = taskService.createTaskQuery().processInstanceId(processInstance.getId()).list();
|
|
|
- System.out.println("newLaunch start 3");
|
|
|
|
|
|
|
+
|
|
|
// List<LaunchAndApproveVo> result = isPrevChooseApprove(workflowSchemaConfig, list, variableMap);
|
|
// List<LaunchAndApproveVo> result = isPrevChooseApprove(workflowSchemaConfig, list, variableMap);
|
|
|
|
|
|
|
|
//如果不需要指定审批人 默认走自动同意规则
|
|
//如果不需要指定审批人 默认走自动同意规则
|
|
|
invokeAutoAgree(processInstance.getId(), workflowSchema.getId(), workflowSchemaConfig, list);
|
|
invokeAutoAgree(processInstance.getId(), workflowSchema.getId(), workflowSchemaConfig, list);
|
|
|
- System.out.println("newLaunch start 4");
|
|
|
|
|
|
|
+
|
|
|
//重新获取任务节点,判断是否需要指定下一审批人
|
|
//重新获取任务节点,判断是否需要指定下一审批人
|
|
|
list = taskService.createTaskQuery().processInstanceId(processInstance.getId()).list();
|
|
list = taskService.createTaskQuery().processInstanceId(processInstance.getId()).list();
|
|
|
- System.out.println("newLaunch start 5");
|
|
|
|
|
|
|
+
|
|
|
List<LaunchAndApproveVo> result = isPrevChooseApprove(workflowSchemaConfig, list, variableMap);
|
|
List<LaunchAndApproveVo> result = isPrevChooseApprove(workflowSchemaConfig, list, variableMap);
|
|
|
- System.out.println("newLaunch start 6");
|
|
|
|
|
|
|
+
|
|
|
updateFileInfo(dto.getFileFolderIds(), processInstance.getId());
|
|
updateFileInfo(dto.getFileFolderIds(), processInstance.getId());
|
|
|
- System.out.println("newLaunch start 7");
|
|
|
|
|
|
|
+
|
|
|
//保存 流程 表单 关联 数据
|
|
//保存 流程 表单 关联 数据
|
|
|
for (WorkflowFormRelation relation : relations) {
|
|
for (WorkflowFormRelation relation : relations) {
|
|
|
relation.setProcessId(processInstance.getId());
|
|
relation.setProcessId(processInstance.getId());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
formRelationService.saveBatch(relations);
|
|
formRelationService.saveBatch(relations);
|
|
|
- System.out.println("newLaunch start 8");
|
|
|
|
|
|
|
|
|
|
return result;
|
|
return result;
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
@@ -1745,6 +1620,39 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
return new Page<>();
|
|
return new Page<>();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 判断当前流程是否需要选择人员审批
|
|
|
|
|
+ */
|
|
|
|
|
+ public List<LaunchAndApproveVo> isChooseApprove(IsChooseApproveDto dto){
|
|
|
|
|
+ //根据taskid 获取任务信息
|
|
|
|
|
+ Task task = taskService.createTaskQuery().taskId(dto.getTaskId()).singleResult();
|
|
|
|
|
+
|
|
|
|
|
+ //获取当前任务变量中的 schemaId
|
|
|
|
|
+ Long schemaId = Convert.toLong(taskService.getVariable(task.getId(), WorkflowConstant.PROCESS_SCHEMA_ID_KEY));
|
|
|
|
|
+
|
|
|
|
|
+ //排除xml 查出数据
|
|
|
|
|
+ WorkflowSchema workflowSchema = workflowSchemaMapper.selectOne(Wrappers.lambdaQuery(WorkflowSchema.class).eq(WorkflowSchema::getId, schemaId).select(x -> !x.getProperty().startsWith(DB_FIELD_XML_PREFIX)));
|
|
|
|
|
+
|
|
|
|
|
+ //获取到整个流程模板的配置
|
|
|
|
|
+ WorkflowSchemaConfig workflowSchemaConfig = null;
|
|
|
|
|
+ // TODO 判断当前流程是否发生了变更
|
|
|
|
|
+ if (workflowSchema.getDefinitionId().equals(task.getProcessDefinitionId())) {
|
|
|
|
|
+ workflowSchemaConfig = JSONUtil.toBean(workflowSchema.getJsonContent(), WorkflowSchemaConfig.class);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ WorkflowSchemaHistory workflowSchemaHistory = workflowSchemaHistoryMapper.selectOne(Wrappers.lambdaQuery(WorkflowSchemaHistory.class).eq(WorkflowSchemaHistory::getDefinitionId, task.getProcessDefinitionId()));
|
|
|
|
|
+ if (workflowSchemaHistory == null) {
|
|
|
|
|
+ throw new MyException("流转历史记录已丢失!");
|
|
|
|
|
+ }
|
|
|
|
|
+ workflowSchemaConfig = JSONUtil.toBean(workflowSchemaHistory.getJsonContent(), WorkflowSchemaConfig.class);
|
|
|
|
|
+ }
|
|
|
|
|
+ List<Task> list = taskService.createTaskQuery().processInstanceId(task.getProcessInstanceId()).list();
|
|
|
|
|
+ List<LaunchAndApproveVo> result = new ArrayList<>();
|
|
|
|
|
+ //如果是同意 || 拒绝 || 其他 默认都是流程往下走
|
|
|
|
|
+ if (dto.getApprovedType() == WorkflowApproveType.AGREE.getCode() || dto.getApprovedType() == WorkflowApproveType.DISAGREE.getCode() || dto.getApprovedType() == WorkflowApproveType.OTHER.getCode()) {
|
|
|
|
|
+ result = isPrevChooseApprove(workflowSchemaConfig, list, null);
|
|
|
|
|
+ }
|
|
|
|
|
+ return result;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
@SneakyThrows
|
|
@SneakyThrows
|
|
@@ -2662,7 +2570,11 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
|
|
|
|
|
//这里不再写 发送消息的逻辑 默认使用一个 redis key 使用redis过期策略 执行发送消息的功能 解耦 偷懒
|
|
//这里不再写 发送消息的逻辑 默认使用一个 redis key 使用redis过期策略 执行发送消息的功能 解耦 偷懒
|
|
|
//每个消息默认相隔一秒 等于队列一样的逻辑
|
|
//每个消息默认相隔一秒 等于队列一样的逻辑
|
|
|
- redisUtil.set(dto.getTaskId() + StringPool.UNDERSCORE + WorkflowConstant.TASK_IS_APPOINT_APPROVE, dto.getTaskId(), 1);
|
|
|
|
|
|
|
+// redisUtil.set(dto.getTaskId() + StringPool.UNDERSCORE + WorkflowConstant.TASK_IS_APPOINT_APPROVE, dto.getTaskId(), 1);
|
|
|
|
|
+
|
|
|
|
|
+ // 发送消息
|
|
|
|
|
+ sendApproveNoticePolicy(dto.getTaskId());
|
|
|
|
|
+
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -2729,7 +2641,7 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
|
|
|
|
|
List<WorkflowDelegate> workflowDelegates = workflowDelegateMapper.selectList(wrapper);
|
|
List<WorkflowDelegate> workflowDelegates = workflowDelegateMapper.selectList(wrapper);
|
|
|
|
|
|
|
|
- int i = 1;
|
|
|
|
|
|
|
+// int i = 1;
|
|
|
//获取当前用户的信息
|
|
//获取当前用户的信息
|
|
|
User user = StpUtil.getTokenSession().get(GlobalConstant.LOGIN_USER_INFO_KEY, new User());
|
|
User user = StpUtil.getTokenSession().get(GlobalConstant.LOGIN_USER_INFO_KEY, new User());
|
|
|
for (ApproveUserDto item : approveUserList) {
|
|
for (ApproveUserDto item : approveUserList) {
|
|
@@ -2764,12 +2676,61 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
|
|
|
|
|
//这里不再写 发送消息的逻辑 默认使用一个 redis key 使用redis过期策略 执行发送消息的功能 解耦 偷懒
|
|
//这里不再写 发送消息的逻辑 默认使用一个 redis key 使用redis过期策略 执行发送消息的功能 解耦 偷懒
|
|
|
//每个消息默认相隔一秒 等于队列一样的逻辑
|
|
//每个消息默认相隔一秒 等于队列一样的逻辑
|
|
|
- redisUtil.set(item.getTaskId() + StringPool.UNDERSCORE + WorkflowConstant.TASK_IS_APPOINT_APPROVE, item.getTaskId(), i);
|
|
|
|
|
- i++;
|
|
|
|
|
|
|
+// redisUtil.set(item.getTaskId() + StringPool.UNDERSCORE + WorkflowConstant.TASK_IS_APPOINT_APPROVE, item.getTaskId(), i);
|
|
|
|
|
+// i++;
|
|
|
|
|
+
|
|
|
|
|
+ // 发送消息
|
|
|
|
|
+ sendApproveNoticePolicy(item.getTaskId());
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 根据taskid发送审核通知
|
|
|
|
|
+ */
|
|
|
|
|
+ private void sendApproveNoticePolicy(String taskId){
|
|
|
|
|
+ //获取到审批人 发送消息
|
|
|
|
|
+ Object approvedIds = taskService.getVariableLocal(taskId, WorkflowConstant.TASK_ASSIGNEE_VAR_KEY);
|
|
|
|
|
+
|
|
|
|
|
+ List<String> variableNames = ListUtil.toList(
|
|
|
|
|
+ WorkflowConstant.PROCESS_SCHEMA_ID_KEY,
|
|
|
|
|
+ WorkflowConstant.PROCESS_SCHEMA_NAME_KEY,
|
|
|
|
|
+ WorkflowConstant.PROCESS_START_USER_NAME_KEY);
|
|
|
|
|
+
|
|
|
|
|
+ Map<String, Object> variables = taskService.getVariables(taskId, variableNames);
|
|
|
|
|
+
|
|
|
|
|
+ Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
|
|
|
|
|
+
|
|
|
|
|
+ Long schemaId = Convert.toLong(taskService.getVariable(task.getId(), WorkflowConstant.PROCESS_SCHEMA_ID_KEY));
|
|
|
|
|
+
|
|
|
|
|
+ IWorkflowSchemaService workflowSchemaService = SpringUtil.getBean(IWorkflowSchemaService.class);
|
|
|
|
|
+ WorkflowSchema workflowSchema = workflowSchemaService.getOne(Wrappers.lambdaQuery(WorkflowSchema.class).eq(WorkflowSchema::getId, schemaId).select(WorkflowSchema::getJsonContent));
|
|
|
|
|
+
|
|
|
|
|
+ WorkflowSchemaConfig workflowSchemaConfig = JSONUtil.toBean(workflowSchema.getJsonContent(), WorkflowSchemaConfig.class);
|
|
|
|
|
+
|
|
|
|
|
+ Map<String, Object> userTaskConfigMap = workflowSchemaConfig.getChildNodeConfig().stream().filter(x -> x.containsValue(task.getTaskDefinitionKey())).findFirst().orElse(new HashMap<>());
|
|
|
|
|
+ UserTaskConfig userTaskConfig = Convert.convert(UserTaskConfig.class, userTaskConfigMap);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ List<String> approveIds = ListUtil.toList(Convert.toStr(approvedIds).split(StringPool.COMMA));
|
|
|
|
|
+
|
|
|
|
|
+ // 发送消息
|
|
|
|
|
+ NoticePolicyParam param = new NoticePolicyParam();
|
|
|
|
|
+ param.setNoticeUserIds(Convert.toList(Long.class, approveIds));
|
|
|
|
|
+ param.setTaskId(task.getId());
|
|
|
|
|
+ param.setTaskName(task.getName());
|
|
|
|
|
+ param.setProcessId(task.getProcessInstanceId());
|
|
|
|
|
+ param.setTaskName(task.getName());
|
|
|
|
|
+ param.setSchemaId(MapUtil.get(variables, WorkflowConstant.PROCESS_SCHEMA_ID_KEY, Long.class));
|
|
|
|
|
+ param.setSchemaName(MapUtil.get(variables, WorkflowConstant.PROCESS_SCHEMA_NAME_KEY, String.class));
|
|
|
|
|
+ param.setStartUserName(MapUtil.get(variables, WorkflowConstant.PROCESS_START_USER_NAME_KEY, String.class));
|
|
|
|
|
+ param.setNoticePolicyConfigs(userTaskConfig.getNoticePolicyConfigs());
|
|
|
|
|
+ //发送消息
|
|
|
|
|
+ WorkFlowUtil.sendApproveNoticePolicy(param,task.getName());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
public PageOutput<RelationTaskPageVo> getRelationTaskPage(RelationTaskPageDto dto) {
|
|
public PageOutput<RelationTaskPageVo> getRelationTaskPage(RelationTaskPageDto dto) {
|
|
|
//排除xml 查出数据
|
|
//排除xml 查出数据
|
|
@@ -4238,11 +4199,8 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
vo.setCanRemove(Boolean.TRUE);
|
|
vo.setCanRemove(Boolean.TRUE);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
result.add(vo);
|
|
result.add(vo);
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
}
|
|
}
|
|
|
return result;
|
|
return result;
|
|
|
}
|
|
}
|
|
@@ -4933,8 +4891,8 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
|
|
|
|
|
//如果是需要指定审批人 默认设置变量
|
|
//如果是需要指定审批人 默认设置变量
|
|
|
taskService.setVariableLocal(task.getId(), WorkflowConstant.TASK_IS_APPOINT_APPROVE, YesOrNoEnum.YES.getCode());
|
|
taskService.setVariableLocal(task.getId(), WorkflowConstant.TASK_IS_APPOINT_APPROVE, YesOrNoEnum.YES.getCode());
|
|
|
- //默认定时10分钟 如果不指定审批人 就会使用原审批人
|
|
|
|
|
- redisUtil.set(task.getId() + StringPool.UNDERSCORE + WorkflowConstant.TASK_IS_APPOINT_APPROVE, task.getId(), 10 * 60);
|
|
|
|
|
|
|
+ //默认定时2分钟 如果不指定审批人 就会使用原审批人
|
|
|
|
|
+ redisUtil.set(task.getId() + StringPool.UNDERSCORE + WorkflowConstant.TASK_IS_APPOINT_APPROVE, task.getId(), 2 * 60);
|
|
|
// redisUtil.set(GlobalConstant.CAPTCHA + StringPool.UNDERSCORE + mobile, code, 6000L);
|
|
// redisUtil.set(GlobalConstant.CAPTCHA + StringPool.UNDERSCORE + mobile, code, 6000L);
|
|
|
continue;
|
|
continue;
|
|
|
}
|
|
}
|
|
@@ -4956,8 +4914,8 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
|
|
|
|
|
//如果是需要指定审批人 默认设置变量
|
|
//如果是需要指定审批人 默认设置变量
|
|
|
taskService.setVariableLocal(task.getId(), WorkflowConstant.TASK_IS_APPOINT_APPROVE, YesOrNoEnum.YES.getCode());
|
|
taskService.setVariableLocal(task.getId(), WorkflowConstant.TASK_IS_APPOINT_APPROVE, YesOrNoEnum.YES.getCode());
|
|
|
- //默认定时10分钟 如果不指定审批人 就会使用原审批人
|
|
|
|
|
- redisUtil.set(task.getId() + StringPool.UNDERSCORE + WorkflowConstant.TASK_IS_APPOINT_APPROVE, task.getId(), 10 * 60);
|
|
|
|
|
|
|
+ //默认定时2分钟 如果不指定审批人 就会使用原审批人
|
|
|
|
|
+ redisUtil.set(task.getId() + StringPool.UNDERSCORE + WorkflowConstant.TASK_IS_APPOINT_APPROVE, task.getId(), 2 * 60);
|
|
|
continue;
|
|
continue;
|
|
|
} else {
|
|
} else {
|
|
|
List<UserRoleRelation> userRoleRelations = redisUtil.get(GlobalConstant.USER_ROLE_RELATION_CACHE_KEY, new TypeReference<List<UserRoleRelation>>() {
|
|
List<UserRoleRelation> userRoleRelations = redisUtil.get(GlobalConstant.USER_ROLE_RELATION_CACHE_KEY, new TypeReference<List<UserRoleRelation>>() {
|
|
@@ -5041,8 +4999,8 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
|
|
|
|
|
//如果是需要指定审批人 默认设置变量
|
|
//如果是需要指定审批人 默认设置变量
|
|
|
taskService.setVariableLocal(task.getId(), WorkflowConstant.TASK_IS_APPOINT_APPROVE, YesOrNoEnum.YES.getCode());
|
|
taskService.setVariableLocal(task.getId(), WorkflowConstant.TASK_IS_APPOINT_APPROVE, YesOrNoEnum.YES.getCode());
|
|
|
- //默认定时10分钟 如果不指定审批人 就会使用原审批人
|
|
|
|
|
- redisUtil.set(task.getId() + StringPool.UNDERSCORE + WorkflowConstant.TASK_IS_APPOINT_APPROVE, task.getId(), 10 * 60);
|
|
|
|
|
|
|
+ //默认定时2分钟 如果不指定审批人 就会使用原审批人
|
|
|
|
|
+ redisUtil.set(task.getId() + StringPool.UNDERSCORE + WorkflowConstant.TASK_IS_APPOINT_APPROVE, task.getId(), 2 * 60);
|
|
|
return voList;
|
|
return voList;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -5066,8 +5024,8 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
|
|
|
|
|
//如果是需要指定审批人 默认设置变量
|
|
//如果是需要指定审批人 默认设置变量
|
|
|
taskService.setVariableLocal(task.getId(), WorkflowConstant.TASK_IS_APPOINT_APPROVE, YesOrNoEnum.YES.getCode());
|
|
taskService.setVariableLocal(task.getId(), WorkflowConstant.TASK_IS_APPOINT_APPROVE, YesOrNoEnum.YES.getCode());
|
|
|
- //默认定时10分钟 如果不指定审批人 就会使用原审批人
|
|
|
|
|
- redisUtil.set(task.getId() + StringPool.UNDERSCORE + WorkflowConstant.TASK_IS_APPOINT_APPROVE, task.getId(), 10 * 60);
|
|
|
|
|
|
|
+ //默认定时2分钟 如果不指定审批人 就会使用原审批人
|
|
|
|
|
+ redisUtil.set(task.getId() + StringPool.UNDERSCORE + WorkflowConstant.TASK_IS_APPOINT_APPROVE, task.getId(), 2 * 60);
|
|
|
return voList;
|
|
return voList;
|
|
|
} else {
|
|
} else {
|
|
|
List<UserRoleRelation> userRoleRelations = redisUtil.get(GlobalConstant.USER_ROLE_RELATION_CACHE_KEY, new TypeReference<List<UserRoleRelation>>() {
|
|
List<UserRoleRelation> userRoleRelations = redisUtil.get(GlobalConstant.USER_ROLE_RELATION_CACHE_KEY, new TypeReference<List<UserRoleRelation>>() {
|
|
@@ -5660,6 +5618,8 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
|
|
|
|
|
|
|
|
operateRecord.setOperateInfo("审批人:" + task.getName() + ", 审批结果:驳回, 审批内容:由于审批超时,系统自动驳回审批");
|
|
operateRecord.setOperateInfo("审批人:" + task.getName() + ", 审批结果:驳回, 审批内容:由于审批超时,系统自动驳回审批");
|
|
|
xjrWorkflowOperateRecordMapper.insert(operateRecord);
|
|
xjrWorkflowOperateRecordMapper.insert(operateRecord);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
});
|
|
});
|
|
|
} else if (handleType == 2) {//同意
|
|
} else if (handleType == 2) {//同意
|
|
|
//新增流程发起流程记录
|
|
//新增流程发起流程记录
|