shiqian 4 роки тому
батько
коміт
160c7e023d

+ 46 - 4
boman-common/boman-common-core/src/main/java/com/boman/common/core/utils/obj/ObjectUtils.java

@@ -6,10 +6,10 @@ import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.StringUtils;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
+import java.util.function.Function;
+import java.util.function.Predicate;
+import java.util.stream.Collectors;
 
 /**
  * @author shiqian
@@ -176,4 +176,46 @@ public class ObjectUtils {
     public static boolean ltZero(Long aLong) {
         return null != aLong && aLong < 0;
     }
+
+
+    /**
+     * 功能描述: 根据规则过滤
+     *
+     * @param input     原数据
+     * @param predicate FunctionalInterface
+     * @return java.util.List<T>
+     */
+    public static <T> List<T> filter(List<T> input, Predicate<T> predicate) {
+        return requireNonNull(input, "list is null")
+                .stream().filter(predicate).collect(Collectors.toList());
+    }
+
+    /**
+     * 功能描述: 根据规则获取
+     *
+     * @param input    原数据
+     * @param function FunctionalInterface
+     * @return java.util.List<T>
+     */
+    public static <T, R> List<R> map(List<T> input, Function<T, R> function) {
+        return requireNonNull(input, "list is null")
+                .stream().map(function).collect(Collectors.toList());
+    }
+
+
+    /**
+     * 功能描述: 根据规则获取单个
+     *
+     * @param input    原数据
+     * @param function FunctionalInterface
+     * @return java.util.List<T>
+     */
+    public static <T, R> R mapFirst(List<T> input, Function<T, R> function) {
+        requireNonNull(input, "list is null");
+        List<R> rList = input.stream().map(function).collect(Collectors.toList());
+        requireNonNull(rList, "rList is null");
+        Optional<R> optionalR = rList.stream().findFirst();
+        return optionalR.orElse(null);
+    }
+
 }

+ 1 - 1
boman-web-core/src/main/java/com/boman/web/core/controller/TableController.java

@@ -24,7 +24,7 @@ public class TableController {
     private TableServiceCmdService tableServiceCmdService;
 
     /**
-     * 功能描述: 反提交接口, 更改的字段类型和字段值都是一致的
+     * 功能描述: 根据表名获取表信息、表字段和表字段对应的字典值
      *                {
      *                    "table": "sys_config",
      *                }

+ 10 - 5
boman-web-core/src/main/java/com/boman/web/core/service/TableServiceCmdService.java

@@ -37,6 +37,7 @@ import javax.annotation.Resource;
 import java.sql.Timestamp;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
+import java.util.function.Predicate;
 import java.util.stream.Collectors;
 
 import static com.boman.common.core.utils.obj.ObjectUtils.ifNullSetEmpty;
@@ -522,7 +523,7 @@ public class TableServiceCmdService {
     }
 
     /**
-     * 功能描述: 反提交接口, 更改的字段类型和字段值都是一致的
+     * 功能描述: 根据表名获取表信息、表字段和表字段对应的字典值
      *                {
      *                    "table": "sys_config",
      *                }
@@ -534,16 +535,20 @@ public class TableServiceCmdService {
     public AjaxResult getByTableName(BaseTableSaveDTO condition) {
         requireNonNull(condition.getTable(), "表名为空");
         GenTable genTable = getTableFromRedisByTableName(RedisKey.TABLE_INFO, condition.getTable());
-        List<GenTableColumn> columns = genTable.getColumns();
+        packDictDataToColumns(genTable.getColumns(), ObjectUtils::isNotEmpty);
+        return AjaxResult.success(genTable);
+    }
+
+
+    public void packDictDataToColumns(List<GenTableColumn> columns, Predicate<String> predicate) {
+        requireNonNull(columns, "columns 为空");
         for (GenTableColumn column : columns) {
             String dictType = column.getDictType();
-            if (ObjectUtils.isNotEmpty(dictType)) {
+            if (predicate.test(dictType)) {
                 List<SysDictData> sysDictData1 = remoteDictDataService.listByType(dictType);
                 column.setSysDictData(sysDictData1);
             }
         }
-
-        return AjaxResult.success(genTable);
     }
 
 }