Ver código fonte

可编辑表格联动,插入新增逻辑修改,保存按钮后校验规则代码开发,新增字典取入

ZhangYanJie 4 meses atrás
pai
commit
c0b6b612e8

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

@@ -6,6 +6,7 @@ import com.sundata.product.rwa.datasupplementary.model.SupplementTemplateRelatio
 import com.sundata.product.rwa.datasupplementary.model.TemplateBasicInfoDefineModel;
 import com.sundata.product.rwa.datasupplementary.model.TemplateDataValidationRuleModel;
 import com.sundata.product.rwa.datasupplementary.service.SupplementTaskManagementService;
+import com.sundata.product.rwa.rwacalcconfig001riskexposure.model.RiskExposureClassRuleModel;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -80,33 +81,6 @@ public class SupplementTaskManagementAction extends BaseAction {
         sendData(response, supplementTaskManagementService.selectDetailData(model));
     }
 
-    /**
-     * @author: 张艳杰
-     * @methodsName: selectTemplateListDetailData
-     * @description: 获取补录模板列表当前行详细数据
-     * @param: HttpServletRequest request, HttpServletResponse response, @RequestBody SupplementTemplateRelationModel model
-     * @return: SupplementTemplateRelationModel
-     * @throws:
-     */
-    @RequestMapping({"selectTemplateListDetailData"})
-    public void selectTemplateListDetailData(HttpServletRequest request, HttpServletResponse response,
-                                    @RequestBody SupplementTemplateRelationModel model) {
-        sendData(response, supplementTaskManagementService.selectTemplateListDetailData(model));
-    }
-
-    /**
-     * @author: 张艳杰
-     * @methodsName: selectTemplateCheckDetailData
-     * @description: 获取补录模板校验规则数据列表
-     * @param: HttpServletRequest request, HttpServletResponse response, @RequestBody TemplateDataValidationRuleModel model
-     * @return: TemplateDataValidationRuleModel
-     * @throws:
-     */
-    @RequestMapping({"selectTemplateCheckDetailData"})
-    public void selectTemplateCheckDetailData(HttpServletRequest request, HttpServletResponse response,
-                                         @RequestBody TemplateDataValidationRuleModel model) {
-        sendData(response, supplementTaskManagementService.selectTemplateCheckDetailData(model));
-    }
 
 
     /**
@@ -132,38 +106,12 @@ public class SupplementTaskManagementAction extends BaseAction {
      * @throws:
      */
     @RequestMapping({"updateRowData"})
