From b426469cba57e119f99645c639eab04a7c6260e5 Mon Sep 17 00:00:00 2001 From: lishuai Date: Fri, 28 Feb 2025 11:23:44 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A2=B3=E8=B5=84=E4=BA=A7=E5=88=86=E6=9E=90-?= =?UTF-8?q?=E8=B6=8B=E5=8A=BF=202025=E5=B9=B42=E6=9C=8827=E6=97=A510:31:29?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/CalcTargetConfigServiceImpl.java | 60 +++++++++++++------ 1 file changed, 43 insertions(+), 17 deletions(-) diff --git a/modules/calculation/src/main/java/com/thing/calculation/service/impl/CalcTargetConfigServiceImpl.java b/modules/calculation/src/main/java/com/thing/calculation/service/impl/CalcTargetConfigServiceImpl.java index 2c4e277..95d42f8 100644 --- a/modules/calculation/src/main/java/com/thing/calculation/service/impl/CalcTargetConfigServiceImpl.java +++ b/modules/calculation/src/main/java/com/thing/calculation/service/impl/CalcTargetConfigServiceImpl.java @@ -1,14 +1,11 @@ package com.thing.calculation.service.impl; -import static com.thing.calculation.entity.table.CalcTargetConfigEntityTableDef.CALC_TARGET_CONFIG_ENTITY; - +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; - import com.mybatisflex.core.query.QueryWrapper; import com.thing.calculation.dto.*; import com.thing.calculation.entity.CalcSourceConfigEntity; import com.thing.calculation.entity.CalcTargetConfigEntity; -import com.thing.calculation.entity.table.CalcTargetConfigEntityTableDef; import com.thing.calculation.enumeration.CalcConfigType; import com.thing.calculation.excel.CalcConfigExcel; import com.thing.calculation.excel.CalculationTypeExcel; @@ -31,11 +28,8 @@ import com.thing.common.orm.service.impl.BaseServiceImpl; import com.thing.common.orm.utils.IdGenerator; import com.thing.common.tskv.service.TsKvService; import com.thing.sys.security.context.UserContext; - import jakarta.servlet.http.HttpServletResponse; - import lombok.RequiredArgsConstructor; - import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.cache.annotation.CacheEvict; @@ -50,6 +44,8 @@ import java.util.function.Consumer; import java.util.function.Function; import java.util.stream.Collectors; +import static com.thing.calculation.entity.table.CalcTargetConfigEntityTableDef.CALC_TARGET_CONFIG_ENTITY; + /** * 物计算(目标物)配置 * @@ -70,14 +66,14 @@ public class CalcTargetConfigServiceImpl private final CalcSourceConfigService calcSourceConfigService; /** 变量池:A ~ Z */ - private static final List variablePool = new ArrayList<>(); - - static { - for (int asciiValue = 65; asciiValue <= 90; asciiValue++) { - char c = (char) asciiValue; - variablePool.add(String.valueOf(c)); - } - } +// private static final List variablePool = new ArrayList<>(); +// +// static { +// for (int asciiValue = 65; asciiValue <= 90; asciiValue++) { +// char c = (char) asciiValue; +// variablePool.add(String.valueOf(c)); +// } +// } @Override @@ -160,6 +156,32 @@ public class CalcTargetConfigServiceImpl calcSourceConfigService.saveOrUpdateBatch(sourceConfigEntities); } + // 递归生成字母组合 + public static List generateCombinations(int targetSize) { + List combinations = new ArrayList<>(); + int letterCount = 26; // 英文字母数量 + + // 生成字母组合 + int i = 0; + while (combinations.size() < targetSize) { + combinations.add(toExcelColumn(i++)); + } + + return combinations; + } + // 将数字转换为类似Excel列的字母组合(从A到Z,AA,AB等) + public static String toExcelColumn(int n) { + StringBuilder sb = new StringBuilder(); + + // 转换为Excel列号 + while (n >= 0) { + sb.append((char) ('A' + n % 26)); + n = n / 26 - 1; + } + + return sb.reverse().toString(); + } + /** * 生成配置默认信息,手动生成id以建立目标物和计算物之间的关联 * @@ -379,9 +401,12 @@ public class CalcTargetConfigServiceImpl private void autoGenerateFormula( CalcTargetConfigDTO targetConfig, List sourceConfigs) { StringBuilder formulaBuilder = new StringBuilder(); + + List combinations = generateCombinations(CollectionUtil.size(sourceConfigs)); + for (int i = 0; i < sourceConfigs.size(); i++) { CalcSourceConfigDTO sourceConfig = sourceConfigs.get(i); - String alias = variablePool.get(i); + String alias = combinations.get(i); sourceConfig.setSourceAttrAlias(alias); formulaBuilder.append(alias); if (i < sourceConfigs.size() - 1) { @@ -394,9 +419,10 @@ public class CalcTargetConfigServiceImpl private void autoGenerateFormula( CalcTargetConfigEntity targetConfig, List sourceConfigs) { StringBuilder formulaBuilder = new StringBuilder(); + List combinations = generateCombinations(CollectionUtil.size(sourceConfigs)); for (int i = 0; i < sourceConfigs.size(); i++) { CalcSourceConfigEntity sourceConfig = sourceConfigs.get(i); - String alias = variablePool.get(i); + String alias = combinations.get(i); sourceConfig.setSourceAttrAlias(alias); formulaBuilder.append(alias); if (i < sourceConfigs.size() - 1) {