From 86dc3763fc92637a4e1d31e42d16abbeaee507db Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 25 Jan 2025 17:16:57 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E4=BB=A3=E7=A0=81=E8=AF=84=E5=AE=A1?= =?UTF-8?q?=E3=80=91Bpm=EF=BC=9A=E6=95=B0=E6=8D=AE=E6=8A=A5=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task/BpmProcessInstanceController.java | 37 +++++----- .../flowable/core/util/FlowableUtils.java | 24 +++--- .../task/BpmProcessInstanceService.java | 2 +- .../task/BpmProcessInstanceServiceImpl.java | 74 +++++++++---------- 4 files changed, 70 insertions(+), 67 deletions(-) diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmProcessInstanceController.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmProcessInstanceController.java index dbc0179771..239e4a640b 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmProcessInstanceController.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmProcessInstanceController.java @@ -109,24 +109,25 @@ public class BpmProcessInstanceController { processDefinitionMap, categoryMap, taskMap, userMap, deptMap, processDefinitionInfoMap)); } - @GetMapping("/report-page") - @Operation(summary = "获得流程实例报表的分页列表", description = "获得流程实例报表的分页列表") - public CommonResult getProcessInstanceReportPage( - @Valid BpmProcessInstanceReportPageReqVO pageReqVO) { - PageResult pageResult = processInstanceService.getProcessInstanceReportPage(pageReqVO); - if (CollUtil.isEmpty(pageResult.getList())) { - return success(new BpmProcessInstanceReportPageRespVO().setPageResult(PageResult.empty(pageResult.getTotal()))); - } - - // 拼接返回 - Map userMap = adminUserApi.getUserMap( - convertSet(pageResult.getList(), processInstance -> NumberUtils.parseLong(processInstance.getStartUserId()))); - BpmProcessDefinitionInfoDO processDefinitionInfo = processDefinitionService.getProcessDefinitionInfo( - pageReqVO.getProcessDefinitionId() - ); - return success(BpmProcessInstanceConvert.INSTANCE.buildProcessInstanceReportPage(pageResult, - userMap, processDefinitionInfo)); - } + // TODO @lesan:貌似少提交了。ps:不确定和 getProcessInstanceManagerPage 接口的差异哈。 +// @GetMapping("/report-page") +// @Operation(summary = "获得流程实例报表的分页列表", description = "获得流程实例报表的分页列表") +// public CommonResult getProcessInstanceReportPage( +// @Valid BpmProcessInstanceReportPageReqVO pageReqVO) { +// PageResult pageResult = processInstanceService.getProcessInstanceReportPage(pageReqVO); +// if (CollUtil.isEmpty(pageResult.getList())) { +// return success(new BpmProcessInstanceReportPageRespVO().setPageResult(PageResult.empty(pageResult.getTotal()))); +// } +// +// // 拼接返回 +// Map userMap = adminUserApi.getUserMap( +// convertSet(pageResult.getList(), processInstance -> NumberUtils.parseLong(processInstance.getStartUserId()))); +// BpmProcessDefinitionInfoDO processDefinitionInfo = processDefinitionService.getProcessDefinitionInfo( +// pageReqVO.getProcessDefinitionId() +// ); +// return success(BpmProcessInstanceConvert.INSTANCE.buildProcessInstanceReportPage(pageResult, +// userMap, processDefinitionInfo)); +// } @PostMapping("/create") @Operation(summary = "新建流程实例") diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/FlowableUtils.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/FlowableUtils.java index 305380158c..a458567d81 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/FlowableUtils.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/FlowableUtils.java @@ -26,6 +26,7 @@ import org.flowable.task.api.TaskInfo; import java.util.*; import java.util.concurrent.Callable; +import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; @@ -212,7 +213,8 @@ public class FlowableUtils { || !BpmModelFormTypeEnum.NORMAL.getType().equals(processDefinitionInfo.getFormType())) { return null; } - List> summaryList; + + // 解析表单配置 Map formFieldsMap = new HashMap<>(); processDefinitionInfo.getFormFields().forEach(formFieldStr -> { BpmFormFieldVO formField = JsonUtils.parseObject(formFieldStr, BpmFormFieldVO.class); @@ -220,10 +222,11 @@ public class FlowableUtils { formFieldsMap.put(formField.getField(), formField); } }); + + // 情况一:当自定义了摘要 if (ObjectUtil.isNotNull(processDefinitionInfo.getSummarySetting()) && Boolean.TRUE.equals(processDefinitionInfo.getSummarySetting().getEnable())) { - // 情况一:当自定义了摘要 - summaryList = convertList(processDefinitionInfo.getSummarySetting().getSummary(), item -> { + return convertList(processDefinitionInfo.getSummarySetting().getSummary(), item -> { BpmFormFieldVO formField = formFieldsMap.get(item); if (formField != null) { return new KeyValue(formField.getTitle(), @@ -231,15 +234,14 @@ public class FlowableUtils { } return null; }); - } else { - // 情况二:默认摘要展示前三个表单字段 - summaryList = new ArrayList<>(formFieldsMap.entrySet().stream() - .limit(3) - .map(entry -> new KeyValue<>(entry.getValue().getTitle(), - processVariables.getOrDefault(entry.getValue().getField(), "").toString())) - .toList()); } - return summaryList; + + // 情况二:默认摘要展示前三个表单字段 + return formFieldsMap.entrySet().stream() + .limit(3) + .map(entry -> new KeyValue<>(entry.getValue().getTitle(), + processVariables.getOrDefault(entry.getValue().getField(), "").toString())) + .collect(Collectors.toList()); } // ========== Task 相关的工具方法 ========== diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceService.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceService.java index bcf18b4341..860959dacd 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceService.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceService.java @@ -84,7 +84,7 @@ public interface BpmProcessInstanceService { PageResult getProcessInstancePage(Long userId, @Valid BpmProcessInstancePageReqVO pageReqVO); - PageResult getProcessInstanceReportPage(@Valid BpmProcessInstanceReportPageReqVO pageReqVO); +// PageResult getProcessInstanceReportPage(@Valid BpmProcessInstanceReportPageReqVO pageReqVO); // TODO @芋艿:重点在 review 下 /** diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceServiceImpl.java index 56c0b0a334..4dd39ce191 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceServiceImpl.java @@ -180,43 +180,43 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService return new PageResult<>(processInstanceList, processInstanceCount); } - @Override - public PageResult getProcessInstanceReportPage(BpmProcessInstanceReportPageReqVO pageReqVO) { - // 通过 BpmProcessInstanceExtDO 表,先查询到对应的分页 - HistoricProcessInstanceQuery processInstanceQuery = historyService.createHistoricProcessInstanceQuery() - .includeProcessVariables() - .processInstanceTenantId(FlowableUtils.getTenantId()) - .orderByProcessInstanceStartTime().desc(); - if (pageReqVO.getStartUserId() != null) { - processInstanceQuery.startedBy(String.valueOf(pageReqVO.getStartUserId())); - } - if (StrUtil.isNotEmpty(pageReqVO.getName())) { - processInstanceQuery.processInstanceNameLike("%" + pageReqVO.getName() + "%"); - } - if (StrUtil.isNotEmpty(pageReqVO.getProcessDefinitionKey())) { - processInstanceQuery.processDefinitionKey(pageReqVO.getProcessDefinitionKey()); - } - if (pageReqVO.getStatus() != null) { - processInstanceQuery.variableValueEquals(BpmnVariableConstants.PROCESS_INSTANCE_VARIABLE_STATUS, pageReqVO.getStatus()); - } - if (ArrayUtil.isNotEmpty(pageReqVO.getCreateTime())) { - processInstanceQuery.startedAfter(DateUtils.of(pageReqVO.getCreateTime()[0])); - processInstanceQuery.startedBefore(DateUtils.of(pageReqVO.getCreateTime()[1])); - } - if (ArrayUtil.isNotEmpty(pageReqVO.getEndTime())) { - processInstanceQuery.finishedAfter(DateUtils.of(pageReqVO.getEndTime()[0])); - processInstanceQuery.finishedBefore(DateUtils.of(pageReqVO.getEndTime()[1])); - } - // TODO 流程表单数据也要支持查询 - // 查询数量 - long processInstanceCount = processInstanceQuery.count(); - if (processInstanceCount == 0) { - return PageResult.empty(processInstanceCount); - } - // 查询列表 - List processInstanceList = processInstanceQuery.listPage(PageUtils.getStart(pageReqVO), pageReqVO.getPageSize()); - return new PageResult<>(processInstanceList, processInstanceCount); - } +// @Override +// public PageResult getProcessInstanceReportPage(BpmProcessInstanceReportPageReqVO pageReqVO) { +// // 通过 BpmProcessInstanceExtDO 表,先查询到对应的分页 +// HistoricProcessInstanceQuery processInstanceQuery = historyService.createHistoricProcessInstanceQuery() +// .includeProcessVariables() +// .processInstanceTenantId(FlowableUtils.getTenantId()) +// .orderByProcessInstanceStartTime().desc(); +// if (pageReqVO.getStartUserId() != null) { +// processInstanceQuery.startedBy(String.valueOf(pageReqVO.getStartUserId())); +// } +// if (StrUtil.isNotEmpty(pageReqVO.getName())) { +// processInstanceQuery.processInstanceNameLike("%" + pageReqVO.getName() + "%"); +// } +// if (StrUtil.isNotEmpty(pageReqVO.getProcessDefinitionKey())) { +// processInstanceQuery.processDefinitionKey(pageReqVO.getProcessDefinitionKey()); +// } +// if (pageReqVO.getStatus() != null) { +// processInstanceQuery.variableValueEquals(BpmnVariableConstants.PROCESS_INSTANCE_VARIABLE_STATUS, pageReqVO.getStatus()); +// } +// if (ArrayUtil.isNotEmpty(pageReqVO.getCreateTime())) { +// processInstanceQuery.startedAfter(DateUtils.of(pageReqVO.getCreateTime()[0])); +// processInstanceQuery.startedBefore(DateUtils.of(pageReqVO.getCreateTime()[1])); +// } +// if (ArrayUtil.isNotEmpty(pageReqVO.getEndTime())) { +// processInstanceQuery.finishedAfter(DateUtils.of(pageReqVO.getEndTime()[0])); +// processInstanceQuery.finishedBefore(DateUtils.of(pageReqVO.getEndTime()[1])); +// } +// // TODO 流程表单数据也要支持查询 +// // 查询数量 +// long processInstanceCount = processInstanceQuery.count(); +// if (processInstanceCount == 0) { +// return PageResult.empty(processInstanceCount); +// } +// // 查询列表 +// List processInstanceList = processInstanceQuery.listPage(PageUtils.getStart(pageReqVO), pageReqVO.getPageSize()); +// return new PageResult<>(processInstanceList, processInstanceCount); +// } private Map getFormFieldsPermission(BpmnModel bpmnModel, String activityId, String taskId) {