From 1e0cf3ab4ebe35431e27352ba96cd51ddaf5abdc Mon Sep 17 00:00:00 2001 From: caihaohan Date: Mon, 5 Aug 2024 16:18:09 +0800 Subject: [PATCH] =?UTF-8?q?perf:=2088047=20=E6=B3=95=E8=A7=84=E7=AC=A6?= =?UTF-8?q?=E5=90=88=E6=80=A7=E6=8E=92=E6=9F=A5=E6=80=A7=E8=83=BD=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...essStandardComplianceCheckServiceImpl.java | 32 ++++++++++++------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/impl/ProcessStandardComplianceCheckServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/impl/ProcessStandardComplianceCheckServiceImpl.java index 88b223d1..548a0b17 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/impl/ProcessStandardComplianceCheckServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/impl/ProcessStandardComplianceCheckServiceImpl.java @@ -84,6 +84,7 @@ import java.io.InputStream; import java.nio.file.Files; import java.nio.file.Path; import java.util.*; +import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; import static com.jero.modules.activiti.common.ActivitiCommon.*; @@ -446,25 +447,35 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl generate(ProcessStandardComplianceCheck scc) throws Exception { String splitFileSource = scc.getSplitFileSource(); - List detailInfoList; + CompletableFuture> detailInfoListFuture; + CompletableFuture> modelExcelVOListFuture; + // 找到拆分数据 if (StrUtil.isBlank(splitFileSource)) { MultipartFile splitFile = this.getFileById(scc.getSplitFile()); - detailInfoList = this.getSplitData(scc, splitFile); + detailInfoListFuture = CompletableFuture.supplyAsync(() -> this.getSplitData(scc, splitFile)); } else { - detailInfoList = this.getSplitDataByStandard(scc); - // 是否与上一般一致 + detailInfoListFuture = CompletableFuture.supplyAsync(() -> this.getSplitDataByStandard(scc)); + // 是否与上一版本一致 String isSameLastVersion = scc.getIsSameLastVersion(); if (YesOrNoEnum.NO.getValue().equals(isSameLastVersion)) { - // 过滤出也为否的数据 - detailInfoList = detailInfoList.stream().filter(detail -> YesOrNoEnum.NO.getValue().equals - (detail.getIsSameAsPrevVersion())).collect(Collectors.toList()); + detailInfoListFuture = detailInfoListFuture.thenApply(details -> details.stream() + .filter(detail -> YesOrNoEnum.NO.getValue().equals(detail.getIsSameAsPrevVersion())) + .collect(Collectors.toList())); } } - // 获取两个文件 + + // 获取模型文件并转换 MultipartFile modelFile = this.getFileById(scc.getModelFile()); - // 文件内容转换 - List modelExcelVOList = this.getModelExcelData(modelFile); + modelExcelVOListFuture = CompletableFuture.supplyAsync(() -> this.getModelExcelData(modelFile)); + + // 等待两个异步操作完成 + CompletableFuture.allOf(detailInfoListFuture, modelExcelVOListFuture).join(); + + // 结合两个文件的数据 + List detailInfoList = detailInfoListFuture.get(); + List modelExcelVOList = modelExcelVOListFuture.get(); + // 根据主表数据和车型文件生成子表数据并保存 return this.saveAllDetailData(modelExcelVOList, detailInfoList); } @@ -1105,7 +1116,6 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl