Commit 9b426436bee0f12b0285c8db2331b49c04acd865
1 parent
0983d5b5
review:【bpm 工作流】流程打印
Showing
4 changed files
with
19 additions
and
11 deletions
yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmProcessInstanceController.java
| @@ -192,16 +192,18 @@ public class BpmProcessInstanceController { | @@ -192,16 +192,18 @@ public class BpmProcessInstanceController { | ||
| 192 | @GetMapping("/get-bpmn-model-view") | 192 | @GetMapping("/get-bpmn-model-view") |
| 193 | @Operation(summary = "获取流程实例的 BPMN 模型视图", description = "在【流程详细】界面中,进行调用") | 193 | @Operation(summary = "获取流程实例的 BPMN 模型视图", description = "在【流程详细】界面中,进行调用") |
| 194 | @Parameter(name = "id", description = "流程实例的编号", required = true) | 194 | @Parameter(name = "id", description = "流程实例的编号", required = true) |
| 195 | - public CommonResult<BpmProcessInstanceBpmnModelViewRespVO> getProcessInstanceBpmnModelView(@RequestParam(value = "id") String id) { | 195 | + public CommonResult<BpmProcessInstanceBpmnModelViewRespVO> getProcessInstanceBpmnModelView( |
| 196 | + @RequestParam(value = "id") String id) { | ||
| 196 | return success(processInstanceService.getProcessInstanceBpmnModelView(id)); | 197 | return success(processInstanceService.getProcessInstanceBpmnModelView(id)); |
| 197 | } | 198 | } |
| 198 | 199 | ||
| 199 | @GetMapping("/get-print-data") | 200 | @GetMapping("/get-print-data") |
| 200 | - @Operation(summary = "获得打印数据") | 201 | + @Operation(summary = "获得流程实例的打印数据") |
| 201 | @Parameter(name = "id", description = "流程实例的编号", required = true) | 202 | @Parameter(name = "id", description = "流程实例的编号", required = true) |
| 202 | @PreAuthorize("@ss.hasPermission('bpm:process-instance:query')") | 203 | @PreAuthorize("@ss.hasPermission('bpm:process-instance:query')") |
| 203 | - public CommonResult<BpmProcessPrintDataRespVO> getPrintData(@RequestParam("processInstanceId") String processInstanceId) { | ||
| 204 | - return success(processInstanceService.getPrintData(getLoginUserId(), processInstanceId)); | 204 | + public CommonResult<BpmProcessPrintDataRespVO> getProcessInstancePrintData( |
| 205 | + @RequestParam("processInstanceId") String processInstanceId) { | ||
| 206 | + return success(processInstanceService.getProcessInstancePrintData(getLoginUserId(), processInstanceId)); | ||
| 205 | } | 207 | } |
| 206 | 208 | ||
| 207 | } | 209 | } |
yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessPrintDataRespVO.java
| @@ -5,8 +5,8 @@ import lombok.Data; | @@ -5,8 +5,8 @@ import lombok.Data; | ||
| 5 | 5 | ||
| 6 | import java.util.List; | 6 | import java.util.List; |
| 7 | 7 | ||
| 8 | - | ||
| 9 | -@Schema(description = "管理后台 - 打印数据 Response VO") | 8 | +// TODO @lesan:这个可能复用 BpmApprovalDetailRespVO 哇? |
| 9 | +@Schema(description = "管理后台 - 流程实例的打印数据 Response VO") | ||
| 10 | @Data | 10 | @Data |
| 11 | public class BpmProcessPrintDataRespVO { | 11 | public class BpmProcessPrintDataRespVO { |
| 12 | 12 | ||
| @@ -14,6 +14,7 @@ public class BpmProcessPrintDataRespVO { | @@ -14,6 +14,7 @@ public class BpmProcessPrintDataRespVO { | ||
| 14 | 14 | ||
| 15 | private Integer processStatus; | 15 | private Integer processStatus; |
| 16 | 16 | ||
| 17 | + // TODO @lesan:通过字典? | ||
| 17 | private String processStatusShow; | 18 | private String processStatusShow; |
| 18 | 19 | ||
| 19 | private String processInstanceId; | 20 | private String processInstanceId; |
| @@ -22,6 +23,7 @@ public class BpmProcessPrintDataRespVO { | @@ -22,6 +23,7 @@ public class BpmProcessPrintDataRespVO { | ||
| 22 | 23 | ||
| 23 | private String processName; | 24 | private String processName; |
| 24 | 25 | ||
| 26 | + // TODO @lesan:UserSimpleBaseVO 替代 startUser、startUserDept; | ||
| 25 | private String startUser; | 27 | private String startUser; |
| 26 | 28 | ||
| 27 | private String startUserDept; | 29 | private String startUserDept; |
yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceService.java
| @@ -119,7 +119,7 @@ public interface BpmProcessInstanceService { | @@ -119,7 +119,7 @@ public interface BpmProcessInstanceService { | ||
| 119 | * @param processInstanceId 流程实例id | 119 | * @param processInstanceId 流程实例id |
| 120 | * @return 打印所需数据 | 120 | * @return 打印所需数据 |
| 121 | */ | 121 | */ |
| 122 | - BpmProcessPrintDataRespVO getPrintData(Long loginUserId, String processInstanceId); | 122 | + BpmProcessPrintDataRespVO getProcessInstancePrintData(Long loginUserId, String processInstanceId); |
| 123 | 123 | ||
| 124 | // ========== Update 写入相关方法 ========== | 124 | // ========== Update 写入相关方法 ========== |
| 125 | 125 |
yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceServiceImpl.java
| @@ -735,7 +735,7 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService | @@ -735,7 +735,7 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService | ||
| 735 | } | 735 | } |
| 736 | 736 | ||
| 737 | @Override | 737 | @Override |
| 738 | - public BpmProcessPrintDataRespVO getPrintData(Long loginUserId, String processInstanceId) { | 738 | + public BpmProcessPrintDataRespVO getProcessInstancePrintData(Long loginUserId, String processInstanceId) { |
| 739 | // TODO 方法抽离 | 739 | // TODO 方法抽离 |
| 740 | // 流程实例 | 740 | // 流程实例 |
| 741 | HistoricProcessInstance historicProcessInstance = getHistoricProcessInstance(processInstanceId); | 741 | HistoricProcessInstance historicProcessInstance = getHistoricProcessInstance(processInstanceId); |
| @@ -747,7 +747,8 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService | @@ -747,7 +747,8 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService | ||
| 747 | .getProcessDefinitionInfo(historicProcessInstance.getProcessDefinitionId()); | 747 | .getProcessDefinitionInfo(historicProcessInstance.getProcessDefinitionId()); |
| 748 | BpmModelMetaInfoVO.PrintTemplateSetting printTemplateSetting = processDefinitionInfo.getPrintTemplateSetting(); | 748 | BpmModelMetaInfoVO.PrintTemplateSetting printTemplateSetting = processDefinitionInfo.getPrintTemplateSetting(); |
| 749 | List<String> formFieldList = processDefinitionInfo.getFormFields(); | 749 | List<String> formFieldList = processDefinitionInfo.getFormFields(); |
| 750 | - List<JSONObject> formFieldObjList = formFieldList.stream().map(JSONUtil::parseObj).toList(); | 750 | + List<JSONObject> formFieldObjList = formFieldList != null ? formFieldList.stream().map(JSONUtil::parseObj).toList() |
| 751 | + : ListUtil.of(); | ||
| 751 | List<HistoricTaskInstance> tasks = historyService.createHistoricTaskInstanceQuery() | 752 | List<HistoricTaskInstance> tasks = historyService.createHistoricTaskInstanceQuery() |
| 752 | .finished() | 753 | .finished() |
| 753 | .includeTaskLocalVariables() | 754 | .includeTaskLocalVariables() |
| @@ -758,7 +759,7 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService | @@ -758,7 +759,7 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService | ||
| 758 | Set<Long> userIds = convertSet(tasks, item -> Long.valueOf(item.getAssignee())); | 759 | Set<Long> userIds = convertSet(tasks, item -> Long.valueOf(item.getAssignee())); |
| 759 | userIds.add(loginUserId); | 760 | userIds.add(loginUserId); |
| 760 | Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(userIds); | 761 | Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(userIds); |
| 761 | - HashMap<String, String> printDataMap = new HashMap<>(8 + formFieldList.size()); | 762 | + HashMap<String, String> printDataMap = new HashMap<>(8 + formFieldObjList.size()); |
| 762 | // 返回打印所需数据 | 763 | // 返回打印所需数据 |
| 763 | BpmProcessPrintDataRespVO printData = new BpmProcessPrintDataRespVO(); | 764 | BpmProcessPrintDataRespVO printData = new BpmProcessPrintDataRespVO(); |
| 764 | // 打印模板是否开启 | 765 | // 打印模板是否开启 |
| @@ -776,6 +777,7 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService | @@ -776,6 +777,7 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService | ||
| 776 | printData.setStartUser(startUser.getNickname()); | 777 | printData.setStartUser(startUser.getNickname()); |
| 777 | printData.setStartUserDept(dept.getName()); | 778 | printData.setStartUserDept(dept.getName()); |
| 778 | // 审批历史 | 779 | // 审批历史 |
| 780 | + // TODO @lesan:打印的时候,未来节点打印么? | ||
| 779 | List<BpmProcessPrintDataRespVO.ApproveNode> approveNodes = new ArrayList<>(tasks.size()); | 781 | List<BpmProcessPrintDataRespVO.ApproveNode> approveNodes = new ArrayList<>(tasks.size()); |
| 780 | tasks.forEach(item -> { | 782 | tasks.forEach(item -> { |
| 781 | Map<String, Object> taskLocalVariables = item.getTaskLocalVariables(); | 783 | Map<String, Object> taskLocalVariables = item.getTaskLocalVariables(); |
| @@ -793,8 +795,9 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService | @@ -793,8 +795,9 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService | ||
| 793 | }); | 795 | }); |
| 794 | printData.setApproveNodes(approveNodes); | 796 | printData.setApproveNodes(approveNodes); |
| 795 | // 表单数据 | 797 | // 表单数据 |
| 798 | + // TODO @lesan:这个可以在端上搞么?主要考虑,vben 和 vue3 plus 可能使用了不同的前端框架;可能直接使用 form-create 前端的工具方法,会更方便。 | ||
| 796 | Map<String, Object> processVariables = historicProcessInstance.getProcessVariables(); | 799 | Map<String, Object> processVariables = historicProcessInstance.getProcessVariables(); |
| 797 | - List<BpmProcessPrintDataRespVO.FormField> formFields = new ArrayList<>(formFieldList.size()); | 800 | + List<BpmProcessPrintDataRespVO.FormField> formFields = new ArrayList<>(formFieldObjList.size()); |
| 798 | formFieldObjList.forEach(item -> { | 801 | formFieldObjList.forEach(item -> { |
| 799 | BpmProcessPrintDataRespVO.FormField formField = new BpmProcessPrintDataRespVO.FormField(); | 802 | BpmProcessPrintDataRespVO.FormField formField = new BpmProcessPrintDataRespVO.FormField(); |
| 800 | formField.setFormName(item.getStr("title")); | 803 | formField.setFormName(item.getStr("title")); |
| @@ -834,6 +837,7 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService | @@ -834,6 +837,7 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService | ||
| 834 | Elements mention = document.getElementsByAttributeValue("data-w-e-type", "mention"); | 837 | Elements mention = document.getElementsByAttributeValue("data-w-e-type", "mention"); |
| 835 | mention.forEach(item -> { | 838 | mention.forEach(item -> { |
| 836 | String mentionId = JSONUtil.parseObj(URLUtil.decode(item.attr("data-info"))).getStr("id"); | 839 | String mentionId = JSONUtil.parseObj(URLUtil.decode(item.attr("data-info"))).getStr("id"); |
| 840 | + // TODO @lesan:这里要求非空; | ||
| 837 | item.html(printDataMap.get(mentionId)); | 841 | item.html(printDataMap.get(mentionId)); |
| 838 | }); | 842 | }); |
| 839 | // 替换流程记录 | 843 | // 替换流程记录 |