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) {