Browse Source

新增字典,增加下拉列表多选,下拉列表间的联动,输入长度及汉字校验。

zhang_qk 5 months ago
parent
commit
d8768abc65
56 changed files with 952 additions and 222 deletions
  1. 1 1
      DBScript/张奇凯/001-DDL.sql
  2. 11 1
      DBScript/张奇凯/002-DML.sql
  3. 4 1
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/businessconfig/mybatis/SysListOfPublicSectorMapper.xml
  4. 13 0
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/dataquality/action/DataQualityRuleDefineAction.java
  5. 62 0
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/dataquality/action/DataScopeManageAction.java
  6. 4 0
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/dataquality/mapper/DataScopeManageMapper.java
  7. 22 3
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/dataquality/model/DataQualityRuleDefineModel.java
  8. 48 16
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/dataquality/model/TableRelationDefineModel.java
  9. 28 7
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/dataquality/mybatis/DataQualityRuleDefineMapper.xml
  10. 38 16
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/dataquality/mybatis/DataScopeManageMapper.xml
  11. 9 2
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/dataquality/service/DataQualityRuleDefineService.java
  12. 20 1
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/dataquality/service/DataScopeManageService.java
  13. 1 1
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/datasupplementary/action/DataSupplementationAction.java
  14. 1 0
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/datasupplementary/action/SupplementTaskManagementAction.java
  15. 13 0
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/datasupplementary/action/SupplementTemplateDefineAction.java
  16. 29 0
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/datasupplementary/model/SupplementTaskDefineModel.java
  17. 10 0
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/datasupplementary/model/TemplateBasicInfoDefineModel.java
  18. 63 22
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/datasupplementary/mybatis/SupplementTaskManagementMapper.xml
  19. 8 2
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/datasupplementary/mybatis/SupplementTemplateDefineMapper.xml
  20. 1 0
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/datasupplementary/service/DataSupplementationService.java
  21. 11 0
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/parameter/model/GovFinancialAssetCompModel.java
  22. 9 0
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/parameter/model/PolicyBankModel.java
  23. 17 13
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/parameter/mybatis/GovFinancialAssetCompMapper.xml
  24. 19 15
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/parameter/mybatis/PolicyBankMapper.xml
  25. 4 4
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/parameter/service/GovFinancialAssetCompService.java
  26. 2 2
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/parameter/service/PolicyBankService.java
  27. 9 0
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/rwaCalcConfig002offbalanceprotype/model/RwaCalcConfOffbalanceprotyperuleModel.java
  28. 3 0
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/rwaCalcConfig002offbalanceprotype/mybatis/InfoListMapper.xml
  29. 9 0
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/rwacalcconfigdataparam/model/ProductListModel.java
  30. 5 1
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/rwacalcconfigdataparam/mybatis/ProductListMapper.xml
  31. 73 14
      Procedure/frontend/projectb/src/pages/product/dataquality/dataqualityruledefine.tsx
  32. 167 25
      Procedure/frontend/projectb/src/pages/product/dataquality/datascopemanage.tsx
  33. 6 0
      Procedure/frontend/projectb/src/pages/product/datasupplementary/datasupplementation.tsx
  34. 59 5
      Procedure/frontend/projectb/src/pages/product/datasupplementary/supplementtaskmanagement.tsx
  35. 21 2
      Procedure/frontend/projectb/src/pages/product/datasupplementary/supplementtemplatedefine.tsx
  36. 1 0
      Procedure/frontend/projectb/src/pages/product/rwa_calc_config_004rwa/creditriskmeteringrule.tsx
  37. 7 7
      Procedure/frontend/projectb/src/pages/product/rwa_calc_config_004rwa/meteringmanagement.tsx
  38. 2 0
      Procedure/frontend/projectb/src/pages/product/rwa_calc_config_004rwa/meteringparamdefine.tsx
  39. 1 1
      Procedure/frontend/projectb/src/pages/project/businessconfig/DevelopBankList.tsx
  40. 2 2
      Procedure/frontend/projectb/src/pages/project/businessconfig/GeneralSectorList.tsx
  41. 2 2
      Procedure/frontend/projectb/src/pages/project/businessconfig/ListOfPublicSector.tsx
  42. 15 3
      Procedure/frontend/projectb/src/pages/rdpMng/Template/Coding/components/govFinancialAssetComp.tsx
  43. 11 2
      Procedure/frontend/projectb/src/pages/rdpMng/Template/Coding/components/policybank.tsx
  44. 1 1
      Procedure/frontend/projectb/src/pages/rdpMng/Template/Coding/components/sovereign.tsx
  45. 18 12
      Procedure/frontend/projectb/src/pages/rwa_calc_config_002offbalanceprotype/info_list.tsx
  46. 1 1
      Procedure/frontend/projectb/src/pages/rwa_calc_config_003regularrrcsrule/releasetoolinfo.tsx
  47. 22 15
      Procedure/frontend/projectb/src/pages/rwa_calc_config_dataparam/product_list.tsx
  48. 3 3
      Procedure/frontend/projectb/src/pages/rwa_data_check/diffconfig_list.tsx
  49. 23 13
      Procedure/frontend/projectb/src/pages/rwa_data_check/rule_list.tsx
  50. 2 1
      Procedure/frontend/projectb/src/services/rwa/govFinancialAssetComp.ts
  51. 1 0
      Procedure/frontend/projectb/src/services/rwa/info_list.ts
  52. 1 0
      Procedure/frontend/projectb/src/services/rwa/policybank.ts
  53. 5 3
      Procedure/frontend/projectb/src/services/rwa/product/dataquality/dataqualityruledefine.ts
  54. 31 2
      Procedure/frontend/projectb/src/services/rwa/product/dataquality/datascopemanage.ts
  55. 2 0
      Procedure/frontend/projectb/src/services/rwa/product/datasupplementary/supplementtaskmanagement.ts
  56. 1 0
      Procedure/frontend/projectb/src/services/rwa/product/datasupplementary/supplementtemplatedefine.ts

+ 1 - 1
DBScript/张奇凯/001-DDL.sql

@@ -191,7 +191,7 @@ DEFAULT_OUT VARCHAR(60) comment '默
 OFFOBJECT_SUPER VARCHAR(60) comment '上级项目代码',
 ISMINI VARCHAR(60) comment '是否最细一级',
 CCF DECIMAL(30,6) comment '转换系数(%)',
-RISK_EXPOSE_CLASS_CODE VARCHAR(10) comment '风险暴露分类层级',
+RISK_EXPOSE_CLASS_CODE VARCHAR(10) comment '表外项目分类层级',
 YESORNO VARCHAR(60) comment '状态',
  primary key (OFFOBJECT_NO)
 )COMMENT='表外项目分类定义表';

+ 11 - 1
DBScript/张奇凯/002-DML.sql

@@ -2638,4 +2638,14 @@ INSERT INTO sys_funorginfo (FUNCCODE, ORGCODE) VALUES('M500004', '000000');
 delete from sys_funorginfo where FUNCCODE ='M150000';
 INSERT INTO sys_funorginfo (FUNCCODE, ORGCODE) VALUES('M150000', '000000');
 delete from sys_funorginfo where FUNCCODE ='M150001';
-INSERT INTO sys_funorginfo (FUNCCODE, ORGCODE) VALUES('M150001', '000000');
+INSERT INTO sys_funorginfo (FUNCCODE, ORGCODE) VALUES('M150001', '000000');
+
+
+-- 风险类别
+DELETE FROM sys_noun WHERE NOUNITEM ='riskCategory';
+INSERT INTO "sys_noun"
+("NOUNITEM", "NOUNVALUE", "NOUNNAME", "NOUNSUPER", "NOUNLEVEL", "NOUNORDER", "NOUNMODULE", "NOUNVALIDITY", "READONLY", "NOUNPROP", "NOUNREMARKS", "NOUNRELATION", "ORGFLAG")
+VALUES('riskCategory', '1', '信用风险', 'riskCategory', 3.000000000000000000000000000000, 1.000000000000000000000000000000, NULL, '1', '0', NULL, NULL, '1', '0');
+INSERT INTO "sys_noun"
+("NOUNITEM", "NOUNVALUE", "NOUNNAME", "NOUNSUPER", "NOUNLEVEL", "NOUNORDER", "NOUNMODULE", "NOUNVALIDITY", "READONLY", "NOUNPROP", "NOUNREMARKS", "NOUNRELATION", "ORGFLAG")
+VALUES('riskCategory', 'riskCategory', '风险类型', 'BUSDICT', 2.000000000000000000000000000000, 0.000000000000000000000000000000, NULL, '0', '0', NULL, NULL, '1', '0');

+ 4 - 1
Procedure/backend/project/src/main/java/com/sundata/product/rwa/businessconfig/mybatis/SysListOfPublicSectorMapper.xml

@@ -104,5 +104,8 @@
             CUST_NAME = #{model.customerName}
         </where>
     </select>
-
+    
+    <select id="crmToolTypename" resultType="com.sundata.admin.nounmanage.model.DictContent">
+            select REGULARRRCSRULE_NO as id ,REGULARRRCSRULE_NAME as text from RWA_CALC_CONF_REGULARRRCSRULE
+    </select>
 </mapper>

+ 13 - 0
Procedure/backend/project/src/main/java/com/sundata/product/rwa/dataquality/action/DataQualityRuleDefineAction.java

