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

This commit is contained in:
YunaiV 2025-01-25 17:16:57 +08:00
parent 623a41d48c
commit 86dc3763fc
4 changed files with 70 additions and 67 deletions

View File

@ -109,24 +109,25 @@ public class BpmProcessInstanceController {
processDefinitionMap, categoryMap, taskMap, userMap, deptMap, processDefinitionInfoMap)); processDefinitionMap, categoryMap, taskMap, userMap, deptMap, processDefinitionInfoMap));
} }
@GetMapping("/report-page") // TODO @lesan貌似少提交了ps不确定和 getProcessInstanceManagerPage 接口的差异哈
@Operation(summary = "获得流程实例报表的分页列表", description = "获得流程实例报表的分页列表") // @GetMapping("/report-page")
public CommonResult<BpmProcessInstanceReportPageRespVO> getProcessInstanceReportPage( // @Operation(summary = "获得流程实例报表的分页列表", description = "获得流程实例报表的分页列表")
@Valid BpmProcessInstanceReportPageReqVO pageReqVO) { // public CommonResult<BpmProcessInstanceReportPageRespVO> getProcessInstanceReportPage(
PageResult<HistoricProcessInstance> pageResult = processInstanceService.getProcessInstanceReportPage(pageReqVO); // @Valid BpmProcessInstanceReportPageReqVO pageReqVO) {
if (CollUtil.isEmpty(pageResult.getList())) { // PageResult<HistoricProcessInstance> pageResult = processInstanceService.getProcessInstanceReportPage(pageReqVO);
return success(new BpmProcessInstanceReportPageRespVO().setPageResult(PageResult.empty(pageResult.getTotal()))); // 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()))); // Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
BpmProcessDefinitionInfoDO processDefinitionInfo = processDefinitionService.getProcessDefinitionInfo( // convertSet(pageResult.getList(), processInstance -> NumberUtils.parseLong(processInstance.getStartUserId())));
pageReqVO.getProcessDefinitionId() // BpmProcessDefinitionInfoDO processDefinitionInfo = processDefinitionService.getProcessDefinitionInfo(
); // pageReqVO.getProcessDefinitionId()
return success(BpmProcessInstanceConvert.INSTANCE.buildProcessInstanceReportPage(pageResult, // );
userMap, processDefinitionInfo)); // return success(BpmProcessInstanceConvert.INSTANCE.buildProcessInstanceReportPage(pageResult,
} // userMap, processDefinitionInfo));
// }
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "新建流程实例") @Operation(summary = "新建流程实例")

View File

