Browse Source

数据集、数据源计算过程开发以及字典追加

ZhangYanJie 2 months ago
parent
commit
3acc7b834d

+ 33 - 1
src/main/java/com/sundata/internalevaluation/calc/calcUnit/DataSetCalcUnit.java

@@ -2,22 +2,33 @@ package com.sundata.internalevaluation.calc.calcUnit;
 
 import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.extra.spring.SpringUtil;
 import com.sundata.internalevaluation.calc.model.CalcException;
 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.calc.running.threads.CalcTaskResult;
+import com.sundata.internalevaluation.calc.util.CalcUtil;
+import com.sundata.internalevaluation.configuration.model.DataSetConfigModel;
+import com.sundata.internalevaluation.configuration.model.DataSourcesModel;
+import com.sundata.internalevaluation.configuration.service.DataSetConfigService;
+import com.sundata.internalevaluation.configuration.service.DataSourcesService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 数据集的计算单元
  */
 public class DataSetCalcUnit extends CalcUnit {
     private static final Logger log = LoggerFactory.getLogger(DataSetCalcUnit.class);
+
+    DataSetConfigModel dataSetConfigModel;
+
     /**
      * 创建数据单元的绝对对象,对象必须包含如下参数
      *
@@ -25,8 +36,9 @@ public class DataSetCalcUnit extends CalcUnit {
      * @param calcName    计算对象名称
      * @param initContext 计算单元初始化参数
      */
-    public DataSetCalcUnit(String calcCode, String calcName, Map<String, Object> initContext) {
+    public DataSetCalcUnit(String calcCode, String calcName, Map<String, Object> initContext, DataSetConfigModel dataSetConfigModel) {
         super(calcCode, calcName, CalcType.DATAITEM, initContext);
+        this.dataSetConfigModel = dataSetConfigModel;
     }
 
     /**
@@ -68,6 +80,22 @@ public class DataSetCalcUnit extends CalcUnit {
     @Override
     public List<CalcUnit> getSourceCalcUnits() {
         // TODO 获取源头节点
+        //DataSetConfigService dataSetService = SpringUtil.getBean(DataSetConfigService.class);
+        DataSourcesService sourcesService = SpringUtil.getBean(DataSourcesService.class);
+        //dataSetService.getDataList(new DataSetConfigModel());
+        List<DataSourcesModel> sourceList =null;
+        for (String s :dataSetConfigModel.getDataSourcesNo()) {
+            DataSourcesModel sourceModel = new DataSourcesModel();
+            sourceModel.setDataSourcesNo(s);
+            // sourceModel.setDataSourcesNo();
+            DataSourcesModel model = sourcesService.selectDetailData(sourceModel);
+            sourceList.add(model);
+        }
+
+        List<CalcUnit> calcList = sourceList.stream().map(model ->
+                new DataSourcesCalcUnit(model.getDataSourcesNo(),model.getDataSourcesName(),CalcType.DATASOURCES,Map.of(),model)).collect(Collectors.toList());
+
+
         return new ArrayList<>();
 //        return ConfigImages.dataSetCalcUnitListMap.get(this);
     }
@@ -124,6 +152,10 @@ public class DataSetCalcUnit extends CalcUnit {
 //        log.debug("对参数二次修改:{}",context);
 
         // TODO 实际的计算过程
+//        DataSourcesModel sourceModel = new DataSourcesModel();
+//        CalcTaskResult calc = CalcUtil.calc("INDEX"+System.currentTimeMillis(),
+//                new DataSourcesCalcUnit(sourceModel.getDataSourcesNo(),sourceModel.getDataSourcesName(),CalcType.DATASOURCES,Map.of(),sourceModel),Map.of());
+
 
 
     }

+ 29 - 25
src/main/java/com/sundata/internalevaluation/calc/calcUnit/DataSourcesCalcUnit.java

@@ -1,5 +1,7 @@
 package com.sundata.internalevaluation.calc.calcUnit;
 
+import cn.hutool.extra.spring.SpringUtil;
+import com.sundata.common.util.DBExecutor;
 import com.sundata.internalevaluation.calc.model.CalcResult;
 import com.sundata.internalevaluation.calc.model.CalcUnit;
 import com.sundata.internalevaluation.calc.model.finals.CalcType;
@@ -20,11 +22,8 @@ import java.util.stream.Collectors;
 
 public class DataSourcesCalcUnit extends CalcUnit {
 
-    DataSourcesService dataSourcesService;
-
     final DataSourcesModel dataSourcesModel;
 
-
     /**
     /**
      * 创建数据单元的绝对对象,对象必须包含如下参数
@@ -35,12 +34,9 @@ public class DataSourcesCalcUnit extends CalcUnit {
      * @param initContext 计算单元初始化参数
      */
     public DataSourcesCalcUnit(String calcCode, String calcName,CalcType calcType, Map<String, Object> initContext,
-                               DataSourcesModel dataSourcesModel, DataSourcesService dataSourcesService) {
+                               DataSourcesModel dataSourcesModel) {
         super(calcCode, calcName, calcType, initContext);
-
-        // this.dataItemConfigModel = dataItemConfigModel;
         this.dataSourcesModel = dataSourcesModel;
-        this.dataSourcesService= dataSourcesService;
 
     }
 
@@ -75,15 +71,19 @@ public class DataSourcesCalcUnit extends CalcUnit {
      */
     @Override
     public List<CalcUnit> getSourceCalcUnits() {
-
+        // 通过bean获取对象
+        DataSourcesService sourcesService = SpringUtil.getBean("DataSourcesService");
         // 取得个配置信息
-        List<DataSourcesModel> dataList = dataSourcesService.getDataList(new DataSourcesModel());
-        for (DataSourcesModel model : dataList) {
-            List<CalcUnit> inputList = model.getInputParam().stream().map(inputParam ->
+        List<DataSourcesModel> dataList = sourcesService.getDataList(new DataSourcesModel());
+        //for (DataSourcesModel model : dataList) {
+            List<CalcUnit> inputList = dataSourcesModel.getInputParam().stream().map(inputParam ->
                     new InputParamCalcUnit(inputParam.getParamNo(),inputParam.getParamName(),CalcType.INPUTPARAM,Map.of(),inputParam)).collect(Collectors.toList());
-            List<CalcUnit> queryList = model.getQueryLogic().stream().map(queryParam -> new QueryLogicCalcUnit(queryParam.getQueryLogicNo(),queryParam.getScriptDescription(),CalcType.QUERYLOGIC,Map.of(),queryParam)).collect(Collectors.toList());;
-
-        }
+            List<CalcUnit> queryList = dataSourcesModel.getQueryLogic().stream().map(queryParam -> new QueryLogicCalcUnit(queryParam.getQueryLogicNo(),queryParam.getScriptDescription(),CalcType.QUERYLOGIC,Map.of(),queryParam)).collect(Collectors.toList());;
+        List<CalcUnit> itemList = dataSourcesModel.getDataItemConfig().stream().map(itemParam -> new DataItemCalcUnit(itemParam.getDataItemNo(),itemParam.getDataItemName(),CalcType.DATAITEM,Map.of(),itemParam)).collect(Collectors.toList());
+        //}
+        inputList.addAll(queryList);
+        inputList.addAll(itemList);
+        // return inputList;
 //        return dataList.stream().map(sourceModel -> new DataSourcesCalcUnit(sourceModel.getDataSourcesNo(),
 //                sourceModel.getDataSourcesName(),CalcType.DATASOURCES,Map.of(),sourceModel)).collect(Collectors.toList());
         return List.of();
@@ -120,20 +120,24 @@ public class DataSourcesCalcUnit extends CalcUnit {
     @Override
     public  void calc(CalcResult<String, Object> thisResult, String calculateInstanceNumber, Map<String, Object> context, Map<CalcUnit, CalcResult<String, Object>> sourceResults) {
 
-
-        if (dataSourcesModel.getDataSourcesType().equals("1")) {
-            // 数据来源类型为接口时处理逻辑
-        } else if (dataSourcesModel.getDataSourcesType().equals("2")) {
-            // 数据来源类型为jdbc时处理逻辑
-
-        }
-
+        sourceResults.forEach((calcUnit,result)->{
+            if (dataSourcesModel.getDataSourcesType().equals("interface")) {
+                // 数据来源类型为接口时处理逻辑
+                if (calcUnit instanceof QueryLogicCalcUnit queryLogicCalcUnit) {
+                    String sql = queryLogicCalcUnit.queryLogicModel.getSelectSqlScript();
+                    thisResult.put(this.getCalcCode(), DBExecutor.doQueryMap(sql));
+                }
+            } else if (dataSourcesModel.getDataSourcesType().equals("jdbc")) {
+                // 数据来源类型为jdbc时处理逻辑
+                if (calcUnit instanceof QueryLogicCalcUnit queryLogicCalcUnit) {
+                    String sql = queryLogicCalcUnit.queryLogicModel.getSelectSqlScript();
+                    thisResult.put(this.getCalcCode(), DBExecutor.doQueryMap(sql));
+                }
+            }
+        });
         // 调用所有源头节点
         List<CalcUnit> unitList = this.getSourceCalcUnits();
 
-        for (CalcUnit unit : unitList) {
-
-        }
 
         sourceResults.forEach((a,b)->{
             if (a.getCalcCode().equals("")) {

+ 5 - 3
src/main/java/com/sundata/internalevaluation/configuration/model/DataSetConfigModel.java

@@ -1,5 +1,7 @@
 package com.sundata.internalevaluation.configuration.model;
 
+import java.util.List;
+
 public class DataSetConfigModel {
 
     // 数据集编号
@@ -7,7 +9,7 @@ public class DataSetConfigModel {
     // 数据集名称
     private String dataSetName;
     // 数据源编号
-    private String dataSourcesNo;
+    private List<String> dataSourcesNo;
 
     public String getDataSetNo() {
         return dataSetNo;
@@ -25,11 +27,11 @@ public class DataSetConfigModel {
         this.dataSetName = dataSetName;
     }
 
-    public String getDataSourcesNo() {
+    public List<String> getDataSourcesNo() {
         return dataSourcesNo;
     }
 
-    public void setDataSourcesNo(String dataSourcesNo) {
+    public void setDataSourcesNo(List<String> dataSourcesNo) {
         this.dataSourcesNo = dataSourcesNo;
     }
 }

+ 4 - 1
src/main/java/com/sundata/internalevaluation/configuration/mybatis/DataSourcesMapper.xml

@@ -213,7 +213,10 @@
         </trim>
     </update>
 
-
+    <!-- 接口字典 -->
+    <select id="selectInterFaceData" resultType="com.sundata.admin.nounmanage.model.DictContent">
+        select  ID as id, INTERFACENAME as text from SYS_REQ_INTERFACE
+    </select>
 
 
 </mapper>