@@ -8,8 +8,11 @@ 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.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Arrays;
+
 @RestController
 @RequestMapping("/product/rwa/dataquality/DataQualityRuleDefineAction")
 public class DataQualityRuleDefineAction  extends BaseAction {
@@ -76,6 +79,9 @@ public class DataQualityRuleDefineAction  extends BaseAction {
     public void updateRowData(HttpServletRequest request, HttpServletResponse response,
                               @RequestBody DataQualityRuleDefineModel model) {
         if (null != model) {
+            String sd = Arrays.toString(model.getCheckTableName());
+            String sd1 = sd.replace("[","").replace("]","");
+            model.setCheckTableNames(sd1);
             dataQualityRuleDefineService.updateRowData(model);
         }
     }
@@ -93,4 +99,11 @@ public class DataQualityRuleDefineAction  extends BaseAction {
                                  @RequestBody DataQualityRuleDefineModel model) {
         sendData(response, dataQualityRuleDefineService.selectDetailData(model));
     }
+
+
+    @RequestMapping({"isNotExist"})
+    public void isNotExist(HttpServletRequest request, HttpServletResponse response,
+                                 @RequestParam String checkRuleNo) {
+        sendData(response, dataQualityRuleDefineService.isNotExist(checkRuleNo));
+    }
 }

+ 62 - 0
Procedure/backend/project/src/main/java/com/sundata/product/rwa/dataquality/action/DataScopeManageAction.java

@@ -1,7 +1,10 @@
 package com.sundata.product.rwa.dataquality.action;
 
 
+import com.sundata.admin.nounmanage.model.DictContent;
+import com.sundata.admin.nounmanage.model.DictTree;
 import com.sundata.common.base.BaseAction;
+import com.sundata.common.util.TreeUtil;
 import com.sundata.product.rwa.dataquality.model.TableRelationDefineModel;
 import com.sundata.product.rwa.dataquality.model.FieldRelationDefineModel;
 import com.sundata.product.rwa.dataquality.service.DataScopeManageService;
@@ -13,6 +16,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Arrays;
+import java.util.HashSet;
 import java.util.List;
 
 @RestController
@@ -61,6 +66,13 @@ public class DataScopeManageAction  extends BaseAction {
     @RequestMapping({"createRowData"})
     public void createRowData(HttpServletRequest request, HttpServletResponse response,
                             @RequestBody TableRelationDefineModel model) {
+        String sd = Arrays.toString(model.getEnglishSourceTableName());
+        String sd2 = Arrays.toString(model.getEnglishSourceTableName());
+        String sd1 = sd.replace("[","").replace("]","");
+        String sd3 = sd2.replace("[","").replace("]","");
+        model.setEnglishSourceTableNames(sd1);
+        model.setEnglishTargetTableNames(sd3);
+        System.out.println(model);
         if (null != model) {
             dataScopeManageService.createRowData(model);
         }
@@ -124,6 +136,15 @@ public class DataScopeManageAction  extends BaseAction {
     @RequestMapping({"updateRowData"})
     public void updateRowData(HttpServletRequest request, HttpServletResponse response,
                               @RequestBody TableRelationDefineModel model) {
+        String sd = Arrays.toString(model.getEnglishSourceTableName());
+        String sd2 = Arrays.toString(model.getEnglishSourceTableName());
+        String ss = Arrays.toString(model.getRiskCategorys());
+        String sd1 = sd.replace("[","").replace("]","");
+        String sd3 = sd2.replace("[","").replace("]","");
+        String ss1  = ss.replace("[","").replace("]","");
+        model.setEnglishSourceTableNames(sd1);
+        model.setEnglishTargetTableNames(sd3);
+        model.setRiskCategory(ss1);
         dataScopeManageService.updateRowData(model);
     }
 
@@ -140,4 +161,45 @@ public class DataScopeManageAction  extends BaseAction {
                               @RequestBody TableRelationDefineModel model) {
         sendData(response, dataScopeManageService.selectDetailData(model));
     }
+
+    @RequestMapping({"selectchineseSourceTableName"})
+    public void selectchineseSourceTableName(HttpServletRequest request, HttpServletResponse response,
+                                             @RequestParam String englishSourceFieldName) {
+        String[] parts = englishSourceFieldName.split(",");
+        StringBuilder formattedString = new StringBuilder();
+        for (int i = 0; i < parts.length; i++) {
+            if (i > 0) {
+                formattedString.append(", ");
+            }
+            formattedString.append("'").append(parts[i]).append("'");
+        }
+        String englishSourceField =formattedString.toString();
+        sendData(response, dataScopeManageService.selectchineseSourceTableName(englishSourceField));
+    }
+
+    @RequestMapping({"selecFieldName"})
+    public List<DictTree> selecFieldName(HttpServletRequest request, HttpServletResponse response,
+                                         @RequestParam String englishSourceFieldName) {
+
+            String[] parts = englishSourceFieldName.split(",");
+            StringBuilder formattedString = new StringBuilder();
+            for (int i = 0; i < parts.length; i++) {
+                if (i > 0) {
+                    formattedString.append(", ");
+                }
+                formattedString.append("'").append(parts[i]).append("'");
+            }
+            String englishSourceField = formattedString.toString();
+            List<DictContent> batchnames = this.dataScopeManageService.selecFieldName(englishSourceField);
+            return   TreeUtil.parseTree(batchnames);//sendData(response, dataScopeManageService.selecFieldName(englishSourceField));
+
+    }
+    @RequestMapping({"selectenglishSourceField"})
+    public void selectenglishSourceField(HttpServletRequest request, HttpServletResponse response,
+                                             @RequestParam String englishField) {
+        sendData(response, dataScopeManageService.selectenglishSourceField(englishField));
+    }
+
+
+
 }

+ 4 - 0
Procedure/backend/project/src/main/java/com/sundata/product/rwa/dataquality/mapper/DataScopeManageMapper.java

@@ -1,5 +1,6 @@
 package com.sundata.product.rwa.dataquality.mapper;
 
+import com.sundata.admin.nounmanage.model.DictContent;
 import com.sundata.product.rwa.dataquality.model.FieldRelationDefineModel;
 import com.sundata.product.rwa.dataquality.model.TableRelationDefineModel;
 import org.apache.ibatis.annotations.Param;
@@ -22,4 +23,7 @@ public interface DataScopeManageMapper {
     void updateRowData(@Param("model") TableRelationDefineModel model);
 
     TableRelationDefineModel selectDetailData(@Param("model") TableRelationDefineModel model);
+
+    List<DictContent> selecFieldName(@Param("englishSourceField") String englishSourceField);
+
 }

+ 22 - 3
Procedure/backend/project/src/main/java/com/sundata/product/rwa/dataquality/model/DataQualityRuleDefineModel.java

@@ -27,7 +27,7 @@ public class DataQualityRuleDefineModel {
     // 所属阶段
     private String ruleStageId;
     // 被检查表
-    private String checkTableName;
+    private String checkTableNames;
     // 处理方案建议
     private String checkProposal;
     // 检查规则说明
@@ -37,6 +37,17 @@ public class DataQualityRuleDefineModel {
     // 状态
     private String checkState;
 
+    private String[] checkTableName;
+    private String[] checkStates;
+
+    public String[] getCheckStates() {
+        return checkStates;
+    }
+
+    public void setCheckStates(String[] checkStates) {
+        this.checkStates = checkStates;
+    }
+
     public String getCalcIndex() {
         return calcIndex;
     }
@@ -133,11 +144,19 @@ public class DataQualityRuleDefineModel {
         this.ruleStageId = ruleStageId;
     }
 
-    public String getCheckTableName() {
+    public String getCheckTableNames() {
+        return checkTableNames;
+    }
+
+    public void setCheckTableNames(String checkTableNames) {
+        this.checkTableNames = checkTableNames;
+    }
+
+    public String[] getCheckTableName() {
         return checkTableName;
     }
 
-    public void setCheckTableName(String checkTableName) {
+    public void setCheckTableName(String[] checkTableName) {
         this.checkTableName = checkTableName;
     }
 

+ 48 - 16
Procedure/backend/project/src/main/java/com/sundata/product/rwa/dataquality/model/TableRelationDefineModel.java

@@ -14,11 +14,11 @@ public class TableRelationDefineModel {
     // 关系编号
     private String relationNo;
     // 源表英文名称
-    private String englishSourceTableName;
+    private String[] englishSourceTableName;
     // 源表中文名称
     private String chineseSourceTableName;
     // 目标表英文名称
-    private String englishTargetTableName;
+    private String[] englishTargetTableName;
     // 目标表中文名称
     private String chineseTargetTableName;
     // 风险类别
@@ -26,6 +26,50 @@ public class TableRelationDefineModel {
     // 来源系统
     private String sourceSystem;
 
+    private String englishTargetTableNames;
+    private String englishSourceTableNames;
+    private String[] riskCategorys;
+
+    public String[] getRiskCategorys() {
+        return riskCategorys;
+    }
+
+    public void setRiskCategorys(String[] riskCategorys) {
+        this.riskCategorys = riskCategorys;
+    }
+
+    public String[] getEnglishSourceTableName() {
+        return englishSourceTableName;
+    }
+
+    public void setEnglishSourceTableName(String[] englishSourceTableName) {
+        this.englishSourceTableName = englishSourceTableName;
+    }
+
+    public String[] getEnglishTargetTableName() {
+        return englishTargetTableName;
+    }
+
+    public void setEnglishTargetTableName(String[] englishTargetTableName) {
+        this.englishTargetTableName = englishTargetTableName;
+    }
+
+    public String getEnglishTargetTableNames() {
+        return englishTargetTableNames;
+    }
+
+    public void setEnglishTargetTableNames(String englishTargetTableNames) {
+        this.englishTargetTableNames = englishTargetTableNames;
+    }
+
+    public String getEnglishSourceTableNames() {
+        return englishSourceTableNames;
+    }
+
+    public void setEnglishSourceTableNames(String englishSourceTableNames) {
+        this.englishSourceTableNames = englishSourceTableNames;
+    }
+
     public String getCalcIndex() {
         return calcIndex;
     }
@@ -74,13 +118,6 @@ public class TableRelationDefineModel {
         this.relationNo = relationNo;
     }
 
-    public String getEnglishSourceTableName() {
-        return englishSourceTableName;
-    }
-
-    public void setEnglishSourceTableName(String englishSourceTableName) {
-        this.englishSourceTableName = englishSourceTableName;
-    }
 
     public String getChineseSourceTableName() {
         return chineseSourceTableName;
@@ -90,13 +127,6 @@ public class TableRelationDefineModel {
         this.chineseSourceTableName = chineseSourceTableName;
     }
 
-    public String getEnglishTargetTableName() {
-        return englishTargetTableName;
-    }
-
-    public void setEnglishTargetTableName(String englishTargetTableName) {
-        this.englishTargetTableName = englishTargetTableName;
-    }
 
     public String getChineseTargetTableName() {
         return chineseTargetTableName;
@@ -121,4 +151,6 @@ public class TableRelationDefineModel {
     public void setSourceSystem(String sourceSystem) {
         this.sourceSystem = sourceSystem;
     }
+
+
 }

+ 28 - 7
Procedure/backend/project/src/main/java/com/sundata/product/rwa/dataquality/mybatis/DataQualityRuleDefineMapper.xml

@@ -19,7 +19,7 @@
         CHECK_RATE                              AS  checkRate,
         ADJUSTDATE	                            AS  adjustDate,
         RULE_STAGE_ID	                        AS  ruleStageId,
-        CHECK_TABLE_NAME                        AS  checkTableName,
+        CHECK_TABLE_NAME                        AS  checkTableNames,
         CHECK_PROPOSAL	                        AS  checkProposal,
         CHECK_RULE_DESC	                        AS  checkRuleDesc,
         CHECK_RULE	                            AS  checkRule,
@@ -35,13 +35,17 @@
             <if test="model.checkRuleName != null and model.checkRuleName !=''">
                 and CHECK_RULE_NAME like concat(concat('%', #{model.checkRuleName}),'%')
             </if>
-            <if test="model.checkTableName != null and model.checkTableName !=''">
-                and CHECK_TABLE_NAME like concat(concat('%', #{model.checkTableName}),'%')
+            <if test="model.checkTableNames != null and model.checkTableNames !=''">
+                and CHECK_TABLE_NAME like concat('%', #{model.checkTableNames},'%')
             </if>
-            <if test="model.checkState != null and model.checkState !=''">
-                and CHECK_STATE like concat(concat('%', #{model.checkState}),'%')
+            <if test="model.checkStates != null and model.checkStates !=''">
+<!--                and CHECK_STATE like concat(concat('%', #{model.checkState}),'%')-->
+                <foreach collection="model.checkStates" item="item" open="and CHECK_STATE in ( " separator="," close=")">
+                    #{item}
+                </foreach>
             </if>
         </where>
+        order by CHECK_STATE desc,CHECK_RULE_NO asc
     </select>
 
     <!-- 数据映射关系的新增 -->
@@ -120,7 +124,7 @@
                     CHECK_RULE_TYPE = #{model.checkRuleType},
                 </if>
                 <if test="model.checkTableName != null and model.checkTableName != ''">
-                    CHECK_TABLE_NAME = #{model.checkTableName},
+                    CHECK_TABLE_NAME = #{model.checkTableNames},
                 </if>
                 <if test="model.ruleStageId != null and model.ruleStageId != ''">
                     RULE_STAGE_ID = #{model.ruleStageId},
@@ -159,7 +163,7 @@
         CHECK_RATE                              AS  checkRate,
         ADJUSTDATE	                            AS  adjustDate,
         RULE_STAGE_ID	                        AS  ruleStageId,
-        CHECK_TABLE_NAME                        AS  checkTableName,
+        CHECK_TABLE_NAME                        AS  checkTableNames,
         CHECK_PROPOSAL	                        AS  checkProposal,
         CHECK_RULE_DESC	                        AS  checkRuleDesc,
         CHECK_RULE	                            AS  checkRule,
@@ -174,7 +178,24 @@
             </if>
         </where>
     </select>
+    
+    
+    <select id="checkTableName" resultType="com.sundata.admin.nounmanage.model.DictContent">
+        SELECT t1.id||t2.description AS id,t1.id||t2.description AS text FROM
+        (SELECT TRIM(REGEXP_SUBSTR(t1.str, '[^,]+', 1, n.n)) AS id
+        FROM (SELECT  english_source_table_name AS str FROM RWA_DATA_CHECK_CONF_DATASOURCE ) T1
+        JOIN (select 1  as n from dual UNION all select 2 from dual ) n ON LENGTH(t1.str) - LENGTH(REPLACE(t1.str,',',''))>=n.n-1)t1
+        LEFT JOIN (SELECT
+        "table_name", t2.description,table_type
+        FROM information_schema.tables
+        left join (select * from pg_description where objsubid = 0) t2 on table_name::regclass::oid = t2.objoid
+        WHERE table_schema = 'testdb' ) t2
+        ON t1.id =t2.table_name
+    </select>
 
+    <select id="ruleStageId" resultType="com.sundata.admin.nounmanage.model.DictContent">
+        select STAGE_ID as id , STAGE_NAME as text from RWA_CALC_CONF_STAGE
+    </select>
 
 
 

+ 38 - 16
Procedure/backend/project/src/main/java/com/sundata/product/rwa/dataquality/mybatis/DataScopeManageMapper.xml

@@ -14,28 +14,31 @@
         TERM                         AS   term,
         DATA_DATE                    AS   dataDate,
         RELATION_NO                  AS   relationNo,
-        ENGLISH_SOURCE_TABLE_NAME    AS   englishSourceTableName,
+        ENGLISH_SOURCE_TABLE_NAME    AS   englishSourceTableNames,
         CHINESE_SOURCE_TABLE_NAME    AS   chineseSourceTableName,
-        ENGLISH_TARGET_TABLE_NAME    AS   englishTargetTableName,
+        ENGLISH_TARGET_TABLE_NAME    AS   englishTargetTableNames,
         CHINESE_TARGET_TABLE_NAME    AS   chineseTargetTableName,
         RISK_CATEGORY	             AS   riskCategory,
         SOURCE_SYSTEM                AS   sourceSystem
         FROM RWA_DATA_CHECK_CONF_DATASOURCE
         <where>
-            <if test="model.englishSourceTableName != null and model.englishSourceTableName !=''">
-                ENGLISH_SOURCE_TABLE_NAME like concat(concat('%',#{model.englishSourceTableName}),'%')
+            <if test="model.englishSourceTableNames != null and model.englishSourceTableNames !=''">
+                ENGLISH_SOURCE_TABLE_NAME like concat(concat('%',#{model.englishSourceTableNames}),'%')
             </if>
             <if test="model.chineseSourceTableName != null and model.chineseSourceTableName !=''">
                 and CHINESE_SOURCE_TABLE_NAME like concat(concat('%', #{model.chineseSourceTableName}),'%')
             </if>
-            <if test="model.englishTargetTableName != null and model.englishTargetTableName !=''">
-                and ENGLISH_TARGET_TABLE_NAME like concat(concat('%', #{model.englishTargetTableName}),'%')
+            <if test="model.englishTargetTableNames != null and model.englishTargetTableNames !=''">
+                and ENGLISH_TARGET_TABLE_NAME like concat(concat('%', #{model.englishTargetTableNames}),'%')
             </if>
             <if test="model.chineseTargetTableName != null and model.chineseTargetTableName !=''">
                 and CHINESE_TARGET_TABLE_NAME like concat(concat('%', #{model.chineseTargetTableName}),'%')
             </if>
-            <if test="model.riskCategory != null and model.riskCategory !=''">
-                and RISK_CATEGORY like concat(concat('%', #{model.riskCategory}),'%')
+            <if test="model.riskCategorys != null and model.riskCategorys !=''">
+                <foreach collection="model.riskCategorys" item="item" open="and RISK_CATEGORY in ( " separator="," close=")">
+                    #{item}
+                </foreach>
+<!--                and RISK_CATEGORY like concat(concat('%', #{model.riskCategory}),'%')-->
             </if>
             <if test="model.sourceSystem != null and model.sourceSystem !=''">
                 and SOURCE_SYSTEM like concat(concat('%', #{model.sourceSystem}),'%')
@@ -92,11 +95,11 @@
         #{model.term},
         #{model.dataDate},
         #{model.relationNo},
-        #{model.englishSourceTableName},
+        #{model.englishSourceTableNames},
         #{model.chineseSourceTableName},
-        #{model.englishTargetTableName},
+        #{model.englishTargetTableNames},
         #{model.chineseTargetTableName},
-        #{model.riskCategory},
+        #{model.riskCategorys},
         #{model.sourceSystem}
         )
     </insert>
@@ -165,18 +168,18 @@
         <trim suffixOverrides=",">
             <set>
                 <if test="model.englishSourceTableName != null and model.englishSourceTableName != ''">
-                    ENGLISH_SOURCE_TABLE_NAME = #{model.englishSourceTableName},
+                    ENGLISH_SOURCE_TABLE_NAME = #{model.englishSourceTableNames},
                 </if>
                 <if test="model.chineseSourceTableName != null and model.chineseSourceTableName != ''">
                     CHINESE_SOURCE_TABLE_NAME = #{model.chineseSourceTableName},
                 </if>
                 <if test="model.englishTargetTableName != null and model.englishTargetTableName != ''">
-                    ENGLISH_TARGET_TABLE_NAME = #{model.englishTargetTableName},
+                    ENGLISH_TARGET_TABLE_NAME = #{model.englishTargetTableNames},
                 </if>
                 <if test="model.chineseTargetTableName != null and model.chineseTargetTableName != ''">
                     CHINESE_TARGET_TABLE_NAME = #{model.chineseTargetTableName},
                 </if>
-                <if test="model.riskCategory != null and model.riskCategory != ''">
+                <if test="model.riskCategorys != null and model.riskCategorys != ''">
                     RISK_CATEGORY = #{model.riskCategory},
                 </if>
                 <if test="model.sourceSystem != null and model.sourceSystem != ''">
@@ -201,9 +204,9 @@
         TERM                         AS   term,
         DATA_DATE                    AS   dataDate,
         RELATION_NO                  AS   relationNo,
-        ENGLISH_SOURCE_TABLE_NAME    AS   englishSourceTableName,
+        ENGLISH_SOURCE_TABLE_NAME    AS   englishSourceTableNames,
         CHINESE_SOURCE_TABLE_NAME    AS   chineseSourceTableName,
-        ENGLISH_TARGET_TABLE_NAME    AS   englishTargetTableName,
+        ENGLISH_TARGET_TABLE_NAME    AS   englishTargetTableNames,
         CHINESE_TARGET_TABLE_NAME    AS   chineseTargetTableName,
         RISK_CATEGORY	             AS   riskCategory,
         SOURCE_SYSTEM                AS   sourceSystem
@@ -216,6 +219,25 @@
     </select>
 
 
+    <select id="englishSourceTable" resultType="com.sundata.admin.nounmanage.model.DictContent">
+        select  TABNAME as id,TABNAME  as text FROM SYS_SQLEDIT_DEF_DATACLASS
+    </select>
+    
+    <select id="selecFieldName" resultType="com.sundata.admin.nounmanage.model.DictContent">
+<!--        select concat(TABNAME,'.',COLNAME) as id,concat(TABNAME,'.',COLNAME) as text   from V_COLUMNS where TABNAME in(${englishSourceField})-->
+        SELECT t1.relname||'.'||t2.attname as id,t1.relname||'.'||t2.attname as text  FROM sys_class t1, sys_attribute t2
+        WHERE t1.relname IN (${englishSourceField}) AND  t2.attrelid =t1.oid  AND t2.attnum > 0
+    </select>
+    <select id="chineseSourceFieldName" resultType="com.sundata.admin.nounmanage.model.DictContent">
+<!--        select COLNAME as id,COLNAME as text  from V_COLUMNS where TABNAME =#{englishSourceField}-->
+<!--        SELECT  col_description(t2.attrelid, t2.attnum) AS id ,col_description(t2.attrelid, t2.attnum) AS text  FROM sys_class t1, sys_attribute t2-->
+<!--        WHERE t1.relname =substr(#{englishSourceField},0,INSTR(#{englishSourceField},'.')-1) AND  t2.attrelid =t1.oid  AND t2.attnum > 0-->
+<!--        AND t2.attname = substr(#{englishSourceField}, INSTR(#{englishSourceField},'.')+1)-->
+    </select>
+
+    <select id="englishSourceField" resultType="com.sundata.admin.nounmanage.model.DictContent">
+            select COLCNAME as id,COLCNAME as text from V_COLUMNS where COLNAME = #{englishSourceField}
+    </select>
 
 
 </mapper>

+ 9 - 2
Procedure/backend/project/src/main/java/com/sundata/product/rwa/dataquality/service/DataQualityRuleDefineService.java

@@ -1,5 +1,7 @@
 package com.sundata.product.rwa.dataquality.service;
 
+import com.sundata.common.util.DBExecutor;
+import com.sundata.common.util.StringUtil;
 import com.sundata.product.rwa.businessconfig.utils.FilesValueCheckUtils;
 import com.sundata.product.rwa.dataquality.mapper.DataQualityRuleDefineMapper;
 import com.sundata.product.rwa.dataquality.model.DataQualityRuleDefineModel;
@@ -49,7 +51,7 @@ public class DataQualityRuleDefineService {
      * @throws:
      */
     public void deleteRows(DataQualityRuleDefineModel model) {
-        if (null != model && FilesValueCheckUtils.checkStringValue(model.getCheckRuleNo())) {
+        if (null != model && StringUtil.isEmpty(model.getCheckRuleNo()) ) {
             dataQualityRuleDefineMapper.deleteRows(model);
         }
     }
@@ -63,7 +65,7 @@ public class DataQualityRuleDefineService {
      * @throws:
      */
     public void updateRowData(DataQualityRuleDefineModel model) {
-        if (null != model && FilesValueCheckUtils.checkStringValue(model.getCheckRuleNo())) {
+        if (null != model ) { // && FilesValueCheckUtils.checkStringValue(model.getCheckRuleNo())
             dataQualityRuleDefineMapper.updateRowData(model);
         }
     }
@@ -79,4 +81,9 @@ public class DataQualityRuleDefineService {
     public DataQualityRuleDefineModel selectDetailData(DataQualityRuleDefineModel model) {
         return dataQualityRuleDefineMapper.selectDetailData(model);
     }
+
+    public String isNotExist (String checkRuleNo){
+        String res = DBExecutor.doQuery("SELECT COUNT(CHECK_RULE_NO) FROM RWA_DATA_CHECK_CONF_DATACHECKINFO where CHECK_RULE_NO='"+checkRuleNo+"'");
+        return res;
+    }
 }

+ 20 - 1
Procedure/backend/project/src/main/java/com/sundata/product/rwa/dataquality/service/DataScopeManageService.java

@@ -1,5 +1,7 @@
 package com.sundata.product.rwa.dataquality.service;
 
+import com.sundata.admin.nounmanage.model.DictContent;
+import com.sundata.common.util.DBExecutor;
 import com.sundata.product.rwa.businessconfig.utils.FilesValueCheckUtils;
 import com.sundata.product.rwa.dataquality.mapper.DataScopeManageMapper;
 import com.sundata.product.rwa.dataquality.model.FieldRelationDefineModel;
@@ -67,7 +69,7 @@ public class DataScopeManageService {
      */
     public void deleteRows(TableRelationDefineModel model) {
 
-        if (null != model && FilesValueCheckUtils.checkStringValue(model.getRelationNo())) {
+        if (null != model && !FilesValueCheckUtils.checkStringValue(model.getRelationNo())) {
             boolean flag = dataScopeManageMapper.deleteRows(model);
             if (flag) {
                 FieldRelationDefineModel fieldModel = new FieldRelationDefineModel();
@@ -131,4 +133,21 @@ public class DataScopeManageService {
     public TableRelationDefineModel selectDetailData(TableRelationDefineModel model) {
         return  dataScopeManageMapper.selectDetailData(model);
     }
+
+    public String selectchineseSourceTableName(String englishSourceField ) {
+        String res = DBExecutor.doQuery("SELECT group_concat(DATACLASSNAME) as DATACLASSNAME   FROM SYS_SQLEDIT_DEF_DATACLASS WHERE TABNAME in ("+englishSourceField+")");
+        return res;
+    }
+
+    public List<DictContent> selecFieldName(String englishSourceField){
+       return dataScopeManageMapper.selecFieldName(englishSourceField);
+    }
+
+    public String selectenglishSourceField(String englishField) {
+        String res = DBExecutor.doQuery("SELECT  col_description(t2.attrelid, t2.attnum) AS chineseSourceFieldName  FROM sys_class t1, sys_attribute t2\n" +
+                "WHERE t1.relname =substr('"+englishField+"',0,INSTR('"+englishField+"','.')-1) AND  t2.attrelid =t1.oid  AND t2.attnum > 0\n" +
+                "AND t2.attname = substr('"+englishField+"', INSTR('"+englishField+"','.')+1)");
+        return res;
+    }
+
 }

+ 1 - 1
Procedure/backend/project/src/main/java/com/sundata/product/rwa/datasupplementary/action/DataSupplementationAction.java

@@ -8,6 +8,7 @@ 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.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 @RestController
@@ -44,5 +45,4 @@ public class DataSupplementationAction extends BaseAction {
                             @RequestBody DataSupplementTaskExampleModel model) {
         sendData(response, dataSupplementationService.selectDetailData(model));
     }
-
 }

+ 1 - 0
Procedure/backend/project/src/main/java/com/sundata/product/rwa/datasupplementary/action/SupplementTaskManagementAction.java

@@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 

+ 13 - 0
Procedure/backend/project/src/main/java/com/sundata/product/rwa/datasupplementary/action/SupplementTemplateDefineAction.java

@@ -12,6 +12,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Arrays;
 import java.util.List;
 
 
@@ -34,6 +35,18 @@ public class SupplementTemplateDefineAction extends BaseAction {
     @RequestMapping({"getDataList"})
     public void getDataList(HttpServletRequest request, HttpServletResponse response,
                             @RequestBody TemplateBasicInfoDefineModel model) {
+//        String sd = Arrays.toString(model.getTmpTypes());
+//        String sd1 = sd.replace("[","").replace("]","").replace(" ","");
+//        String[] parts = sd1.split(",");
+//        StringBuilder formattedString = new StringBuilder();
+//        for (int i = 0; i < parts.length; i++) {
+//            if (i > 0) {
+//                formattedString.append(",");
+//            }
+//            formattedString.append("'").append(parts[i]).append("'");
+//        }
+//        String englishSourceField =formattedString.toString();
+//        model.setTmpType(englishSourceField);
         sendData(response, supplementTemplateDefineService.getDataList(model));
     }
 

+ 29 - 0
Procedure/backend/project/src/main/java/com/sundata/product/rwa/datasupplementary/model/SupplementTaskDefineModel.java

@@ -32,6 +32,35 @@ public class SupplementTaskDefineModel {
     private String tmpNames;
     // 状态
     private String status;
+    // 模板编号
+    private String tmpCode;
+
+    private String[] orgCodes;
+    private String[] frequencys;
+
+    public String[] getOrgCodes() {
+        return orgCodes;
+    }
+
+    public void setOrgCodes(String[] orgCodes) {
+        this.orgCodes = orgCodes;
+    }
+
+    public String[] getFrequencys() {
+        return frequencys;
+    }
+
+    public void setFrequencys(String[] frequencys) {
+        this.frequencys = frequencys;
+    }
+
+    public String getTmpCode() {
+        return tmpCode;
+    }
+
+    public void setTmpCode(String tmpCode) {
+        this.tmpCode = tmpCode;
+    }
 
     public String getCalcIndex() {
         return calcIndex;

+ 10 - 0
Procedure/backend/project/src/main/java/com/sundata/product/rwa/datasupplementary/model/TemplateBasicInfoDefineModel.java

@@ -25,6 +25,16 @@ public class TemplateBasicInfoDefineModel {
     // 模板文件编号
     private String tmpFileCode;
 
+    private String[] tmpTypes;
+
+    public String[] getTmpTypes() {
+        return tmpTypes;
+    }
+
+    public void setTmpTypes(String[] tmpTypes) {
+        this.tmpTypes = tmpTypes;
+    }
+
     public String getCalcIndex() {
         return calcIndex;
     }

+ 63 - 22
Procedure/backend/project/src/main/java/com/sundata/product/rwa/datasupplementary/mybatis/SupplementTaskManagementMapper.xml

@@ -8,33 +8,54 @@
     <!-- 报表的初始化 -->
     <select id="getDataList" resultType="com.sundata.product.rwa.datasupplementary.model.SupplementTaskDefineModel">
         SELECT
-        CALCINDEX             AS   calcIndex,
-        SDATE                 AS   startDate,
-        EDATE                 AS   endDate,
-        TERM                  AS   term,
-        DATA_DATE             AS   dataDate,
-        TASKCODE              AS   taskCode,
-        TASKNAME              AS   taskName,
-        TASKVERSION           AS   taskVersion,
-        ORGCODE               AS   orgCode,
-        ACCOUNT               AS   account,
-        FREQUENCY             AS   frequency,
-        ADJUSTMENT            AS   adjustment,
-        STAGEIN_ID            AS   stageinId,
+        T1.CALCINDEX             AS   calcIndex,
+        T1.SDATE                 AS   startDate,
+        T1.EDATE                 AS   endDate,
+        T1.TERM                  AS   term,
+        T1.DATA_DATE             AS   dataDate,
+        T1.TASKCODE              AS   taskCode,
+        T1.TASKNAME              AS   taskName,
+        T1.TASKVERSION           AS   taskVersion,
+        T1.ORGCODE               AS   orgCode,
+        T1.ACCOUNT               AS   account,
+        T1.FREQUENCY             AS   frequency,
+        T1.ADJUSTMENT            AS   adjustment,
+        T1.STAGEIN_ID            AS   stageinId,
         CASE
-        WHEN STATUS = '0' THEN '失效'
-        WHEN STATUS = '1' THEN '生效'
-        END                   AS   status
-        FROM RWA_IMPUT_SUPTASKCONF_BASEINFO
+        WHEN T1.STATUS = '0' THEN '失效'
+        WHEN T1.STATUS = '1' THEN '生效'
+        END                   AS   status,
+        T2.TMPCODE            AS tmpCode,
+        T3.TMPNAME            AS tmpNames
+        FROM RWA_IMPUT_SUPTASKCONF_BASEINFO T1
+        LEFT JOIN RWA_IMPUT_SUPTASKCONF_RELATEDINFO T2
+        ON T1.TASKCODE = T2.TASKCODE
+        LEFT JOIN RWA_IMPUT_TMPCONF_BASEINFO T3
+        ON T2.TMPCODE = T3.TMPCODE
         <where>
+            1=1
             <if test="model.taskCode != null and model.taskCode !=''">
-                TASKCODE like concat(concat('%',#{model.taskCode}),'%')
+             and   T1.TASKCODE like concat(concat('%',#{model.taskCode}),'%')
             </if>
             <if test="model.taskName != null and model.taskName !=''">
-                and TASKNAME like concat(concat('%', #{model.taskName}),'%')
+                and T1.TASKNAME like concat(concat('%', #{model.taskName}),'%')
+            </if>
+            <if test="model.orgCodes != null and model.orgCodes !=''">
+                <foreach collection="model.orgCodes" item="item" open="and   T1.ORGCODE  in ( " separator="," close=")">
+                    #{item}
+                </foreach>
+<!--                and T1.ORGCODE  in (${model.orgCodes})-->
+            </if>
+            <if test="model.frequencys !=null and model.frequencys !=''">
+                <foreach collection="model.frequencys" item="item" open="and T1.FREQUENCY in ( " separator="," close=")">
+                    #{item}
+                </foreach>
             </if>
-            <if test="model.orgCode != null and model.orgCode !=''">
-                and ORGCODE like concat(concat('%', #{model.orgCode}),'%')
+            <if test="model.tmpCode !=null and model.tmpCode!=''">
+                and t2.TMPCODE like ('%'||#{model.tmpCode}||'%')
+            </if>
+            <if test="model.tmpNames !=null and model.tmpNames!=''">
+                and t3.TMPNAME like ('%'||#{model.tmpNames}||'%')
             </if>
         </where>
     </select>
@@ -399,7 +420,7 @@
         ACCOUNT               AS   account,
         FREQUENCY             AS   frequency,
         ADJUSTMENT            AS   adjustment,
-        STAGEIN_ID            AS   stageinId
+        STAGEIN_ID            AS   stageinId
         FROM RWA_IMPUT_SUPTASKCONF_BASEINFO
         <where>
             <if test="model.taskCode != null and model.taskCode !=''">
@@ -423,6 +444,26 @@
         T1.TMPNAME as label
         from RWA_IMPUT_TMPCONF_BASEINFO T1
     </select>
+    
+    <select id="account1" resultType="com.sundata.admin.nounmanage.model.DictContent">
+        select account as id ,cnname as text from sys_user
+        where 1=1
+        <if test="account!='' and  account!=null">
+       and  orgcode =#{account}
+        </if>
+        <if test="account =='' or  account == null">
+            and  1=2
+        </if>
+    </select>
+
+    <select id="account2" resultType="com.sundata.admin.nounmanage.model.DictContent">
+        select account as id ,cnname as text from sys_user
+        where 1=1
+    </select>
+
+    <select id="tmpFileCode" resultType="com.sundata.admin.nounmanage.model.DictContent">
+        select STAGE_ID as id , STAGE_NAME as text from rwa_calc_conf_stage
+    </select>
 
 
 </mapper>

+ 8 - 2
Procedure/backend/project/src/main/java/com/sundata/product/rwa/datasupplementary/mybatis/SupplementTemplateDefineMapper.xml

@@ -27,8 +27,11 @@
             <if test="model.tmpName != null and model.tmpName !=''">
                 and TMPNAME like concat(concat('%', #{model.tmpName}),'%')
             </if>
-            <if test="model.tmpType != null and model.tmpType !=''">
-                and TMPTYPE like concat(concat('%', #{model.tmpType}),'%')
+            <if test="model.tmpTypes != null and model.tmpTypes !=''">
+                <foreach collection="model.tmpTypes" item="item" open="and TMPTYPE in ( " separator="," close=")">
+                    #{item}
+                </foreach>
+<!--                and TMPTYPE in (${model.tmpType})-->
             </if>
         </where>
     </select>
@@ -234,6 +237,9 @@
         </where>
     </select>
 
+    <select id="taskName" resultType="com.sundata.admin.nounmanage.model.DictContent">
+        select TASKCODE as id , TASKNAME as text from RWA_IMPUT_SUPTASKCONF_BASEINFO
+    </select>
 
 
 

+ 1 - 0
Procedure/backend/project/src/main/java/com/sundata/product/rwa/datasupplementary/service/DataSupplementationService.java

@@ -1,5 +1,6 @@
 package com.sundata.product.rwa.datasupplementary.service;
 
+import com.sundata.common.util.DBExecutor;
 import com.sundata.product.rwa.datasupplementary.mapper.DataSupplementationMapper;
 import com.sundata.product.rwa.datasupplementary.model.DataSupplementTaskExampleModel;
 import org.springframework.beans.factory.annotation.Autowired;

+ 11 - 0
Procedure/backend/project/src/main/java/com/sundata/product/rwa/parameter/model/GovFinancialAssetCompModel.java

@@ -1,5 +1,7 @@
 package com.sundata.product.rwa.parameter.model;
 
+import org.apache.ibatis.annotations.Param;
+
 import java.math.BigDecimal;
 import java.util.HashMap;
 import java.util.Map;
@@ -16,6 +18,15 @@ public class GovFinancialAssetCompModel {
     private String  term;  //年月
     private BigDecimal  weight;  //缓释权重
     private int flag;
+    private String qualfiedCreditToolName;
+
+    public String getQualfiedCreditToolName() {
+        return qualfiedCreditToolName;
+    }
+
+    public void setQualfiedCreditToolName(String qualfiedCreditToolName) {
+        this.qualfiedCreditToolName = qualfiedCreditToolName;
+    }
 
     public static Map<String, String> getCastFileCellToJson() {
         Map<String, String> map = new HashMap<>();

+ 9 - 0
Procedure/backend/project/src/main/java/com/sundata/product/rwa/parameter/model/PolicyBankModel.java

@@ -19,6 +19,15 @@ public class PolicyBankModel {
     private String  isSlowreleaseUse; // 是否用于合格缓释认定
     private int flag;
     private String  remark; // 是否用于合格缓释认定
+    private String qualfiedCreditToolName;
+
+    public String getQualfiedCreditToolName() {
+        return qualfiedCreditToolName;
+    }
+
+    public void setQualfiedCreditToolName(String qualfiedCreditToolName) {
+        this.qualfiedCreditToolName = qualfiedCreditToolName;
+    }
 
     public static Map<String, String> getCastFileCellToJson() {
         Map<String, String> map = new HashMap<>();

+ 17 - 13
Procedure/backend/project/src/main/java/com/sundata/product/rwa/parameter/mybatis/GovFinancialAssetCompMapper.xml

@@ -6,23 +6,27 @@
 
     <select id="getGovFinancialAssetComp" resultType="com.sundata.product.rwa.parameter.model.GovFinancialAssetCompModel">
         select
-        CALCINDEX as calcindex,
-        CRM_CLASS as crmClass,
-        DATA_DATE as dataDate,
-        EDATE as edate,
-        NAME as name,
-        NOTES as notes,
-        QUALFIED_CREDIT_TOOL_TYPE_NAME as qualfiedCreditToolTypeName,
-        SDATE as sdate,
-        TERM as term,
-        WEIGHT as weight
+        T1.CALCINDEX as calcindex,
+        T1.CRM_CLASS as crmClass,
+        T1.DATA_DATE as dataDate,
+        T1.EDATE as edate,
+        T1.NAME as name,
+        T1.NOTES as notes,
+        T1.QUALFIED_CREDIT_TOOL_TYPE_NAME as qualfiedCreditToolTypeName,
+        T1.SDATE as sdate,
+        T1.TERM as term,
+        T1.WEIGHT as weight,
+        T2.NOUNNAME as qualfiedCreditToolName
         from
-        RWA_BDM_OBJ_CONF_GOV_FINANCIAL_ASSET_COMP
+        RWA_BDM_OBJ_CONF_GOV_FINANCIAL_ASSET_COMP T1
+        LEFT JOIN SYS_NOUN T2
+        ON T1.QUALFIED_CREDIT_TOOL_TYPE_NAME = T2.NOUNVALUE
+        AND T2.NOUNITEM = 'qualfiedCreditToolTypeName'
         where 1=1
         <if test="name !='' and name!=null">
-            and NAME like concat('%',#{name},'%')
+            and T1.NAME like concat('%',#{name},'%')
         </if>
-        order by DATA_DATE asc
+        order by T1.DATA_DATE asc
     </select>
 
     <select id="selectGovFinancialAssetComp" resultType="com.sundata.product.rwa.parameter.model.GovFinancialAssetCompModel">

+ 19 - 15
Procedure/backend/project/src/main/java/com/sundata/product/rwa/parameter/mybatis/PolicyBankMapper.xml

@@ -16,25 +16,29 @@
     </resultMap>
 
     <select id="getPolicyBank" resultMap="useMap" parameterType="com.sundata.product.rwa.parameter.model.PolicyBankModel">
-       select
-        CALCINDEX,
-        SDATE ,
-        EDATE ,
-        TERM ,
-        DATA_DATE ,
-        CUST_NAME,
-        CRM_FIRST_LEVEL ,
-        QUALFIED_CREDIT_TOOL_TYPE_NAME,
-        BASE_WEIGHT,
-        EXEMPTION_WEIGHT*100 as exemptionWeight,
-        case when IS_RISKCLASS_USE = '1' then '是' else '否' end as isRiskclassUse,
-        case when IS_SLOWRELEASE_USE = '1' then '是' else '否' end  as isSlowreleaseUse
-        FROM RWA_BDM_OBJ_CONF_POLICY_BANK_LIST
+        select
+        T1.CALCINDEX,
+        T1.SDATE ,
+        T1.EDATE ,
+        T1.TERM ,
+        T1.DATA_DATE ,
+        T1.CUST_NAME,
+        T1.CRM_FIRST_LEVEL ,
+        T1.QUALFIED_CREDIT_TOOL_TYPE_NAME,
+        T1.BASE_WEIGHT,
+        T1.EXEMPTION_WEIGHT*100 as exemptionWeight,
+        case when T1.IS_RISKCLASS_USE = '1' then '是' else '否' end as isRiskclassUse,
+        case when T1.IS_SLOWRELEASE_USE = '1' then '是' else '否' end  as isSlowreleaseUse,
+        T2.NOUNNAME as qualfiedCreditToolName
+        FROM RWA_BDM_OBJ_CONF_POLICY_BANK_LIST T1
+        LEFT JOIN SYS_NOUN T2
+        ON T1.QUALFIED_CREDIT_TOOL_TYPE_NAME = T2.NOUNVALUE
+        AND T2.NOUNITEM = 'qualfiedCreditToolTypeName'
         where 1=1
         <if test="custName !=null and custName !=''">
             and cust_name like concat('%',#{custName},'%')
         </if>
-        order by  DATA_DATE asc
+        order by  DATA_DATE desc
     </select>
     <delete id="deletePolicyBank" parameterType="com.sundata.product.rwa.parameter.model.PolicyBankModel">
 

+ 4 - 4
Procedure/backend/project/src/main/java/com/sundata/product/rwa/parameter/service/GovFinancialAssetCompService.java

@@ -46,16 +46,16 @@ public class GovFinancialAssetCompService extends BaseService<RptDefineModel> {
         return govFinancialAssetCompMapper.selectGovFinancialAssetComp(name);
     }
 
-    public String inserteGovFinancialAssetComp(GovFinancialAssetCompModel govFinancialAssetCompModelDemo){
+    public boolean inserteGovFinancialAssetComp(GovFinancialAssetCompModel govFinancialAssetCompModelDemo){
         String a = DBExecutor.doQuery("select count(1) from RWA_BDM_OBJ_CONF_GOV_FINANCIAL_ASSET_COMP where name ='" + govFinancialAssetCompModelDemo.getName() + "'");
-        if (Integer.valueOf(a) >= 1) {
-            return "交易对手名称已重复,请重新输入";
+        if (Integer.valueOf(a) >= 2) {
+            return false;
         }
         else {
             govFinancialAssetCompMapper.deleteGovFinancialAssetComp(govFinancialAssetCompModelDemo.getName());
             govFinancialAssetCompModelDemo.setFlag(0);
             govFinancialAssetCompMapper.inserteGovFinancialAssetComp(govFinancialAssetCompModelDemo);
-            return "";
+            return true;
         }
     }
     // 导出数据

+ 2 - 2
Procedure/backend/project/src/main/java/com/sundata/product/rwa/parameter/service/PolicyBankService.java

@@ -92,8 +92,8 @@ public class PolicyBankService   extends BaseService<RptDefineModel> {
         while (-1 !=(byteValue1=in1.read()))
             out1.write(byteValue1);
         workbook.close(); // 关闭工作簿
-         Map<String, Object> data = new HashMap<>();
 
+         Map<String, Object> data = new HashMap<>();
         FilesValueCheckUtils.exportExcelModel(response,policyBankModelDemo,folder+"/",filename);
         return true;
     }
@@ -154,7 +154,7 @@ public class PolicyBankService   extends BaseService<RptDefineModel> {
             }
 
             // 读取文件sheet页
-            int sheetNum = book.getNumberOfSheets();
+            int sheetNum = book.getNumberOfSheets()-1;
             for (int i =0;i<=sheetNum-1;i++){
                 // 读取第i个sheet页
                 Sheet sheet = book.getSheetAt(i);

+ 9 - 0
Procedure/backend/project/src/main/java/com/sundata/product/rwa/rwaCalcConfig002offbalanceprotype/model/RwaCalcConfOffbalanceprotyperuleModel.java

@@ -18,6 +18,15 @@ public class RwaCalcConfOffbalanceprotyperuleModel {
     private String  ruleOut;   //输出
     private String  ruleInName;
     private String  ruleOutName;
+    private String  ruleProductName;
+
+    public String getRuleProductName() {
+        return ruleProductName;
+    }
+
+    public void setRuleProductName(String ruleProductName) {
+        this.ruleProductName = ruleProductName;
+    }
 
     public String getRuleInName() {
         return ruleInName;

+ 3 - 0
Procedure/backend/project/src/main/java/com/sundata/product/rwa/rwaCalcConfig002offbalanceprotype/mybatis/InfoListMapper.xml

@@ -66,6 +66,7 @@
     T1.RULE_NO as ruleNo,
     T1.RULE_INDEX as ruleIndex,
     T1.RULE_PRODUCT_NO as ruleProductNo,
+    T4.PRODUCT_NAME AS ruleProductName,
     T1.RULE_GETDATA as ruleGetdata,
     T1.RULE_IN as ruleIn,
     T2.tabname AS ruleInName,
@@ -94,6 +95,8 @@
     )T3
     ON T1.RULE_OUT =T3.RULE_OUT
     AND T1.RULE_NO =T3.RULE_NO
+    left join RWA_CALC_CONF_PRODUCT t4
+    on t4.PRODUCT_NO=t1.RULE_PRODUCT_NO
     where T1.OFFOBJECT_NO = #{offobjectNo} or( T1.OFFOBJECT_NO is null and substr(T1.RULE_NO,5,length(#{offobjectNo})) =#{offobjectNo})
 </select>
 

+ 9 - 0
Procedure/backend/project/src/main/java/com/sundata/product/rwa/rwacalcconfigdataparam/model/ProductListModel.java

@@ -19,6 +19,15 @@ public class ProductListModel {
     private String  productFromSystems;   //来源系统
     private String  defaultGetdatarule;   //默认取数逻辑
     private String  defaultOut;   //默认输出
+    private String  productTypeName;
+
+    public String getProductTypeName() {
+        return productTypeName;
+    }
+
+    public void setProductTypeName(String productTypeName) {
+        this.productTypeName = productTypeName;
+    }
 
     public String getProductFromSystems() {
         return productFromSystems;

+ 5 - 1
Procedure/backend/project/src/main/java/com/sundata/product/rwa/rwacalcconfigdataparam/mybatis/ProductListMapper.xml

@@ -13,6 +13,7 @@
              T1.PRODUCT_NO as productNo,
              T1.PRODUCT_NAME as productName,
              T1.PRODUCT_TYPE as productType,
+             T3.NOUNNAME AS productTypeName,
              T1.PRODUCT_BUSSINESS_CODE as productBussinessCode,
              T1.PRODUCT_STAGE_ID as productStageId,
              T1.PRODUCT_INDEX as productIndex,
@@ -31,6 +32,9 @@
         AND T2.NOUNITEM ='PRODUCTFROMSYSTEM'
         GROUP BY T1.PRODUCT_NO) T2  -- dual需要换成RIM_TDM_BS_FF_REPO_LINK_SEQ_NO 表字段使用SEQ_NO
         ON T1.PRODUCT_NO=T2.PRODUCT_NO
+        left join sys_noun T3
+        ON T1.PRODUCT_TYPE = T3.NOUNVALUE
+        AND T3.NOUNITEM = 'PRODUCT_TYPE'
         where 1=1
         <if test="productNo !='' and productNo!=null">
             and T1.PRODUCT_NO like concat('%',#{productNo},'%')
@@ -124,7 +128,7 @@
               PRODUCT_BUSSINESS_CODE as productBussinessCode,
               PRODUCT_STAGE_ID as productStageId,
               PRODUCT_INDEX as productIndex,
-        REPLACE(REPLACE(PRODUCT_FROM_SYSTEM, CHAR(9), ''), CHAR(32), '') as productFromSystems,
+              REPLACE(PRODUCT_FROM_SYSTEM,CHR(32),'' ) as productFromSystems,
               DEFAULT_GETDATARULE as defaultGetdatarule,
               DEFAULT_OUT as defaultOut
         from

+ 73 - 14
Procedure/frontend/projectb/src/pages/product/dataquality/dataqualityruledefine.tsx

@@ -2,12 +2,14 @@ import React, { useEffect, useRef, useState } from "react";
 import { type ProColumns, type ActionType, type ProFormInstance, ProTable, EditableProTable } from '@ant-design/pro-components';
 import type {FormInstance} from 'antd'
 import  {Upload} from 'antd'
-import { SDPage,SDFormText,SDModalForm,SDTable,SDFormItem,SDButton,SDSubmitButton,EditType, SDAreaTtile, SDOperate, baseFun,SDModal, validateFun, SDLayout, } from "@sundata/ui-frame";
-import type { DataQualityRuleDefineModel } from '@/services/rwa/product/dataquality/dataqualityruledefine';
+import { SDPage,SDFormText,SDModalForm,SDTable,SDFormItem,SDButton,SDSubmitButton,EditType, SDAreaTtile, SDOperate, baseFun,SDModal, validateFun, SDLayout, SDFormDict, } from "@sundata/ui-frame";
+import { DataQualityRuleDefineModel, isNotExist } from '@/services/rwa/product/dataquality/dataqualityruledefine';
 import {getDataList,deleteRows,createRowData,updateRowData,selectDetailData} from '@/services/rwa/product/dataquality/dataqualityruledefine';
 import { PlusSquareTwoTone, WomanOutlined } from "@ant-design/icons";
 import { ProductProps } from "@/sundataImport";
 import { ReportCalculationModel } from "@/services/rwa/product/report_form_config_reportcreater/reportfillingconfig";
+import { useModel } from "@umijs/max";
+import { countChineseChars } from "@/services/rwa/product/rwacheckutils";
 type widowRush = {
   onCancel:  () => void;
   onChangeVisible(visible: boolean, type: string): unknown;
@@ -25,6 +27,7 @@ const dataqualityruledefine : React.FC<widowRush> = (prop:widowRush) => {
     const formRef = useRef<FormInstance<any>>();
     const templateRef = useRef<FormInstance<any>>();
 
+
     // 页面数据
     var formDataList = new Array<DataQualityRuleDefineModel>;
 
@@ -34,10 +37,13 @@ const dataqualityruledefine : React.FC<widowRush> = (prop:widowRush) => {
     useEffect(() => {
       }, []);
     
+      const { fetchDict } = useModel('dict');  
     // 修改查询查询
     const selectData = async (formdata : DataQualityRuleDefineModel) => {
       const data = await selectDetailData(formdata);
-      formRef.current?.setFieldsValue(data);
+      formRef.current?.setFieldValue("checkTableName",data.checkTableNames);
+      const {checkTableName,...data1} =data
+      formRef.current?.setFieldsValue(data1);
      }
 
     // 删除
@@ -61,11 +67,20 @@ const dataqualityruledefine : React.FC<widowRush> = (prop:widowRush) => {
     if (editType == 'update' ) {
        await updateRowData(data);
        closeAndRefresh();
+       setDetailVisible(false);
+       baseFun.info("保存成功")
     } else if (editType == 'create' ) {
+      const sd = await isNotExist(data.checkRuleNo);
+      if(Number(sd)>1){
       await createRowData(data);
       closeAndRefresh();
+      setDetailVisible(false);
+      baseFun.info("保存成功")
+      }else{
+        baseFun.warning("规则编号已存在,请重新输入!");
+      }
     }
-    setDetailVisible(false);
+    
   }
 
 
@@ -110,13 +125,30 @@ const dataqualityruledefine : React.FC<widowRush> = (prop:widowRush) => {
         },
         {
           title: '被检查表', 
-          dataIndex: 'checkTableName',
+          dataIndex: 'checkTableNames',
+       //   request:()=>fetchDict({dictKey:'@checkTableName'}),
           hideInTable: false,
         },
+        {
+          title: '状态', 
+          dataIndex: 'checkStates',
+          hideInTable: true,
+          valueType:'treeSelect',
+          request:()=>fetchDict("YESORNO"),
+          fieldProps:{
+            treeCheckable:true,
+          }
+      },
         {
             title: '状态', 
             dataIndex: 'checkState',
             hideInTable: false,
+            search:false,
+            valueType:'treeSelect',
+            request:()=>fetchDict("YESORNO"),
+            fieldProps:{
+              treeCheckable:true,
+            }
         },
         {
           title: '操作',
@@ -204,7 +236,7 @@ const dataqualityruledefine : React.FC<widowRush> = (prop:widowRush) => {
           visible={detailVisible}
           onVisibleChange={() => {setDetailVisible(false)}}
           footer={[
-          <SDSubmitButton  editType={editType}   formRef={formRef} doSubmit={handleSave} >保存</SDSubmitButton>,
+          <SDSubmitButton  editType={editType}  successMessage='' formRef={formRef} doSubmit={handleSave} >保存</SDSubmitButton>,
           <SDButton
             key="closeUpdate"
             successMessage=''
@@ -216,15 +248,42 @@ const dataqualityruledefine : React.FC<widowRush> = (prop:widowRush) => {
           formRef={formRef}
         >
             <SDAreaTtile title='规则信息'/>
-            <SDFormText name="checkRuleNo" readonlyCond="update" required={true} label="规则编号"/>
-            <SDFormText name="checkRuleName" label="规则名称"/>
-            <SDFormText name="checkRate"  label="检查频率" />
+            <SDFormText name="checkRuleNo" readonlyCond="update" required={true} label="规则编号" rules={[{max:60,message:'最多50个字符'}]}/>
+            <SDFormText name="checkRuleName" label="规则名称" rules={[{validator:(rules,value,callback)=>{
+            let chineseCount = countChineseChars(value);
+            if (chineseCount > 30) {
+                callback('最多30个汉字');
+            } else if (chineseCount<=0) {
+                callback('请输入汉字');
+            } else{
+              callback();
+            }
+         }}]}/>
+            <SDFormDict name="checkRate"  label="检查频率" dictKey="CHECK_RATE" />
             <SDFormText name="adjustDate" label="天数调整"/>
-            <SDFormText name="checkRuleType" label="校验类型"/>
-            <SDFormText name="checkTableName" label="被检查表"/>
-            <SDFormText name="ruleStageId" label="所属阶段"/>
-            <SDFormText type="textarea" name="checkProposal" label="处理方案建议"/>
-            <SDFormText type="textarea" name="checkRuleDesc"  label="检查规则说明"/>
+            <SDFormDict name="checkRuleType" label="校验类型" dictKey="CHECK_RULE_TYPE"/>
+            <SDFormDict name="checkTableName" label="被检查表"  dictKey="@checkTableName" multiple={true}/>
+            <SDFormDict name="ruleStageId" label="所属阶段" dictKey="@ruleStageId"/>
+            <SDFormText type="textarea" name="checkProposal" label="处理方案建议"  rules={[{validator:(rules,value,callback)=>{
+            let chineseCount = countChineseChars(value);
+            if (chineseCount > 200) {
+                callback('最多200个汉字');
+            } else if (chineseCount<=0) {
+                callback('请输入汉字');
+            } else{
+              callback();
+            }
+         }}]}/>
+            <SDFormText type="textarea" name="checkRuleDesc"  label="检查规则说明"  rules={[{validator:(rules,value,callback)=>{
+            let chineseCount = countChineseChars(value);
+            if (chineseCount > 200) {
+                callback('最多200个汉字');
+            } else if (chineseCount<=0) {
+                callback('请输入汉字');
+            } else{
+              callback();
+            }
+         }}]}/>
             <SDFormText type="textarea" name="checkRule"  label="检查规则sql"/>
         
             

+ 167 - 25
Procedure/frontend/projectb/src/pages/product/dataquality/datascopemanage.tsx

@@ -1,13 +1,16 @@
 import React, { useEffect, useRef, useState } from "react";
-import { type ProColumns, type ActionType, type ProFormInstance, ProTable, EditableProTable } from '@ant-design/pro-components';
-import type {FormInstance} from 'antd'
+import { type ProColumns, type ActionType, type ProFormInstance, ProTable, EditableProTable, ProFormSelect, CheckCard, editableRowByKey, recordKeyToString } from '@ant-design/pro-components';
+import {FormInstance, Input, Select} from 'antd'
 import  {Upload} from 'antd'
-import { SDPage,SDFormText,SDModalForm,SDTable,SDFormItem,SDButton,SDSubmitButton,EditType, SDAreaTtile, SDOperate, baseFun,SDModal, validateFun, SDLayout, } from "@sundata/ui-frame";
-import type { TableRelationDefineModel, FieldRelationDefineModel } from '@/services/rwa/product/dataquality/datascopemanage';
+import { SDPage,SDFormText,SDModalForm,SDTable,SDFormItem,SDButton,SDSubmitButton,EditType, SDAreaTtile, SDOperate, baseFun,SDModal, validateFun, SDLayout, SDFormDict, } from "@sundata/ui-frame";
+import { TableRelationDefineModel, FieldRelationDefineModel, selectchineseSourceTableName, selecFieldName, selectenglishSourceField } from '@/services/rwa/product/dataquality/datascopemanage';
 import {getDataList,deleteRows,createRowData,updateRowData,selectDetailData,getFieldDataList,createFieldRowData} from '@/services/rwa/product/dataquality/datascopemanage';
 import { PlusSquareTwoTone, WomanOutlined } from "@ant-design/icons";
 import { ProductProps } from "@/sundataImport";
 import { ReportCalculationModel } from "@/services/rwa/product/report_form_config_reportcreater/reportfillingconfig";
+import { fetchDictList } from "@/services/sysMng/nounMng";
+import { useModel } from "@umijs/max";
+import { indexOf, keys, keysIn, mapKeys, values } from "lodash";
 type widowRush = {
   onCancel:  () => void;
   onChangeVisible(visible: boolean, type: string): unknown;
@@ -20,12 +23,15 @@ const datascopemanage : React.FC<widowRush> = (prop:widowRush) => {
     /** 是否显示详细信息窗口 */
     const [detailVisible, setDetailVisible] = useState<boolean>(false);
     const [currentRow, setCurrentRow] = useState<TableRelationDefineModel>();
+
+    const editorFormRef = useRef<any>();
     /** 表格引用对象,刷新表格使用   */
     const actionRef = useRef<ActionType>();
     const formRef = useRef<FormInstance<any>>();
     const templateRef = useRef<FormInstance<any>>();
     /** 字段关系列表数据   */
     const [fieldRelationData, setFieldRelationData] = useState<FieldRelationDefineModel[]>([]);
+    const [fieldRelationData1, setFieldRelationData1] = useState<FieldRelationDefineModel>();
     // 页面数据
     var formDataList = new Array<TableRelationDefineModel>;
 
@@ -35,6 +41,14 @@ const datascopemanage : React.FC<widowRush> = (prop:widowRush) => {
 
     const fillInActionRef = useRef<ActionType>();
 
+    const { fetchDict } = useModel('dict');  
+    
+    const [englishSourceTableName,setEnglishSourceTableName] = useState<any>();
+    const [englishTargetTableName,setEnglishTargetTableName] = useState<any>();
+    const [englishSourceFieldNames,setEnglishSourceFieldNames] = useState<any>();
+    const [englishField,setEnglishField] = useState<any>();
+    const [a1,setA1]=useState<any>();
+
     /** 字段关系序号编辑 */
     var paramIndex = 0;
 
@@ -42,16 +56,25 @@ const datascopemanage : React.FC<widowRush> = (prop:widowRush) => {
     var dataIndex = 1;
 
     useEffect(() => {
-      }, []);
+      select1();
+      
+        select2();
+        select3();
+      
+      }, [englishSourceTableName,englishTargetTableName]);
     
     // 修改查询查询
     const selectData = async (formdata : TableRelationDefineModel) => {
       const data = await selectDetailData(formdata);
-      formRef.current?.setFieldsValue(data);
+      formRef.current?.setFieldValue("englishSourceTableName",data.englishSourceTableNames);
+      formRef.current?.setFieldValue("englishTargetTableName",data.englishTargetTableNames);
+      formRef.current?.setFieldValue("riskCategorys",data.riskCategory);
+      console.log(data.englishSourceTableName);
+       const {englishSourceTableName,englishTargetTableName,riskCategorys,...data1}=data;
+      formRef.current?.setFieldsValue(data1);
       const fieldData = await getFieldDataList(formdata);
       setFieldRelationData(fieldData);
      }
-
     // 删除
     const delRows =async(record:any)=>{ 
        baseFun.confirm('确认删除?',async() =>{
@@ -88,6 +111,35 @@ const datascopemanage : React.FC<widowRush> = (prop:widowRush) => {
     setDetailVisible(false);
   }
 
+  const select1 =async()=>{
+    if(englishSourceTableName!=null || englishSourceTableName!=undefined)
+    {const sd = await selecFieldName(englishSourceTableName)
+    console.log(sd)
+    return setA1(sd);
+    }
+  }
+
+  const select3 =async()=>{
+    if(englishTargetTableName!=null || englishTargetTableName!=undefined)
+    {const sd = await selecFieldName(englishTargetTableName)
+    console.log(sd)
+    return setA1(sd);
+    }
+  }
+
+ const select2 =async()=>{
+  if(englishField != undefined ||englishField !=null){
+  // console.log(englishField)
+  // const a =englishField.indexOf('.');
+  // const a1 = englishField.slice(0,a);
+  // const a2 = englishField.slice(a+1)
+    const a3 = await selectenglishSourceField(englishField)
+   return setEnglishSourceFieldNames(a3);
+  }else(
+    console.log('2222')
+  )
+  }
+
 
      
     // 页面展示元素
@@ -96,7 +148,7 @@ const datascopemanage : React.FC<widowRush> = (prop:widowRush) => {
         title: '序号',
         dataIndex: 'index',
         search: false,
-        render: (text, record, index) => { index  = index + 1;dataIndex = index; return index},
+        render: (_text, _record, index) => { index  = index + 1;dataIndex = index; return index},
         width:100,
         ellipsis:true
       },
@@ -128,11 +180,13 @@ const datascopemanage : React.FC<widowRush> = (prop:widowRush) => {
           title: '来源系统', 
           dataIndex: 'sourceSystem',
           hideInTable: false,
+          valueType:'select',
+          request:()=>fetchDict({dictKey:"PRODUCTFROMSYSTEM"}),
           order:-6
         },
         {
           title: '源表英文名', 
-          dataIndex: 'englishSourceTableName',
+          dataIndex: 'englishSourceTableNames',
           hideInTable: false,
           order:-1
         },
@@ -144,7 +198,7 @@ const datascopemanage : React.FC<widowRush> = (prop:widowRush) => {
         },
         {
             title: '目标表英文名', 
-            dataIndex: 'englishTargetTableName',
+            dataIndex: 'englishTargetTableNames',
             hideInTable: false,
             order:-3
         },
@@ -154,11 +208,27 @@ const datascopemanage : React.FC<widowRush> = (prop:widowRush) => {
             hideInTable: false,
             order:-4
         },
+        {
+          title: '风险类别', 
+          dataIndex: 'riskCategorys',
+          valueType:'treeSelect',
+          request:()=>fetchDict({dictKey :'riskCategory'}),
+          fieldProps:{
+            treeDefaultExpandAll:true,
+            treeCheckable:true,
+          },
+          hideInTable: true,
+          order:-5
+      },
         {
             title: '风险类别', 
             dataIndex: 'riskCategory',
+            valueType:'select',
+            request:()=>fetchDict({dictKey :'riskCategory'}),
             hideInTable: false,
-            order:-5
+            search:false,
+            order:-5,
+            //search:true,
         },
         {
           title: '操作',
@@ -219,13 +289,33 @@ const datascopemanage : React.FC<widowRush> = (prop:widowRush) => {
           hideInTable: false,
           search: false,
           editable:false,
-          render: (text, record, index) => {(index = index + 1);paramIndex = index ; return index},
+          render: (_text, _record, index) => {(index = index + 1);paramIndex = index ; return index},
         },
         {
           title: '源表字段英文名', 
           dataIndex: 'englishSourceFieldName',
-          search: false,
-          hideInTable: false,
+          valueType:'select',
+        //  render:()=>{return englishField},
+     //   request:()=>fetchDict({dictKey: '@selecFieldName',dictParam:`{"englishSourceField":"${englishSourceTableName}"}`}),
+         renderFormItem:( { index }, { record })=>{
+            return( 
+              <Select
+              style={{ width: 300 }} 
+            //  value={recordKey}
+           //   onChange={(EnglishSourceFieldNames) => editorFormRef.current.setRowData(index,{chineseSourceFieldName:EnglishSourceFieldNames})}
+              options={
+                a1
+              }
+              
+              />
+            )
+          },
+          fieldProps:{
+            popupMatchSelectWidth:300
+          },
+           search: false,
+           hideInTable: false,
+          // renderFormItem: ({ index }: any) => <ParamValue value={englishField} index={index} />
         },
         {
           title: '源表字段中文名', 
@@ -233,15 +323,31 @@ const datascopemanage : React.FC<widowRush> = (prop:widowRush) => {
           search: false,
           hideInTable: false,
         },
+       
         {
           title: '源表字段是否主键', 
           dataIndex: 'tableSourceFieldIspk',
+          valueType:'select',
+          request:()=>fetchDict({dictKey :'YESORNO'}),
           search: false,
           hideInTable: false,
         },
         {
           title: '目标字段英文名', 
           dataIndex: 'englishTargetFieldName',
+          valueType:'select',
+          renderFormItem:( { index }, { record })=>{
+            return( 
+              <Select
+              style={{ width: 300 }} 
+            //  value={recordKey}
+           //   onChange={(EnglishSourceFieldNames) => editorFormRef.current.setRowData(index,{chineseSourceFieldName:EnglishSourceFieldNames})}
+              options={
+                a1
+              }
+              />
+            )
+          },
           search: false,
           hideInTable: false,
         },
@@ -268,7 +374,7 @@ const datascopemanage : React.FC<widowRush> = (prop:widowRush) => {
               successMessage=""
               onClick={
                 ()=>{ 
-                  // fillInActionRef.current?.cancelEditable(paramIndex);
+                 //  fillInActionRef.current?.cancelEditable(paramIndex);
                   fillInActionRef.current?.startEditable(record.fieldRelationNo);
                } }
             >
@@ -278,6 +384,7 @@ const datascopemanage : React.FC<widowRush> = (prop:widowRush) => {
         },
       ];
     
+    
     return (
         <SDPage>
         <SDTable
@@ -318,6 +425,22 @@ const datascopemanage : React.FC<widowRush> = (prop:widowRush) => {
           params={currentRow}
           visible={detailVisible}
           onVisibleChange={() => {setDetailVisible(false)}}
+          onValuesChange={async(_changedValues,Values)=>{
+            if(Values.englishSourceTableName!=undefined && Values.englishSourceTableName!=''){ 
+              setEnglishSourceTableName(Values.englishSourceTableName);
+               const sd = await selectchineseSourceTableName(Values.englishSourceTableName);
+               formRef.current?.setFieldValue("chineseSourceTableName",sd)
+            }else{
+              formRef.current?.setFieldValue("chineseSourceTableName","");
+            }
+            if(Values.englishTargetTableName!=undefined && Values.englishTargetTableName!=''){ 
+              setEnglishTargetTableName(Values.englishTargetTableName);
+              const sd = await selectchineseSourceTableName(Values.englishTargetTableName);
+              formRef.current?.setFieldValue("chineseTargetTableName",sd)
+           }else{
+            formRef.current?.setFieldValue("chineseTargetTableName","")
+           }
+          }}
           footer={[
           <SDSubmitButton  editType={editType}   formRef={formRef} doSubmit={handleSave} >保存</SDSubmitButton>,
           <SDButton
@@ -330,13 +453,13 @@ const datascopemanage : React.FC<widowRush> = (prop:widowRush) => {
           tableRef={actionRef}
           formRef={formRef}
         >
-            <SDAreaTtile title='源数据信息'/>
-            <SDFormText name="englishSourceTableName" readonlyCond="update" required={true} label="源表英文名"/>
-            <SDFormText name="chineseSourceTableName" label="源表中文名"/>
-            <SDFormText name="englishTargetTableName"  label="目标表英文名" />
+            <SDAreaTtile title='源数据信息' />
+            <SDFormDict  name="englishSourceTableName" width='md' readonlyCond="update"  multiple={true} required={true} label="源表英文名" dictKey="@englishSourceTable"/>
+            <SDFormText name="chineseSourceTableName" label="源表中文名"  />
+            <SDFormDict name="englishTargetTableName"  label="目标表英文名"  multiple={true} required={true} dictKey="@englishSourceTable"/>
             <SDFormText name="chineseTargetTableName" label="目标表中文名" width={380}/>
-            <SDFormText name="riskCategory" label="风险类别" width={380}/>
-            <SDFormText name="sourceSystem"  label="来源系统"/>
+            <SDFormDict name="riskCategorys" label="风险类别" width={380} multiple={true} dictKey='riskCategory'/>
+            <SDFormDict name="sourceSystem"  label="来源系统" dictKey="PRODUCTFROMSYSTEM" />
         
             <SDLayout>
             <SDAreaTtile title='表格单元计算结果详情'/>
@@ -347,15 +470,34 @@ const datascopemanage : React.FC<widowRush> = (prop:widowRush) => {
               actionRef={fillInActionRef}
               value={fieldRelationData}
               dataSource={fieldRelationData}
+              editableFormRef={editorFormRef} 
               editable={{
-                actionRender: (row,config,defaultDoms)=>{
+                actionRender: (_row,_config,defaultDoms)=>{
                   return [defaultDoms.save,defaultDoms.cancel]
+                },
+                onValuesChange: async (changedValues, Values) => {
+                  console.log(changedValues);
+                  console.log(Values);
+                  if(changedValues !=undefined && changedValues.englishSourceFieldName!=undefined){
+                  const a3 = await selectenglishSourceField(changedValues.englishSourceFieldName)
+                            const {fieldRelationNo,...res} = changedValues;
+                if('englishSourceFieldName' in res){
+                  editorFormRef.current.setRowData(fieldRelationNo,{chineseSourceFieldName:a3})
+                }
+                  }
+                  if(changedValues !=undefined && changedValues.englishTargetFieldName!=undefined) {
+                  const a4 = await selectenglishSourceField(changedValues.englishTargetFieldName)
+                  const {fieldRelationNo,...res} = changedValues;
+                  if('englishTargetFieldName' in res){
+                    editorFormRef.current.setRowData(fieldRelationNo,{chineseTargetFieldName:a4})
+                  }
                 }
+              },
               }}
               rowSelection={{
                 type:'radio',
                 selectedRowKeys:oldRowKeys,
-                onSelect:(selectedRowKeys, selectedRows) => {
+                onSelect:(selectedRowKeys, _selectedRows) => {
                   setSelectRowData(selectedRowKeys);
                 }
               }}
@@ -376,8 +518,8 @@ const datascopemanage : React.FC<widowRush> = (prop:widowRush) => {
                 successMessage=''
                 onClick={() => {
                   if (selectRowData.fieldRelationNo) {
-                    setFieldRelationData(...[fieldRelationData.filter((item)=>{
-                      return item.fieldRelationNo !== selectRowData.fieldRelationNo})]);
+                    setFieldRelationData(fieldRelationData.filter((item)=>{
+                      return item.fieldRelationNo !== selectRowData.fieldRelationNo}));
                     fillInActionRef.current?.reload();
                   }
                 }}

+ 6 - 0
Procedure/frontend/projectb/src/pages/product/datasupplementary/datasupplementation.tsx

@@ -8,6 +8,7 @@ import {getDataList,selectDetailData} from '@/services/rwa/product/datasupplemen
 import { PlusSquareTwoTone, PoweroffOutlined, WomanOutlined } from "@ant-design/icons";
 import { ProductProps } from "@/sundataImport";
 import { ReportCalculationModel } from "@/services/rwa/product/report_form_config_reportcreater/reportfillingconfig";
+import { useModel } from "@umijs/max";
 type widowRush = {
   onCancel:  () => void;
   onChangeVisible(visible: boolean, type: string): unknown;
@@ -38,6 +39,8 @@ const datasupplementation : React.FC<widowRush> = (prop:widowRush) => {
      // 查看窗口显示
      const [selectVisible, setSelectVisible] = useState<boolean>(false);
 
+     const { fetchDict } = useModel('dict');   
+
       /**上传属性 */
   const fileProps = {
     onRemove: () => {
@@ -111,11 +114,14 @@ const datasupplementation : React.FC<widowRush> = (prop:widowRush) => {
         {
           title: '数据期次',
           dataIndex: 'term',
+          valueType:'dateMonth',
           hideInTable: true,
         },
         {
           title: '数据补录任务', 
           dataIndex: 'taskName',
+          valueType:'select',
+          request:()=>fetchDict({dictKey : '@taskName'}),
           hideInTable: false,
         },
         {

+ 59 - 5
Procedure/frontend/projectb/src/pages/product/datasupplementary/supplementtaskmanagement.tsx

@@ -46,6 +46,7 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
 
     // 字典
     const { fetchDict } = useModel('dict');
+    const [account,setAccount] = useState <any>();
 
     /** 字段关系序号编辑 */
     var dataInfoIndex = 0;
@@ -64,9 +65,9 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
       const data = await selectDetailData(formdata);
       formRef.current?.setFieldsValue(data);
       const dataList = await getTemplateDataList(formdata);
-      setTemplateListData(...[dataList]);
+      setTemplateListData(dataList);
       const templateList = await getTemplateCheckDataList(formdata);
-      setTemplateCheckData(...[templateList]);
+      setTemplateCheckData(templateList);
      }
 
      // 删除
@@ -170,20 +171,51 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
           dataIndex: 'taskName',
           hideInTable: false,
         },
+        {
+          title: '负责机构', 
+          dataIndex: 'orgCodes',
+          valueType:"treeSelect",
+          request:()=>fetchDict("org"),
+          fieldProps:{ 
+            reeDefaultExpandAll:true,
+            treeCheckable:true, 
+           popupMatchSelectWidth:300 
+          },
+          hideInTable: true,
+        },
         {
           title: '负责机构', 
           dataIndex: 'orgCode',
+          valueType:"treeSelect",
+          search:false,
+          request:()=>fetchDict("org"),
           hideInTable: false,
         },
         {
           title: '首选负责人', 
           dataIndex: 'account',
+          valueType:'select',
+          request:()=>fetchDict({dictKey :'@account2'  }),
           hideInTable: false,
           search: false,
         },
+        {
+          title: '补录频率', 
+          dataIndex: 'frequencys',
+          valueType:'treeSelect',
+          request:()=>fetchDict('FREQUENCY'),
+           fieldProps: {
+              treeDefaultExpandAll: true,
+              treeCheckable:true,
+            },
+          hideInTable: true,
+          //search: false,
+        },
         {
           title: '补录频率', 
           dataIndex: 'frequency',
+          valueType:'select',
+          request:()=>fetchDict('FREQUENCY'),
           hideInTable: false,
           search: false,
         },
@@ -193,6 +225,18 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
           hideInTable: false,
           search: false,
         },
+        {
+          title: '模板编号', 
+          dataIndex: 'tmpCode',
+          hideInTable: true,
+          search: false,
+        },
+        {
+          title: '模板名称', 
+          dataIndex: 'tmpNames',
+          hideInTable: true,
+          search: false,
+        },
         {
           title: '包含模板', 
           dataIndex: 'tmpNames',
@@ -219,6 +263,7 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
                 selectData(record);
                 setDetailVisible(true);
                 setEditType('update');
+                setAccount(record.orgCode)
                } }
             >
               修改
@@ -589,6 +634,8 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
             ],
           },
         ];
+        
+        
     
     return (
         <SDPage>
@@ -629,6 +676,13 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
           params={currentRow}
           visible={detailVisible}
           onVisibleChange={() => {setDetailVisible(false)}}
+          onValuesChange={(changedValues,values)=>{
+            if(values.orgCode!=''||values.orgCode!=undefined){
+              setAccount(values.orgCode);
+              
+            }
+          }
+          }
           footer={[
             <SDSubmitButton  editType={editType}   formRef={formRef} doSubmit={handleSave} >保存</SDSubmitButton>,
             <SDButton
@@ -659,10 +713,10 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
             }
          }}]}   label="任务名称"/>
             <SDFormDict dictKey="org"  name="orgCode"      label="责任机构"/>
-            <SDFormDict dictKey="" name="account"     label="首选责任人"/>
-            <SDFormDict dictKey="CALC_TASK_RATE" name="frequency"  label="补录频率"/>
+            <SDFormDict dictKey="@account1" name="account"     label="首选责任人" dictParam={`{"account":"${account}"}`}/>
+            <SDFormDict dictKey="FREQUENCY" name="frequency"  label="补录频率"/>
             <SDFormText name="adjustment"  label="天数调整"/>
-            <SDFormDict dictKey="" name="tmpFileCode"  label="所属阶段"/>
+            <SDFormDict dictKey="@tmpFileCode" name="tmpFileCode"  label="所属阶段" />
         <SDLayout>
         <SDAreaTtile title='补录模板列表'/>
         <EditableProTable

+ 21 - 2
Procedure/frontend/projectb/src/pages/product/datasupplementary/supplementtemplatedefine.tsx

@@ -139,10 +139,24 @@ const supplementtemplatedefine : React.FC<widowRush> = (prop:widowRush) => {
           dataIndex: 'tmpName',
           hideInTable: false,
         },
+        {
+          title: '模板类型', 
+          dataIndex: 'tmpTypes',
+          valueType:'treeSelect',
+          request:()=>fetchDict('TEMPLATE_TYPE'),
+          hideInTable: true,
+          fieldProps:{
+            treeDefaultExpandAll: true,
+            treeCheckable:true,
+          }
+        },
         {
           title: '模板类型', 
           dataIndex: 'tmpType',
+          valueType:'treeSelect',
+          request:()=>fetchDict('TEMPLATE_TYPE'),
           hideInTable: false,
+          search:false,
         },
         {
           title: '行范围', 
@@ -171,7 +185,9 @@ const supplementtemplatedefine : React.FC<widowRush> = (prop:widowRush) => {
                 setCurrentRow(record);
                 setDetailVisible(true);
                 setEditType('update');
-                setBusiPk(String(dataInfoIndex));
+               // setBusiPk(String(dataInfoIndex));
+                setBusiPk(String(record.tmpCode));
+                
                } }
             >
               修改
@@ -396,13 +412,16 @@ const supplementtemplatedefine : React.FC<widowRush> = (prop:widowRush) => {
               setReadColType(true);
               setReadRowType(false);
             }
+            if(changedValues.tmpCode!=undefined){
+              setBusiPk(values.tmpCode);
+            }
           }}
           
         >
             <SDAreaTtile title='补录模板新增页面'/>
             <SDFormText name="tmpCode" readonlyCond="update" required={true} label="模板编号"/>
             <SDFormText name="tmpName" required={true} label="模板名称"/>
-            <SDFormDict dictKey="TEMPLATE_TYPE" name="tmpType" required={true} label="模板类型"/>
+            <SDFormDict dictKey="TEMPLATE_TYPE" name="tmpType" required={true} label="模板类型" />
             <SDFormText name="rowRange"  disabled={readRowType} required={!readRowType}
              rules={[{pattern: RegExp(`[0-9]+\\-[0-9]+|[n|N]`),message:'请输入正确范围'}]}
              label="行范围" placeholder={'例:1-3'}/>

+ 1 - 0
Procedure/frontend/projectb/src/pages/product/rwa_calc_config_004rwa/creditriskmeteringrule.tsx

@@ -793,6 +793,7 @@ return (
          }}]} label="步骤类型"/>
         <SDFormDict dictKey='org' multiple={true} name="stepIns"  label="输入数据源" />
         <SDFormDict dictKey='org' multiple={true}  name="stepOuts"  label="输出数据源"/>
+        <SDFormText  name="stepIndex" label="步骤序号" />
         <SDFormText type="textarea" name="stepRule" label="步骤规则"/>
         
 

+ 7 - 7
Procedure/frontend/projectb/src/pages/product/rwa_calc_config_004rwa/meteringmanagement.tsx

@@ -145,12 +145,12 @@ const meteringmanagement : React.FC<widowProps> = (prop:widowProps) => {
             hideInTable: false,
             width:150,
             ellipsis:true,
-            valueType: 'treeSelect',
-            request: () => fetchDict('CALC_TASK_RATE'),
-            fieldProps: {
-              treeDefaultExpandAll: true,
-              treeCheckable:true,
-            },
+            valueType: 'select',
+            request: () => fetchDict('FREQUENCY'),
+            // fieldProps: {
+            //   treeDefaultExpandAll: true,
+            //   treeCheckable:true,
+            // },
         },
         {
             title: '天数调整', 
@@ -275,7 +275,7 @@ return (
         // )} 
          required={true} label="计算任务编号"/>
         <SDFormText name="calctaskTypeName" rules={[{max:100,message:'最大长度不能超过100'},]} label="计算任务名称"/>
-        <SDFormDict dictKey='CALC_TASK_RATE' name="calctaskRate" label="计算任务频率" />
+        <SDFormDict dictKey='FREQUENCY' name="calctaskRate" label="计算任务频率" />
         <SDFormText name="adjustDate" label="天数调整"/>
         <SDFormText name="calctaskDesc" rules={[{validator:(rules,value,callback)=>{
             let chineseCount = countChineseChars(value);

+ 2 - 0
Procedure/frontend/projectb/src/pages/product/rwa_calc_config_004rwa/meteringparamdefine.tsx

@@ -157,6 +157,8 @@ const meteringparamdefine : React.FC<widowProps> = (prop:widowProps) => {
             dataIndex: 'paramCalcType',
             order:-3,
             hideInTable: false,
+            valueType:'select',
+            request:()=>fetchDict('PARAM_CALC_TYPE'),
             width:150,
             ellipsis:true,
         },

+ 1 - 1
Procedure/frontend/projectb/src/pages/project/businessconfig/DevelopBankList.tsx

@@ -289,7 +289,7 @@ const DevelopBankList : React.FC<widowRush> = (prop:widowRush) => {
              bgValidater = {roleidCheck} />
             <SDFormDict name="rating" label="外部评级" dictKey="sovereignRating"/>
             <SDFormText name="crmFirstLevel" label="缓释分类"/>
-            <SDFormText name="crmToolTypename" label="合格信用风险缓释工具类型" />
+            <SDFormDict name="crmToolTypename" label="合格信用风险缓释工具类型" dictKey='qualfiedCreditToolTypeName' />
             <SDFormText name="exemptionWeight" label="缓释权重%"
             rules={[{validator: validateFun.double,message:'请输入数字类型'},
               {pattern: RegExp(`^\\d+\\.{${0},${1}}\\d{${0},${4}}$`),message:'小数位超位'}]}/>

+ 2 - 2
Procedure/frontend/projectb/src/pages/project/businessconfig/GeneralSectorList.tsx

@@ -2,7 +2,7 @@ import React, { useEffect, useRef, useState } from "react";
 import type { ProColumns, ActionType, ProFormInstance } from '@ant-design/pro-components';
 import type {FormInstance} from 'antd'
 import  {Upload} from 'antd'
-import { SDPage,SDFormText,SDModalForm,SDTable,SDButton,SDFormItem,SDForm,SDSubmitButton,EditType, SDAreaTtile, validateFun, SDOperate, baseFun, } from "@sundata/ui-frame";
+import { SDPage,SDFormText,SDModalForm,SDTable,SDButton,SDFormItem,SDForm,SDSubmitButton,EditType, SDAreaTtile, validateFun, SDOperate, baseFun, SDFormDict, } from "@sundata/ui-frame";
 import type { SysListModel } from '@/services/rwa/ListOfPublicSector';
 import {getDataList,deleteRows,selectDetailData,
   updateExistData,exportExcelModel,uploadAction,templateUpload} from '@/services/rwa/GeneralSectorList';
@@ -276,7 +276,7 @@ const GeneralSectorList : React.FC<widowRush> = (prop:widowRush) => {
             <SDAreaTtile title='缓释品信息'/>
             <SDFormText name="customerName" readonlyCond="update" label="保证人名称" />
             <SDFormText name="crmFirstLevel" label="缓释分类"/>
-            <SDFormText name="crmToolTypename" label="合格信用风险缓释工具类型" />
+            <SDFormDict name="crmToolTypename" label="合格信用风险缓释工具类型" dictKey='qualfiedCreditToolTypeName' />
             <SDFormText name="exemptionWeight" label="缓释风险权重%"
             rules={[{validator: validateFun.double,message:'请输入数字类型'},
               {pattern: RegExp(`^\\d+\\.{${0},${1}}\\d{${0},${4}}$`),message:'小数位超位'}]}

+ 2 - 2
Procedure/frontend/projectb/src/pages/project/businessconfig/ListOfPublicSector.tsx

@@ -2,7 +2,7 @@ import React, { useEffect, useRef, useState } from "react";
 import type { ProColumns, ActionType, ProFormInstance } from '@ant-design/pro-components';
 import type {FormInstance} from 'antd'
 import  {Upload} from 'antd'
-import { SDPage,SDFormText,SDModalForm,SDTable,SDFormItem,SDButton,SDSubmitButton,EditType, SDAreaTtile, SDOperate, baseFun,SDModal, validateFun, } from "@sundata/ui-frame";
+import { SDPage,SDFormText,SDModalForm,SDTable,SDFormItem,SDButton,SDSubmitButton,EditType, SDAreaTtile, SDOperate, baseFun,SDModal, validateFun, SDFormDict, } from "@sundata/ui-frame";
 import type { SysListModel } from '@/services/rwa/ListOfPublicSector';
 import {getDataList,deleteRows,selectDetailData,
   updateExistData,exportExcelModel,uploadAction,templateUpload} from '@/services/rwa/ListOfPublicSector';
@@ -256,7 +256,7 @@ const ListOfPublicSector : React.FC<widowRush> = (prop:widowRush) => {
             <SDAreaTtile title='缓释品信息'/>
             <SDFormText name="customerName" readonlyCond="update" required={true} label="保证人交易对手名称"/>
             <SDFormText name="crmFirstLevel" label="缓释一级分类"/>
-            <SDFormText name="crmToolTypename"  label="合格信用风险缓释工具类型" />
+            <SDFormDict name="crmToolTypename"  label="合格信用风险缓释工具类型" dictKey='qualfiedCreditToolTypeName'/>
             <SDFormText name="exemptionWeight" 
             rules={[{validator: validateFun.double,message:'请输入数字类型'},
             {pattern: RegExp(`^\\d+\\.{${0},${1}}\\d{${0},${4}}$`),message:'小数位超位'}]}

+ 15 - 3
Procedure/frontend/projectb/src/pages/rdpMng/Template/Coding/components/govFinancialAssetComp.tsx

@@ -57,7 +57,12 @@ const govFinancialAssetCompts: React.FC<bbb>= (prop : bbb) => {
        const insSovere =await inserteGovFinancialAssetComp(formData)  
        closeAndRefresh();
        console.log(insSovere);
-      
+       if(insSovere){
+        baseFun.info ("保存成功");
+       }else{
+        baseFun.error(insSovere);
+       }
+         ;
       }
       
        const del = async(record:any)=>{
@@ -117,8 +122,15 @@ const govFinancialAssetCompts: React.FC<bbb>= (prop : bbb) => {
             title : '缓释工具类型',
            dataIndex : 'qualfiedCreditToolTypeName',
            search: false,
+           hideInTable:true,
            width:150
             },
+            {
+              title : '缓释工具类型',
+             dataIndex : 'qualfiedCreditToolName',
+             search: false,
+             width:150
+              }, 
            
            {
             title : '起始数据日期',
@@ -297,14 +309,14 @@ return(
    //params={setDataSource}
    onVisibleChange={() => { setVisible(false) }}
    initialValues={{crmClass :'保证'}}
-   footer={[<SDSubmitButton  editType={editType}   formRef={formRef} doSubmit={inst} >保存</SDSubmitButton>,
+   footer={[<SDSubmitButton  editType={editType} successMessage=""   formRef={formRef} doSubmit={inst} >保存</SDSubmitButton>,
   <SDButton successMessage="" onClick={()=>closeAndRefresh()}>关闭</SDButton>]}
    formRef={formRef}
  >
 
 <SDFormText name="crmClass"   label="缓释分类"  />
 <SDFormText name="name"   label="交易对手名称"  />
-<SDFormText name="qualfiedCreditToolTypeName"   label="合格信用风险缓释工具类型"  />
+<SDFormDict name="qualfiedCreditToolTypeName"   label="合格信用风险缓释工具类型"  dictKey='qualfiedCreditToolTypeName' />
 <SDFormText name="weight"   label="缓释权重"   rules={ [{validator: validateFun.double,message:"请输入数字类型" }
       ,{pattern :RegExp(`^\\d+\\.{${0},${1}}\\d{${0},${4}}$`),message:"小数位超位" }]}  
       oldValue="%"  />

+ 11 - 2
Procedure/frontend/projectb/src/pages/rdpMng/Template/Coding/components/policybank.tsx

@@ -147,10 +147,19 @@ const [importVisible, setImportVisible] = useState<boolean>(false);
       title: '缓释工具类型',
       dataIndex: 'qualfiedCreditToolTypeName', // 查询结果中的隐藏列
       search: false,
-    //  hideInTable: true,
+      hideInTable: true,
       width:150, 
       
   },
+  { 
+    title: '缓释工具类型',
+    dataIndex: 'qualfiedCreditToolName', // 查询结果中的隐藏列
+    search: false,
+  //  hideInTable: true,
+    width:150, 
+    
+},
+  
   { 
     title: '缓释权重',
     dataIndex: 'exemptionWeight', // 查询结果中的隐藏列
@@ -323,7 +332,7 @@ const [importVisible, setImportVisible] = useState<boolean>(false);
 <SDFormDict name="isSlowreleaseUse" label="是否用于合格缓释认定"  dictKey='YESORNO' />
 {isflag && (
   <><SDFormText name="crmFirstLevel" label="缓释分类"  />
-<SDFormText name="qualfiedCreditToolTypeName" label="合格信用风险缓释工具类型"  required />
+<SDFormDict name="qualfiedCreditToolTypeName" label="合格信用风险缓释工具类型"  required dictKey='qualfiedCreditToolTypeName'/>
 <SDFormText name="exemptionWeight" label="缓释权重%" required  rules={ [{validator: validateFun.double,message:"请输入数字类型" }
       ,{pattern :RegExp(`^\\d+\\.{${0},${1}}\\d{${0},${4}}$`),message:"小数位超位" }]}  
       oldValue="%" /></>)}

+ 1 - 1
Procedure/frontend/projectb/src/pages/rdpMng/Template/Coding/components/sovereign.tsx

@@ -378,7 +378,7 @@ return (
          }}]} /> 
       <SDFormDict name="sovereignRating" label="主权评级(标普)"   dictKey="sovereignRating"  />
       <SDFormText name="crmFirstLevel" label="缓释分类"   />
-      <SDFormDict name="qualfiedCreditToolTypeName" label="合格信用风险缓释工具类型"  dictKey='@qualfiedCreditToolTypeName'  />
+      <SDFormDict name="qualfiedCreditToolTypeName" label="合格信用风险缓释工具类型"  dictKey='qualfiedCreditToolTypeName'  />
       <SDFormText name="exemptionWeight" label="缓释风险权重%"  rules={ [{validator: validateFun.double,message:"请输入数字类型" }
       ,{pattern :RegExp(`^\\d+\\.{${0},${1}}\\d{${0},${4}}$`),message:"小数位超位" }]}
       oldValue="%"></SDFormText>   

+ 18 - 12
Procedure/frontend/projectb/src/pages/rwa_calc_config_002offbalanceprotype/info_list.tsx

@@ -1,7 +1,7 @@
 import React, { useEffect, useRef, useState } from 'react';
 import { Button, Checkbox, Dropdown, Form, FormInstance, Input, Menu, Space, Tooltip, Tree, TreeProps, Upload } from 'antd';
 import { ActionType, EditableFormInstance, ProColumns, ProFormInstance, ProTable } from '@ant-design/pro-components';
-import { baseFun, ContextMenu, DictTree, EditType, SDAreaTtile, SDButton, SDForm, SDFormDict, SDFormText, SDLayout, SDModalForm, SDOperate, SDPage, SDSubmitButton, SDTree } from '@sundata/ui-frame';
+import { baseFun, ContextMenu, DictTree, EditType, SDAreaTtile, SDButton, SDForm, SDFormDict, SDFormText, SDLayout, SDModalForm, SDOperate, SDPage, SDSubmitButton, SDTree, validateFun } from '@sundata/ui-frame';
 import { SysFunButtonInfoModel } from '@/services/authMng/funcMng';
 import {  getDetail1, getFunTree1,save, rules_addone, rules_list, rwaCalcConfOffbalanceprotypeModel, rwaCalcConfOffbalanceprotyperuleModel, shunxu, save2, rules_modifyone, rules_deleteone, info_deleteone, jiaoyan, deleteFunc, getoffobjectStageId } from '@/services/rwa/info_list';
 import { DataNode } from 'antd/lib/tree';
@@ -12,6 +12,7 @@ import { JSX } from 'react/jsx-runtime';
 import DirectoryTree from 'antd/es/tree/DirectoryTree';
 import { UniversalModel } from '@/services/rdpMng/Template/common';
 import { countChineseChars } from '@/services/rwa/product/rwacheckutils';
+import { useModel } from '@umijs/max';
 
 //const tableRef = useRef<EditableFormInstance>();
 
@@ -55,7 +56,7 @@ const [defaultOut,setDefaultOut]= useState<any>() ;
 
 
   const [mockData, setMockData] = useState<rwaCalcConfOffbalanceprotyperuleModel[]>([]);
-
+  const { fetchDict } = useModel('dict');
   useEffect(() => {
 
  refreshTree().then((data) => {
@@ -306,6 +307,11 @@ const items: any[] = [
     
     { title : '所属产品',
     dataIndex : 'ruleProductNo',
+    hideInTable:true,
+    width : 150
+    },
+    { title : '产品名称',
+    dataIndex : 'ruleProductName',
     width : 150
     },
     
@@ -434,8 +440,8 @@ const setRuleNoAdd = () => {
       const funccode = node[0] as string;
       // 右键菜单点击新增按钮后,再点击树节点时,需要重置editType
       setEditType('update');
-      const getoffobjectStage = await getoffobjectStageId(funccode);
-      setDefaultOut(getoffobjectStage);
+      // const getoffobjectStage = await getoffobjectStageId(funccode);
+      // setDefaultOut(getoffobjectStage);
       // formRef.current?.resetFields(); TODO 尝试配合request解决表单内容不刷新问题
       formRef.current?.setFieldsValue(await  formInit(funccode));
      
@@ -520,10 +526,10 @@ const setRuleNoAdd = () => {
 <SDFormText name="offobjectSuper" label="上级表外项目代码" required readonlyCond='both' />
 <SDFormText name="offobjectSuperName" label="上级表外项目名称" required readonlyCond='both' />
 <SDFormDict name="ismini"  required  dictKey='YESORNO' label="是否最细一级"/>
-{ismini1&&(<SDFormText name="ccf" label="转换系数(%)" required={ismini1} />)}
+{ismini1&&(<SDFormText name="ccf" label="转换系数(%)" required={ismini1} rules={[{validator: validateFun.zinteger,message:'请输入数字类型'},]}/>)}
 <SDFormDict name="defaultOut" label="默认输出数据源" required dictKey='@selectdefaultOut1' dictParam={`{"defaultOut":"${defaultOut}"}`}  />
 {offobjec &&<SDFormDict name="offobjectStageId" label="所属阶段" required ={offobjec} dictKey='@offobjectStageId'/>}
-<SDFormText name="offobjectIndex" label="认定顺序号" required />
+<SDFormText name="offobjectIndex" label="认定顺序号" required rules={[{validator: validateFun.zinteger,message:'请输入数字类型'},]} />
 <SDFormText name="yesorno" label="状态"  readonlyCond='both'/>
   </SDForm>
   <SDAreaTtile  title="表外项目分类认定规则列表"/>
@@ -586,7 +592,7 @@ const setRuleNoAdd = () => {
 <SDFormText name="offobjectNo"   label="表外项目编号"  />
 </span>
 <SDFormText name="ruleNo"   label="规则编号" readonlyCond='both'  />
-<SDFormText name="ruleName"   label="规则名称" rules={[{validator:(rules,value,callback)=>{
+<SDFormText name="ruleName" required  label="规则名称" rules={[{validator:(rules,value,callback)=>{
             let chineseCount = countChineseChars(value);
             if (chineseCount > 500) {
                 callback('最多500个汉字');
@@ -596,11 +602,11 @@ const setRuleNoAdd = () => {
               callback();
             }
          }}]} />
-<SDFormDict name="ruleProductNo"   label="产品名称"  dictKey='@ruleProductNo' />
-<SDFormDict name="ruleIn"   label="输入数据源 " dictKey='@ruleIn1'   dictParam={`{"defaultOut":"${defaultOut}"}`}  />
-<SDFormDict name="ruleOut"   label="输出数据源" dictKey='@selectdefaultOut1'   dictParam={`{"defaultOut":"${defaultOut}"}`} />
-<SDFormText name="ruleIndex"   label="规则序号"  />
-<SDFormText name="ruleGetdata"   label="表外项目分类认定规则"  />
+<SDFormDict name="ruleProductNo"   label="产品名称"  dictKey='@ruleProductNo' required />
+<SDFormDict name="ruleIn"   label="输入数据源 " dictKey='@ruleIn1'   dictParam={`{"defaultOut":"${defaultOut}"}`}  required/>
+<SDFormDict name="ruleOut"   label="输出数据源" dictKey='@selectdefaultOut1'   dictParam={`{"defaultOut":"${defaultOut}"}`}  required/>
+<SDFormText name="ruleIndex"   label="规则序号"  required rules={[{validator: validateFun.zinteger,message:'请输入数字类型'},]}/>
+<SDFormText name="ruleGetdata"   label="表外项目分类认定规则"  required/>
   </SDForm>
   </SDLayout>
 </SDModalForm>

+ 1 - 1
Procedure/frontend/projectb/src/pages/rwa_calc_config_003regularrrcsrule/releasetoolinfo.tsx

@@ -82,7 +82,7 @@ const releasetoolinfo : React.FC<widowProps> = (prop:widowProps) => {
     // 缓释工具规则修改查询查询
     const selectReleaseRuleData = async (formdata : ReleaseToolRuleModel) => {
       const data = await selectReleaseToolRule(formdata);
-      toolRuleFormRef.current?.setFieldsValue({...formdata});
+      templateRef.current?.setFieldsValue({...data});
      }
 
     // 缓释工具类型删除

+ 22 - 15
Procedure/frontend/projectb/src/pages/rwa_calc_config_dataparam/product_list.tsx

@@ -1,7 +1,7 @@
 import React, { useEffect, useRef, useState } from 'react';
 import { Button, Form, FormInstance, Input, Space, Tooltip, Upload } from 'antd';
 import { ActionType, ProColumns, ProFormInstance, ProTable } from '@ant-design/pro-components';
-import { baseFun, EditType, SDAreaTtile, SDButton, SDForm, SDFormDict, SDFormText, SDLayout, SDModal, SDModalForm, SDOperate, SDPage, SDSubmitButton, SDTable } from '@sundata/ui-frame';
+import { baseFun, EditType, SDAreaTtile, SDButton, SDForm, SDFormDict, SDFormText, SDLayout, SDModal, SDModalForm, SDOperate, SDPage, SDSubmitButton, SDTable, validateFun } from '@sundata/ui-frame';
 import { exportExcelModel, productlist,selectRiskList, productListModel, product_addone, product_addone1, product_addone2, product_deleteone, product_deleteone1, product_modifyone, product_modifyone1, product_modifyone2, product_querylist,  rwaCalcConfOffbalanceprotyperuleModel,  rwaCalcConfProductrulesModel, select ,riskListModel, jiaoyan} from '@/services/rwa/product_list';
 import { fetchDictList } from '@/services/sysMng/nounMng';
 import { useModel } from '@umijs/max';
@@ -218,7 +218,13 @@ const product_list: React.FC<aaa>= (prop : aaa) => {
         dataIndex : 'productType',
         valueType:"select",
         request:()=>fetchDict('PRODUCT_TYPE'),
-        width : 150
+        width : 150,
+        hideInTable:true,
+        },
+        { title : '产品大类描述',
+        dataIndex : 'productTypeName',
+        width : 150,
+        search:false
         },
         
         { title : '对应业务',
@@ -666,6 +672,7 @@ const setRuleNoAdd = () => {
             setEditType('create')
             setState("1")
           setMockData([]);
+          setState1("")
           }}
         >
           新增
@@ -704,13 +711,13 @@ const setRuleNoAdd = () => {
     </span>
     <SDFormText name="productNo"   label="产品代码"  rules={[{max:20, message:'名称长度不能超过20位'}]} required/>
     <SDFormText name="productName"   label="产品名称"  rules={[{max:100, message:'名称长度不能超过50个汉字'}]} required/>
-    <SDFormDict name="productType"   label="产品大类"  required dictKey='PRODUCT_TYPE'/>
-    <SDFormText name="productIndex"   label="产品序号" />
-    <SDFormDict name="productStageId"   label="所属阶段"  dictKey ='@productStageId' />
+    <SDFormDict name="productType"   label="产品大类"  required dictKey='PRODUCT_TYPE' />
+    <SDFormText name="productIndex"   label="产品序号" required rules={[{validator: validateFun.zinteger,message:'请输入数字类型'},]}/>
+    <SDFormDict name="productStageId"   label="所属阶段"  dictKey ='@productStageId' required />
     <SDFormDict name="productFromSystem"   label="来源系统"  multiple={true} dictKey='PRODUCTFROMSYSTEM' required/>
-    <SDFormDict name="defaultOut"   label="默认输出数据源"  dictKey='@selectdefaultOut'   dictParam={`{"defaultOut":"${defaultOut}"}`}  />
-    <SDFormDict name="productBussinessCode"   label="所属业务"  dictKey='@BUSSINESS_CODE' />
-    <SDFormText name="defaultGetdatarule"   label="默认取数逻辑"  />
+    <SDFormDict name="defaultOut"   label="默认输出数据源"  dictKey='@selectdefaultOut'   dictParam={`{"defaultOut":"${defaultOut}"}`} required />
+    <SDFormDict name="productBussinessCode"   label="所属业务"  dictKey='@BUSSINESS_CODE' required  />
+    <SDFormText name="defaultGetdatarule"   label="默认取数逻辑"  required />
 
       <SDAreaTtile title='科目取数规则列表' />
       <SDLayout>
@@ -774,13 +781,13 @@ const setRuleNoAdd = () => {
           <SDFormText name="productNo"   label="产品编号"  />
           </span>
           <SDFormText name="ruleCode"   label="规则编号"   readonlyCond ='update'/>
-          <SDFormText name="ruleName"   label="规则说明"  />
-          <SDFormDict name="dataType"   label="数据类型"  dictKey='DATA_TYPE' />
-          <SDFormDict name="ruleSubject"   label="对应科目"  onlyLeafCheck={true}  />
-          <SDFormDict name="ruleIn"   label="输入数据源"  dictKey='@ruleIn'   dictParam={`{"defaultOut":"${defaultOut}"}`} />
-          <SDFormDict name="ruleOut"   label="输出数据源"  dictKey='@selectdefaultOut'   dictParam={`{"defaultOut":"${defaultOut}"}`} />
-          <SDFormText name="ruleIndex"   label="规则序号"  />
-          <SDFormText name="ruleGetdata"   label="取数规则" type='textarea'  />
+          <SDFormText name="ruleName"   label="规则说明"  required/>
+          <SDFormDict name="dataType"   label="数据类型"  dictKey='DATA_TYPE' required/>
+          <SDFormDict name="ruleSubject"   label="对应科目"  onlyLeafCheck={true}  required/>
+          <SDFormDict name="ruleIn"   label="输入数据源"  dictKey='@ruleIn'   dictParam={`{"defaultOut":"${defaultOut}"}`} required/>
+          <SDFormDict name="ruleOut"   label="输出数据源"  dictKey='@selectdefaultOut'   dictParam={`{"defaultOut":"${defaultOut}"}`} required/>
+          <SDFormText name="ruleIndex"   label="规则序号"  required rules={[{validator: validateFun.zinteger,message:'请输入数字类型'},]}/>
+          <SDFormText name="ruleGetdata"   label="取数规则" type='textarea'  required/>
           </SDForm>
         </SDLayout>
         </SDModalForm>

+ 3 - 3
Procedure/frontend/projectb/src/pages/rwa_data_check/diffconfig_list.tsx

@@ -356,11 +356,11 @@ const diffconfig_list: React.FC<aaa>= (prop : aaa) => {
   }
       >
       <SDFormText name="ruleNo"   label="规则编号"  required  readonlyCond='update' max={50}/>
-      <SDFormText name="ruleName"   label="规则名称" max={400} width={210}  required />
+      <SDFormText name="ruleName"   label="规则名称" max={400} width={210}  required  type='text'/>
       <SDFormDict name="ruleAreaType"   label="适用范围类型" dictKey='RULE_AREA_TYPE'  required/>
       <SDFormDict name="intervalType"   label="区间开闭类型"  dictKey='limitinterval' required/>
-      <SDFormText name="lowerLimit"   label="容忍度上限%"   required />
-      <SDFormText name="upperLimit"   label="容忍度下限%"   required/>
+      <SDFormText name="lowerLimit"   label="容忍度上限%"   required  rules={[{validator: validateFun.double,message:'请输入数字类型'},]}/>
+      <SDFormText name="upperLimit"   label="容忍度下限%"   required rules={[{validator: validateFun.double,message:'请输入数字类型'},]}/>
       </SDForm>
     }
     <SDAreaTtile title='总分勾稽规则列表'  />

+ 23 - 13
Procedure/frontend/projectb/src/pages/rwa_data_check/rule_list.tsx

@@ -5,6 +5,7 @@ import { baseFun, EditType, SDButton, SDFormDict, SDFormSearch, SDFormText, SDMo
 import {  rule_list, rule_addone, rule_listModel, rule_queryone, selectsubjectNature, updateResultList } from '@/services/rwa/rule_list';
 import { useModel } from '@umijs/max';
 import { WomanOutlined } from '@ant-design/icons';
+import { countChineseChars } from "@/services/rwa/product/rwacheckutils";
 
 type aaa = {
     glCode ?:any;
@@ -324,22 +325,31 @@ width : 150
 // required={positiveOffProjectType}
         }
       }
-       >
-<SDFormText name="ruleId"   label="规则编号"  max={20} readonlyCond='update'/>
-<SDFormText name="ruleName"   label="规则名称"  max={60}  width={250}/>
-<SDFormDict  name="glCode"   label="科目代码" dictKey='org' readonlyCond='update'/>
+       > 
+<SDFormText name="ruleId"   label="规则编号"  max={20} readonlyCond='update' required rules={[{max:20,message:'最多20个字符'}]} />
+<SDFormText name="ruleName"   label="规则名称"  max={60}  width={250} required   rules={[{validator:(rules,value,callback)=>{
+            let chineseCount = countChineseChars(value);
+            if (chineseCount > 30) {
+                callback('最多30个汉字');
+            } else if (chineseCount<=0) {
+                callback('请输入汉字');
+            } else{
+              callback();
+            }
+         }}]}/>
+<SDFormDict  name="glCode"   label="科目代码" dictKey='org' readonlyCond='update' required/>
 <SDFormText name="subjectDesc"   label="科目名称"   readonlyCond='both' />
-<SDFormDict name="subjectNature"   label="科目性质"  dictKey='SUBJECT_DESC' />
-<SDFormDict name="onoroff"   label="表内外标识"  required={onoroff1} dictKey='ONOROFF'/>
-<SDFormDict name="accountingDirection"   label="记账方向"   dictKey='ACCOUNTING_DIRECTION'  />
-<SDFormDict name="calcMethod"   label="计算方式"  dictKey='CALC_METHOD'/>
-<SDFormDict name="positiveRiskType"   label="正差异风险暴露分类"  dictKey='@positiveRiskType'/>
-<SDFormDict name="negativeRiskType"   label="负差异风险暴露分类"  dictKey='@positiveRiskType'/>
+<SDFormDict name="subjectNature"   label="科目性质"  dictKey='SUBJECT_DESC' required/>
+<SDFormDict name="onoroff"   label="表内外标识"  required={onoroff1} dictKey='ONOROFF' />
+<SDFormDict name="accountingDirection"   label="记账方向"   dictKey='ACCOUNTING_DIRECTION'  required />
+<SDFormDict name="calcMethod"   label="计算方式"  dictKey='CALC_METHOD' required/>
+<SDFormDict name="positiveRiskType"   label="正差异风险暴露分类"  dictKey='@positiveRiskType' required/>
+<SDFormDict name="negativeRiskType"   label="负差异风险暴露分类"  dictKey='@positiveRiskType' required/>
 <SDFormDict name="positiveOffProjectType"   label="正差异表外项目分类"  dictKey='@positiveOffProjectType' required={positiveOffProjectType}/>
 <SDFormDict name="negativeOffProjectType"   label="负差异表外项目分类" dictKey='@positiveOffProjectType'   required={positiveOffProjectType}/>
-<SDFormDict name="stageinId"   label="所属阶段"  dictKey='@stageinId'/>
-<SDFormText name="subjectSql"   label="总账取数规则" type='textarea' />
-<SDFormText name="productSql"   label="勾稽明细取数规则"  type='textarea' />
+<SDFormDict name="stageinId"   label="所属阶段"  dictKey='@stageinId' required/>
+<SDFormText name="subjectSql"   label="总账取数规则" type='textarea' required/>
+<SDFormText name="productSql"   label="勾稽明细取数规则"  type='textarea' required/>
 <div style={{display:"none"}}>
 <SDFormText name="yesorno"   label="状态"  />
 

+ 2 - 1
Procedure/frontend/projectb/src/services/rwa/govFinancialAssetComp.ts

@@ -22,6 +22,7 @@ weight : number;
 name : String;
 //备注
 notes : String;
+qualfiedCreditToolName :String;
 }& BasePageModel;
 
 
@@ -50,7 +51,7 @@ export async function selectGovFinancialAssetComp(name :String){
 }
 
 export async function inserteGovFinancialAssetComp(body :GovFinancialAssetCompModel){
-    return baseFun.request<TableData<GovFinancialAssetCompModel>>('/api/product/rwa/parameter/GovFinancialAssetCompAction/inserteGovFinancialAssetComp',{
+    return baseFun.request<any>('/api/product/rwa/parameter/GovFinancialAssetCompAction/inserteGovFinancialAssetComp',{
         data:body
     // dats:modelcode
     })

+ 1 - 0
Procedure/frontend/projectb/src/services/rwa/info_list.ts

@@ -71,6 +71,7 @@ offobjectSuperName: string;
 yesorno :string;
 ruleInName:string
 ruleOutName:string;
+ruleProductName:string;
 }& BaseModel;
 
 

+ 1 - 0
Procedure/frontend/projectb/src/services/rwa/policybank.ts

@@ -25,6 +25,7 @@ export type PolicyBankModel ={
     isRiskclassUse:String;
     //是否用于合格缓释认定
     isSlowreleaseUse:String;
+    qualfiedCreditToolName: String;
 }
 
 

+ 5 - 3
Procedure/frontend/projectb/src/services/rwa/product/dataquality/dataqualityruledefine.ts

@@ -26,7 +26,7 @@ export type DataQualityRuleDefineModel = {
     // 所属阶段
     ruleStageId: string;
     // 被检查表
-    checkTableName: string;
+    checkTableName: string[];
     // 处理方案建议
     checkProposal: string;
     // 检查规则说明
@@ -35,6 +35,8 @@ export type DataQualityRuleDefineModel = {
     checkRule: string;
     // 状态
     checkState: string;
+    checkTableNames:string;
+    checkStates:string[];
   } & BasePageModel;
 
 
@@ -71,8 +73,8 @@ export async function selectDetailData(body:DataQualityRuleDefineModel) {
 }
 
 /** 唯一性校验 POST */
-export async function isNotExist(body: DataQualityRuleDefineModel) {
+export async function isNotExist(checkRuleNo: string) {
     return baseFun.request<any>('/api/product/rwa/dataquality/DataQualityRuleDefineAction/isNotExist.do', {
-      data: body,
+      params:{checkRuleNo},
     });
 }

+ 31 - 2
Procedure/frontend/projectb/src/services/rwa/product/dataquality/datascopemanage.ts

@@ -16,17 +16,20 @@ export type TableRelationDefineModel = {
     // 关系编号
     relationNo: string;
     // 源表英文名称
-    englishSourceTableName: string;
+    englishSourceTableName: string[];
     // 源表中文名称
     chineseSourceTableName: string;
     // 目标表英文名称
-    englishTargetTableName: string;
+    englishTargetTableName: string[];
     // 目标表中文名称
     chineseTargetTableName: string;
     // 风险类别
     riskCategory: string;
     // 来源系统
     sourceSystem: string;
+    englishSourceTableNames : string;
+    englishTargetTableNames : string;
+    riskCategorys : string[];
   } & BasePageModel;
 
 
@@ -58,6 +61,7 @@ export type FieldRelationDefineModel = {
     chineseTargetFieldName: string;
     // 字典代码
     fieldNounItem: string;
+    chineseSourceFieldName111: string;
   } & BasePageModel;
 
 
@@ -116,3 +120,28 @@ export async function isNotExist(body: TableRelationDefineModel) {
       data: body,
     });
   }
+
+/** 获取源表/目标表中文名 */
+export async function selectchineseSourceTableName(englishSourceFieldName:string) {
+  return baseFun.request<any>('/api/product/rwa/dataquality/DataScopeManageAction/selectchineseSourceTableName.do', {
+   params:{englishSourceFieldName}
+  });
+}
+
+
+/** 获取源表/目标表字段 */
+export async function selecFieldName(englishSourceFieldName:string) {
+  return baseFun.request<any>('/api/product/rwa/dataquality/DataScopeManageAction/selecFieldName.do', {
+   params:{englishSourceFieldName}
+  });
+}
+
+export async function selectenglishSourceField(englishField:string) {
+  return baseFun.request<any>('/api/product/rwa/dataquality/DataScopeManageAction/selectenglishSourceField.do', {
+   params:{englishField}
+  });
+}
+
+
+
+  

+ 2 - 0
Procedure/frontend/projectb/src/services/rwa/product/datasupplementary/supplementtaskmanagement.ts

@@ -33,6 +33,8 @@ export type SupplementTaskDefineModel = {
     tmpNames: string;
     // 状态
     status: string;
+    tmpCode:string;
+    orgCodes:string[]
   } & BasePageModel;
 
 

+ 1 - 0
Procedure/frontend/projectb/src/services/rwa/product/datasupplementary/supplementtemplatedefine.ts

@@ -25,6 +25,7 @@ export type TemplateBasicInfoDefineModel = {
     columnRange: string;
     // 模板文件编号
     tmpFileCode: string;
+    tmpTypes: string[];
   } & BasePageModel;