Эх сурвалжийг харах

不带hr的并且返回有字典值的处理

shiqian 4 жил өмнө
parent
commit
ec6d4a22b2

+ 7 - 0
boman-common/boman-common-core/src/main/java/com/boman/common/core/utils/obj/ObjectUtils.java

@@ -52,6 +52,13 @@ public class ObjectUtils {
         return input;
     }
 
+    public static Boolean requireNonNull(Boolean input, String... errorMsg) {
+        if (input == null) {
+            throw new IllegalArgumentException(errorMsg[0]);
+        }
+        return input;
+    }
+
     public static <T> T requireNonNull(T input, String... errorMsg) {
         if (input == null) {
             throw new IllegalArgumentException(errorMsg[0]);

+ 2 - 2
boman-modules/boman-gen/src/main/java/com/boman/gen/domain/GenTableColumn.java

@@ -18,8 +18,8 @@ public class GenTableColumn extends BaseEntity
     /** 是查询字段 */
     public static final String IS_QUERY = "1";
 
-    /** 是列表展示字段 */
-    public static final String IS_LIST = "1";
+    /** 主键 */
+    public static final String IS_PK = "1";
 
     /** 编号 */
     private Long columnId;

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

@@ -34,11 +34,11 @@ public class TableController {
      * @param condition condition
      * @return com.boman.common.core.web.domain.AjaxResult
      */
-    @ApiOperation(value = "根据表名获取表单所有信息")
-    @PostMapping("/getByTableName")
-    public AjaxResult getByTableName(@RequestBody BaseTableSaveDTO condition) {
-        return tableServiceCmdService.getByTableName(condition);
-    }
+//    @ApiOperation(value = "根据表名获取表单所有信息")
+//    @PostMapping("/getByTableName")
+//    public AjaxResult getByTableName(@RequestBody BaseTableSaveDTO condition) {
+//        return tableServiceCmdService.getByTableName(condition);
+//    }
 
     /**
      * 功能描述: 根据表名获取表信息、表字段和表字段对应的字典值

+ 44 - 42
boman-web-core/src/main/java/com/boman/web/core/service/TableServiceCmdService.java

@@ -208,12 +208,6 @@ public class TableServiceCmdService {
 
         List<JSONObject> result = selectService.selectByCondition(genTable.getTableName(), condition, packCondition
                 , showData, dto.getOrderBy(), dto.getLimit(), dto.getOffset());
-        // 处理时间
-//        handlerDate(result, columns);
-        // 处理字典值
-//        handlerSysDictData(result, columns);
-        // 处理外键
-//        handlerForeignKey(result, columns);
 
         handler(result =  filter(result, ObjectUtils::isNotEmpty), columns);
         // 定制接口
@@ -317,7 +311,7 @@ public class TableServiceCmdService {
                 if (jsonObject.containsKey(column.getColumnName())) {
                     String value = jsonObject.getString(column.getColumnName());
                     JSONArray fileList = JSON.parseArray(value);
-                    ArrayList<SysFile> files = Lists.newArrayListWithCapacity(2);
+                    ArrayList<SysFile> files = Lists.newArrayListWithCapacity(fileList.size());
                     for (Object obj : fileList) {
                         JSONObject fileItem = (JSONObject) obj;
                         SysFile file = new SysFile();
@@ -385,11 +379,13 @@ public class TableServiceCmdService {
         String pkName = IdUtils.getPkName(genTable.getColumns());
         JSONObject fixedData = dto.getFixedData();
         Long id = fixedData.getLong(FormDataConstant.ID);
-        requireNonNull(id);
+        requireNonNull(id, "如果是回显,则传参为此行记录的id, 如为新增,则传-1,传null可不行");
+        Boolean isUi = requireNonNull(dto.getIsUi(), "未传isUi这个参数");
+
         List<GenTableColumn> columns = genTable.getColumns();
         // id = -1时,查询该表单对应的字段名称
         if (ltZero(id)) {
-            return getByTableName(tableName, columns);
+            return getByTableName(tableName, columns, isUi);
         }
 
         // 默认查所有字段,不支持自定义
@@ -797,47 +793,53 @@ public class TableServiceCmdService {
      * @param condition condition
      * @return com.boman.common.core.web.domain.AjaxResult
      */
-    public AjaxResult getByTableName(BaseTableSaveDTO condition) {
-        requireNonNull(condition.getTable(), "tableName = [" + condition.getTable() + "] 此表不存在");
-        requireNonNull(condition.getIsUi(), "根据表名获取表字段,未传 isUi 这个字段");
-        GenTable genTable = getTableFromRedisByTableName(RedisKey.TABLE_INFO, condition.getTable());
-        List<GenTableColumn> allColumns = genTable.getColumns();
-        // 把新增可见的列过滤出来
-//        List<GenTableColumn> returnData = ColumnUtils.filterNeedShowData(allColumns, 0, INSERT_VISIBLE::equals);
-        // 普通的展示,不带折叠的
-        if (BooleanUtils.isFalse(condition.getIsUi())) {
-            packDictDataToColumns(allColumns, ObjectUtils::isNotEmpty);
-            return AjaxResult.success(genTable);
-        } else {
-            // 带折叠的展示
-            return getByTableName(genTable.getTableName(), allColumns);
-        }
-    }
-
-    public AjaxResult getByTableName(String tableName, List<GenTableColumn> allColumns) {
+//    public AjaxResult getByTableName(BaseTableSaveDTO condition) {
+//        requireNonNull(condition.getTable(), "tableName = [" + condition.getTable() + "] 此表不存在");
+//        requireNonNull(condition.getIsUi(), "根据表名获取表字段,未传 isUi 这个字段");
+//        GenTable genTable = getTableFromRedisByTableName(RedisKey.TABLE_INFO, condition.getTable());
+//        List<GenTableColumn> allColumns = genTable.getColumns();
+//        // 把新增可见的列过滤出来
+////        List<GenTableColumn> returnData = ColumnUtils.filterNeedShowData(allColumns, 0, INSERT_VISIBLE::equals);
+//        // 普通的展示,不带折叠的
+//        if (BooleanUtils.isFalse(condition.getIsUi())) {
+//            packDictDataToColumns(allColumns, ObjectUtils::isNotEmpty);
+//            return AjaxResult.success(genTable);
+//        } else {
+//            // 带折叠的展示
+//            return getByTableName(genTable.getTableName(), allColumns, true);
+//        }
+//    }
+
+    public AjaxResult getByTableName(String tableName, List<GenTableColumn> allColumns, Boolean isUi) {
+        List<GenTableColumn> resultCols;
         List<GenTableColumn> parentColumns = GenUtils.filterHrAndSort(allColumns);
-//        List<GenTableColumn> parentColumns = filter(allColumns, col -> HR.equalsIgnoreCase(col.getHtmlType()));
-        allColumns = filterData(allColumns, 0, MaskConstant.LIST_VISIBLE::equals);
-
-        // 把孩子放入父亲的怀抱
-        for (GenTableColumn hrColumn : parentColumns) {
-            List<GenTableColumn> children = Lists.newArrayListWithCapacity(16);
-            for (GenTableColumn column : allColumns) {
-                if (hrColumn.getColumnId().equals(column.getHrParentId())) {
-                    children.add(column);
+        // 所有新增可见的列
+        allColumns = filterData(allColumns, 0, MaskConstant.INSERT_VISIBLE::equals);
+        if (BooleanUtils.isTrue(isUi)) {
+            // 把孩子放入父亲的怀抱
+            for (GenTableColumn hrColumn : parentColumns) {
+                List<GenTableColumn> children = Lists.newArrayListWithCapacity(16);
+                for (GenTableColumn column : allColumns) {
+                    if (hrColumn.getColumnId().equals(column.getHrParentId())) {
+                        children.add(column);
+                    }
                 }
+                hrColumn.setHrChildren(children);
             }
-            hrColumn.setHrChildren(children);
-        }
 
-        // 把孩子对应的字典值放进去
-        for (GenTableColumn hrColumn : parentColumns) {
-            packDictDataToColumns(hrColumn.getHrChildren(), ObjectUtils::isNotEmpty);
+            // 把孩子对应的字典值放进去
+            for (GenTableColumn hrColumn : parentColumns) {
+                packDictDataToColumns(hrColumn.getHrChildren(), ObjectUtils::isNotEmpty);
+            }
+            resultCols = parentColumns;
+        } else {
+            packDictDataToColumns(allColumns, ObjectUtils::isNotEmpty);
+            resultCols = allColumns;
         }
 
         JSONObject result = new JSONObject();
         result.put(BUTTON_LIST, getButton(tableName));
-        result.put(SHOW_DATA, parentColumns);
+        result.put(SHOW_DATA, resultCols);
         return AjaxResult.success(result);
     }
 

+ 1 - 1
boman-web-core/src/main/java/com/boman/web/core/utils/IdUtils.java

@@ -46,7 +46,7 @@ public class IdUtils {
         }
 
         for (GenTableColumn tableColumn : columnList) {
-            if ("1".equalsIgnoreCase(tableColumn.getIsPk())) {
+            if (GenTableColumn.IS_PK.equalsIgnoreCase(tableColumn.getIsPk())) {
                 return requireNonNull(tableColumn.getColumnName(), "主键名称为空");
             }
         }