Merge branch 'feature/REQ-5965' into dev

This commit is contained in:
wangli 2025-11-10 15:17:48 +08:00
commit 20bf9e4d7b

View File

@ -104,50 +104,51 @@ public class FirstCopyTemplateFileTaskEvent_105_Listener extends AbstractBpmnEve
RuntimeService runtimeService = processEngineConfiguration.getRuntimeService();
List<CustomDocDTO> 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<SignFileDTO> docTemplates = copyTempTemplate(docs);
List<SignFileDTO> 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<String> basedFileTagOrder = runtimeService.getVariable(processInstanceId, SIGN_BIZ_BASED_FILE_TAG_ORDER, List.class);
if (Objects.nonNull(basedFileTagOrder)) {
docTemplates.addAll(customDocTemplates);
// 基于 fileTag 排序
Map<String, Integer> 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<SignFileDTO> archives = replaceTemplateVariable(docTemplates, processEngineConfiguration, processInstanceId);
processSign.setFileArchive(archives);
}
if (CollectionUtils.isEmpty(customDocs)) {
processSign.setFileArchive(Collections.emptyList());
}
// 复制基础模板
List<SignFileDTO> docTemplates = copyTempTemplate(docs);
List<SignFileDTO> 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<String> basedFileTagOrder = runtimeService.getVariable(processInstanceId, SIGN_BIZ_BASED_FILE_TAG_ORDER, List.class);
if (Objects.nonNull(basedFileTagOrder)) {
docTemplates.addAll(customDocTemplates);
// 基于 fileTag 排序
Map<String, Integer> 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<SignFileDTO> archives = replaceTemplateVariable(docTemplates, processEngineConfiguration, processInstanceId);
processSign.setFileArchive(archives);
// 没有可用的文档但仍然记录库表
extAxProcessSignService.save(processSign);
}