Browse Source

Merge remote-tracking branch 'origin/master'

JoeLazy 2 months ago
parent
commit
dd4bd26c69

+ 9 - 6
src/main/java/com/sundata/internalevaluation/calc/calcUnit/DataSetCalcUnit.java

@@ -7,11 +7,8 @@ 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;
@@ -19,6 +16,7 @@ import org.slf4j.LoggerFactory;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.atomic.AtomicReference;
 import java.util.stream.Collectors;
 
 /**
@@ -85,10 +83,8 @@ public class DataSetCalcUnit extends CalcUnit {
         //dataSetService.getDataList(new DataSetConfigModel());
         List<DataSourcesModel> sourceList =null;
         for (String s :dataSetConfigModel.getDataSourcesNos()) {
-            DataSourcesModel sourceModel = new DataSourcesModel();
-            sourceModel.setDataSourcesNo(s);
             // sourceModel.setDataSourcesNo();
-            DataSourcesModel model = sourcesService.selectDetailData(sourceModel);
+            DataSourcesModel model = sourcesService.selectDetailData(s);
             sourceList.add(model);
         }
 
@@ -152,6 +148,13 @@ public class DataSetCalcUnit extends CalcUnit {
 //        log.debug("对参数二次修改:{}",context);
 
         // TODO 实际的计算过程
+        AtomicReference<CalcResult<String, Object>> resultMap = new AtomicReference<>();
+        // 合并数据集
+        sourceResults.forEach((calcUnit,result)-> {
+            resultMap.setOpaque(result);
+            thisResult.putAll(result);
+        });
+
 //        DataSourcesModel sourceModel = new DataSourcesModel();
 //        CalcTaskResult calc = CalcUtil.calc("INDEX"+System.currentTimeMillis(),
 //                new DataSourcesCalcUnit(sourceModel.getDataSourcesNo(),sourceModel.getDataSourcesName(),CalcType.DATASOURCES,Map.of(),sourceModel),Map.of());

+ 39 - 7
src/main/java/com/sundata/internalevaluation/calc/calcUnit/IndexCalcUnit.java

@@ -1,13 +1,16 @@
 package com.sundata.internalevaluation.calc.calcUnit;
 
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.extra.spring.SpringUtil;
 import com.sundata.common.util.DBExecutor;
 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.configuration.model.DataSetConfigModel;
 import com.sundata.internalevaluation.configuration.model.IndexConfigModel;
 import com.sundata.internalevaluation.configuration.model.IndexSourceModel;
+import com.sundata.internalevaluation.configuration.service.DataSetConfigService;
 import com.sundata.internalevaluation.configuration.service.IndexConfigService;
 import com.sundata.internalevaluation.script.ScriptUtil;
 import org.slf4j.Logger;
@@ -17,11 +20,10 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
 
 public class IndexCalcUnit extends CalcUnit {
 
-    private IndexConfigService indexConfigService;
-
     private IndexConfigModel indexConfigModel;
 
     private static final Logger log = LoggerFactory.getLogger(IndexCalcUnit.class);
@@ -32,10 +34,9 @@ public class IndexCalcUnit extends CalcUnit {
      * @param calcName    计算对象名称
      * @param initContext 计算单元初始化参数
      */
