| | |
| | | import com.iailab.module.bpm.dal.dataobject.definition.BpmCategoryDO; |
| | | import com.iailab.module.bpm.dal.dataobject.definition.BpmFormDO; |
| | | import com.iailab.module.bpm.dal.dataobject.definition.BpmProcessDefinitionInfoDO; |
| | | import com.iailab.module.bpm.framework.flowable.core.candidate.strategy.BpmTaskCandidateStartUserSelectStrategy; |
| | | import com.iailab.module.bpm.service.definition.BpmCategoryService; |
| | | import com.iailab.module.bpm.service.definition.BpmFormService; |
| | | import com.iailab.module.bpm.service.definition.BpmProcessDefinitionService; |
| | |
| | | |
| | | import static com.iailab.framework.common.pojo.CommonResult.success; |
| | | import static com.iailab.framework.common.util.collection.CollectionUtils.convertSet; |
| | | import static com.iailab.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; |
| | | |
| | | @Tag(name = "管理后台 - 流程定义") |
| | | @RestController |
| | |
| | | convertSet(pageResult.getList(), ProcessDefinition::getId)); |
| | | // 获得 Form Map |
| | | Map<Long, BpmFormDO> formMap = formService.getFormMap( |
| | | convertSet(processDefinitionMap.values(), BpmProcessDefinitionInfoDO::getFormId)); |
| | | convertSet(processDefinitionMap.values(), BpmProcessDefinitionInfoDO::getFormId)); |
| | | return success(BpmProcessDefinitionConvert.INSTANCE.buildProcessDefinitionPage( |
| | | pageResult, deploymentMap, processDefinitionMap, formMap, categoryMap)); |
| | | } |
| | |
| | | @Operation(summary = "获得流程定义列表") |
| | | @Parameter(name = "suspensionState", description = "挂起状态", required = true, example = "1") // 参见 Flowable SuspensionState 枚举 |
| | | public CommonResult<List<BpmProcessDefinitionRespVO>> getProcessDefinitionList( |
| | | @RequestParam("suspensionState") Integer suspensionState) { |
| | | List<ProcessDefinition> list = processDefinitionService.getProcessDefinitionListBySuspensionState(suspensionState); |
| | | @RequestParam("suspensionState") Integer suspensionState, @RequestParam(value = "categoryId", required = false) String categoryId) { |
| | | // 1.1 获得开启的流程定义 |
| | | List<ProcessDefinition> list = processDefinitionService.getProcessDefinitionListBySuspensionState(suspensionState, categoryId); |
| | | if (CollUtil.isEmpty(list)) { |
| | | return success(Collections.emptyList()); |
| | | } |
| | | |
| | | // 获得 BpmProcessDefinitionInfoDO Map |
| | | // 1.2 移除不可见的流程定义 |
| | | Map<String, BpmProcessDefinitionInfoDO> processDefinitionMap = processDefinitionService.getProcessDefinitionInfoMap( |
| | | convertSet(list, ProcessDefinition::getId)); |
| | | Long userId = getLoginUserId(); |
| | | list.removeIf(processDefinition -> { |
| | | BpmProcessDefinitionInfoDO processDefinitionInfo = processDefinitionMap.get(processDefinition.getId()); |
| | | return processDefinitionInfo == null // 不存在 |
| | | || Boolean.FALSE.equals(processDefinitionInfo.getVisible()) // visible 不可见 |
| | | || !processDefinitionService.canUserStartProcessDefinition(processDefinitionInfo, userId); // 无权限发起 |
| | | }); |
| | | |
| | | // 2. 拼接 VO 返回 |
| | | return success(BpmProcessDefinitionConvert.INSTANCE.buildProcessDefinitionList( |
| | | list, null, processDefinitionMap, null, null)); |
| | | } |
| | |
| | | } |
| | | BpmProcessDefinitionInfoDO processDefinitionInfo = processDefinitionService.getProcessDefinitionInfo(processDefinition.getId()); |
| | | BpmnModel bpmnModel = processDefinitionService.getProcessDefinitionBpmnModel(processDefinition.getId()); |
| | | List<UserTask> userTaskList = BpmTaskCandidateStartUserSelectStrategy.getStartUserSelectUserTaskList(bpmnModel); |
| | | return success(BpmProcessDefinitionConvert.INSTANCE.buildProcessDefinition( |
| | | processDefinition, null, processDefinitionInfo, null, null, bpmnModel, userTaskList)); |
| | | processDefinition, null, processDefinitionInfo, null, null, bpmnModel)); |
| | | } |
| | | |
| | | } |