Преглед на файлове

风控策略、指标集新功能代码开发、数据集多对多关系代码修改

ZhangYanJie преди 3 месеца
родител
ревизия
acbff3fc15
променени са 18 файла, в които са добавени 1120 реда и са изтрити 159 реда
  1. 0 101
      src/main/java/com/sundata/internalevaluation/calc/calcUnit/IndexListCalcUnit.java
  2. 86 0
      src/main/java/com/sundata/internalevaluation/calc/calcUnit/IndexListConfigCalcUnit.java
  3. 106 0
      src/main/java/com/sundata/internalevaluation/calc/calcUnit/RiskControlStrategyCalcUnit.java
  4. 92 0
      src/main/java/com/sundata/internalevaluation/configuration/controller/IndexListConfigAction.java
  5. 95 0
      src/main/java/com/sundata/internalevaluation/configuration/controller/RiskControlStrategyAction.java
  6. 6 0
      src/main/java/com/sundata/internalevaluation/configuration/mapper/DataSetConfigMapper.java
  7. 25 0
      src/main/java/com/sundata/internalevaluation/configuration/mapper/IndexListConfigMapper.java
  8. 29 0
      src/main/java/com/sundata/internalevaluation/configuration/mapper/RiskControlStrategyMapper.java
  9. 18 46
      src/main/java/com/sundata/internalevaluation/configuration/model/IndexListModel.java
  10. 76 0
      src/main/java/com/sundata/internalevaluation/configuration/model/RiskControlStrategyModel.java
  11. 38 0
      src/main/java/com/sundata/internalevaluation/configuration/mybatis/DataSetConfigMapper.xml
  12. 127 0
      src/main/java/com/sundata/internalevaluation/configuration/mybatis/IndexListConfigMapper.xml
  13. 160 0
      src/main/java/com/sundata/internalevaluation/configuration/mybatis/RiskControlStrategyMapper.xml
  14. 5 0
      src/main/java/com/sundata/internalevaluation/configuration/mybatis/SysReqRulesMapper.xml
  15. 22 6
      src/main/java/com/sundata/internalevaluation/configuration/service/DataSetConfigService.java
  16. 100 0
      src/main/java/com/sundata/internalevaluation/configuration/service/IndexListConfigService.java
  17. 6 6
      src/main/java/com/sundata/internalevaluation/configuration/service/ModelConfigService.java
  18. 129 0
      src/main/java/com/sundata/internalevaluation/configuration/service/RiskControlStrategyService.java

+ 0 - 101
src/main/java/com/sundata/internalevaluation/calc/calcUnit/IndexListCalcUnit.java

@@ -1,101 +0,0 @@
-package com.sundata.internalevaluation.calc.calcUnit;
-
-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.IndexConfigModel;
-import com.sundata.internalevaluation.configuration.service.IndexConfigService;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * Created by IntelliJ IDEA.
- *
- * @author JoeLazy
- * @date 2025-02-12 10:42:06
- * @description: 指标清单计算单元
- */
-public class IndexListCalcUnit extends CalcUnit {
-
-    final IndexConfigService indexConfigService;
-    /**
-     * 创建数据单元的绝对对象,对象必须包含如下参数
-     *
-     * @param calcCode    计算对象编号
-     * @param calcName    计算对象名称
-     * @param calcType    计算类型
-     * @param initContext 计算单元初始化参数
-     */
-    public IndexListCalcUnit(String calcCode, String calcName, CalcType calcType, Map<String, Object> initContext, IndexConfigService indexConfigService) {
-        super(calcCode, calcName, calcType, initContext);
-        this.indexConfigService = indexConfigService;
-    }
-
-    /**
-     * 判断是否已经计算过数据了
-     *
-     * @param calculateInstanceNumber 计算流水号
-     * @return 是否计算过 true 计算过 false 没有计算过
-     */
-    @Override
-    public boolean isCalcFinished(String calculateInstanceNumber) {
-        return false;
-    }
-
-    /**
-     * 初始化计算结果的方法,如果已经计算过,在实现过程中,应当在此方法中根据计算流水号重新初始化 resultContext 结果对象,为其他依赖对象做准备
-     * 若明明计算过本单元但再次计算时没有初始化该对象,则计算依赖出现问题无法定位与处理
-     *
-     * @param calculateInstanceNumber 计算流水号
-     */
-    @Override
-    public void initResultContext(String calculateInstanceNumber) {
-
-    }
-
-    /**
-     * 根据节点配置获取源节点;
-     *
-     * @return 所有源头节点
-     */
-    @Override
-    public List<CalcUnit> getSourceCalcUnits() {
-//        List<IndexConfigModel> indexList = indexConfigService.getDataList(new IndexConfigModel());
-//        indexList.stream().map(indexModel -> new IndexCalcUnit(indexModel.getIndexNo(),indexModel.getIndexName(),Map.of(),indexModel));
-        return List.of();
-    }
-
-    /**
-     * 计算之后的方法,可实现为空
-     *
-     * @param context
-     */
-    @Override
-    public void afterCalc(Map<String, Object> context) {
-
-    }
-
-    /**
-     * 计算之前,可实现空
-     *
-     * @param context
-     */
-    @Override
-    public void beforeCalc(Map<String, Object> context) {
-
-    }
-
-    /**
-     * 必须实现的主体计算内容
-     *
-     * @param thisResult              本计算单元的结果
-     * @param calculateInstanceNumber 计算流水号
-     * @param context                 节点计算参数清单
-     * @param sourceResults           源头计算节点的结果
-     */
-    @Override
-    public void calc(CalcResult<String, Object> thisResult, String calculateInstanceNumber, Map<String, Object> context, Map<CalcUnit, CalcResult<String, Object>> sourceResults) {
-
-    }
-}

+ 86 - 0
src/main/java/com/sundata/internalevaluation/calc/calcUnit/IndexListConfigCalcUnit.java

