From c72bb590d4ab68a8e5802d8890b1d3d5f1047d3a Mon Sep 17 00:00:00 2001 From: caihaohan Date: Wed, 14 Aug 2024 10:42:57 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20scc=E6=B5=81=E7=A8=8B=E4=B8=8D=E5=88=86?= =?UTF-8?q?=E5=8F=91=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...essStandardComplianceCheckServiceImpl.java | 64 +++++++++++++------ 1 file changed, 44 insertions(+), 20 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 a064140d..0a072a24 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 @@ -85,8 +85,10 @@ 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.concurrent.ConcurrentLinkedQueue; import java.util.stream.Collectors; +import java.util.stream.IntStream; import static com.jero.modules.activiti.common.ActivitiCommon.*; import static com.jero.modules.activiti.process.standardComplianceCheck.common.ProcessStandardComplianceCheckConstants.UNALLOCATED_QUANTITY; @@ -625,6 +627,9 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl importExcelWithData(MultipartFile file, String taskId) throws IOException { + // 异步获取 handleData + CompletableFuture> handleDataFuture = CompletableFuture.supplyAsync(() -> this.getHandleData(taskId)); + List listDict = commonAPI.getDictItemAll(); Map resultMap = new HashMap<>(); List errorMsgs = new ArrayList<>(); @@ -715,8 +720,9 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl handleData = handleDataFuture.join(); // 清洗 - ProcessInfoVO handleData = this.getHandleData(taskId); this.cleanData(list, handleData.getBusinessInfoDTO().getDetailInfoList()); resultMap.put("dataList", list); } @@ -760,37 +766,55 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl list, List existDataList) { - for (int i = 0; i < list.size(); i++) { + IntStream.range(0, list.size()).parallel().forEach(i -> { WithoutDistributeExcelTemplate item = list.get(i); - item.setId(existDataList.get(i).getId()); - item.setProcessInstanceId(existDataList.get(i).getProcessInstanceId()); - item.setCheckId(existDataList.get(i).getCheckId()); + ProcessStandardComplianceCheckDetail existingData = existDataList.get(i); + + // 设置基础属性 + item.setId(existingData.getId()); + item.setProcessInstanceId(existingData.getProcessInstanceId()); + item.setCheckId(existingData.getCheckId()); + + // 根据 result 进行条件清理 String result = item.getResult(); if (StrUtil.isBlank(result)) { - item.setUnsatisfiedRequire(null); - item.setCorrectionSolution(null); - item.setCorrectionCost(null); - item.setCommonality(null); - item.setCommonalityCost(null); - item.setRemark(null); - item.setMaterial(null); + clearFieldsForBlankResult(item); } else { switch (result) { case CONFORM_TO: case NOT_INVOLVE: - item.setUnsatisfiedRequire(null); - item.setCorrectionSolution(null); - item.setCorrectionCost(null); - item.setCommonality(null); - item.setCommonalityCost(null); + clearFieldsForConformOrNotInvolve(item); break; case DISCREPANCY: case TO_BE_VERIFIED: - item.setRemark(null); - item.setMaterial(null); + clearFieldsForDiscrepancyOrToBeVerified(item); + break; } } - } + }); + } + + private void clearFieldsForBlankResult(WithoutDistributeExcelTemplate item) { + item.setUnsatisfiedRequire(null); + item.setCorrectionSolution(null); + item.setCorrectionCost(null); + item.setCommonality(null); + item.setCommonalityCost(null); + item.setRemark(null); + item.setMaterial(null); + } + + private void clearFieldsForConformOrNotInvolve(WithoutDistributeExcelTemplate item) { + item.setUnsatisfiedRequire(null); + item.setCorrectionSolution(null); + item.setCorrectionCost(null); + item.setCommonality(null); + item.setCommonalityCost(null); + } + + private void clearFieldsForDiscrepancyOrToBeVerified(WithoutDistributeExcelTemplate item) { + item.setRemark(null); + item.setMaterial(null); } private void transToDictValue(List list, List listDict, Map fileMap) {