|
@@ -2,9 +2,11 @@ package com.sundata.internalevaluation.calc.calcUnit;
|
|
|
|
|
|
import cn.hutool.extra.spring.SpringUtil;
|
|
|
import com.sundata.common.util.DBExecutor;
|
|
|
+import com.sundata.common.util.JsonUtil;
|
|
|
import com.sundata.internalevaluation.calc.model.CalcResult;
|
|
|
import com.sundata.internalevaluation.calc.model.CalcUnit;
|
|
|
import com.sundata.internalevaluation.calc.model.finals.CalcType;
|
|
|
+import com.sundata.internalevaluation.conf.JsonToCalciteExample;
|
|
|
import com.sundata.internalevaluation.configuration.model.DataSetConfigModel;
|
|
|
import com.sundata.internalevaluation.configuration.model.IndexConfigModel;
|
|
|
import com.sundata.internalevaluation.configuration.model.IndexSourceModel;
|
|
@@ -12,12 +14,14 @@ import com.sundata.internalevaluation.configuration.service.DataSetConfigService
|
|
|
import com.sundata.internalevaluation.configuration.service.IndexConfigService;
|
|
|
import com.sundata.internalevaluation.script.ScriptUtil;
|
|
|
import com.sundata.internalevaluation.script.TemplateUtil;
|
|
|
+import org.apache.calcite.schema.SchemaPlus;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.Set;
|
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
|
import java.util.concurrent.atomic.AtomicReference;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -186,11 +190,15 @@ public class IndexCalcUnit extends CalcUnit {
|
|
|
});
|
|
|
|
|
|
if (dataSetNumber.get() > 0 && indexNumber.get() == 0){
|
|
|
+
|
|
|
+ String json = JsonUtil.toJSONString(dataSetResult.get());
|
|
|
+ SchemaPlus tableArea = JsonToCalciteExample.jsonTotable(this.indexConfigModel.getIndexNo(),json);
|
|
|
+ Set<String> tacleSet = tableArea.getSubSchema(this.indexConfigModel.getIndexNo()).getTableNames();
|
|
|
// 如果数据集的数量大于0
|
|
|
// 获取指标逻辑
|
|
|
String logic = indexConfigModel.getIndexLogic();
|
|
|
// 执行sql,并放进结果集内
|
|
|
- // JsonToCalciteExample.jsonTotable()
|
|
|
+
|
|
|
// TODO 计算逻辑
|
|
|
thisResult.put(this.getCalcCode(),DBExecutor.doQueryMap(logic));
|
|
|
}
|
|
@@ -204,13 +212,15 @@ public class IndexCalcUnit extends CalcUnit {
|
|
|
thisResult.put(this.getCalcCode(),result);
|
|
|
}
|
|
|
if (dataSetNumber.get() > 0 && indexNumber.get() >0) {
|
|
|
+ String json = JsonUtil.toJSONString(dataSetResult.get());
|
|
|
+ SchemaPlus tableArea = JsonToCalciteExample.jsonTotable(this.indexConfigModel.getIndexNo(),json);
|
|
|
// 同时具有指标和数据集
|
|
|
// 获取指标逻辑
|
|
|
String logic = indexConfigModel.getIndexLogic();
|
|
|
// 先将sql作为一个 进行处理,将指标的结果作为参数带入模板成为一个新模板,后在将数据集的参数带入
|
|
|
|
|
|
String editSql = TemplateUtil.execute(indexConfigModel.getIndexNo(),logic,indexResult.get());
|
|
|
- // JsonToCalciteExample.jsonTotable()
|
|
|
+
|
|
|
|
|
|
thisResult.put(this.getCalcCode(),DBExecutor.doQueryMap(editSql));
|
|
|
}
|