!1216 feat: BPM-数据报表

Merge pull request !1216 from Lesan/feature/bpm-报表
This commit is contained in:
芋道源码 2025-01-26 04:59:55 +00:00 committed by Gitee
commit 805e570406
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
5 changed files with 25 additions and 96 deletions

View File

@ -109,26 +109,6 @@ public class BpmProcessInstanceController {
processDefinitionMap, categoryMap, taskMap, userMap, deptMap, processDefinitionInfoMap));
}
// 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 = "新建流程实例")
@PreAuthorize("@ss.hasPermission('bpm:process-instance:query')")

View File

@ -8,6 +8,7 @@ import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import java.util.Map;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@ -32,7 +33,14 @@ public class BpmProcessInstancePageReqVO extends PageParam {
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "结束时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] endTime;
@Schema(description = "发起用户编号", example = "1024")
private Long startUserId; // 注意只有在流程实例菜单才使用该参数
@Schema(description = "动态表单字段查询JSON Str", example = "{}")
private String formFieldsParams;
}

View File

@ -80,46 +80,12 @@ public interface BpmProcessInstanceConvert {
// 摘要
respVO.setSummary(FlowableUtils.getSummary(processDefinitionInfoMap.get(respVO.getProcessDefinitionId()),
pageResult.getList().get(i).getProcessVariables()));
// 表单
respVO.setFormVariables(pageResult.getList().get(i).getProcessVariables());
}
return vpPageResult;
}
// default BpmProcessInstanceReportPageRespVO buildProcessInstanceReportPage(PageResult<HistoricProcessInstance> pageResult,
// Map<Long, AdminUserRespDTO> userMap,
// BpmProcessDefinitionInfoDO processDefinitionInfo) {
// PageResult<BpmProcessInstanceReportPageRespVO.BpmProcessInstanceReportRespVO> vpPageResult = BeanUtils.toBean(pageResult,
// BpmProcessInstanceReportPageRespVO.BpmProcessInstanceReportRespVO.class);
// // 表单列表
// List<BpmFormFieldVO> formFieldsList = new ArrayList<>();
// processDefinitionInfo.getFormFields().forEach(formFieldStr -> {
// BpmFormFieldVO formField = JsonUtils.parseObject(formFieldStr, BpmFormFieldVO.class);
// if (formField != null) {
// formFieldsList.add(formField);
// }
// });
// for (int i = 0; i < pageResult.getList().size(); i++) {
// HistoricProcessInstance historicProcessInstance = pageResult.getList().get(i);
// BpmProcessInstanceReportPageRespVO.BpmProcessInstanceReportRespVO respVO = vpPageResult.getList().get(i);
// respVO.setStatus(FlowableUtils.getProcessInstanceStatus(historicProcessInstance));
// // user
// if (userMap != null) {
// AdminUserRespDTO startUser = userMap.get(NumberUtils.parseLong(historicProcessInstance.getStartUserId()));
// if (startUser != null) {
// respVO.setStartUser(BeanUtils.toBean(startUser, UserSimpleBaseVO.class));
// }
// }
// // 表单数据
// List<KeyValue<String, Object>> variables = new ArrayList<>();
// formFieldsList.forEach(formField -> {
// variables.add(new KeyValue<String, Object>()
// .setKey(formField.getField())
// .setValue(historicProcessInstance.getProcessVariables().getOrDefault(formField.getField(), "")));
// });
// respVO.setVariables(variables);
// }
// return new BpmProcessInstanceReportPageRespVO().setPageResult(vpPageResult).setFormFields(formFieldsList);
// }
default BpmProcessInstanceRespVO buildProcessInstance(HistoricProcessInstance processInstance,
ProcessDefinition processDefinition,
BpmProcessDefinitionInfoDO processDefinitionInfo,

View File

@ -84,8 +84,6 @@ public interface BpmProcessInstanceService {
PageResult<HistoricProcessInstance> getProcessInstancePage(Long userId,
@Valid BpmProcessInstancePageReqVO pageReqVO);
// PageResult<HistoricProcessInstance> getProcessInstanceReportPage(@Valid BpmProcessInstanceReportPageReqVO pageReqVO);
// TODO @芋艿重点在 review
/**
* 获取审批详情

View File

@ -7,6 +7,7 @@ import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.date.DateUtils;
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
@ -170,6 +171,20 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
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 应支持多种类型的查询方式目前只有字符串全等
if (StrUtil.isNotEmpty(pageReqVO.getFormFieldsParams())) {
JSONObject formFieldsParams = new JSONObject(pageReqVO.getFormFieldsParams());
for (Map.Entry<String, Object> field : formFieldsParams.entrySet()) {
if (StrUtil.isNotEmpty(field.getValue().toString())) {
processInstanceQuery.variableValueEquals(field.getKey(), field.getValue());
}
}
}
// 查询数量
long processInstanceCount = processInstanceQuery.count();
if (processInstanceCount == 0) {
@ -180,44 +195,6 @@ 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);
// }
private Map<String, String> getFormFieldsPermission(BpmnModel bpmnModel,
String activityId, String taskId) {
// 1. 获取流程活动编号流程活动 Id 为空事从流程任务中获取流程活动 Id