@@ -0,0 +1,86 @@
+package com.sundata.internalevaluation.calc.calcUnit;
+
+
+import cn.hutool.extra.spring.SpringUtil;
+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.IndexConfigModel;
+import com.sundata.internalevaluation.configuration.model.IndexListModel;
+import com.sundata.internalevaluation.configuration.service.IndexConfigService;
+import com.sundata.internalevaluation.configuration.service.IndexListConfigService;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+public class IndexListConfigCalcUnit extends CalcUnit {
+
+    IndexListModel indexLisModel;
+
+    /**
+     * 创建数据单元的绝对对象,对象必须包含如下参数
+     *
+     * @param calcCode    计算对象编号
+     * @param calcName    计算对象名称
+     * @param calcType    计算类型
+     * @param initContext 计算单元初始化参数
+     */
+    public IndexListConfigCalcUnit(String calcCode, String calcName, CalcType calcType, Map<String, Object> initContext,IndexListModel indexLisModel) {
+        super(calcCode, calcName, calcType, initContext);
+        this.indexLisModel = indexLisModel;
+    }
+
+    @Override
+    public boolean isCalcFinished(String calculateInstanceNumber) {
+        return false;
+    }
+
+    @Override
+    public void initResultContext(String calculateInstanceNumber) {
+
+    }
+
+    @Override
+    public List<CalcUnit> getSourceCalcUnits() {
+        IndexListConfigService indexListConfigService = SpringUtil.getBean(IndexListConfigService.class);
+        IndexConfigService indexConfigService = SpringUtil.getBean(IndexConfigService.class);
+        IndexListModel selectData = indexListConfigService.selectDetailData(this.indexLisModel);
+        List<String> indexNoList = selectData.getIndexNos();
+        List<IndexConfigModel> indexConfigModels = new ArrayList<>();
+        for (String no : indexNoList) {
+            IndexConfigModel model = new IndexConfigModel();
+            model.setIndexNo(no);
+            IndexConfigModel data = indexConfigService.selectDetailData(model);
+            if (null != data) {
+                indexConfigModels.add(data);
+            }
+        }
+        return indexConfigModels.stream().map(indexModel ->
+                new IndexCalcUnit(indexModel.getIndexNo(),indexModel.getIndexName(),Map.of(),indexModel)).collect(Collectors.toList());
+    }
+
+    @Override
+    public void afterCalc(Map<String, Object> context) {
+
+    }
+
+    @Override
+    public void beforeCalc(Map<String, Object> context) {
+
+    }
+
+    @Override
+    public void calc(CalcResult<String, Object> thisResult, String calculateInstanceNumber, Map<String, Object> context, Map<CalcUnit, CalcResult<String, Object>> sourceResults) {
+
+        Map<String,Object> resMap = new HashMap<>();
+        sourceResults.forEach(
+            (calcUnit,result) -> {
+                resMap.putAll(result);
+            }
+        );
+        thisResult.put(this.getCalcCode(),resMap);
+    }
+}

+ 106 - 0
src/main/java/com/sundata/internalevaluation/calc/calcUnit/RiskControlStrategyCalcUnit.java

@@ -0,0 +1,106 @@
+package com.sundata.internalevaluation.calc.calcUnit;
+
+
+import cn.hutool.extra.spring.SpringUtil;
+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.IndexListModel;
+import com.sundata.internalevaluation.configuration.model.RiskControlStrategyModel;
+import com.sundata.internalevaluation.configuration.model.SysReqRules;
+import com.sundata.internalevaluation.configuration.service.IndexListConfigService;
+import com.sundata.internalevaluation.configuration.service.RiskControlStrategyService;
+import com.sundata.internalevaluation.configuration.service.SysReqRuleService;
+import com.sundata.internalevaluation.configuration.service.SysReqRulesService;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+public class RiskControlStrategyCalcUnit extends CalcUnit {
+
+    RiskControlStrategyModel riskControlStrategyModel;
+    /**
+     * 创建数据单元的绝对对象,对象必须包含如下参数
+     *
+     * @param calcCode    计算对象编号
+     * @param calcName    计算对象名称
+     * @param calcType    计算类型
+     * @param initContext 计算单元初始化参数
+     */
+    public RiskControlStrategyCalcUnit(String calcCode, String calcName, CalcType calcType, Map<String, Object> initContext, RiskControlStrategyModel riskControlStrategyModel) {
+        super(calcCode, calcName, calcType, initContext);
+        this.riskControlStrategyModel = riskControlStrategyModel;
+    }
+
+    @Override
+    public boolean isCalcFinished(String calculateInstanceNumber) {
+        return false;
+    }
+
+    @Override
+    public void initResultContext(String calculateInstanceNumber) {
+
+    }
+
+    @Override
+    public List<CalcUnit> getSourceCalcUnits() {
+        List<IndexListModel> indexListModels = new ArrayList<>();
+        List<SysReqRules> sysReqRules = new ArrayList<>();
+        List<CalcUnit> allListUnit = new ArrayList<>();
+        RiskControlStrategyService riskControlStrategyService = SpringUtil.getBean(RiskControlStrategyService.class);
+        IndexListConfigService indexListConfigService = SpringUtil.getBean(IndexListConfigService.class);
+        SysReqRulesService sysReqRulesService = SpringUtil.getBean(SysReqRulesService.class);
+        SysReqRuleService sysReqRuleService = SpringUtil.getBean(SysReqRuleService.class);
+        RiskControlStrategyModel selectModel =  riskControlStrategyService.selectDetailData(this.riskControlStrategyModel);
+        // 获取所有指标清单对象
+        if (null != selectModel && null != selectModel.getIndexListNos() &&  selectModel.getIndexListNos().size()>0) {
+            for(String indexListNo : selectModel.getIndexListNos()) {
+                IndexListModel model = new IndexListModel();
+                model.setIndexListNo(indexListNo);
+                IndexListModel afterSelectModel = indexListConfigService.selectDetailData(model);
+                if (null != afterSelectModel) {
+                    indexListModels.add(afterSelectModel);
+                }
+            }
+        }
+        // 获取所有规则集对象
+        if (null != selectModel && null != selectModel.getRulesNos() &&  selectModel.getRulesNos().size()>0) {
+            for(String rulesNo : selectModel.getRulesNos()) {
+                SysReqRules afterSelectModel = sysReqRulesService.getById(rulesNo);
+                if (null != afterSelectModel ) {
+                    sysReqRules.add(afterSelectModel);
+                }
+            }
+        }
+        List<CalcUnit> indexListUnit = indexListModels.stream().map(indexListModel -> new IndexListConfigCalcUnit(indexListModel.getIndexListNo(),indexListModel.getIndexListName(),CalcType.INDEXLIST,Map.of(),indexListModel)).collect(Collectors.toList());
+        List<CalcUnit> rulesUnit = sysReqRules.stream().map(rulesModel -> new RulesCalcUnit(rulesModel.getRulesNo(),rulesModel.getRulesName(),Map.of(),rulesModel,sysReqRuleService)).collect(Collectors.toList());
+        allListUnit.addAll(indexListUnit);
+        allListUnit.addAll(rulesUnit);
+        return allListUnit;
+    }
+
+    @Override
+    public void afterCalc(Map<String, Object> context) {
+
+    }
+
+    @Override
+    public void beforeCalc(Map<String, Object> context) {
+
+    }
+
+    @Override
+    public void calc(CalcResult<String, Object> thisResult, String calculateInstanceNumber, Map<String, Object> context, Map<CalcUnit, CalcResult<String, Object>> sourceResults) {
+
+        Map<String,Object> resResultMap =new HashMap<>();
+        sourceResults.forEach(
+                (calcUnit,result) -> {
+                    resResultMap.putAll(result);
+        }
+        );
+        thisResult.put(this.getCalcCode(),resResultMap);
+    }
+}