-    public void updateRowData(HttpServletRequest request, HttpServletResponse response,
+    public boolean updateRowData(HttpServletRequest request, HttpServletResponse response,
                                @RequestBody SupplementTaskDefineModel model) {
-        supplementTaskManagementService.updateRowData(model);
+         return supplementTaskManagementService.updateRowData(model);
     }
 
-    /**
-     * @author: 张艳杰
-     * @methodsName: updateTemplateListRowData
-     * @description: 修改补录模板列表当前行数据
-     * @param: HttpServletRequest request, HttpServletResponse response, @RequestBody SupplementTemplateRelationModel model
-     * @return: SupplementTemplateRelationModel
-     * @throws:
-     */
-    @RequestMapping({"updateTemplateListRowData"})
-    public void updateTemplateListRowData(HttpServletRequest request, HttpServletResponse response,
-                                       @RequestBody SupplementTemplateRelationModel model) {
-        supplementTaskManagementService.updateTemplateListRowData(model);
-    }
 
-    /**
-     * @author: 张艳杰
-     * @methodsName: updateTemplateCheckRowData
-     * @description: 修改补录模板校验规则数据列表
-     * @param: HttpServletRequest request, HttpServletResponse response, @RequestBody TemplateDataValidationRuleModel model
-     * @return: TemplateDataValidationRuleModel
-     * @throws:
-     */
-    @RequestMapping({"updateTemplateCheckRowData"})
-    public void updateTemplateCheckRowData(HttpServletRequest request, HttpServletResponse response,
-                                        @RequestBody TemplateDataValidationRuleModel model) {
-        supplementTaskManagementService.updateTemplateCheckRowData(model);
-    }
 
     /**
      * @author: 张艳杰
@@ -174,9 +122,9 @@ public class SupplementTaskManagementAction extends BaseAction {
      * @throws:
      */
     @RequestMapping({"createRowData"})
-    public void createRowData(HttpServletRequest request, HttpServletResponse response,
+    public boolean createRowData(HttpServletRequest request, HttpServletResponse response,
                               @RequestBody SupplementTaskDefineModel model) {
-        supplementTaskManagementService.createRowData(model);
+         return supplementTaskManagementService.createRowData(model);
     }
 
     /**
@@ -188,12 +136,10 @@ public class SupplementTaskManagementAction extends BaseAction {
      * @throws:
      */
     @RequestMapping({"createTemplateListRowData"})
-    public void createTemplateListRowData(HttpServletRequest request, HttpServletResponse response,
+    public boolean createTemplateListRowData(HttpServletRequest request, HttpServletResponse response,
                                           @RequestBody List<SupplementTemplateRelationModel> relationList,
                                           @RequestParam String taskCode) {
-        //System.out.println(modelMap);
-        supplementTaskManagementService.createTemplateListRowData(relationList,taskCode);
-       //supplementTaskManagementService.createTemplateListRowData(modelList);
+        return supplementTaskManagementService.createTemplateListRowData(relationList,taskCode);
     }
 
     /**
@@ -205,9 +151,31 @@ public class SupplementTaskManagementAction extends BaseAction {
      * @throws:
      */
     @RequestMapping({"createTemplateCheckRowData"})
-    public void createTemplateCheckRowData(HttpServletRequest request, HttpServletResponse response,
+    public boolean createTemplateCheckRowData(HttpServletRequest request, HttpServletResponse response,
                                            @RequestBody List<TemplateDataValidationRuleModel> modelList) {
-        supplementTaskManagementService.createTemplateCheckRowData(modelList);
+        return supplementTaskManagementService.createTemplateCheckRowData(modelList);
     }
 
+    /**
+     * @author: 张艳杰
+     * @methodsName: isNotExist
+     * @description: 唯一性检查
+     * @param: HttpServletRequest request, HttpServletResponse response, @RequestBody SupplementTaskDefineModel model
+     * @return:
+     * @throws:
+     */
+    @RequestMapping({"isNotExist"})
+    public void isNotExist(HttpServletRequest request, HttpServletResponse response,
+                           @RequestBody  SupplementTaskDefineModel model) {
+        if (null != model && !model.getTaskCode().isEmpty()){
+            SupplementTaskDefineModel checkModel = supplementTaskManagementService.selectDetailData(model);
+            if (null != checkModel) {
+                sendData(response,"该代码已存在");
+            } else {
+                sendData(response,true);
+            }
+        }
+    }
+
+
 }

+ 2 - 2
Procedure/backend/project/src/main/java/com/sundata/product/rwa/datasupplementary/mapper/SupplementTaskManagementMapper.java

@@ -28,13 +28,13 @@ public interface SupplementTaskManagementMapper {
 
     public void deleteTemplateCheckData(@Param("model") SupplementTemplateRelationModel model);
 
-    public void updateRowData(@Param("model") SupplementTaskDefineModel model);
+    public boolean updateRowData(@Param("model") SupplementTaskDefineModel model);
 
     public void updateTemplateListRowData(@Param("model") SupplementTemplateRelationModel model);
 
     public void updateTemplateCheckRowData(@Param("model") TemplateDataValidationRuleModel model);
 
-    public void createRowData(@Param("model") SupplementTaskDefineModel model);
+    public boolean createRowData(@Param("model") SupplementTaskDefineModel model);
 
     public void createTemplateListRowData(@Param("model") SupplementTemplateRelationModel model);
 

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

@@ -350,10 +350,15 @@
 
     <!-- 补录任务的的作废 -->
     <update id="deleteInfoData">
-        update RWA_IMPUT_TMPCONF_BASEINFO
+        update RWA_IMPUT_SUPTASKCONF_BASEINFO
         <set>
             STATUS = '0'
         </set>
+        <where>
+            <if test="model.taskCode != null and model.taskCode !=''">
+                TASKCODE = #{model.taskCode}
+            </if>
+        </where>
     </update>
 
 
@@ -394,7 +399,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 !=''">

+ 122 - 41
Procedure/backend/project/src/main/java/com/sundata/product/rwa/datasupplementary/service/SupplementTaskManagementService.java

@@ -1,20 +1,33 @@
 package com.sundata.product.rwa.datasupplementary.service;
 
+import cn.hutool.core.collection.CollectionUtil;
+import com.ibm.db2.jcc.am.SqlException;
+import com.mysql.cj.x.protobuf.MysqlxConnection;
+import com.sundata.common.exception.BusinessException;
+import com.sundata.common.util.DBExecutor;
+import com.sundata.product.rwa.businessconfig.service.SysListOfPublicSectorService;
 import com.sundata.product.rwa.datasupplementary.mapper.SupplementTaskManagementMapper;
 import com.sundata.product.rwa.datasupplementary.model.SupplementTaskDefineModel;
 import com.sundata.product.rwa.datasupplementary.model.SupplementTemplateRelationModel;
 import com.sundata.product.rwa.datasupplementary.model.TemplateBasicInfoDefineModel;
 import com.sundata.product.rwa.datasupplementary.model.TemplateDataValidationRuleModel;
+import org.apache.commons.lang.text.StrSubstitutor;
+import org.apache.commons.text.StringSubstitutor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 @Service
 public class SupplementTaskManagementService {
 
+    // 日志
+    static final Logger log = LoggerFactory.getLogger(SupplementTaskManagementService.class);
+
     @Autowired
     SupplementTaskManagementMapper supplementTaskManagementMapper;
 
@@ -112,7 +125,7 @@ public class SupplementTaskManagementService {
      * @throws:
      */
     public void deleteInfoData(SupplementTaskDefineModel model) {
-        supplementTaskManagementMapper.deleteInfoData(model);
+         supplementTaskManagementMapper.deleteInfoData(model);
     }
 
 
@@ -124,33 +137,10 @@ public class SupplementTaskManagementService {
      * @return:
      * @throws:
      */
-    public void updateRowData(SupplementTaskDefineModel model) {
-        supplementTaskManagementMapper.updateRowData(model);
-    }
-
-    /**
-     * @author: 张艳杰
-     * @methodsName: updateTemplateListRowData
-     * @description: 修改补录模板列表当前行数据
-     * @param:   SupplementTemplateRelationModel model
-     * @return:
-     * @throws:
-     */
-    public void updateTemplateListRowData(SupplementTemplateRelationModel model) {
-        supplementTaskManagementMapper.updateTemplateListRowData(model);
+    public boolean updateRowData(SupplementTaskDefineModel model) {
+        return supplementTaskManagementMapper.updateRowData(model);
     }
 
-    /**
-     * @author: 张艳杰
-     * @methodsName: updateTemplateCheckRowData
-     * @description: 修改补录模板校验规则数据列表
-     * @param:   TemplateDataValidationRuleModel model
-     * @return:
-     * @throws:
-     */
-    public void updateTemplateCheckRowData(TemplateDataValidationRuleModel model) {
-        supplementTaskManagementMapper.updateTemplateCheckRowData(model);
-    }
 
     /**
      * @author: 张艳杰
@@ -160,8 +150,8 @@ public class SupplementTaskManagementService {
      * @return:
      * @throws:
      */
-    public void createRowData(SupplementTaskDefineModel model) {
-        supplementTaskManagementMapper.createRowData(model);
+    public boolean createRowData(SupplementTaskDefineModel model) {
+        return supplementTaskManagementMapper.createRowData(model);
     }
 
     /**
@@ -172,15 +162,78 @@ public class SupplementTaskManagementService {
      * @return:
      * @throws:
      */
-    public void createTemplateListRowData(List<SupplementTemplateRelationModel> relationList,String taskCode) {
+    public boolean createTemplateListRowData(List<SupplementTemplateRelationModel> relationList,String taskCode) {
+        // 模板字符${value}的正则表达式
+        String regex = "\\$\\{([^}]+)}";
+        // 生成正则表达式对象
+        Pattern pattern = Pattern.compile(regex);
 
-        supplementTaskManagementMapper.deleteTemplateListData(relationList.get(0));
-        for (SupplementTemplateRelationModel relationModel:relationList) {
-            relationModel.setTaskCode(taskCode);
-            supplementTaskManagementMapper.deleteTemplateCheckData(relationModel);
-            supplementTaskManagementMapper.createTemplateListRowData(relationModel);
-        }
+        // 应入参数
+        String[] values = {"workDate","account","orgcode","TaskId","TaskSerialNum"};
+        // 判断缺失参数用
+        ArrayList<String> paramList = new ArrayList<String>(Arrays.asList(values));
+        // 替换模板字符用
+        Map<String,String> inputMap = new HashMap<String,String>();
+        // 造假参数
+        inputMap.put("workDate","'a'");
+        inputMap.put("account","'a'");
+        inputMap.put("orgcode","'a'");
+        inputMap.put("TaskId","'a'");
+        inputMap.put("TaskSerialNum","'a'");
+        // 使用apache的StrSubstitutor替换模板字符
+        StrSubstitutor sub = new StrSubstitutor(inputMap);
+
+        if (!relationList.isEmpty()) {
+            // 先将旧的记录删掉
+            supplementTaskManagementMapper.deleteTemplateListData(relationList.get(0));
+            // 循环插入列表
+            for (SupplementTemplateRelationModel relationModel:relationList) {
+                // 任务编号赋值
+                relationModel.setTaskCode(taskCode);
+                // 对请求中的数据逻辑说明的sql进行正则匹配
+                Matcher matcher = pattern.matcher(relationModel.getSqlCode());
+                // 游标
+                int matcherCount = 0;
+                // 检查开始
+                while (matcher.find()) {
+                    if (!paramList.contains(matcher.group(1))) {
+                        String err = "数据初始化逻辑中,该参数[" + matcher.group(1) + "]不应存在!";
+                        log.error(err);
+                        throw new BusinessException(err);
+                    } else {
+                        paramList.remove(matcher.group(1));
+                    }
+                    matcherCount++;
+                }
+
+                if (matcherCount < values.length) {
+                    StringBuilder err = new StringBuilder("参数个数不足!");
+                    for (String errValue:paramList) {
+                        err.append(errValue).append("、");
+                    }
+                    err.append("参数缺失");
+                    log.error(err.toString());
+                    throw new BusinessException(err.toString());
+                }
+
+                // 假参数赋值
+                String resolvedString = sub.replace(relationModel.getSqlCode());
 
+                try{
+                    // 预执行sql
+                    DBExecutor.doQuery(resolvedString);
+                }catch (Exception e) {
+                    String err = "sql预执行失败!"+e.toString();
+                    log.error(err);
+                    throw new BusinessException(err);
+                }
+                // 将补录模板校验规则中对应的模板删掉
+                supplementTaskManagementMapper.deleteTemplateCheckData(relationModel);
+                // 开始插入
+                supplementTaskManagementMapper.createTemplateListRowData(relationModel);
+            }
+        }
+        return true;
     }
 
     /**
@@ -191,10 +244,38 @@ public class SupplementTaskManagementService {
      * @return:
      * @throws:
      */
-    public void createTemplateCheckRowData(List<TemplateDataValidationRuleModel> modelList) {
+    public boolean createTemplateCheckRowData(List<TemplateDataValidationRuleModel> modelList) {
+
+        if (!modelList.isEmpty()) {
+            for (TemplateDataValidationRuleModel model:modelList) {
+                String rowRange = DBExecutor.doQuery("select ROWRANGE from RWA_IMPUT_TMPCONF_BASEINFO where TMPCODE = "+ model.getTmpCode());
+                String colRange = DBExecutor.doQuery("select COLUMNRANGE from RWA_IMPUT_TMPCONF_BASEINFO where TMPCODE ="+ model.getTmpCode());
+                if (null != rowRange ) {
+                    String[] parentRowRange = rowRange.split("-");
+                    String[] childRowRange = model.getTmpverRowRange().split("-");
+                    if (Integer.parseInt(parentRowRange[0]) < Integer.parseInt(childRowRange[0])
+                            || Integer.parseInt(parentRowRange[1]) > Integer.parseInt(childRowRange[1])) {
+                        String err = "行范围或者列范围超出模板定义的范围!定义的行范围:"+rowRange;
+                        log.error(err);
+                        throw new BusinessException(err);
+                    }
+                }
 
-        for (TemplateDataValidationRuleModel model:modelList) {
-            supplementTaskManagementMapper.createTemplateCheckRowData(model);
+                if (null != colRange ) {
+                    String[] parentCOLRange = colRange.split("-");
+                    String[] childCOLRange = model.getTmpverColumnRange().split("-");
+                    if (Integer.parseInt(parentCOLRange[0]) < Integer.parseInt(childCOLRange[0])
+                            || Integer.parseInt(parentCOLRange[1]) > Integer.parseInt(childCOLRange[1])) {
+                        String err = "行范围或者列范围超出模板定义的范围!"+"定义的列范围:"+colRange;
+                        log.error(err);
+                        throw new BusinessException(err);
+                    }
+                }
+
+                supplementTaskManagementMapper.createTemplateCheckRowData(model);
+            }
         }
+        return true;
     }
+
 }

+ 169 - 46
Procedure/frontend/projectb/src/pages/product/datasupplementary/supplementtaskmanagement.tsx

@@ -4,11 +4,13 @@ import type {FormInstance} from 'antd'
 import  {Upload} from 'antd'
 import { SDPage,SDFormText,SDModalForm,SDTable,SDFormItem,SDButton,SDSubmitButton,EditType, SDAreaTtile, SDOperate, baseFun,SDModal, validateFun, SDLayout, SDFormDict, } from "@sundata/ui-frame";
 import type { SupplementTaskDefineModel,SupplementTemplateRelationModel,TemplateDataValidationRuleModel, } from '@/services/rwa/product/datasupplementary/supplementtaskmanagement';
-import {getDataList,selectDetailData,getTemplateCheckDataList,getTemplateDataList,deleteInfoData,updateRowData,
+import {getDataList,selectDetailData,getTemplateCheckDataList,getTemplateDataList,deleteInfoData,updateRowData,isNotExist,
   createRowData,createTemplateListRowData,createTemplateCheckRowData} from '@/services/rwa/product/datasupplementary/supplementtaskmanagement';
 import { PlusSquareTwoTone, WomanOutlined } from "@ant-design/icons";
 import { ProductProps } from "@/sundataImport";
 import { toNumber } from "lodash";
+import { useModel } from '@umijs/max';
+import { countChineseChars } from "@/services/rwa/product/rwacheckutils";
 
 type widowRush = {
   onCancel:  () => void;
@@ -21,7 +23,9 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
     const [editType, setEditType] = useState<EditType>(prop.editType || 'display');
     /** 是否显示详细信息窗口 */
     const [detailVisible, setDetailVisible] = useState<boolean>(false);
-
+    /** 是否excel公式字段是否必输 */
+    const [excelFormulaFlag, setExcelFormulaFlag] = useState<boolean>(false);
+    const [sqlCode,setSqlCode] = useState<boolean>(false);
     const [currentRow, setCurrentRow] = useState<SupplementTaskDefineModel>();
     /** 表格引用对象,刷新表格使用   */
     const actionRef = useRef<ActionType>();
@@ -37,6 +41,7 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
 
     // 页面数据
     var formDataList = new Array<SupplementTaskDefineModel>;
+    const { fetchDict } = useModel('dict');
 
     /** 字段关系序号编辑 */
     var dataInfoIndex = 1;
@@ -71,20 +76,32 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
   const handleSave = async(data: SupplementTaskDefineModel,) => {
     
     if (editType == 'update' ) {
-       await updateRowData(data).then(()=>{
+      const updateRes = await updateRowData(data);
+      if (updateRes == true) {
         if (templateListData && templateCheckData) {
-          createTemplateListRowData(templateListData,data.taskCode);
-          createTemplateCheckRowData(templateCheckData);
+          if (templateListData.length >= 1) {
+            const res01 = await createTemplateListRowData(templateListData,data.taskCode);
+            if ( res01 == true) {
+               createTemplateCheckRowData(templateCheckData);
+            }
+          } else {
+            baseFun.error('补录数据模板列表至少有一条记录');
+          }
         }
-       });
+      }
        closeAndRefresh();
     } else if (editType == 'create' ) {
-      await createRowData(data).then(()=>{
+      const createRes= await createRowData(data);
+      if (createRes == true) {
         if (templateListData && templateCheckData) {
-          createTemplateListRowData(templateListData,data.taskCode);
-          createTemplateCheckRowData(templateCheckData);
+          const res01 = await createTemplateListRowData(templateListData,data.taskCode);
+          if ( res01 == true) {
+             createTemplateCheckRowData(templateCheckData);
+          } else {
+             baseFun.error('补录数据模板列表至少有一条记录');
+          }
         }
-      });
+      }
       closeAndRefresh();
     }
     setDetailVisible(false);
@@ -202,8 +219,6 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
             onClick={
               ()=>{ 
               deleteData(record);
-              setDetailVisible(true);
-              setEditType('update');
              } }
           >
             作废
@@ -276,12 +291,29 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
             dataIndex: 'remark',
             search: false,
             hideInTable: false,
+            formItemProps:{
+              rules:[
+                {validator:(rules,value,callback)=>{
+                  let chineseCount = countChineseChars(value);
+                  if (chineseCount > 200) {
+                      callback('最多200个汉字');
+                  } else if (chineseCount<=0) {
+                      callback('请输入补录模板说明(汉字)');
+                  } else{
+                    callback();
+                  }
+               }},]
+            }
           },
           {
             title: '数据初始化逻辑', 
             dataIndex: 'sqlCode',
             search: false,
             hideInTable: false,
+            formItemProps:{
+              rules:[
+                {required:true},]
+            }
           },
           {
             title: '操作',
@@ -305,15 +337,15 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
 
        // 补录模板校验规则
        const templateCheckColumns: ProColumns<TemplateDataValidationRuleModel>[] = [
-        {
-          title: '序号',
-          dataIndex: 'id',
-          search: false,
-          render: (text, record, index) => { index  = index + 1;dataDetailIndex =index; return index},
-          width:100,
-          ellipsis:true,
-          editable:false
-        },
+          {
+            title: '序号',
+            dataIndex: 'id',
+            search: false,
+            render: (text, record, index) => { index  = index + 1;dataDetailIndex =index; return index},
+            width:100,
+            ellipsis:true,
+            editable:false
+          },
           {
             title: '计算实例号',
             dataIndex: 'calcIndex',
@@ -328,7 +360,7 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
             search: false,
             hideInTable: true,
             width:150,
-          ellipsis:true
+            ellipsis:true
           },
           {
             title: '截止数据日期',
@@ -336,7 +368,7 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
             search: false,
             hideInTable: true,
             width:150,
-          ellipsis:true
+            ellipsis:true
           },
           {
             title: '期次',
@@ -344,35 +376,65 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
             search: false,
             hideInTable: true,
             width:150,
-          ellipsis:true
+            ellipsis:true
           },
           {
             title: '规则名称',
             dataIndex: 'tmpverificationName',
             hideInTable: false,
             width:150,
-          ellipsis:true
+            ellipsis:true,
+            formItemProps:{
+              rules:[
+                {validator:(rules,value,callback)=>{
+                  let chineseCount = countChineseChars(value);
+                  if (chineseCount > 100) {
+                      callback('最多100个汉字');
+                  } else if (chineseCount<=0) {
+                      callback('请输入规则名称(汉字)');
+                  } else{
+                    callback();
+                  }
+               }},]
+            }
           },
           {
             title: '补录模板',
             dataIndex: 'tmpCode',
             hideInTable: false,
             width:150,
-          ellipsis:true
+            ellipsis:true,
+            formItemProps:{
+              rules:[
+                {required:true},]
+            }
           },
           {
             title: '行列类型', 
             dataIndex: 'tmpverRowColType',
             hideInTable: false,
             width:150,
-          ellipsis:true
+            ellipsis:true,
+            formItemProps:{
+              rules:[
+                {required:true},]
+            }
           },
           {
-              title: '模板验证时点', 
-              dataIndex: 'vartimmer',
-              hideInTable: false,
-              width:150,
-          ellipsis:true
+            title: '模板验证时点', 
+            dataIndex: 'vartimmer',
+            hideInTable: false,
+            width:150,
+            ellipsis:true,
+            valueType: 'treeSelect',
+            request: () => fetchDict('TEMPLATE_VERIFY_TIME'),
+            fieldProps: {
+            treeDefaultExpandAll: true,
+            },
+            formItemProps:{
+              rules:[
+                {required:true},]
+            }
           },
           {
             title: '行范围', 
@@ -382,7 +444,9 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
             ellipsis:true,
             formItemProps:{
               rules:[
-                {pattern: RegExp(`[0-9]+\\-[0-9]+|[n|N]`),message:'请输入正确范围'},]
+                {pattern: RegExp(`[0-9]+\\-[0-9]+|[n|N]`),message:'请输入正确范围'},
+                {required:true},
+              ]
             }
           },
           {
@@ -390,46 +454,78 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
             dataIndex: 'tmpverColumnRange',
             hideInTable: false,
             width:150,
-          ellipsis:true
+            ellipsis:true,
+            formItemProps:{
+              rules:[
+                {pattern: RegExp(`[0-9]+\\-[0-9]+|[n|N]`),message:'请输入正确范围'},
+                {required:true},
+              ]
+            }
           },
           {
             title: '约束方式', 
             dataIndex: 'checkType',
             hideInTable: false,
             width:150,
-          ellipsis:true
+            ellipsis:true,
+            valueType: 'treeSelect',
+            request: () => fetchDict('CONSTRAINT_METHOD'),
+            fieldProps: {
+            treeDefaultExpandAll: true,
+            },
+            formItemProps:{
+              rules:[
+                {required:true},]
+            },
           },
           {
             title: '数据类型', 
-            dataIndex: 'remark',
+            dataIndex: 'dataType',
             hideInTable: false,
             width:150,
-          ellipsis:true
+            ellipsis:true
           },
           {
             title: '约束公式', 
-            dataIndex: 'remark',
+            dataIndex: 'excelFormula',
             hideInTable: false,
             width:150,
-          ellipsis:true
+            ellipsis:true,
+            formItemProps:{
+              rules:[
+                {required:excelFormulaFlag},]
+            }
           },
           {
             title: '约束规则SQL', 
-            dataIndex: 'remark',
+            dataIndex: 'sqlCode',
             hideInTable: false,
             width:150,
-          ellipsis:true
+            ellipsis:true,
+            formItemProps:{
+              rules:[
+                {required:sqlCode},]
+            }
           },
           {
             title: '越界处理方式', 
-            dataIndex: 'remark',
+            dataIndex: 'exceedType',
             hideInTable: false,
             width:150,
-          ellipsis:true
+            ellipsis:true,
+            valueType: 'treeSelect',
+            request: () => fetchDict('CROSS_BORDER_DISPOSAL'),
+            fieldProps: {
+            treeDefaultExpandAll: true,
+            },
+            formItemProps:{
+              rules:[
+                {required:true},]
+            }
           },
           {
             title: '提示信息模板', 
-            dataIndex: 'remark',
+            dataIndex: 'errorMsgTmplate',
             hideInTable: false,
             width:150,
           ellipsis:true
@@ -510,8 +606,22 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
           formRef={formRef}
         >
             <SDAreaTtile title='补录任务新增页面'/>
-            <SDFormText name="taskCode"      readonlyCond="update" required={true} label="任务编号"/>
-            <SDFormText name="taskName"      label="任务名称"/>
+            <SDFormText name="taskCode"      readonlyCond="update" required={true} rules={[{max:60,message:'最多60个字符'}]}
+             bgValidater={(taskCode: string) => isNotExist({
+               taskCode: taskCode,
+               taskName: "",
+             })}
+            label="任务编号"/>
+            <SDFormText name="taskName"  rules={[{validator:(rules,value,callback)=>{
+            let chineseCount = countChineseChars(value);
+            if (chineseCount > 100) {
+                callback('最多100个汉字');
+            } else if (chineseCount<=0) {
+                callback('请输入汉字');
+            } else{
+              callback();
+            }
+         }}]}   label="任务名称"/>
             <SDFormDict dictKey=""  name="orgCode"      label="责任机构"/>
             <SDFormDict dictKey="" name="account"     label="首选责任人"/>
             <SDFormDict dictKey="CALC_TASK_RATE" name="frequency"  label="补录频率"/>
@@ -560,6 +670,19 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
               scroll={{ x: 1500 }}
               value={templateCheckData}
               editable={{
+                onValuesChange(value) {
+                  if (value?.checkType) {
+                    if (value.checkType == 'EXCEL_FORMULA') {
+                      setExcelFormulaFlag(true);
+                    } else if (value.checkType == 'SQL_STATEMENT') {
+                      setSqlCode(true);
+                      setExcelFormulaFlag(false);
+                    } else {
+                      setSqlCode(false);
+                      setExcelFormulaFlag(false);
+                    }
+                  }
+                },
                 actionRender: (row,config,defaultDoms)=>{
                   return [defaultDoms.save,defaultDoms.delete,defaultDoms.cancel]
                 }

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

@@ -137,19 +137,19 @@ export async function deleteInfoData(body:SupplementTaskDefineModel) {
 
 /** 获取页面初始化及条件查询 POST*/
 export async function updateRowData(body:SupplementTaskDefineModel) {
-  return baseFun.request<void>('/api/product/rwa/datasupplementary/SupplementTaskManagementAction/updateRowData.do',{data: body});
+  return baseFun.request<boolean>('/api/product/rwa/datasupplementary/SupplementTaskManagementAction/updateRowData.do',{data: body});
 }
 
 
 /** 获取页面初始化及条件查询 POST*/
 export async function createRowData(body:SupplementTaskDefineModel) {
-  return baseFun.request<void>('/api/product/rwa/datasupplementary/SupplementTaskManagementAction/createRowData.do',{data: body});
+  return baseFun.request<boolean>('/api/product/rwa/datasupplementary/SupplementTaskManagementAction/createRowData.do',{data: body});
 }
 
 
 /** 获取页面初始化及条件查询 POST*/
-export async function createTemplateListRowData(body:SupplementTemplateRelationModel[],taskCode:string) {
-  return baseFun.request<void>('/api/product/rwa/datasupplementary/SupplementTaskManagementAction/createTemplateListRowData.do',{data: body,
+export async function createTemplateListRowData(relationModel:SupplementTemplateRelationModel[],taskCode:string) {
+  return baseFun.request<boolean>('/api/product/rwa/datasupplementary/SupplementTaskManagementAction/createTemplateListRowData.do',{data: relationModel,
     params:{taskCode}
   });
 }
@@ -157,12 +157,12 @@ export async function createTemplateListRowData(body:SupplementTemplateRelationM
 
 /** 获取页面初始化及条件查询 POST*/
 export async function createTemplateCheckRowData(body:TemplateDataValidationRuleModel[]) {
-    return baseFun.request<void>('/api/product/rwa/datasupplementary/SupplementTaskManagementAction/createTemplateCheckRowData.do',{data: body});
+    return baseFun.request<boolean>('/api/product/rwa/datasupplementary/SupplementTaskManagementAction/createTemplateCheckRowData.do',{data: body});
 }
 
 
 /** 唯一性校验 POST */
-export async function isNotExist(body: SupplementTaskDefineModel) {
+export async function isNotExist(body: any) {
     return baseFun.request<any>('/api/product/rwa/datasupplementary/SupplementTaskManagementAction/isNotExist.do', {
       data: body,
     });