-    public IndexCalcUnit(String calcCode, String calcName, Map<String, Object> initContext, IndexConfigModel indexConfigModel,IndexConfigService indexConfigService) {
+    public IndexCalcUnit(String calcCode, String calcName, Map<String, Object> initContext, IndexConfigModel indexConfigModel) {
         super(calcCode, calcName, CalcType.INDEX, initContext);
         this.indexConfigModel = indexConfigModel;
-        this.indexConfigService = indexConfigService;
     }
 
     /**
@@ -77,9 +78,40 @@ public class IndexCalcUnit extends CalcUnit {
     @Override
     public List<CalcUnit> getSourceCalcUnits() {
         // TODO 获取源头节点
-        List<IndexSourceModel> indexList = indexConfigService.getIndexSourceList(new IndexConfigModel());
-        indexList.stream().map(sourceModel -> new IndexSourceCalcUnit
-                (sourceModel.getOtherIndexNo(),"",CalcType.INDEX,Map.of(),sourceModel));
+        DataSetConfigService dataSetService = SpringUtil.getBean(DataSetConfigService.class);
+        IndexConfigService indexConfigService = SpringUtil.getBean(IndexConfigService.class);
+        List<IndexSourceModel> selectList = indexConfigService.getIndexSourceList(this.indexConfigModel);
+        // 定义存放数据集和其他指标的集合
+        List<IndexConfigModel> indexList = new ArrayList<>();
+        List<DataSetConfigModel> dataSetList = new ArrayList<>();
+        // 查询个指标编号和数据集对应的数据
+        for ( IndexSourceModel m : selectList) {
+            if (m.getDataSourceType().equals("DATASET")) {
+                DataSetConfigModel datasetModel =  dataSetService.selectDetailData(new DataSetConfigModel());
+                dataSetList.add(datasetModel);
+            } else if (m.getDataSourceType().equals("INDEX")) {
+                IndexConfigModel indexConfigModel = indexConfigService.selectDetailData(new IndexConfigModel());
+                indexList.add(indexConfigModel);
+            }
+        }
+
+        List<CalcUnit> indexCalcList = null;
+        List<CalcUnit> dataSetCalcList = null;
+        List<CalcUnit> resultCalcMap = new ArrayList<>();
+        // 数据源头节点生成
+        if (indexList.size() > 0) {
+            indexCalcList = indexList.stream().map(indexConfigModel -> new IndexCalcUnit
+                    (indexConfigModel.getIndexNo(),indexConfigModel.getIndexName(),Map.of(),indexConfigModel)).collect(Collectors.toList());
+        }
+        if (dataSetList.size() > 0) {
+            dataSetCalcList = dataSetList.stream().map(dataSetModel -> new DataSetCalcUnit
+                    (dataSetModel.getDataSetNo(),dataSetModel.getDataSetName(),Map.of(),dataSetModel)).collect(Collectors.toList());
+        }
+//        selectList.stream().map(sourceModel -> new IndexSourceCalcUnit
+//                (sourceModel.getOtherIndexNo(),"",CalcType.INDEX,Map.of(),sourceModel));
+        // 结果封装
+        resultCalcMap.addAll(indexCalcList);
+        resultCalcMap.addAll(dataSetCalcList);
         return new ArrayList<>();
 //        return ConfigImages.indexCalcUnitListMap.get(this);
     }

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

@@ -82,7 +82,7 @@ public class RuleCalcUnit extends CalcUnit {
     public List<CalcUnit> getSourceCalcUnits() {
         List<IndexConfigModel> indexConfigModels = indexConfigService.selectIndexListByRuleNo(this.reqRule.getRuleNo());
         return indexConfigModels.stream()
-                .map(item -> new IndexCalcUnit(item.getIndexNo(), item.getIndexName(), Map.of(), item, indexConfigService)).collect(Collectors.toList());
+                .map(item -> new IndexCalcUnit(item.getIndexNo(), item.getIndexName(), Map.of(), item)).collect(Collectors.toList());
     }
 
     /**

+ 1 - 1
src/main/java/com/sundata/internalevaluation/configuration/controller/DataSourcesAction.java

@@ -87,7 +87,7 @@ public class DataSourcesAction {
     @RequestMapping({"selectDetailData"})
     public DataSourcesModel selectDetailData(HttpServletRequest request, HttpServletResponse response,
                                 @RequestBody DataSourcesModel model) {
-        return dataSourcesService.selectDetailData(model);
+        return dataSourcesService.selectDetailData(model.getDataSourcesNo());
     }
 
 }

+ 3 - 3
src/main/java/com/sundata/internalevaluation/configuration/mapper/DataSourcesMapper.java

@@ -13,11 +13,11 @@ import java.util.List;
 public interface DataSourcesMapper {
     List<DataSourcesModel> getDataList(DataSourcesModel model);
 
-    List<InputParamModel> getInputParamList(DataSourcesModel model);
+    List<InputParamModel> getInputParamList(String dataSourcesNo);
 
-    List<DataItemConfigModel> getDataItemConfigList(DataSourcesModel model);
+    List<DataItemConfigModel> getDataItemConfigList(String dataSourcesNo);
 
-    List<QueryLogicModel> getQueryLogicList(DataSourcesModel model);
+    List<QueryLogicModel> getQueryLogicList(String dataSourcesNo);
 
     void createData(DataSourcesModel model);
 

+ 5 - 0
src/main/java/com/sundata/internalevaluation/configuration/mybatis/DataSourcesMapper.xml

@@ -29,6 +29,11 @@
         PARAMDESCRIBE                  AS    paramDescribe,
         PARAMCNAME                     AS    paramCName
         FROM SYS_INPUTPARAM
+        <where>
+            <if test="dataSourcesNo != null and dataSourcesNo !=''">
+                DATASOURCESNO = #{dataSourcesNo}
+            </if>
+        </where>
     </select>
 
     <!-- 数据项配置页面初始化 -->

+ 5 - 4
src/main/java/com/sundata/internalevaluation/configuration/service/DataSourcesService.java

@@ -96,10 +96,11 @@ public class DataSourcesService {
      * @return:
      * @throws:
      */
-    public DataSourcesModel selectDetailData(DataSourcesModel model) {
-        List<InputParamModel> inputList = dataSourcesMapper.getInputParamList(model);
-        List<DataItemConfigModel> dataItemList = dataSourcesMapper.getDataItemConfigList(model);
-        List<QueryLogicModel> queryLogicList = dataSourcesMapper.getQueryLogicList(model);
+    public DataSourcesModel selectDetailData(String dataSourcesNo) {
+        DataSourcesModel model = new DataSourcesModel();
+        List<InputParamModel> inputList = dataSourcesMapper.getInputParamList(dataSourcesNo);
+        List<DataItemConfigModel> dataItemList = dataSourcesMapper.getDataItemConfigList(dataSourcesNo);
+        List<QueryLogicModel> queryLogicList = dataSourcesMapper.getQueryLogicList(dataSourcesNo);
         model.setInputParam(inputList);
         model.setQueryLogic(queryLogicList);
         model.setDataItemConfig(dataItemList);