+ 92 - 0
src/main/java/com/sundata/internalevaluation/configuration/controller/IndexListConfigAction.java

@@ -0,0 +1,92 @@
+package com.sundata.internalevaluation.configuration.controller;
+
+import com.sundata.common.base.BaseAction;
+import com.sundata.internalevaluation.configuration.model.IndexListModel;
+import com.sundata.internalevaluation.configuration.service.IndexListConfigService;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/internalevaluation/configuration/IndexListConfigAction")
+public class IndexListConfigAction extends BaseAction {
+    
+    @Autowired
+    IndexListConfigService indexListConfigService;
+
+    /**
+     * @author: 张艳杰
+     * @methodsName: getDataList
+     * @description: 指标清单配置初始化
+     * @param: HttpServletRequest request, HttpServletResponse response,@RequestBody IndexListModel model
+     * @return: List<IndexListModel>
+     * @throws:
+     */
+    @RequestMapping({"getDataList"})
+    public List<IndexListModel> getDataList(HttpServletRequest request, HttpServletResponse response,
+                                                @RequestBody IndexListModel model) {
+        return indexListConfigService.getDataList(model);
+    }
+
+    /**
+     * @author: 张艳杰
+     * @methodsName: createData
+     * @description: 指标清单配置新增
+     * @param: HttpServletRequest request, HttpServletResponse response,@RequestBody IndexListModel model
+     * @return:
+     * @throws:
+     */
+    @RequestMapping({"createData"})
+    public void createData(HttpServletRequest request, HttpServletResponse response,
+                           @RequestBody IndexListModel model) {
+        indexListConfigService.createData(model);
+    }
+
+    /**
+     * @author: 张艳杰
+     * @methodsName: deleteRows
+     * @description: 指标清单配置删除
+     * @param: HttpServletRequest request, HttpServletResponse response,@RequestBody IndexListModel model
+     * @return:
+     * @throws:
+     */
+    @RequestMapping({"deleteRows"})
+    public void deleteRows(HttpServletRequest request, HttpServletResponse response,
+                           @RequestBody IndexListModel model) {
+        indexListConfigService.deleteRows(model);
+    }
+
+    /**
+     * @author: 张艳杰
+     * @methodsName: updateExistData
+     * @description: 指标清单配置修改
+     * @param: HttpServletRequest request, HttpServletResponse response,@RequestBody IndexListModel model
+     * @return:
+     * @throws:
+     */
+    @RequestMapping({"updateExistData"})
+    public void updateExistData(HttpServletRequest request, HttpServletResponse response,
+                                @RequestBody IndexListModel model) {
+        indexListConfigService.updateExistData(model);
+    }
+
+
+    /**
+     * @author: 张艳杰
+     * @methodsName: selectDetailData
+     * @description: 指标清单配置查询
+     * @param: HttpServletRequest request, HttpServletResponse response,@RequestBody IndexListModel model
+     * @return:
+     * @throws:
+     */
+    @RequestMapping({"selectDetailData"})
+    public IndexListModel selectDetailData(HttpServletRequest request, HttpServletResponse response,
+                                               @RequestBody IndexListModel model) {
+        return indexListConfigService.selectDetailData(model);
+    }
+}

+ 95 - 0
src/main/java/com/sundata/internalevaluation/configuration/controller/RiskControlStrategyAction.java

@@ -0,0 +1,95 @@
+package com.sundata.internalevaluation.configuration.controller;
+
+
+import com.sundata.common.base.BaseAction;
+import com.sundata.internalevaluation.configuration.model.RiskControlStrategyModel;
+import com.sundata.internalevaluation.configuration.service.RiskControlStrategyService;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/internalevaluation/configuration/RiskControlStrategyAction")
+public class RiskControlStrategyAction extends BaseAction {
+    
+    @Autowired
+    RiskControlStrategyService riskControlStrategyService;
+
+    /**
+     * @author: 张艳杰
+     * @methodsName: getDataList
+     * @description: 风控策略配置初始化
+     * @param: HttpServletRequest request, HttpServletResponse response,@RequestBody RiskControlStrategyModel model
+     * @return: List<RiskControlStrategyModel>
+     * @throws:
+     */
+    @RequestMapping({"getDataList"})
+    public List<RiskControlStrategyModel> getDataList(HttpServletRequest request, HttpServletResponse response,
+                                            @RequestBody RiskControlStrategyModel model) {
+        return riskControlStrategyService.getDataList(model);
+    }
+
+    /**
+     * @author: 张艳杰
+     * @methodsName: createData
+     * @description: 风控策略配置新增
+     * @param: HttpServletRequest request, HttpServletResponse response,@RequestBody RiskControlStrategyModel model
+     * @return:
+     * @throws:
+     */
+    @RequestMapping({"createData"})
+    public void createData(HttpServletRequest request, HttpServletResponse response,
+                           @RequestBody RiskControlStrategyModel model) {
+        riskControlStrategyService.createData(model);
+    }
+
+    /**
+     * @author: 张艳杰
+     * @methodsName: deleteRows
+     * @description: 风控策略配置删除
+     * @param: HttpServletRequest request, HttpServletResponse response,@RequestBody RiskControlStrategyModel model
+     * @return:
+     * @throws:
+     */
+    @RequestMapping({"deleteRows"})
+    public void deleteRows(HttpServletRequest request, HttpServletResponse response,
+                           @RequestBody RiskControlStrategyModel model) {
+        riskControlStrategyService.deleteRows(model);
+    }
+
+    /**
+     * @author: 张艳杰
+     * @methodsName: updateExistData
+     * @description: 风控策略配置修改
+     * @param: HttpServletRequest request, HttpServletResponse response,@RequestBody RiskControlStrategyModel model
+     * @return:
+     * @throws:
+     */
+    @RequestMapping({"updateExistData"})
+    public void updateExistData(HttpServletRequest request, HttpServletResponse response,
+                                @RequestBody RiskControlStrategyModel model) {
+        riskControlStrategyService.updateExistData(model);
+    }
+
+
+    /**
+     * @author: 张艳杰
+     * @methodsName: selectDetailData
+     * @description: 风控策略配置查询
+     * @param: HttpServletRequest request, HttpServletResponse response,@RequestBody RiskControlStrategyModel model
+     * @return:
+     * @throws:
+     */
+    @RequestMapping({"selectDetailData"})
+    public RiskControlStrategyModel selectDetailData(HttpServletRequest request, HttpServletResponse response,
+                                           @RequestBody RiskControlStrategyModel model) {
+        return riskControlStrategyService.selectDetailData(model);
+    }
+
+
+}

