| | |
| | | import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmnModelUtils; |
| | | import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.FlowableUtils; |
| | | import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.SimpleModelUtils; |
| | | import cn.iocoder.yudao.module.bpm.service.attach.BpmBusinessAttachService; |
| | | import cn.iocoder.yudao.module.bpm.service.definition.BpmProcessDefinitionService; |
| | | import cn.iocoder.yudao.module.bpm.service.message.BpmMessageService; |
| | | import cn.iocoder.yudao.module.system.api.dept.DeptApi; |
| | |
| | | @Resource |
| | | private BpmProcessIdRedisDAO processIdRedisDAO; |
| | | |
| | | @Resource |
| | | private BpmBusinessAttachService businessAttachService; |
| | | |
| | | // ========== Query 查询相关方法 ========== |
| | | |
| | | @Override |
| | |
| | | processVariables.put(BpmnVariableConstants.PROCESS_INSTANCE_VARIABLE_START_USER_ID, loginUserId); |
| | | } |
| | | // 1.3 读取其它相关数据 |
| | | ProcessDefinition processDefinition = processDefinitionService.getProcessDefinition( |
| | | historicProcessInstance != null ? historicProcessInstance.getProcessDefinitionId() |
| | | : reqVO.getProcessDefinitionId()); |
| | | String processDefinitionId = historicProcessInstance != null |
| | | ? historicProcessInstance.getProcessDefinitionId() : reqVO.getProcessDefinitionId(); |
| | | ProcessDefinition processDefinition = processDefinitionService.getProcessDefinition(processDefinitionId); |
| | | if (processDefinition == null) { |
| | | // 流程定义不存在时返回明确的业务错误,避免 NPE / Flowable 异常变成 500「系统异常」 |
| | | throw exception(ErrorCodeConstants.PROCESS_DEFINITION_NOT_EXISTS); |
| | | } |
| | | BpmProcessDefinitionInfoDO processDefinitionInfo = processDefinitionService |
| | | .getProcessDefinitionInfo(processDefinition.getId()); |
| | | BpmnModel bpmnModel = processDefinitionService.getProcessDefinitionBpmnModel(processDefinition.getId()); |
| | |
| | | Map<String, String> formFieldsPermission = getFormFieldsPermission(bpmnModel, reqVO.getActivityId(), taskId); |
| | | |
| | | // 3. 拼接数据 |
| | | return BpmProcessInstanceConvert.INSTANCE.buildApprovalDetail(bpmnModel, processDefinition, |
| | | processDefinitionInfo, processInstance, |
| | | BpmApprovalDetailRespVO detailRespVO = BpmProcessInstanceConvert.INSTANCE.buildApprovalDetail(bpmnModel, |
| | | processDefinition, processDefinitionInfo, processInstance, |
| | | processInstanceStatus, approveNodes, todoTask, formFieldsPermission, userMap, deptMap); |
| | | |
| | | // 4. 填充业务附件配置,实现审批详情自动展示外部业务信息 |
| | | businessAttachService.fillBusinessForm(detailRespVO.getProcessDefinition(), processDefinition.getKey(), |
| | | processInstance != null ? processInstance.getBusinessKey() : null); |
| | | return detailRespVO; |
| | | } |
| | | |
| | | /** |
| | |
| | | // 获得流程定义 |
| | | ProcessDefinition definition = processDefinitionService |
| | | .getProcessDefinition(createReqVO.getProcessDefinitionId()); |
| | | if (definition == null) { |
| | | throw exception(ErrorCodeConstants.PROCESS_DEFINITION_NOT_EXISTS); |
| | | } |
| | | // 发起流程 |
| | | return createProcessInstance0(userId, definition, createReqVO.getVariables(), null, |
| | | createReqVO.getStartUserSelectAssignees()); |