Browse Source

handlerInputType

shiqian 4 years ago
parent
commit
dcbbbec7cd

+ 17 - 0
boman-web-core/src/main/java/com/boman/web/core/service/TableServiceCmdService.java

@@ -7,6 +7,7 @@ import com.alibaba.fastjson.TypeReference;
 import com.boman.common.core.constant.GenConstants;
 import com.boman.common.core.utils.DateUtils;
 import com.boman.common.core.utils.SecurityUtils;
+import com.boman.common.core.utils.array.ArrayUtils;
 import com.boman.common.core.utils.collection.CollectionUtils;
 import com.boman.common.core.utils.obj.ObjectUtils;
 import com.boman.common.core.web.domain.AjaxResult;
@@ -88,6 +89,8 @@ public class TableServiceCmdService {
         checkColumn(commitData, context.getColumns());
         // 必填项
         handlerRequired(commitData, context.getColumns());
+        // 处理输入类型
+        handlerInputType(commitData, context.getColumns());
 
         // 新增
         if (ActionType.INSERT.equals(context.getActionType())) {
@@ -114,6 +117,20 @@ public class TableServiceCmdService {
 
     }
 
+    private void handlerInputType(JSONObject commitData, List<GenTableColumn> columns) {
+        for (Map.Entry<String, Object> entry : commitData.entrySet()) {
+            Object value =entry.getValue();
+            for (GenTableColumn column : columns) {
+                if (entry.getKey().equals(column.getColumnName())
+                && ArrayUtils.arraysContains(GenConstants.COLUMNTYPE_NUMBER, getDbType(column.getColumnType()))) {
+                    if (!(value instanceof Number)) {
+                        throw new IllegalArgumentException(column.getColumnComment() + "只能输入数字");
+                    }
+                }
+            }
+        }
+    }
+
     private void handlerRequired(JSONObject commitData, List<GenTableColumn> columns) {
         for (GenTableColumn column : columns) {
             if (GenTableColumn.IS_REQUIRED.equalsIgnoreCase(column.getIsRequired())) {

+ 15 - 0
boman-web-core/src/main/java/com/boman/web/core/utils/ColumnUtils.java

@@ -3,6 +3,7 @@ package com.boman.web.core.utils;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.boman.common.core.utils.SecurityUtils;
+import com.boman.common.core.utils.StringUtils;
 import com.boman.common.core.utils.obj.ObjectUtils;
 import com.boman.domain.GenTableColumn;
 import com.boman.domain.exception.UnknownColumnException;
@@ -280,4 +281,18 @@ public class ColumnUtils {
         requireNonNull(columns, "columns is empty");
         return filter(columns, col -> !HR.equalsIgnoreCase(col.getHtmlType()));
     }
+
+    /**
+     * varchar(20) => varchar
+     *
+     * @param columnType 列类型
+     * @return 截取后的列类型
+     */
+    public static String getDbType(String columnType) {
+        if (StringUtils.indexOf(columnType, "(") > 0) {
+            return StringUtils.substringBefore(columnType, "(");
+        } else {
+            return columnType;
+        }
+    }
 }