+ 6 - 0
src/main/java/com/sundata/internalevaluation/configuration/mapper/DataSetConfigMapper.java

@@ -10,9 +10,15 @@ public interface DataSetConfigMapper {
 
     void createData(DataSetConfigModel model);
 
+    void createAssociation(DataSetConfigModel model);
+
     void deleteRows(DataSetConfigModel model);
 
+    void deleteAssociation(String dataSetNo);
+
     void updateExistData(DataSetConfigModel model);
 
     DataSetConfigModel selectDetailData(DataSetConfigModel model);
+
+    List<DataSetConfigModel> selectAssociation(DataSetConfigModel model);
 }

+ 25 - 0
src/main/java/com/sundata/internalevaluation/configuration/mapper/IndexListConfigMapper.java

@@ -0,0 +1,25 @@
+package com.sundata.internalevaluation.configuration.mapper;
+
+import com.sundata.internalevaluation.configuration.model.IndexListModel;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface IndexListConfigMapper {
+
+    List<IndexListModel> getDataList(IndexListModel model);
+
+    void createData(@Param("model")IndexListModel model);
+
+    void createAssociation(IndexListModel model);
+
+    void deleteRows(String indexListNo);
+
+    void deleteAssociation(String indexListNo);
+
+    void updateExistData(IndexListModel model);
+
+    IndexListModel selectDetailData(IndexListModel model);
+
+    List<IndexListModel> selectAssociation(IndexListModel model);
+}

+ 29 - 0
src/main/java/com/sundata/internalevaluation/configuration/mapper/RiskControlStrategyMapper.java

@@ -0,0 +1,29 @@
+package com.sundata.internalevaluation.configuration.mapper;
+
+import com.sundata.internalevaluation.configuration.model.RiskControlStrategyModel;
+
+import java.util.List;
+
+public interface RiskControlStrategyMapper {
+    List<RiskControlStrategyModel> getDataList(RiskControlStrategyModel model);
+
+    void createData(RiskControlStrategyModel model);
+
+    void deleteRows(String riskControlStrategyNo);
+
+    void deleteIndexListAssociation(RiskControlStrategyModel model);
+
+    void deleteRulesAssociation(RiskControlStrategyModel model);
+
+    void updateExistData(RiskControlStrategyModel model);
+
+    RiskControlStrategyModel selectDetailData(RiskControlStrategyModel model);
+
+    void createIndexListAssociation(RiskControlStrategyModel model);
+
+    void createRulesAssociation(RiskControlStrategyModel model);
+
+    List<RiskControlStrategyModel> selectIndexListAssociation(String riskControlStrategyNo);
+
+    List<RiskControlStrategyModel> selectRulesAssociationData(String riskControlStrategyNo);
+}

+ 18 - 46
src/main/java/com/sundata/internalevaluation/configuration/model/IndexListModel.java

@@ -1,21 +1,17 @@
 package com.sundata.internalevaluation.configuration.model;
 
