| | |
| | | import cn.iocoder.yudao.module.bpm.convert.task.BpmProcessInstanceConvert; |
| | | import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmCategoryDO; |
| | | import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmProcessDefinitionInfoDO; |
| | | import cn.iocoder.yudao.module.bpm.service.attach.BpmBusinessAttachService; |
| | | import cn.iocoder.yudao.module.bpm.service.definition.BpmCategoryService; |
| | | import cn.iocoder.yudao.module.bpm.service.definition.BpmProcessDefinitionService; |
| | | import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService; |
| | |
| | | private BpmProcessDefinitionService processDefinitionService; |
| | | @Resource |
| | | private BpmCategoryService categoryService; |
| | | @Resource |
| | | private BpmBusinessAttachService businessAttachService; |
| | | |
| | | @Resource |
| | | private AdminUserApi adminUserApi; |
| | |
| | | |
| | | @GetMapping("/my-page") |
| | | @Operation(summary = "获得我的实例分页列表", description = "在【我的流程】菜单中,进行调用") |
| | | @PreAuthorize("@ss.hasPermission('bpm:process-instance:query')") |
| | | public CommonResult<PageResult<BpmProcessInstanceRespVO>> getProcessInstanceMyPage( |
| | | @Valid BpmProcessInstancePageReqVO pageReqVO) { |
| | | PageResult<HistoricProcessInstance> pageResult = processInstanceService.getProcessInstancePage( |
| | |
| | | |
| | | @GetMapping("/manager-page") |
| | | @Operation(summary = "获得管理流程实例的分页列表", description = "在【流程实例】菜单中,进行调用") |
| | | @PreAuthorize("@ss.hasPermission('bpm:process-instance:manager-query')") |
| | | public CommonResult<PageResult<BpmProcessInstanceRespVO>> getProcessInstanceManagerPage( |
| | | @Valid BpmProcessInstancePageReqVO pageReqVO) { |
| | | PageResult<HistoricProcessInstance> pageResult = processInstanceService.getProcessInstancePage( |
| | |
| | | |
| | | @PostMapping("/create") |
| | | @Operation(summary = "新建流程实例") |
| | | @PreAuthorize("@ss.hasPermission('bpm:process-instance:query')") |
| | | public CommonResult<String> createProcessInstance(@Valid @RequestBody BpmProcessInstanceCreateReqVO createReqVO) { |
| | | return success(processInstanceService.createProcessInstance(getLoginUserId(), createReqVO)); |
| | | } |
| | |
| | | @GetMapping("/get") |
| | | @Operation(summary = "获得指定流程实例", description = "在【流程详细】界面中,进行调用") |
| | | @Parameter(name = "id", description = "流程实例的编号", required = true) |
| | | @PreAuthorize("@ss.hasPermission('bpm:process-instance:query')") |
| | | public CommonResult<BpmProcessInstanceRespVO> getProcessInstance(@RequestParam("id") String id) { |
| | | HistoricProcessInstance processInstance = processInstanceService.getHistoricProcessInstance(id); |
| | | if (processInstance == null) { |
| | |
| | | @GetMapping("/get-approval-detail") |
| | | @Operation(summary = "获得审批详情") |
| | | @Parameter(name = "id", description = "流程实例的编号", required = true) |
| | | @PreAuthorize("@ss.hasPermission('bpm:process-instance:query')") |
| | | @SuppressWarnings("unchecked") |
| | | public CommonResult<BpmApprovalDetailRespVO> getApprovalDetail(@Valid BpmApprovalDetailReqVO reqVO) { |
| | | if (StrUtil.isNotEmpty(reqVO.getProcessVariablesStr())) { |
| | |
| | | |
| | | @GetMapping("/get-next-approval-nodes") |
| | | @Operation(summary = "获取下一个执行的流程节点") |
| | | @PreAuthorize("@ss.hasPermission('bpm:process-instance:query')") |
| | | @SuppressWarnings("unchecked") |
| | | public CommonResult<List<BpmApprovalDetailRespVO.ActivityNode>> getNextApprovalNodes(@Valid BpmApprovalDetailReqVO reqVO) { |
| | | if (StrUtil.isNotEmpty(reqVO.getProcessVariablesStr())) { |
| | |
| | | @GetMapping("/get-bpmn-model-view") |
| | | @Operation(summary = "获取流程实例的 BPMN 模型视图", description = "在【流程详细】界面中,进行调用") |
| | | @Parameter(name = "id", description = "流程实例的编号", required = true) |
| | | @PreAuthorize("@ss.hasPermission('bpm:process-instance:query')") |
| | | public CommonResult<BpmProcessInstanceBpmnModelViewRespVO> getProcessInstanceBpmnModelView( |
| | | @RequestParam(value = "id") String id) { |
| | | return success(processInstanceService.getProcessInstanceBpmnModelView(id)); |
| | |
| | | @GetMapping("/get-print-data") |
| | | @Operation(summary = "获得流程实例的打印数据") |
| | | @Parameter(name = "id", description = "流程实例的编号", required = true) |
| | | @PreAuthorize("@ss.hasPermission('bpm:process-instance:query')") |
| | | public CommonResult<BpmProcessPrintDataRespVO> getProcessInstancePrintData( |
| | | @RequestParam("processInstanceId") String processInstanceId) { |
| | | HistoricProcessInstance historicProcessInstance = processInstanceService.getHistoricProcessInstance(processInstanceId); |
| | | if (historicProcessInstance == null) { |
| | | throw exception(PROCESS_INSTANCE_NOT_EXISTS); |
| | | } |
| | | AdminUserRespDTO startUser = adminUserApi.getUser(Long.valueOf(historicProcessInstance.getStartUserId())); |
| | | DeptRespDTO dept = deptApi.getDept(startUser.getDeptId()); |
| | | // 发起人 / 部门可能不存在(历史数据、用户已删除),需做空值保护 |
| | | AdminUserRespDTO startUser = adminUserApi.getUser(NumberUtils.parseLong(historicProcessInstance.getStartUserId())); |
| | | DeptRespDTO dept = startUser != null && startUser.getDeptId() != null |
| | | ? deptApi.getDept(startUser.getDeptId()) : null; |
| | | List<HistoricTaskInstance> tasks = taskService.getFinishedTaskListByProcessInstanceIdWithoutCancel(processInstanceId); |
| | | Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap( |
| | | convertSet(tasks, item -> Long.valueOf(item.getAssignee()))); |
| | | return success(BpmProcessInstanceConvert.INSTANCE.buildProcessInstancePrintData(historicProcessInstance, |
| | | convertSet(tasks, item -> NumberUtils.parseLong(item.getAssignee()))); |
| | | UserSimpleBaseVO startUserVO = new UserSimpleBaseVO(); |
| | | if (startUser != null) { |
| | | startUserVO.setNickname(startUser.getNickname()); |
| | | } |
| | | if (dept != null) { |
| | | startUserVO.setDeptName(dept.getName()); |
| | | } |
| | | BpmProcessPrintDataRespVO printData = BpmProcessInstanceConvert.INSTANCE.buildProcessInstancePrintData( |
| | | historicProcessInstance, |
| | | processDefinitionService.getProcessDefinitionInfo(historicProcessInstance.getProcessDefinitionId()), |
| | | tasks, userMap, |
| | | new UserSimpleBaseVO().setNickname(startUser.getNickname()).setDeptName(dept.getName()))); |
| | | tasks, userMap, startUserVO); |
| | | // 填充业务附件配置,实现打印自动展示外部业务信息 |
| | | businessAttachService.fillBusinessForm(printData.getProcessInstance().getProcessDefinition(), |
| | | processDefinitionService.getProcessDefinition(historicProcessInstance.getProcessDefinitionId()).getKey(), |
| | | historicProcessInstance.getBusinessKey()); |
| | | return success(printData); |
| | | } |
| | | |
| | | } |