review:【bpm 工作流】流程打印

This commit is contained in:
YunaiV
2025-09-07 17:22:10 +08:00
parent 4d39d53392
commit 256b6f2c1d
3 changed files with 24 additions and 23 deletions

View File

@@ -214,8 +214,8 @@ public class BpmProcessInstanceController {
AdminUserRespDTO startUser = adminUserApi.getUser(Long.valueOf(historicProcessInstance.getStartUserId()));
DeptRespDTO dept = deptApi.getDept(startUser.getDeptId());
List<HistoricTaskInstance> tasks = taskService.getFinishedTaskListByProcessInstanceIdWithoutCancel(processInstanceId);
Set<Long> userIds = convertSet(tasks, item -> Long.valueOf(item.getAssignee()));
Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(userIds);
Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
convertSet(tasks, item -> Long.valueOf(item.getAssignee())));
return success(BpmProcessInstanceConvert.INSTANCE.buildProcessInstancePrintData(historicProcessInstance,
processDefinitionService.getProcessDefinitionInfo(historicProcessInstance.getProcessDefinitionId()),
tasks, userMap,

View File

@@ -1,11 +1,9 @@
package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance;
import cn.iocoder.yudao.module.bpm.controller.admin.base.user.UserSimpleBaseVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
import java.util.Map;
@Schema(description = "管理后台 - 流程实例的打印数据 Response VO")
@Data
@@ -14,25 +12,30 @@ public class BpmProcessPrintDataRespVO {
@Schema(description = "流程实例数据")
private BpmProcessInstanceRespVO processInstance;
@Schema(description = "是否开启自定义打印模板")
@Schema(description = "是否开启自定义打印模板", requiredMode = Schema.RequiredMode.REQUIRED, example = "true")
private Boolean printTemplateEnable;
@Schema(description = "自定义打印模板HTML")
@Schema(description = "自定义打印模板 HTML")
private String printTemplateHtml;
@Schema(description = "审批任务列表")
private List<ApproveTask> tasks;
private List<Task> tasks;
@Schema(description = "流程任务")
@Data
public static class ApproveTask {
public static class Task {
@Schema(description = "流程任务的编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
private String id;
@Schema(description = "任务名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")
private String name;
private String description;
@Schema(description = "签名 URL", example = "https://www.iocoder.cn/sign.png")
private String signPicUrl;
private String signUrl;
@Schema(description = "任务描述", requiredMode = Schema.RequiredMode.REQUIRED)
private String description; // 该字段由后端拼接
}

View File

@@ -305,25 +305,23 @@ public interface BpmProcessInstanceConvert {
// 打印模板是否开启
printData.setPrintTemplateEnable(printTemplateSetting != null && Boolean.TRUE.equals(printTemplateSetting.getEnable()));
// 流程相关数据
BpmProcessInstanceRespVO processInstance = new BpmProcessInstanceRespVO();
processInstance.setStatus(FlowableUtils.getProcessInstanceStatus(historicProcessInstance));
processInstance.setId(historicProcessInstance.getId());
processInstance.setName(historicProcessInstance.getName());
processInstance.setBusinessKey(historicProcessInstance.getBusinessKey());
processInstance.setStartTime(DateUtils.of(historicProcessInstance.getStartTime()));
processInstance.setEndTime(DateUtils.of(historicProcessInstance.getEndTime()));
processInstance.setFormVariables(historicProcessInstance.getProcessVariables());
processInstance.setStartUser(startUser);
processInstance.setProcessDefinition(BeanUtils.toBean(processDefinitionInfo, BpmProcessDefinitionRespVO.class));
BpmProcessInstanceRespVO processInstance = new BpmProcessInstanceRespVO()
.setId(historicProcessInstance.getId()).setName(historicProcessInstance.getName())
.setBusinessKey(historicProcessInstance.getBusinessKey())
.setStartTime(DateUtils.of(historicProcessInstance.getStartTime()))
.setEndTime(DateUtils.of(historicProcessInstance.getEndTime()))
.setStartUser(startUser).setStatus(FlowableUtils.getProcessInstanceStatus(historicProcessInstance))
.setFormVariables(historicProcessInstance.getProcessVariables())
.setProcessDefinition(BeanUtils.toBean(processDefinitionInfo, BpmProcessDefinitionRespVO.class));
printData.setProcessInstance(processInstance);
// 审批历史
List<BpmProcessPrintDataRespVO.ApproveTask> approveTasks = new ArrayList<>(tasks.size());
List<BpmProcessPrintDataRespVO.Task> approveTasks = new ArrayList<>(tasks.size());
tasks.forEach(item -> {
Map<String, Object> taskLocalVariables = item.getTaskLocalVariables();
BpmProcessPrintDataRespVO.ApproveTask approveTask = new BpmProcessPrintDataRespVO.ApproveTask();
BpmProcessPrintDataRespVO.Task approveTask = new BpmProcessPrintDataRespVO.Task();
approveTask.setName(item.getName());
approveTask.setId(item.getId());
approveTask.setSignUrl((String) taskLocalVariables.getOrDefault(BpmnVariableConstants.TASK_SIGN_PIC_URL, ""));
approveTask.setSignPicUrl((String) taskLocalVariables.get(BpmnVariableConstants.TASK_SIGN_PIC_URL));
approveTask.setDescription(StrUtil.format("{} / {} / {} / {} / {}",
userMap.get(Long.valueOf(item.getAssignee())).getNickname(),
item.getName(),