+import java.util.List;
+
 public class IndexListModel {
 
     // 指标清单列表编号
     private String indexListNo;
+    // 指标清单列表名称
+    private String indexListName;
     // 指标
     private String indexNo;
-    // 模型编号
-    private String modelNo;
-    // 指标来源
-    private String indexSource;
-    // 指标说明
-    private String indexDescribe;
-    // 指标分档
-    private String indexGrade;
-    // 指标分值
-    private String indexScore;
+    // 指标
+    private List<String> indexNos;
 
     public String getIndexListNo() {
         return indexListNo;
@@ -25,51 +21,27 @@ public class IndexListModel {
         this.indexListNo = indexListNo;
     }
 
-    public String getIndexNo() {
-        return indexNo;
-    }
-
-    public void setIndexNo(String indexNo) {
-        this.indexNo = indexNo;
-    }
-
-    public String getModelNo() {
-        return modelNo;
-    }
-
-    public void setModelNo(String modelNo) {
-        this.modelNo = modelNo;
-    }
-
-    public String getIndexSource() {
-        return indexSource;
+    public String getIndexListName() {
+        return indexListName;
     }
 
-    public void setIndexSource(String indexSource) {
-        this.indexSource = indexSource;
+    public void setIndexListName(String indexListName) {
+        this.indexListName = indexListName;
     }
 
-    public String getIndexDescribe() {
-        return indexDescribe;
-    }
-
-    public void setIndexDescribe(String indexDescribe) {
-        this.indexDescribe = indexDescribe;
-    }
-
-    public String getIndexGrade() {
-        return indexGrade;
+    public String getIndexNo() {
+        return indexNo;
     }
 
-    public void setIndexGrade(String indexGrade) {
-        this.indexGrade = indexGrade;
+    public void setIndexNo(String indexNo) {
+        this.indexNo = indexNo;
     }
 
-    public String getIndexScore() {
-        return indexScore;
+    public List<String> getIndexNos() {
+        return indexNos;
     }
 
-    public void setIndexScore(String indexScore) {
-        this.indexScore = indexScore;
+    public void setIndexNos(List<String> indexNos) {
+        this.indexNos = indexNos;
     }
 }

+ 76 - 0
src/main/java/com/sundata/internalevaluation/configuration/model/RiskControlStrategyModel.java

@@ -0,0 +1,76 @@
+package com.sundata.internalevaluation.configuration.model;
+
+import java.util.List;
+
+public class RiskControlStrategyModel {
+    // 风控策略编号
+    private String riskControlStrategyNo;
+    // 风控策略名称
+    private String riskControlStrategyName;
+    // 风控策略描述
+    private String riskControlStrategyDescribe;
+    // 指标清单
+    private String indexListNo;
+    // 指标清单
+    private List<String> indexListNos;
+    // 规则集
+    private String rulesNo;
+    // 规则集
+    private List<String> rulesNos;
+
+    public String getRiskControlStrategyNo() {
+        return riskControlStrategyNo;
+    }
+
+    public void setRiskControlStrategyNo(String riskControlStrategyNo) {
+        this.riskControlStrategyNo = riskControlStrategyNo;
+    }
+
+    public String getRiskControlStrategyName() {
+        return riskControlStrategyName;
+    }
+
+    public void setRiskControlStrategyName(String riskControlStrategyName) {
+        this.riskControlStrategyName = riskControlStrategyName;
+    }
+
+    public String getRiskControlStrategyDescribe() {
+        return riskControlStrategyDescribe;
+    }
+
+    public void setRiskControlStrategyDescribe(String riskControlStrategyDescribe) {
+        this.riskControlStrategyDescribe = riskControlStrategyDescribe;
+    }
+
+    public String getIndexListNo() {
+        return indexListNo;
+    }
+
+    public void setIndexListNo(String indexListNo) {
+        this.indexListNo = indexListNo;
+    }
+
+    public List<String> getIndexListNos() {
+        return indexListNos;
+    }
+
+    public void setIndexListNos(List<String> indexListNos) {
+        this.indexListNos = indexListNos;
+    }
+
+    public String getRulesNo() {
+        return rulesNo;
+    }
+
+    public void setRulesNo(String rulesNo) {
+        this.rulesNo = rulesNo;
+    }
+
+    public List<String> getRulesNos() {
+        return rulesNos;
+    }
+
+    public void setRulesNos(List<String> rulesNos) {
+        this.rulesNos = rulesNos;
+    }
+}

+ 38 - 0
src/main/java/com/sundata/internalevaluation/configuration/mybatis/DataSetConfigMapper.xml

@@ -36,6 +36,20 @@
         )
     </insert>
 
+    <!-- 数据集配置页面新增 -->
+    <insert id="createAssociation" parameterType="com.sundata.internalevaluation.configuration.model.DataSetConfigModel">
+        INSERT INTO SYS_DATASET_DATASOURCES
+        (
+        DATASETNO,
+        DATASOURCESNO
+        )
+        VALUES
+        (
+        #{dataSetNo},
+        #{dataSourcesNo}
+        )
+    </insert>
+
     <!-- 数据集配置页面删除 -->
     <delete id="deleteRows">
         DELETE FROM SYS_DATASET_CONFIG
@@ -46,6 +60,16 @@
         </where>
     </delete>
 
+    <!-- 数据集关联表配置删除 -->
+    <delete id="deleteAssociation">
+        DELETE FROM SYS_DATASET_DATASOURCES
+        <where>
+            <if test="dataSetNo != null and dataSetNo !=''">
+                DATASETNO = #{dataSetNo}
+            </if>
+        </where>
+    </delete>
+
     <!-- 数据集配置页面修改 -->
     <update id="updateExistData" parameterType="com.sundata.internalevaluation.configuration.model.DataSetConfigModel">
         UPDATE SYS_DATASET_CONFIG
@@ -83,6 +107,20 @@
         </where>
     </select>
 
+    <!-- 数据集配置查询关联表 -->
+    <select id="selectAssociation" resultType="com.sundata.internalevaluation.configuration.model.DataSetConfigModel">
+        SELECT
+        DATASETNO                   AS    dataSetNo,
+        DATASOURCESNO               AS    dataSourcesNo
+        FROM SYS_DATASET_DATASOURCES
+        <where>
+            <if test="dataSetNo != null and dataSetNo !=''">
+                DATASETNO = #{dataSetNo}
+            </if>
+        </where>
+    </select>
+
+
     <!-- 数据源字典 -->
     <select id="selectDataSource" resultType="com.sundata.admin.nounmanage.model.DictContent">
         select  DATASOURCESNO as id, DATASOURCESNAME as text from SYS_DATA_SOURCES

+ 127 - 0
src/main/java/com/sundata/internalevaluation/configuration/mybatis/IndexListConfigMapper.xml

@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.sundata.internalevaluation.configuration.mapper.IndexListConfigMapper">
+
+    <!-- 指标配置页面初始化 -->
+    <select id="getDataList" resultType="com.sundata.internalevaluation.configuration.model.IndexListModel" parameterType="com.sundata.internalevaluation.configuration.model.IndexListModel">
+        SELECT
+        INDEXLISTNO                AS    indexListNo,
+        INDEXLISTNAME              AS    indexListName,
+        INDEXNO                    AS    indexNo
+        FROM SYS_INDEX_LIST
+        <where>
+            <if test="indexListNo != null and indexListNo !=''">
+                INDEXLISTNO like concat(concat('%',#{indexListNo}),'%')
+            </if>
+        </where>
+    </select>
+
+
+    <!-- 输入参数配置页面新增 -->
+    <insert id="createData" parameterType="com.sundata.internalevaluation.configuration.model.IndexListModel">
+        INSERT INTO SYS_INDEX_LIST
+        (
+        INDEXLISTNO,
+        INDEXLISTNAME,
+        INDEXNO
+        )
+        VALUES
+        (
+        #{model.indexListNo},
+        #{model.indexListName},
+        #{model.indexNo}
+        )
+    </insert>
+
+    <!-- 输入参数配置页面新增 -->
+    <insert id="createAssociation" parameterType="com.sundata.internalevaluation.configuration.model.IndexListModel">
+        INSERT INTO SYS_INDEXLIST_INDEX
+        (
+        INDEXLISTNO,
+        INDEXNO
+        )
+        VALUES
+        (
+        #{indexListNo},
+        #{indexNo}
+        )
+    </insert>
+
+
+
+
+    <!-- 指标清单删除 -->
+    <delete id="deleteAssociation">
+        DELETE FROM SYS_INDEXLIST_INDEX
+        <where>
+            <if test="indexListNo != null and indexListNo !=''">
+                INDEXLISTNO = #{indexListNo}
+            </if>
+        </where>
+    </delete>
+
+    <!-- 指标清单删除 -->
+    <delete id="deleteRows">
+        DELETE FROM SYS_INDEX_LIST
+        <where>
+            <if test="indexListNo != null and indexListNo !=''">
+                INDEXLISTNO = #{indexListNo}
+            </if>
+        </where>
+    </delete>
+
+
+    <!-- 指标清单配置页面修改 -->
+    <update id="updateExistData" parameterType="com.sundata.internalevaluation.configuration.model.IndexListModel">
+        UPDATE SYS_INDEX_LIST
+        <trim suffixOverrides=",">
+            <set>
+                <if test="indexListName != null and indexListName !=''">
+                    INDEXLISTNAME = #{indexListName},
+                </if>
+            </set>
+        </trim>
+        <where>
+            <if test="indexListNo != null and indexListNo !=''">
+                INDEXLISTNO = #{indexListNo}
+            </if>
+        </where>
+    </update>
+
+    <!-- 指标配置页面初始化 -->
+    <select id="selectDetailData" resultType="com.sundata.internalevaluation.configuration.model.IndexListModel" parameterType="com.sundata.internalevaluation.configuration.model.IndexListModel">
+        SELECT
+        INDEXLISTNO                AS    indexListNo,
+        INDEXLISTNAME              AS    indexListName,
+        INDEXNO                    AS    indexNo
+        FROM SYS_INDEX_LIST
+        <where>
+            <if test="indexListNo != null and indexListNo !=''">
+                INDEXLISTNO  = #{indexListNo}
+            </if>
+        </where>
+    </select>
+
+    <!-- 指标配置页面初始化 -->
+    <select id="selectAssociation" resultType="com.sundata.internalevaluation.configuration.model.IndexListModel">
+        SELECT
+        INDEXLISTNO                AS    indexListNo,
+        INDEXNO                    AS    indexNo
+        FROM SYS_INDEXLIST_INDEX
+        <where>
+            <if test="indexListNo != null and indexListNo !=''">
+                INDEXLISTNO  = #{indexListNo}
+            </if>
+        </where>
+    </select>
+
+
+    <!-- 指标清单配置页面初始化 -->
+    <select id="selectAllIndexListToDict" resultType="com.sundata.admin.nounmanage.model.DictContent">
+        select  INDEXLISTNO as id, INDEXLISTNAME as text from SYS_INDEX_LIST
+    </select>
+
+
+</mapper>

+ 160 - 0
src/main/java/com/sundata/internalevaluation/configuration/mybatis/RiskControlStrategyMapper.xml

@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.sundata.internalevaluation.configuration.mapper.RiskControlStrategyMapper">
+
+    <!-- 风控策略页面初始化 -->
+    <select id="getDataList" resultType="com.sundata.internalevaluation.configuration.model.RiskControlStrategyModel" parameterType="com.sundata.internalevaluation.configuration.model.RiskControlStrategyModel">
+        SELECT
+        RISKCONTROLSTRATEGYNO                AS    riskControlStrategyNo,
+        RISKCONTROLSTRATEGYNAME              AS    riskControlStrategyName,
+        RISKCONTROLSTRATEGYDESCRIBE          AS    riskControlStrategyDescribe
+        FROM SYS_RISKCONTROLSTRATEGY
+        <where>
+            <if test="riskControlStrategyNo != null and riskControlStrategyNo !=''">
+                RISKCONTROLSTRATEGYNO like concat(concat('%',#{riskControlStrategyNo}),'%')
+            </if>
+        </where>
+    </select>
+
+
+    <!-- 风控策略配置页面新增 -->
+    <insert id="createData" parameterType="com.sundata.internalevaluation.configuration.model.RiskControlStrategyModel">
+        INSERT INTO SYS_RISKCONTROLSTRATEGY
+        (
+        RISKCONTROLSTRATEGYNO,
+        RISKCONTROLSTRATEGYNAME,
+        RISKCONTROLSTRATEGYDESCRIBE
+        )
+        VALUES
+        (
+        #{riskControlStrategyNo},
+        #{riskControlStrategyName},
+        #{riskControlStrategyDescribe}
+        )
+    </insert>
+
+
+    <!-- 风控策略配置页面新增 -->
+    <insert id="createIndexListAssociation" parameterType="com.sundata.internalevaluation.configuration.model.RiskControlStrategyModel">
+        INSERT INTO SYS_RISK_INDEXLIST
+        (
+        RISKCONTROLSTRATEGYNO,
+        INDEXLISTNO
+        )
+        VALUES
+        (
+        #{riskControlStrategyNo},
+        #{indexListNo}
+        )
+    </insert>
+
+    <!-- 风控策略配置页面新增 -->
+    <insert id="createRulesAssociation" parameterType="com.sundata.internalevaluation.configuration.model.RiskControlStrategyModel">
+        INSERT INTO SYS_RISK_RULES
+        (
+        RISKCONTROLSTRATEGYNO,
+        RULESNO
+        )
+        VALUES
+        (
+        #{riskControlStrategyNo},
+        #{rulesNo}
+        )
+    </insert>
+
+
+    <!-- 风控策略删除 -->
+    <delete id="deleteRows">
+        DELETE FROM SYS_RISKCONTROLSTRATEGY
+        <where>
+            <if test="riskControlStrategyNo != null and riskControlStrategyNo !=''">
+                RISKCONTROLSTRATEGYNO = #{riskControlStrategyNo}
+            </if>
+        </where>
+    </delete>
+
+    <!-- 风控策略删除 -->
+    <delete id="deleteIndexListAssociation">
+        DELETE FROM SYS_RISK_INDEXLIST
+        <where>
+            <if test="riskControlStrategyNo != null and riskControlStrategyNo !=''">
+                RISKCONTROLSTRATEGYNO = #{riskControlStrategyNo}
+            </if>
+        </where>
+    </delete>
+
+    <!-- 风控策略删除 -->
+    <delete id="deleteRulesAssociation">
+        DELETE FROM SYS_RISK_RULES
+        <where>
+            <if test="riskControlStrategyNo != null and riskControlStrategyNo !=''">
+                RISKCONTROLSTRATEGYNO = #{riskControlStrategyNo}
+            </if>
+        </where>
+    </delete>
+
+
+    <!-- 风控策略配置页面修改 -->
+    <update id="updateExistData" parameterType="com.sundata.internalevaluation.configuration.model.RiskControlStrategyModel">
+        UPDATE SYS_RISKCONTROLSTRATEGY
+        <trim suffixOverrides=",">
+            <set>
+                <if test="riskControlStrategyName != null and riskControlStrategyName !=''">
+                    RISKCONTROLSTRATEGYNAME = #{riskControlStrategyName},
+                </if>
+                <if test="riskControlStrategyDescribe != null and riskControlStrategyDescribe !=''">
+                    RISKCONTROLSTRATEGYDESCRIBE = #{riskControlStrategyDescribe},
+                </if>
+            </set>
+        </trim>
+        <where>
+            <if test="riskControlStrategyNo != null and riskControlStrategyNo !=''">
+                RISKCONTROLSTRATEGYNO = #{riskControlStrategyNo}
+            </if>
+        </where>
+    </update>
+
+    <!-- 风控策略页面初始化 -->
+    <select id="selectDetailData" resultType="com.sundata.internalevaluation.configuration.model.RiskControlStrategyModel" parameterType="com.sundata.internalevaluation.configuration.model.RiskControlStrategyModel">
+        SELECT
+        RISKCONTROLSTRATEGYNO                AS    riskControlStrategyNo,
+        RISKCONTROLSTRATEGYNAME              AS    riskControlStrategyName,
+        RISKCONTROLSTRATEGYDESCRIBE          AS    riskControlStrategyDescribe
+        FROM SYS_RISKCONTROLSTRATEGY
+        <where>
+            <if test="riskControlStrategyNo != null and riskControlStrategyNo !=''">
+                RISKCONTROLSTRATEGYNO  = #{riskControlStrategyNo}
+            </if>
+        </where>
+    </select>
+
+    <!-- 风控策略页面初始化 -->
+    <select id="selectIndexListAssociation" resultType="com.sundata.internalevaluation.configuration.model.RiskControlStrategyModel">
+        SELECT
+        RISKCONTROLSTRATEGYNO                AS    riskControlStrategyNo,
+        INDEXLISTNO                          AS    indexListNo
+        FROM SYS_RISK_INDEXLIST
+        <where>
+            <if test="riskControlStrategyNo != null and riskControlStrategyNo !=''">
+                RISKCONTROLSTRATEGYNO  = #{riskControlStrategyNo}
+            </if>
+        </where>
+    </select>
+
+    <!-- 风控策略页面初始化 -->
+    <select id="selectRulesAssociationData" resultType="com.sundata.internalevaluation.configuration.model.RiskControlStrategyModel">
+        SELECT
+        RISKCONTROLSTRATEGYNO                AS    riskControlStrategyNo,
+        RULESNO                              AS    rulesNo
+        FROM SYS_RISK_RULES
+        <where>
+            <if test="riskControlStrategyNo != null and riskControlStrategyNo !=''">
+                RISKCONTROLSTRATEGYNO  = #{riskControlStrategyNo}
+            </if>
+        </where>
+    </select>
+
+
+</mapper>

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

@@ -168,5 +168,10 @@
         SELECT 1 FROM dual
     </insert>
 
+    <!-- 规则集生成字典 -->
+    <select id="selectRulesToDictContent" resultType="com.sundata.admin.nounmanage.model.DictContent">
+        select  RULES_NO as id, RULES_NAME as text from SYS_REQ_RULES
+    </select>
+
 
 </mapper>

+ 22 - 6
src/main/java/com/sundata/internalevaluation/configuration/service/DataSetConfigService.java

@@ -11,6 +11,7 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
 
 @Service
@@ -41,8 +42,12 @@ public class DataSetConfigService {
      * @throws:
      */
     public void createData(DataSetConfigModel model) {
-        String dataSourceNo = JsonUtil.toJSONString(model.getDataSourcesNos());
-        model.setDataSourcesNo(dataSourceNo);
+        if (null != model && null != model.getDataSourcesNos() && model.getDataSourcesNos().size()>0) {
+            for (String sourceNo : model.getDataSourcesNos()) {
+                model.setDataSourcesNo(sourceNo);
+                dataSetConfigMapper.createAssociation(model);
+            }
+        }
         dataSetConfigMapper.createData(model);
     }
 
@@ -55,6 +60,7 @@ public class DataSetConfigService {
      * @throws:
      */
     public void deleteRows(DataSetConfigModel model) {
+        dataSetConfigMapper.deleteAssociation(model.getDataSetNo());
         dataSetConfigMapper.deleteRows(model);
     }
 
@@ -67,8 +73,13 @@ public class DataSetConfigService {
      * @throws:
      */
     public void updateExistData(DataSetConfigModel model) {
-        String dataSourceNo = JsonUtil.toJSONString(model.getDataSourcesNos());
-        model.setDataSourcesNo(dataSourceNo);
+        dataSetConfigMapper.deleteAssociation(model.getDataSetNo());
+        if (null != model && null != model.getDataSourcesNos() && model.getDataSourcesNos().size()>0) {
+            for (String sourceNo : model.getDataSourcesNos()) {
+                model.setDataSourcesNo(sourceNo);
+                dataSetConfigMapper.createAssociation(model);
+            }
+        }
         dataSetConfigMapper.updateExistData(model);
     }
 
@@ -82,8 +93,13 @@ public class DataSetConfigService {
      */
     public DataSetConfigModel selectDetailData(DataSetConfigModel model) {
         DataSetConfigModel configModel = dataSetConfigMapper.selectDetailData(model);
-        String dataSourcesNo = configModel.getDataSourcesNo();
-        List<String> dataSourcesNos = JsonUtil.jsonToList(dataSourcesNo);
+        List<String> dataSourcesNos = new ArrayList<>();
+        List<DataSetConfigModel> selectModel = dataSetConfigMapper.selectAssociation(configModel);
+        if (null != selectModel && selectModel.size()>0) {
+            for (DataSetConfigModel m : selectModel) {
+                dataSourcesNos.add(m.getDataSourcesNo());
+            }
+        }
         configModel.setDataSourcesNos(dataSourcesNos);
         return configModel;
     }

+ 100 - 0
src/main/java/com/sundata/internalevaluation/configuration/service/IndexListConfigService.java

@@ -0,0 +1,100 @@
+package com.sundata.internalevaluation.configuration.service;
+
+import com.sundata.common.util.JsonUtil;
+import com.sundata.internalevaluation.configuration.mapper.IndexListConfigMapper;
+import com.sundata.internalevaluation.configuration.model.IndexListModel;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+public class IndexListConfigService {
+
+    @Autowired
+    IndexListConfigMapper indexListConfigMapper;
+
+    /**
+     * @author: 张艳杰
+     * @methodsName: getDataList
+     * @description: 指标清单配置初始化
+     * @param:  IndexListModel model
+     * @return: List<IndexListModel>
+     * @throws:
+     */
+    public List<IndexListModel> getDataList(IndexListModel model) {
+        return indexListConfigMapper.getDataList(model);
+    }
+
+    /**
+     * @author: 张艳杰
+     * @methodsName: createData
+     * @description: 指标清单配置新增
+     * @param:  IndexListModel model
+     * @return:
+     * @throws:
+     */
+    public void createData(IndexListModel model) {
+        if (null != model && null != model.getIndexNos() && model.getIndexNos().size()> 0) {
+            for ( String s : model.getIndexNos()) {
+                model.setIndexNo(s);
+                indexListConfigMapper.createAssociation(model);
+            }
+        }
+        indexListConfigMapper.createData(model);
+    }
+
+    /**
+     * @author: 张艳杰
+     * @methodsName: deleteRows
+     * @description: 指标清单配置删除
+     * @param:  IndexListModel model
+     * @return:
+     * @throws:
+     */
+    public void deleteRows(IndexListModel model) {
+        indexListConfigMapper.deleteRows(model.getIndexListNo());
+        indexListConfigMapper.deleteAssociation(model.getIndexListNo());
+    }
+
+    /**
+     * @author: 张艳杰
+     * @methodsName: updateExistData
+     * @description: 指标清单配置修改
+     * @param:  IndexListModel model
+     * @return:
+     * @throws:
+     */
+    public void updateExistData(IndexListModel model) {
+        indexListConfigMapper.updateExistData(model);
+        indexListConfigMapper.deleteAssociation(model.getIndexListNo());
+        if (null != model && null != model.getIndexNos() && model.getIndexNos().size()> 0) {
+            for ( String s : model.getIndexNos()) {
+                model.setIndexNo(s);
+                indexListConfigMapper.createAssociation(model);
+            }
+        }
+    }
+
+    /**
+     * @author: 张艳杰
+     * @methodsName: selectDetailData
+     * @description: 指标清单配置查询
+     * @param:  IndexListModel model
+     * @return:
+     * @throws:
+     */
+    public IndexListModel selectDetailData(IndexListModel model) {
+        IndexListModel selectModel = indexListConfigMapper.selectDetailData(model);
+        List<String> indexList = new ArrayList<>();
+        List<IndexListModel> associationList = indexListConfigMapper.selectAssociation(selectModel);
+        if (null != associationList && associationList.size()>0) {
+            for (IndexListModel m : associationList) {
+                indexList.add(m.getIndexNo());
+            }
+        }
+        selectModel.setIndexNos(indexList);
+        return selectModel;
+    }
+}

+ 6 - 6
src/main/java/com/sundata/internalevaluation/configuration/service/ModelConfigService.java

@@ -35,9 +35,9 @@ public class ModelConfigService {
      */
     public void createData(ModelConfigModel model) {
         modelConfigMapper.createData(model);
-        for(IndexListModel m : model.getIndexList()){
-            m.setModelNo(model.getModelNo());
-        }
+//        for(IndexListModel m : model.getIndexList()){
+//            m.setModelNo(model.getModelNo());
+//        }
         modelConfigMapper.createIndexListData(model.getIndexList());
         for(ModelGradeModel m : model.getModelGradeList()){
             m.setModelNo(model.getModelNo());
@@ -69,9 +69,9 @@ public class ModelConfigService {
         modelConfigMapper.updateExistData(model);
         modelConfigMapper.deleteIndexListRows(model);
         modelConfigMapper.deleteModelGradeRows(model);
-        for(IndexListModel m : model.getIndexList()){
-            m.setModelNo(model.getModelNo());
-        }
+//        for(IndexListModel m : model.getIndexList()){
+//            m.setModelNo(model.getModelNo());
+//        }
         modelConfigMapper.createIndexListData(model.getIndexList());
         for(ModelGradeModel m : model.getModelGradeList()){
             m.setModelNo(model.getModelNo());

+ 129 - 0
src/main/java/com/sundata/internalevaluation/configuration/service/RiskControlStrategyService.java

@@ -0,0 +1,129 @@
+package com.sundata.internalevaluation.configuration.service;
+
+import com.sundata.common.util.JsonUtil;
+import com.sundata.internalevaluation.configuration.mapper.RiskControlStrategyMapper;
+import com.sundata.internalevaluation.configuration.model.RiskControlStrategyModel;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+public class RiskControlStrategyService {
+
+    @Autowired
+    RiskControlStrategyMapper riskControlStrategyMapper;
+
+    /**
+     * @author: 张艳杰
+     * @methodsName: getDataList
+     * @description: 风控策略配置初始化
+     * @param: RiskControlStrategyModel model
+     * @return: List<RiskControlStrategyModel>
+     * @throws:
+     */
+    public List<RiskControlStrategyModel> getDataList(RiskControlStrategyModel model) {
+        return riskControlStrategyMapper.getDataList(model);
+    }
+
+    /**
+     * @author: 张艳杰
+     * @methodsName: createData
+     * @description: 风控策略配置新增
+     * @param: RiskControlStrategyModel model
+     * @return:
+     * @throws:
+     */
+    public void createData(RiskControlStrategyModel model) {
+        // 插入对应的风控规则和指标清单关联
+        if (null != model && null != model.getIndexListNos() && !model.getIndexListNos().isEmpty()) {
+            for (String index : model.getIndexListNos()) {
+                model.setIndexListNo(index);
+                riskControlStrategyMapper.createIndexListAssociation(model);
+            }
+        }
+        // 插入对应的风控规则和指标清单关联
+        if (null != model && null != model.getRulesNos() && !model.getRulesNos().isEmpty()) {
+            for (String rules : model.getRulesNos()) {
+                model.setRulesNo(rules);
+                riskControlStrategyMapper.createRulesAssociation(model);
+            }
+        }
+        // 规则表插入数据
+        riskControlStrategyMapper.createData(model);
+    }
+
+    /**
+     * @author: 张艳杰
+     * @methodsName: deleteRows
+     * @description: 风控策略配置删除
+     * @param: RiskControlStrategyModel model
+     * @return:
+     * @throws:
+     */
+    public void deleteRows(RiskControlStrategyModel model) {
+        riskControlStrategyMapper.deleteIndexListAssociation(model);
+        riskControlStrategyMapper.deleteRulesAssociation(model);
+        riskControlStrategyMapper.deleteRows(model.getRiskControlStrategyNo());
+    }
+
+    /**
+     * @author: 张艳杰
+     * @methodsName: updateExistData
+     * @description: 风控策略配置修改
+     * @param: RiskControlStrategyModel model
+     * @return:
+     * @throws:
+     */
+    public void updateExistData(RiskControlStrategyModel model) {
+        riskControlStrategyMapper.updateExistData(model);
+        // 插入对应的风控规则和指标清单关联
+        if (null != model && null != model.getIndexListNos() && !model.getIndexListNos().isEmpty()) {
+            riskControlStrategyMapper.deleteIndexListAssociation(model);
+            for (String index : model.getIndexListNos()) {
+                model.setIndexListNo(index);
+                riskControlStrategyMapper.createIndexListAssociation(model);
+            }
+
+        }
+        // 插入对应的风控规则和指标清单关联
+        if (null != model && null != model.getRulesNos() && !model.getRulesNos().isEmpty()) {
+            riskControlStrategyMapper.deleteRulesAssociation(model);
+            for (String rules : model.getRulesNos()) {
+                model.setRulesNo(rules);
+                riskControlStrategyMapper.createRulesAssociation(model);
+            }
+        }
+    }
+
+    /**
+     * @author: 张艳杰
+     * @methodsName: selectDetailData
+     * @description: 风控策略配置查询
+     * @param: RiskControlStrategyModel model
+     * @return:
+     * @throws:
+     */
+    public RiskControlStrategyModel selectDetailData(RiskControlStrategyModel model) {
+        List<String> rulesList = new ArrayList<>();
+        List<String> indexList = new ArrayList<>();
+        RiskControlStrategyModel selectModel = riskControlStrategyMapper.selectDetailData(model);
+        List<RiskControlStrategyModel> associationList = riskControlStrategyMapper.selectIndexListAssociation(selectModel.getRiskControlStrategyNo());
+        List<RiskControlStrategyModel> rulesAssociationList = riskControlStrategyMapper.selectRulesAssociationData(selectModel.getRiskControlStrategyNo());
+        associationList.addAll(rulesAssociationList);
+        if (null != associationList && !associationList.isEmpty()) {
+            for (RiskControlStrategyModel m : associationList) {
+                if (null!= m.getRulesNo() && !m.getRulesNo().isEmpty()) {
+                    rulesList.add(m.getRulesNo());
+                }
+                if (null!= m.getIndexListNo() && !m.getIndexListNo().isEmpty()) {
+                    indexList.add(m.getIndexListNo());
+                }
+            }
+            selectModel.setIndexListNos(indexList);
+            selectModel.setRulesNos(rulesList);
+        }
+        return selectModel;
+    }
+}