@ -26,6 +26,7 @@ import org.flowable.task.api.TaskInfo;
import java.util.*; import java.util.*;
import java.util.concurrent.Callable; import java.util.concurrent.Callable;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
@ -212,7 +213,8 @@ public class FlowableUtils {
|| !BpmModelFormTypeEnum.NORMAL.getType().equals(processDefinitionInfo.getFormType())) { || !BpmModelFormTypeEnum.NORMAL.getType().equals(processDefinitionInfo.getFormType())) {
return null; return null;
} }
List<KeyValue<String, String>> summaryList;
// 解析表单配置
Map<String, BpmFormFieldVO> formFieldsMap = new HashMap<>(); Map<String, BpmFormFieldVO> formFieldsMap = new HashMap<>();
processDefinitionInfo.getFormFields().forEach(formFieldStr -> { processDefinitionInfo.getFormFields().forEach(formFieldStr -> {
BpmFormFieldVO formField = JsonUtils.parseObject(formFieldStr, BpmFormFieldVO.class); BpmFormFieldVO formField = JsonUtils.parseObject(formFieldStr, BpmFormFieldVO.class);
@ -220,10 +222,11 @@ public class FlowableUtils {
formFieldsMap.put(formField.getField(), formField); formFieldsMap.put(formField.getField(), formField);
} }
}); });
// 情况一当自定义了摘要
if (ObjectUtil.isNotNull(processDefinitionInfo.getSummarySetting()) if (ObjectUtil.isNotNull(processDefinitionInfo.getSummarySetting())
&& Boolean.TRUE.equals(processDefinitionInfo.getSummarySetting().getEnable())) { && Boolean.TRUE.equals(processDefinitionInfo.getSummarySetting().getEnable())) {
// 情况一当自定义了摘要 return convertList(processDefinitionInfo.getSummarySetting().getSummary(), item -> {
summaryList = convertList(processDefinitionInfo.getSummarySetting().getSummary(), item -> {
BpmFormFieldVO formField = formFieldsMap.get(item); BpmFormFieldVO formField = formFieldsMap.get(item);
if (formField != null) { if (formField != null) {
return new KeyValue<String, String>(formField.getTitle(), return new KeyValue<String, String>(formField.getTitle(),
@ -231,15 +234,14 @@ public class FlowableUtils {
} }
return null; 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 相关的工具方法 ========== // ========== Task 相关的工具方法 ==========

View File

@ -84,7 +84,7 @@ public interface BpmProcessInstanceService {
PageResult<HistoricProcessInstance> getProcessInstancePage(Long userId, PageResult<HistoricProcessInstance> getProcessInstancePage(Long userId,
@Valid BpmProcessInstancePageReqVO pageReqVO); @Valid BpmProcessInstancePageReqVO pageReqVO);
PageResult<HistoricProcessInstance> getProcessInstanceReportPage(@Valid BpmProcessInstanceReportPageReqVO pageReqVO); // PageResult<HistoricProcessInstance> getProcessInstanceReportPage(@Valid BpmProcessInstanceReportPageReqVO pageReqVO);
// TODO @芋艿重点在 review // TODO @芋艿重点在 review
/** /**

View File

@ -180,43 +180,43 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
return new PageResult<>(processInstanceList, processInstanceCount); return new PageResult<>(processInstanceList, processInstanceCount);
} }
@Override // @Override
public PageResult<HistoricProcessInstance> getProcessInstanceReportPage(BpmProcessInstanceReportPageReqVO pageReqVO) { // public PageResult<HistoricProcessInstance> getProcessInstanceReportPage(BpmProcessInstanceReportPageReqVO pageReqVO) {
// 通过 BpmProcessInstanceExtDO 先查询到对应的分页 // // 通过 BpmProcessInstanceExtDO 先查询到对应的分页
HistoricProcessInstanceQuery processInstanceQuery = historyService.createHistoricProcessInstanceQuery() // HistoricProcessInstanceQuery processInstanceQuery = historyService.createHistoricProcessInstanceQuery()
.includeProcessVariables() // .includeProcessVariables()
.processInstanceTenantId(FlowableUtils.getTenantId()) // .processInstanceTenantId(FlowableUtils.getTenantId())
.orderByProcessInstanceStartTime().desc(); // .orderByProcessInstanceStartTime().desc();
if (pageReqVO.getStartUserId() != null) { // if (pageReqVO.getStartUserId() != null) {
processInstanceQuery.startedBy(String.valueOf(pageReqVO.getStartUserId())); // processInstanceQuery.startedBy(String.valueOf(pageReqVO.getStartUserId()));
} // }
if (StrUtil.isNotEmpty(pageReqVO.getName())) { // if (StrUtil.isNotEmpty(pageReqVO.getName())) {
processInstanceQuery.processInstanceNameLike("%" + pageReqVO.getName() + "%"); // processInstanceQuery.processInstanceNameLike("%" + pageReqVO.getName() + "%");
} // }
if (StrUtil.isNotEmpty(pageReqVO.getProcessDefinitionKey())) { // if (StrUtil.isNotEmpty(pageReqVO.getProcessDefinitionKey())) {
processInstanceQuery.processDefinitionKey(pageReqVO.getProcessDefinitionKey()); // processInstanceQuery.processDefinitionKey(pageReqVO.getProcessDefinitionKey());
} // }
if (pageReqVO.getStatus() != null) { // if (pageReqVO.getStatus() != null) {
processInstanceQuery.variableValueEquals(BpmnVariableConstants.PROCESS_INSTANCE_VARIABLE_STATUS, pageReqVO.getStatus()); // processInstanceQuery.variableValueEquals(BpmnVariableConstants.PROCESS_INSTANCE_VARIABLE_STATUS, pageReqVO.getStatus());
} // }
if (ArrayUtil.isNotEmpty(pageReqVO.getCreateTime())) { // if (ArrayUtil.isNotEmpty(pageReqVO.getCreateTime())) {
processInstanceQuery.startedAfter(DateUtils.of(pageReqVO.getCreateTime()[0])); // processInstanceQuery.startedAfter(DateUtils.of(pageReqVO.getCreateTime()[0]));
processInstanceQuery.startedBefore(DateUtils.of(pageReqVO.getCreateTime()[1])); // processInstanceQuery.startedBefore(DateUtils.of(pageReqVO.getCreateTime()[1]));
} // }
if (ArrayUtil.isNotEmpty(pageReqVO.getEndTime())) { // if (ArrayUtil.isNotEmpty(pageReqVO.getEndTime())) {
processInstanceQuery.finishedAfter(DateUtils.of(pageReqVO.getEndTime()[0])); // processInstanceQuery.finishedAfter(DateUtils.of(pageReqVO.getEndTime()[0]));
processInstanceQuery.finishedBefore(DateUtils.of(pageReqVO.getEndTime()[1])); // processInstanceQuery.finishedBefore(DateUtils.of(pageReqVO.getEndTime()[1]));
} // }
// TODO 流程表单数据也要支持查询 // // TODO 流程表单数据也要支持查询
// 查询数量 // // 查询数量
long processInstanceCount = processInstanceQuery.count(); // long processInstanceCount = processInstanceQuery.count();
if (processInstanceCount == 0) { // if (processInstanceCount == 0) {
return PageResult.empty(processInstanceCount); // return PageResult.empty(processInstanceCount);
} // }
// 查询列表 // // 查询列表
List<HistoricProcessInstance> processInstanceList = processInstanceQuery.listPage(PageUtils.getStart(pageReqVO), pageReqVO.getPageSize()); // List<HistoricProcessInstance> processInstanceList = processInstanceQuery.listPage(PageUtils.getStart(pageReqVO), pageReqVO.getPageSize());
return new PageResult<>(processInstanceList, processInstanceCount); // return new PageResult<>(processInstanceList, processInstanceCount);
} // }
private Map<String, String> getFormFieldsPermission(BpmnModel bpmnModel, private Map<String, String> getFormFieldsPermission(BpmnModel bpmnModel,
String activityId, String taskId) { String activityId, String taskId) {