Bladeren bron

模板数据校验规则存在检查冲突校验代码提交

ZhangYanJie 4 maanden geleden
bovenliggende
commit
d953d6227f

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

@@ -219,14 +219,14 @@ public class SupplementTaskManagementService {
                 // 假参数赋值
                 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);
-                }
+//                try{
+//                    // 预执行sql
+//                    //DBExecutor.doQuery(resolvedString);
+//                }catch (Exception e) {
+//                    String err = "sql预执行失败!"+e.toString();
+//                    log.error(err);
+//                    throw new BusinessException(err);
+//                }
                 // 将补录模板校验规则中对应的模板删掉
                 supplementTaskManagementMapper.deleteTemplateCheckData(relationModel);
                 // 开始插入
@@ -247,14 +247,57 @@ public class SupplementTaskManagementService {
     public boolean createTemplateCheckRowData(List<TemplateDataValidationRuleModel> modelList) {
 
         if (!modelList.isEmpty()) {
+            // 第一次遍历检查数据
+             for (int i =0;i<=modelList.size();i++) {
+                 for (int j=i+1;j<modelList.size();j++) {
+                     TemplateDataValidationRuleModel preModel = modelList.get(i);
+                     TemplateDataValidationRuleModel afterModel = modelList.get(i+1);
+                     // 行范围
+                     String preRowRange = preModel.getTmpverRowRange();
+                     String afterRowRange = afterModel.getTmpverRowRange();
+                     // 列范围
+                     String preColRange =  preModel.getTmpverColumnRange();
+                     String afterColRange =  afterModel.getTmpverColumnRange();
+                     // 约束方式
+                     String preCheckType = preModel.getCheckType();
+                     String afterCheckType = afterModel.getCheckType();
+                     // 数据类型
+                     String preDataType = preModel.getDataType();
+                     String afterDataType = afterModel.getDataType();
+                     // 约束公式
+                     String preExcelFormula = preModel.getExcelFormula();
+                     String afterExcelFormula = afterModel.getExcelFormula();
+                     // 约束规则SQL
+                     String preSqlCode = preModel.getSqlCode();
+                     String afterSqlCode = afterModel.getSqlCode();
+
+                     // 判断是否存在重复的模板检查规则
+                     if (preModel.getTmpCode().equals(afterModel.getTmpCode())) {
+                         if (null != preRowRange && preRowRange.equals(afterRowRange)
+                                 && null != preColRange && preColRange.equals(afterColRange)
+                                 && null != preCheckType && preCheckType.equals(afterCheckType)
+                                 && (null == preDataType || preDataType.equals(afterDataType == null ? "" :afterDataType))
+                                 && (null == preExcelFormula || preExcelFormula.equals(afterExcelFormula== null ? "" :afterExcelFormula))
+                                 && (null == preSqlCode || preSqlCode.replaceAll("\\s*", "").
+                                 equals((afterSqlCode== null ? "" :afterSqlCode).replaceAll("\\s*", "")))
+                         ) {
+                             String err = "模板数据校验规则存在检查冲突!"+preModel.getTmpCode();
+                             log.error(err);
+                             throw new BusinessException(err);
+                         }
+                     }
+                 }
+             }
+
+            // 第二次遍历插入
             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])) {
+                    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);
@@ -264,8 +307,8 @@ public class SupplementTaskManagementService {
                 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])) {
+                    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);

+ 8 - 4
Procedure/frontend/projectb/src/pages/product/datasupplementary/supplementtaskmanagement.tsx

@@ -82,27 +82,31 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
           if (templateListData.length >= 1) {
             const res01 = await createTemplateListRowData(templateListData,data.taskCode);
             if ( res01 == true) {
-               createTemplateCheckRowData(templateCheckData);
+               const res02 = await createTemplateCheckRowData(templateCheckData);
+               if (res02 == true) {
+                closeAndRefresh();
+               }
             }
           } else {
             baseFun.error('补录数据模板列表至少有一条记录');
           }
         }
       }
-       closeAndRefresh();
     } else if (editType == 'create' ) {
       const createRes= await createRowData(data);
       if (createRes == true) {
         if (templateListData && templateCheckData) {
           const res01 = await createTemplateListRowData(templateListData,data.taskCode);
           if ( res01 == true) {
-             createTemplateCheckRowData(templateCheckData);
+            const res02 = await createTemplateCheckRowData(templateCheckData);
+            if (res02 == true) {
+              closeAndRefresh();
+             }
           } else {
              baseFun.error('补录数据模板列表至少有一条记录');
           }
         }
       }
-      closeAndRefresh();
     }
     setDetailVisible(false);
   }