|
|
@@ -14,21 +14,22 @@ import cn.start.tz.framework.common.util.object.BeanUtils;
|
|
|
import cn.start.tz.framework.common.util.object.ObjectUtils;
|
|
|
import cn.start.tz.framework.common.util.object.PageUtils;
|
|
|
import cn.start.tz.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
|
|
|
+import cn.start.tz.module.bpm.api.task.dto.BpmProcessInstanceDTO;
|
|
|
+import cn.start.tz.module.bpm.api.task.dto.BpmProcessInstanceRespDTO;
|
|
|
+import cn.start.tz.module.bpm.api.task.dto.BpmTaskRespDTO;
|
|
|
import cn.start.tz.module.bpm.controller.admin.definition.vo.model.BpmModelMetaInfoVO;
|
|
|
import cn.start.tz.module.bpm.controller.admin.definition.vo.model.simple.BpmSimpleModelNodeVO;
|
|
|
import cn.start.tz.module.bpm.controller.admin.task.vo.instance.*;
|
|
|
import cn.start.tz.module.bpm.controller.admin.task.vo.instance.BpmApprovalDetailRespVO.ActivityNodeTask;
|
|
|
import cn.start.tz.module.bpm.controller.admin.task.vo.task.BpmTaskRespVO;
|
|
|
import cn.start.tz.module.bpm.convert.task.BpmProcessInstanceConvert;
|
|
|
+import cn.start.tz.module.bpm.dal.dataobject.definition.BpmCategoryDO;
|
|
|
import cn.start.tz.module.bpm.dal.dataobject.definition.BpmProcessDefinitionInfoDO;
|
|
|
import cn.start.tz.module.bpm.dal.redis.BpmProcessIdRedisDAO;
|
|
|
import cn.start.tz.module.bpm.enums.ErrorCodeConstants;
|
|
|
import cn.start.tz.module.bpm.enums.definition.BpmModelTypeEnum;
|
|
|
import cn.start.tz.module.bpm.enums.definition.BpmSimpleModelNodeTypeEnum;
|
|
|
-import cn.start.tz.module.bpm.enums.task.BpmCommentTypeEnum;
|
|
|
-import cn.start.tz.module.bpm.enums.task.BpmProcessInstanceStatusEnum;
|
|
|
-import cn.start.tz.module.bpm.enums.task.BpmReasonEnum;
|
|
|
-import cn.start.tz.module.bpm.enums.task.BpmTaskStatusEnum;
|
|
|
+import cn.start.tz.module.bpm.enums.task.*;
|
|
|
import cn.start.tz.module.bpm.framework.flowable.core.candidate.BpmTaskCandidateInvoker;
|
|
|
import cn.start.tz.module.bpm.framework.flowable.core.candidate.strategy.dept.BpmTaskCandidateStartUserSelectStrategy;
|
|
|
import cn.start.tz.module.bpm.framework.flowable.core.enums.BpmnModelConstants;
|
|
|
@@ -37,6 +38,7 @@ import cn.start.tz.module.bpm.framework.flowable.core.event.BpmProcessInstanceEv
|
|
|
import cn.start.tz.module.bpm.framework.flowable.core.util.BpmnModelUtils;
|
|
|
import cn.start.tz.module.bpm.framework.flowable.core.util.FlowableUtils;
|
|
|
import cn.start.tz.module.bpm.framework.flowable.core.util.SimpleModelUtils;
|
|
|
+import cn.start.tz.module.bpm.service.definition.BpmCategoryService;
|
|
|
import cn.start.tz.module.bpm.service.definition.BpmProcessDefinitionService;
|
|
|
import cn.start.tz.module.bpm.service.message.BpmMessageService;
|
|
|
import cn.start.tz.module.system.api.dept.DeptApi;
|
|
|
@@ -46,6 +48,7 @@ import cn.start.tz.module.system.api.user.dto.AdminUserRespDTO;
|
|
|
import jakarta.annotation.Resource;
|
|
|
import jakarta.validation.Valid;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.flowable.bpmn.constants.BpmnXMLConstants;
|
|
|
import org.flowable.bpmn.model.*;
|
|
|
import org.flowable.engine.HistoryService;
|
|
|
@@ -64,8 +67,10 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
|
|
|
import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
import static cn.start.tz.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
|
+import static cn.start.tz.framework.common.pojo.CommonResult.success;
|
|
|
import static cn.start.tz.framework.common.util.collection.CollectionUtils.*;
|
|
|
import static cn.start.tz.module.bpm.controller.admin.task.vo.instance.BpmApprovalDetailRespVO.ActivityNode;
|
|
|
import static cn.start.tz.module.bpm.enums.ErrorCodeConstants.*;
|
|
|
@@ -123,9 +128,11 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
|
|
|
|
|
|
@Resource
|
|
|
private BpmProcessIdRedisDAO processIdRedisDAO;
|
|
|
-
|
|
|
// ========== Query 查询相关方法 ==========
|
|
|
|
|
|
+ @Resource
|
|
|
+ private BpmCategoryService categoryService;
|
|
|
+
|
|
|
@Override
|
|
|
public ProcessInstance getProcessInstance(String id) {
|
|
|
return runtimeService.createProcessInstanceQuery()
|
|
|
@@ -783,4 +790,40 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
|
|
|
BpmnModel bpmnModel = processDefinitionService.getProcessDefinitionBpmnModel(definition.getId());
|
|
|
return BpmTaskCandidateStartUserSelectStrategy.getStartUserSelectTaskList(bpmnModel);
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<BpmProcessInstanceRespDTO> getProcessInstanceList(String userId, BpmProcessInstanceDTO pageReqVO) {
|
|
|
+ pageReqVO.setPageSize(9999);
|
|
|
+ // 通过 BpmProcessInstanceExtDO 表,先查询到对应的分页
|
|
|
+ HistoricProcessInstanceQuery processInstanceQuery = historyService.createHistoricProcessInstanceQuery()
|
|
|
+ .includeProcessVariables()
|
|
|
+ .processInstanceTenantId(FlowableUtils.getTenantId())
|
|
|
+ .orderByProcessInstanceStartTime().desc();
|
|
|
+ if (userId != null) {
|
|
|
+ processInstanceQuery.startedBy(String.valueOf(userId));
|
|
|
+ }
|
|
|
+ processInstanceQuery.variableValueEquals(BpmnVariableConstants.PROCESS_INSTANCE_VARIABLE_STATUS, pageReqVO.getStatus());
|
|
|
+ if (StringUtils.isNotEmpty(pageReqVO.getProcessDefinitionKey())) {
|
|
|
+ processInstanceQuery.processDefinitionKey(pageReqVO.getProcessDefinitionKey());
|
|
|
+ }
|
|
|
+ // 查询数量
|
|
|
+ long processInstanceCount = processInstanceQuery.count();
|
|
|
+ if (processInstanceCount == 0) {
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+ // 查询列表
|
|
|
+ List<HistoricProcessInstance> processInstanceList = processInstanceQuery.listPage(PageUtils.getStart(pageReqVO), pageReqVO.getPageSize());
|
|
|
+ // 拼接返回
|
|
|
+ Map<String, List<org.flowable.task.api.Task>> taskMap = bpmTaskService.getTaskMapByProcessInstanceIds(
|
|
|
+ convertList(processInstanceList, HistoricProcessInstance::getId));
|
|
|
+ Map<String, ProcessDefinition> processDefinitionMap = processDefinitionService.getProcessDefinitionMap(
|
|
|
+ convertSet(processInstanceList, HistoricProcessInstance::getProcessDefinitionId));
|
|
|
+ Map<String, BpmCategoryDO> categoryMap = categoryService.getCategoryMap(
|
|
|
+ convertSet(processDefinitionMap.values(), ProcessDefinition::getCategory));
|
|
|
+ Map<String, BpmProcessDefinitionInfoDO> processDefinitionInfoMap = processDefinitionService.getProcessDefinitionInfoMap(
|
|
|
+ convertSet(processInstanceList, HistoricProcessInstance::getProcessDefinitionId));
|
|
|
+ //组装完整数据
|
|
|
+ List<BpmProcessInstanceRespVO> bpmProcessInstanceRespVOS = BpmProcessInstanceConvert.INSTANCE.buildProcessInstanceList(processInstanceList, processDefinitionMap, categoryMap, taskMap, null, null, processDefinitionInfoMap);
|
|
|
+ return BeanUtils.toBean(bpmProcessInstanceRespVOS, BpmProcessInstanceRespDTO.class);
|
|
|
+ }
|
|
|
}
|