Browse Source

碳资产分析-趋势

2025年2月27日10:31:29
qingyuan_dev_new
lishuai 11 months ago
parent
commit
b426469cba
  1. 60
      modules/calculation/src/main/java/com/thing/calculation/service/impl/CalcTargetConfigServiceImpl.java

60
modules/calculation/src/main/java/com/thing/calculation/service/impl/CalcTargetConfigServiceImpl.java

@ -1,14 +1,11 @@
package com.thing.calculation.service.impl; 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 cn.hutool.core.util.ObjectUtil;
import com.mybatisflex.core.query.QueryWrapper; import com.mybatisflex.core.query.QueryWrapper;
import com.thing.calculation.dto.*; import com.thing.calculation.dto.*;
import com.thing.calculation.entity.CalcSourceConfigEntity; import com.thing.calculation.entity.CalcSourceConfigEntity;
import com.thing.calculation.entity.CalcTargetConfigEntity; import com.thing.calculation.entity.CalcTargetConfigEntity;
import com.thing.calculation.entity.table.CalcTargetConfigEntityTableDef;
import com.thing.calculation.enumeration.CalcConfigType; import com.thing.calculation.enumeration.CalcConfigType;
import com.thing.calculation.excel.CalcConfigExcel; import com.thing.calculation.excel.CalcConfigExcel;
import com.thing.calculation.excel.CalculationTypeExcel; 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.orm.utils.IdGenerator;
import com.thing.common.tskv.service.TsKvService; import com.thing.common.tskv.service.TsKvService;
import com.thing.sys.security.context.UserContext; import com.thing.sys.security.context.UserContext;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.MapUtils; import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.CacheEvict;
@ -50,6 +44,8 @@ import java.util.function.Consumer;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; 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; private final CalcSourceConfigService calcSourceConfigService;
/** 变量池:A ~ Z */ /** 变量池:A ~ Z */
private static final List<String> variablePool = new ArrayList<>();
static {
for (int asciiValue = 65; asciiValue <= 90; asciiValue++) {
char c = (char) asciiValue;
variablePool.add(String.valueOf(c));
}
}
// private static final List<String> variablePool = new ArrayList<>();
//
// static {
// for (int asciiValue = 65; asciiValue <= 90; asciiValue++) {
// char c = (char) asciiValue;
// variablePool.add(String.valueOf(c));
// }
// }
@Override @Override
@ -160,6 +156,32 @@ public class CalcTargetConfigServiceImpl
calcSourceConfigService.saveOrUpdateBatch(sourceConfigEntities); calcSourceConfigService.saveOrUpdateBatch(sourceConfigEntities);
} }
// 递归生成字母组合
public static List<String> generateCombinations(int targetSize) {
List<String> combinations = new ArrayList<>();
int letterCount = 26; // 英文字母数量
// 生成字母组合
int i = 0;
while (combinations.size() < targetSize) {
combinations.add(toExcelColumn(i++));
}
return combinations;
}
// 将数字转换为类似Excel列的字母组合从A到ZAAAB等
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以建立目标物和计算物之间的关联 * 生成配置默认信息手动生成id以建立目标物和计算物之间的关联
* *
@ -379,9 +401,12 @@ public class CalcTargetConfigServiceImpl
private void autoGenerateFormula( private void autoGenerateFormula(
CalcTargetConfigDTO targetConfig, List<CalcSourceConfigDTO> sourceConfigs) { CalcTargetConfigDTO targetConfig, List<CalcSourceConfigDTO> sourceConfigs) {
StringBuilder formulaBuilder = new StringBuilder(); StringBuilder formulaBuilder = new StringBuilder();
List<String> combinations = generateCombinations(CollectionUtil.size(sourceConfigs));
for (int i = 0; i < sourceConfigs.size(); i++) { for (int i = 0; i < sourceConfigs.size(); i++) {
CalcSourceConfigDTO sourceConfig = sourceConfigs.get(i); CalcSourceConfigDTO sourceConfig = sourceConfigs.get(i);
String alias = variablePool.get(i);
String alias = combinations.get(i);
sourceConfig.setSourceAttrAlias(alias); sourceConfig.setSourceAttrAlias(alias);
formulaBuilder.append(alias); formulaBuilder.append(alias);
if (i < sourceConfigs.size() - 1) { if (i < sourceConfigs.size() - 1) {
@ -394,9 +419,10 @@ public class CalcTargetConfigServiceImpl
private void autoGenerateFormula( private void autoGenerateFormula(
CalcTargetConfigEntity targetConfig, List<CalcSourceConfigEntity> sourceConfigs) { CalcTargetConfigEntity targetConfig, List<CalcSourceConfigEntity> sourceConfigs) {
StringBuilder formulaBuilder = new StringBuilder(); StringBuilder formulaBuilder = new StringBuilder();
List<String> combinations = generateCombinations(CollectionUtil.size(sourceConfigs));
for (int i = 0; i < sourceConfigs.size(); i++) { for (int i = 0; i < sourceConfigs.size(); i++) {
CalcSourceConfigEntity sourceConfig = sourceConfigs.get(i); CalcSourceConfigEntity sourceConfig = sourceConfigs.get(i);
String alias = variablePool.get(i);
String alias = combinations.get(i);
sourceConfig.setSourceAttrAlias(alias); sourceConfig.setSourceAttrAlias(alias);
formulaBuilder.append(alias); formulaBuilder.append(alias);
if (i < sourceConfigs.size() - 1) { if (i < sourceConfigs.size() - 1) {

Loading…
Cancel
Save