Browse Source

Merge remote-tracking branch 'origin/master' into last

zhao_gqing 5 months ago
parent
commit
ddbd6423ee

+ 2 - 28
src/main/java/com/sundata/internalevaluation/calc/calcUnit/DataSetCalcUnit.java

@@ -35,7 +35,7 @@ public class DataSetCalcUnit extends CalcUnit {
      * @param initContext 计算单元初始化参数
      */
     public DataSetCalcUnit(String calcCode, String calcName, Map<String, Object> initContext, DataSetConfigModel dataSetConfigModel) {
-        super(calcCode, calcName, CalcType.DATAITEM, initContext);
+        super(calcCode, calcName, CalcType.DATASET, initContext);
         this.dataSetConfigModel = dataSetConfigModel;
     }
 
@@ -81,7 +81,7 @@ public class DataSetCalcUnit extends CalcUnit {
         //DataSetConfigService dataSetService = SpringUtil.getBean(DataSetConfigService.class);
         DataSourcesService sourcesService = SpringUtil.getBean(DataSourcesService.class);
         //dataSetService.getDataList(new DataSetConfigModel());
-        List<DataSourcesModel> sourceList =null;
+        List<DataSourcesModel> sourceList = new ArrayList<>();
         for (String s :dataSetConfigModel.getDataSourcesNos()) {
             // sourceModel.setDataSourcesNo();
             DataSourcesModel model = sourcesService.selectDetailData(s);
@@ -93,7 +93,6 @@ public class DataSetCalcUnit extends CalcUnit {
 
 
         return  calcList;
-//        return ConfigImages.dataSetCalcUnitListMap.get(this);
     }
 
     /**
@@ -126,26 +125,6 @@ public class DataSetCalcUnit extends CalcUnit {
      */
     @Override
     public void calc(final CalcResult<String, Object> thisResult, String calculateInstanceNumber,Map<String, Object> context, Map<CalcUnit, CalcResult<String, Object>> sourceResults) {
-//        log.debug("模拟计算过程,计算参数为:【{}】,来源结果数据为:【{}】",context, sourceResults);
-//        List<User> userList = new ArrayList<>();
-//        List<Bussiness> bussinesseList = new ArrayList<>();
-//        Faker faker = Faker.instance(Locale.CHINA);
-//        thisResult.put(this.getCalcCode()+"-1", faker.number().randomNumber());
-//        thisResult.put(this.getCalcCode()+"-2", faker.number().randomNumber());
-//
-//        for (int i = 0; i < 1000; i++) {
-//            userList.add(new User(faker.number().randomDigitNotZero(),faker.name().fullName(),faker.number().numberBetween(1,90),faker.address().fullAddress(),faker.internet().emailAddress("sundatasoft.com"), faker.phoneNumber().cellPhone(),faker.date().birthday()));
-//        }
-//        for (int i = 0; i < 100_000; i++) {
-//            bussinesseList.add(new Bussiness(faker.number().randomDigitNotZero(),faker.name().fullName(),faker.number().randomDouble(6,100,1000000),faker.number().numberBetween(1,90)));
-//        }
-//        thisResult.put(this.getCalcCode()+"-user", userList);
-//        thisResult.put(this.getCalcCode()+"-buss", bussinesseList);
-//
-////        log.debug("模拟计算完成,结果对象为:【{}】",thisResult);
-//
-//        context.put(calculateInstanceNumber+"-"+this.getCalcCode(),thisResult);
-//        log.debug("对参数二次修改:{}",context);
 
         // TODO 实际的计算过程
         AtomicReference<CalcResult<String, Object>> resultMap = new AtomicReference<>();
@@ -154,11 +133,6 @@ public class DataSetCalcUnit extends CalcUnit {
             resultMap.setOpaque(result);
         });
         thisResult.put(this.getCalcCode(),resultMap);
-//        DataSourcesModel sourceModel = new DataSourcesModel();
-//        CalcTaskResult calc = CalcUtil.calc("INDEX"+System.currentTimeMillis(),
-//                new DataSourcesCalcUnit(sourceModel.getDataSourcesNo(),sourceModel.getDataSourcesName(),CalcType.DATASOURCES,Map.of(),sourceModel),Map.of());
-
-
 
     }
 

+ 3 - 2
src/main/java/com/sundata/internalevaluation/calc/calcUnit/DataSourcesCalcUnit.java

@@ -12,6 +12,7 @@ import com.sundata.internalevaluation.configuration.model.SysInterface;
 import com.sundata.internalevaluation.configuration.service.DataSourcesService;
 import com.sundata.internalevaluation.configuration.service.SysInterfaceService;
 import com.sundata.internalevaluation.script.ScriptUtil;
+import com.sundata.internalevaluation.script.TemplateUtil;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -134,7 +135,7 @@ public class DataSourcesCalcUnit extends CalcUnit {
 
             if (dataSourcesModel.getDataSourcesType().equals("INTERFACE")) {
                 // 数据来源类型为接口时处理逻辑
-                if (calcUnit instanceof QueryLogicCalcUnit queryLogicCalcUnit) {
+                if (calcUnit instanceof InterfaceCalcUnit ) {
                     // 获取json
                     String json = result.get(calcUnit.getCalcCode()) instanceof String ? (String) result.get(calcUnit.getCalcCode()) : "";
                     Map<Object, Object> objectObjectMap = JsonUtil.jsonToMap(json);
@@ -144,7 +145,7 @@ public class DataSourcesCalcUnit extends CalcUnit {
                 // 数据来源类型为jdbc时处理逻辑
                 if (calcUnit instanceof QueryLogicCalcUnit queryLogicCalcUnit) {
                     String sqlTemplate = queryLogicCalcUnit.queryLogicModel.getSelectSqlScript();
-                    String sql = (String) ScriptUtil.executeScript(calcUnit.getCalcCode(), sqlTemplate, result);
+                    String sql = TemplateUtil.execute(calcUnit.getCalcCode(), sqlTemplate, result);
                     thisResult.put(this.getCalcCode(), DBExecutor.doQueryMap(sql));
                 }
             }

+ 12 - 2
src/main/java/com/sundata/internalevaluation/calc/calcUnit/IndexCalcUnit.java

@@ -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));
         }