Kaynağa Gözat

【代码评审】Bpm:数据报表

YunaiV 6 ay önce
ebeveyn
işleme
86dc3763fc

+ 19 - 18
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<BpmProcessInstanceReportPageRespVO> getProcessInstanceReportPage(
-            @Valid BpmProcessInstanceReportPageReqVO pageReqVO) {
-        PageResult<HistoricProcessInstance> pageResult = processInstanceService.getProcessInstanceReportPage(pageReqVO);
-        if (CollUtil.isEmpty(pageResult.getList())) {
-            return success(new BpmProcessInstanceReportPageRespVO().setPageResult(PageResult.empty(pageResult.getTotal())));
-        }
-
-        // 拼接返回
-        Map<Long, AdminUserRespDTO> 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<BpmProcessInstanceReportPageRespVO> getProcessInstanceReportPage(
+//            @Valid BpmProcessInstanceReportPageReqVO pageReqVO) {
+//        PageResult<HistoricProcessInstance> pageResult = processInstanceService.getProcessInstanceReportPage(pageReqVO);
+//        if (CollUtil.isEmpty(pageResult.getList())) {
+//            return success(new BpmProcessInstanceReportPageRespVO().setPageResult(PageResult.empty(pageResult.getTotal())));
+//        }
+//
+//        // 拼接返回
+//        Map<Long, AdminUserRespDTO> 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 = "新建流程实例")

+ 13 - 11
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<KeyValue<String, String>> summaryList;
+
+        // 解析表单配置
         Map<String, BpmFormFieldVO> 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<String, String>(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 相关的工具方法 ==========

+ 1 - 1
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<HistoricProcessInstance> getProcessInstancePage(Long userId,
                                                                @Valid BpmProcessInstancePageReqVO pageReqVO);
 
-    PageResult<HistoricProcessInstance> getProcessInstanceReportPage(@Valid BpmProcessInstanceReportPageReqVO pageReqVO);
+//    PageResult<HistoricProcessInstance> getProcessInstanceReportPage(@Valid BpmProcessInstanceReportPageReqVO pageReqVO);
 
     // TODO @芋艿:重点在 review 下
     /**

+ 37 - 37
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<HistoricProcessInstance> 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<HistoricProcessInstance> processInstanceList = processInstanceQuery.listPage(PageUtils.getStart(pageReqVO), pageReqVO.getPageSize());
-        return new PageResult<>(processInstanceList, processInstanceCount);
-    }
+//    @Override
+//    public PageResult<HistoricProcessInstance> 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<HistoricProcessInstance> processInstanceList = processInstanceQuery.listPage(PageUtils.getStart(pageReqVO), pageReqVO.getPageSize());
+//        return new PageResult<>(processInstanceList, processInstanceCount);
+//    }
 
     private Map<String, String> getFormFieldsPermission(BpmnModel bpmnModel,
                                                         String activityId, String taskId) {