From 62aec2b9ee9db6190cbda5ed31ce6dacfbabd7b1 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Mon, 10 Nov 2025 15:17:30 +0800 Subject: [PATCH] =?UTF-8?q?feat(REQ-5965)=20-=20=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E6=B2=A1=E6=9C=89=E4=BC=A0=E5=85=A5=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E6=96=87=E6=A1=A3=E6=97=B6=E7=9A=84NPE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...opyTemplateFileTaskEvent_105_Listener.java | 85 ++++++++++--------- 1 file changed, 43 insertions(+), 42 deletions(-) diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/task/FirstCopyTemplateFileTaskEvent_105_Listener.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/task/FirstCopyTemplateFileTaskEvent_105_Listener.java index 354352415..eff5133be 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/task/FirstCopyTemplateFileTaskEvent_105_Listener.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/task/FirstCopyTemplateFileTaskEvent_105_Listener.java @@ -104,50 +104,51 @@ public class FirstCopyTemplateFileTaskEvent_105_Listener extends AbstractBpmnEve RuntimeService runtimeService = processEngineConfiguration.getRuntimeService(); List customDocs = runtimeService.getVariable(processInstanceId, SIGN_BIZ_CUSTOM_DOCS, List.class); - if (CollectionUtils.isEmpty(docs) && CollectionUtils.isEmpty(customDocs)) { + if (CollectionUtils.isEmpty(docs)) { processSign.setDocTemplate(Collections.emptyList()); - processSign.setFileArchive(Collections.emptyList()); - } else { - // 复制基础模板 - List docTemplates = copyTempTemplate(docs); - - List customDocTemplates = new ArrayList<>(); - for (CustomDocDTO customDoc : customDocs) { - customDocTemplates.add(SignFileDTO.builder() - .id(customDoc.getId()) - .fileName(customDoc.getFileName()) - .templateName(customDoc.getFileName()) - .fileTag(customDoc.getFileTag()) - .fileCode(customDoc.getFileCode()) - .fileKey(customDoc.getFileKey()) - .fileType(customDoc.getFileType()) - .build()); - } - List basedFileTagOrder = runtimeService.getVariable(processInstanceId, SIGN_BIZ_BASED_FILE_TAG_ORDER, List.class); - if (Objects.nonNull(basedFileTagOrder)) { - docTemplates.addAll(customDocTemplates); - // 基于 fileTag 排序 - Map fileTagOrderMap = IntStream.range(0, basedFileTagOrder.size()) - .boxed() - .collect(Collectors.toMap(basedFileTagOrder::get, i -> i, (a, b) -> a)); - - docTemplates.sort(Comparator.comparing(d -> fileTagOrderMap.getOrDefault(d.getFileTag(), Integer.MAX_VALUE))); - docTemplates = docTemplates.stream().sorted(Comparator.comparingInt(d -> fileTagOrderMap.getOrDefault(d.getFileTag(), Integer.MAX_VALUE))) - .collect(Collectors.toList()); - } else { - // 基于前插还是后插排序 - String customAddType = runtimeService.getVariable(processInstanceId, SIGN_BIZ_CUSTOM_DOC_ADD_ORDER_TYPE, String.class); - if (Objects.equals("last", customAddType)) { - docTemplates.addAll(customDocTemplates); - } else { - docTemplates.addAll(0, customDocTemplates); - } - } - processSign.setDocTemplate(docTemplates); - - List archives = replaceTemplateVariable(docTemplates, processEngineConfiguration, processInstanceId); - processSign.setFileArchive(archives); } + if (CollectionUtils.isEmpty(customDocs)) { + processSign.setFileArchive(Collections.emptyList()); + } + // 复制基础模板 + List docTemplates = copyTempTemplate(docs); + + List customDocTemplates = new ArrayList<>(); + for (CustomDocDTO customDoc : customDocs) { + customDocTemplates.add(SignFileDTO.builder() + .id(customDoc.getId()) + .fileName(customDoc.getFileName()) + .templateName(customDoc.getFileName()) + .fileTag(customDoc.getFileTag()) + .fileCode(customDoc.getFileCode()) + .fileKey(customDoc.getFileKey()) + .fileType(customDoc.getFileType()) + .build()); + } + List basedFileTagOrder = runtimeService.getVariable(processInstanceId, SIGN_BIZ_BASED_FILE_TAG_ORDER, List.class); + if (Objects.nonNull(basedFileTagOrder)) { + docTemplates.addAll(customDocTemplates); + // 基于 fileTag 排序 + Map fileTagOrderMap = IntStream.range(0, basedFileTagOrder.size()) + .boxed() + .collect(Collectors.toMap(basedFileTagOrder::get, i -> i, (a, b) -> a)); + + docTemplates.sort(Comparator.comparing(d -> fileTagOrderMap.getOrDefault(d.getFileTag(), Integer.MAX_VALUE))); + docTemplates = docTemplates.stream().sorted(Comparator.comparingInt(d -> fileTagOrderMap.getOrDefault(d.getFileTag(), Integer.MAX_VALUE))) + .collect(Collectors.toList()); + } else { + // 基于前插还是后插排序 + String customAddType = runtimeService.getVariable(processInstanceId, SIGN_BIZ_CUSTOM_DOC_ADD_ORDER_TYPE, String.class); + if (Objects.equals("last", customAddType)) { + docTemplates.addAll(customDocTemplates); + } else { + docTemplates.addAll(0, customDocTemplates); + } + } + processSign.setDocTemplate(docTemplates); + + List archives = replaceTemplateVariable(docTemplates, processEngineConfiguration, processInstanceId); + processSign.setFileArchive(archives); // 没有可用的文档,但仍然记录库表 extAxProcessSignService.save(processSign); }