فهرست منبع

Merge remote-tracking branch 'origin/master'

Administrator 4 سال پیش
والد
کامیت
1b717a4ca2

+ 1 - 1
boman-api/boman-domain/src/main/java/com.boman.domain/constant/FormDataConstant.java

@@ -153,7 +153,7 @@ public class FormDataConstant {
     public static final List<String> NEED_CONVERT_DATE_LIST = Stream.of(DATETIME).collect(Collectors.toList());
 
     /**  hr 日志、基础信息..... */
-    public static final String HR = "hr";
+    public static final String HR = "HR";
 
     /**  返回单对象时,封装的name..... */
     public static final String SINGLE_OBJ_NAME = "name";

+ 6 - 0
boman-api/boman-domain/src/main/java/com.boman.domain/constant/MaskConstant.java

@@ -13,12 +13,18 @@ public class MaskConstant {
     /**  新增可见  **/
     public static final String INSERT_VISIBLE = "1";
 
+    /**  新增不可见  **/
+    public static final String INSERT_NOT_VISIBLE = "0";
+
     /**  修改可修改  **/
     public static final String UPDATE_CAN_EDIT = "1";
 
     /**  修改可见  **/
     public static final String UPDATE_VISIBLE = "1";
 
+    /**  修改不可见  **/
+    public static final String UPDATE_NOT_VISIBLE = "0";
+
     /**  列表可见  **/
     public static final String LIST_VISIBLE = "1";
 

+ 16 - 21
boman-web-core/src/main/java/com/boman/web/core/service/TableServiceCmdService.java

@@ -40,7 +40,6 @@ import org.springframework.web.client.RestTemplate;
 
 import javax.annotation.Resource;
 import java.sql.Timestamp;
-import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
@@ -51,6 +50,7 @@ import static com.boman.common.core.constant.GenConstants.HTML_FILE_UPLOAD;
 import static com.boman.common.core.constant.GenConstants.HTML_IMAGE_UPLOAD;
 import static com.boman.common.core.utils.obj.ObjectUtils.*;
 import static com.boman.domain.constant.FormDataConstant.*;
+import static com.boman.domain.constant.MaskConstant.*;
 import static com.boman.web.core.utils.AuthUtils.*;
 import static com.boman.web.core.utils.ColumnUtils.*;
 import static com.boman.web.core.utils.HandlerFormDataUtils.*;
@@ -289,7 +289,7 @@ public class TableServiceCmdService {
 
         // extend的字段标记为true
         markTrueByExtend(columns);
-        List<GenTableColumn> updateVisibleColumns = filterData(columns, 2, MaskConstant.UPDATE_VISIBLE::equals);
+        List<GenTableColumn> updateVisibleColumns = filterData(columns, 2, UPDATE_VISIBLE::equals);
         List<String> showData = map(updateVisibleColumns, GenTableColumn::getColumnName);
         String pkName = IdUtils.getPkName(genTable.getColumns());
 
@@ -302,6 +302,7 @@ public class TableServiceCmdService {
         // 处理blob
         handleBlob(jsonList, genTable.getIsContainsBlob());
         List<GenTableColumn> parentColumns = filterHrAndSort(columns);
+        removeColumnsByMask(parentColumns, 2, UPDATE_NOT_VISIBLE::equals);
 
         //接收可能存在的cssClass
         String cssClass = null;
@@ -673,44 +674,38 @@ public class TableServiceCmdService {
      * @return com.boman.common.core.web.domain.AjaxResult
      */
     public AjaxResult getByTableName(GenTable genTable, Boolean isUi) {
+        int insertVisibleMaskMark = 0;
         String tableName = genTable.getTableName();
         List<GenTableColumn> allColumns = genTable.getColumns();
-        List<GenTableColumn> parentColumns = filterHrAndSort(allColumns);
+        List<GenTableColumn> hrs = filterHrAndSort(allColumns);
         List<GenTableColumn> resultCols;
-        // extend的字段标记为true
         markTrueByExtend(allColumns);
-        // 所有新增可见的列
-        List<GenTableColumn> insertVisiableColumns = filterData(allColumns, 0, MaskConstant.INSERT_VISIBLE::equals);
-//        insertVisiableColumns.add(IdUtils.getPkColumn(allColumns));
+        List<GenTableColumn> insertVisibleColumns = filterData(allColumns, insertVisibleMaskMark, INSERT_VISIBLE::equals);
         // 带折叠
         if (BooleanUtils.isTrue(isUi)) {
-            // 把孩子放入父亲的怀抱
-            for (GenTableColumn hrColumn : parentColumns) {
+            removeColumnsByMask(hrs, insertVisibleMaskMark, INSERT_NOT_VISIBLE::equals);
+            for (GenTableColumn hr : hrs) {
+                Long parentId = hr.getId();
                 List<GenTableColumn> children = Lists.newArrayListWithCapacity(16);
-                for (GenTableColumn column : insertVisiableColumns) {
-                    if (hrColumn.getId().equals(column.getHrParentId())) {
-//                        if (GenTableColumn.IS_PK.equals(column.getIsPk())) {
-//                            column.setColumnValue(-1);
-//                        }
-
+                for (GenTableColumn column : insertVisibleColumns) {
+                    if (parentId.equals(column.getHrParentId())) {
                         children.add(column);
-
                     }
                 }
-                hrColumn.setHrChildren(children);
+
+                hr.setHrChildren(children);
             }
 
-            resultCols = parentColumns;
+            resultCols = hrs;
         } else {
             // 不带折叠
-            // packDictDataToColumns(allColumns, ObjectUtils::isNotEmpty);
-            resultCols = insertVisiableColumns;
+            resultCols = insertVisibleColumns;
         }
 
         JSONObject result = new JSONObject();
         result.put(BUTTON_LIST, getButton(tableName));
         result.put(SHOW_DATA, resultCols);
-        result.put(RULES, packRequireColumn(insertVisiableColumns));
+        result.put(RULES, packRequireColumn(insertVisibleColumns));
         Integer tableColumn = genTable.getTableColumn();
         if (tableColumn != null){
             result.put(TABLE_COLUMN,tableColumn);

+ 59 - 58
boman-web-core/src/main/java/com/boman/web/core/utils/ColumnUtils.java

@@ -84,7 +84,7 @@ public class ColumnUtils {
      * 功能描述: 把新增可见或者修改可见或者.....的列过滤出来
      *
      * @param allColumns 所有的列
-     * @param sort       那六个1的顺序 [1,1,1,1,1,1]
+     * @param maskIndex       那六个1的顺序 [1,1,1,1,1,1]
      *                   sort=0  =>  新增可见
      *                   sort=1  =>  新增可修改
      *                   sort=2  =>  修改可见
@@ -93,52 +93,65 @@ public class ColumnUtils {
      *                   sort=5  =>  列表可修改
      * @return List<GenTableColumn>
      */
-    public static List<GenTableColumn> filterData(List<GenTableColumn> allColumns, int sort, Predicate<String> predicate) {
-        assert sort < 6;
+    public static List<GenTableColumn> filterData(List<GenTableColumn> allColumns, int maskIndex, Predicate<String> predicate) {
+        assert maskIndex < 6;
         List<GenTableColumn> returnData = Lists.newArrayListWithCapacity(16);
         for (GenTableColumn allColumn : allColumns) {
-            if (!HR.equalsIgnoreCase(allColumn.getHtmlType())) {
-                String[] maskArray = requireNonNull(allColumn.getMask(), "mask is empty").split("");
-                assert maskArray.length == 6;
-                // sort
-                String insertVisible = maskArray[sort];
-                if (predicate.test(insertVisible)) {
-                    returnData.add(allColumn);
-                }
+            if (HR.equals(allColumn.getHtmlType())) {
+                continue;
+            }
+
+            if (checkMask(maskIndex, allColumn, predicate)) {
+                returnData.add(allColumn);
             }
         }
 
         return returnData;
     }
 
+    /**
+     * 功能描述: 判断mask  == 0 返回true
+     *
+     * @param maskIndex mask的索引
+     * @param column    column
+     * @param predicate predicate 注意传的是1还是0
+     * @return boolean
+     */
+    public static boolean checkMask(int maskIndex, GenTableColumn column, Predicate<String> predicate) {
+        String mask = column.getMask();
+        String columnName = column.getColumnName();
+        String tableName = column.getTableName();
+        String errorMsg = String.format("mask is empty, tableName = [ %s ], columnName = [ %s ]", tableName, columnName);
+        String[] maskArray = requireNonNull(mask, errorMsg).split("");
+        assert maskArray.length == 6;
+        String maskMark = maskArray[maskIndex];
+        return predicate.test(maskMark);
+    }
 
     /**
      * 功能描述: 把新增可见或者修改可见或者.....的列名过滤出来
      *
      * @param allColumns 所有的列
-     * @param sort       那六个1的顺序 [1,1,1,1,1,1]
+     * @param maskIndex  那六个1的顺序 [1,1,1,1,1,1]
      *                   sort=0  =>  新增可见
      *                   sort=1  =>  新增可修改
      *                   sort=2  =>  修改可见
      *                   sort=3  =>  修改可修改
      *                   sort=4  =>  列表可见
      *                   sort=5  =>  列表可修改
-     * @return List<GenTableColumn>
+     * @return JSONArray
      */
-    public static List<String> filterMaskColumnName(List<GenTableColumn> allColumns, int sort, Predicate<String> predicate) {
-        assert sort < 6;
-        List<String> returnData = Lists.newArrayListWithCapacity(16);
+    public static JSONArray filterMaskColumnName(List<GenTableColumn> allColumns, int maskIndex, Predicate<String> predicate) {
+        assert maskIndex < 6;
+        JSONArray returnData = new JSONArray(16);
         for (GenTableColumn allColumn : allColumns) {
-            if (!HR.equalsIgnoreCase(allColumn.getHtmlType())) {
-                String[] maskArray = requireNonNull(allColumn.getMask(), "mask is empty").split("");
-                assert maskArray.length == 6;
-                // sort
-                String insertVisible = maskArray[sort];
-                if (predicate.test(insertVisible)) {
-                    returnData.add(allColumn.getColumnName());
-                }
+            if (HR.equals(allColumn.getHtmlType())) {
+                continue;
             }
 
+            if (checkMask(maskIndex, allColumn, predicate)) {
+                returnData.add(allColumn.getColumnName());
+            }
         }
 
         return returnData;
@@ -148,54 +161,45 @@ public class ColumnUtils {
      * 功能描述: 按照predicate的规则过滤allColumns中包含data并且符合过滤规则的数据, <p>过滤掉hr !!!</p>
      *
      * @param allColumns 所有的列
-     * @param sort       同{@link ColumnUtils#filterData(java.util.List, int, java.util.function.Predicate)}
-     * @param data       从其中过滤符合规则的数据,data中字符串全部是大写的
+     * @param maskIndex  同{@link ColumnUtils#filterData(java.util.List, int, java.util.function.Predicate)}
+     * @param data       从其中过滤符合规则的数据
      * @param predicate  predicate
      * @return JSONArray
      */
-    public static JSONArray filterData(List<GenTableColumn> allColumns, int sort, JSONArray data, Predicate<String> predicate) {
-        assert sort < 6;
+    public static JSONArray filterData(List<GenTableColumn> allColumns, int maskIndex, JSONArray data, Predicate<String> predicate) {
+        assert maskIndex < 6;
         JSONArray returnData = new JSONArray();
         boolean dataIsEmpty = isEmpty(data);
         if (dataIsEmpty) {
             // data为空,拿出所有列中列表可见的
-            for (GenTableColumn allColumn : allColumns) {
-                if (HR.equalsIgnoreCase(allColumn.getHtmlType())) {
-                    continue;
-                }
-
-                String columnName = allColumn.getColumnName();
-                String mask = requireNonNull(allColumn.getMask(), "mask is empty, columnName = [" + allColumn.getColumnName() + "]");
-                String[] maskArray = mask.split("");
-                assert maskArray.length == 6;
-                String maskValue = maskArray[sort];
-                if (predicate.test(maskValue)) {
-                    returnData.add(columnName);
-                }
-            }
+            returnData = filterMaskColumnName(allColumns, maskIndex, predicate);
         } else {
             // data不为空,拿出前端传过来的列中可见的
             for (GenTableColumn allColumn : allColumns) {
                 String columnName = allColumn.getColumnName();
-                if (HR.equalsIgnoreCase(allColumn.getHtmlType())) {
+                if (HR.equals(allColumn.getHtmlType())) {
                     continue;
                 }
-                if (data.contains(columnName.toUpperCase()) || data.contains(columnName.toLowerCase())) {
-                    String mask = requireNonNull(allColumn.getMask(), "mask is empty, columnName = [" + allColumn.getColumnName() + "]");
-                    String[] maskArray = mask.split("");
-                    assert maskArray.length == 6;
-                    String maskValue = maskArray[sort];
-                    if (predicate.test(maskValue)) {
-                        returnData.add(columnName);
-                    }
+
+                // 如果需要展示的列中包含此列,并且此列又满足 predicate 的条件, 则添加进去
+                if (data.contains(columnName) && checkMask(maskIndex, allColumn, predicate)) {
+                    returnData.add(columnName);
                 }
             }
         }
 
-
         return returnData;
     }
 
+    /**
+     * 功能描述: 判断hr的mask,如果为0则则移除
+     *
+     * @param columns columns
+     */
+    public static void removeColumnsByMask(List<GenTableColumn> columns, int maskIndex, Predicate<String> predicate) {
+        columns.removeIf(next -> checkMask(maskIndex, next, predicate));
+    }
+
     public static String parseVariables(String variables) {
         return variables.replaceAll("\\$", "");
     }
@@ -326,21 +330,18 @@ public class ColumnUtils {
      * @return java.util.List<com.boman.domain.GenTableColumn>
      */
     public static List<GenTableColumn> filterHrAndSort(List<GenTableColumn> allColumns) {
-        requireNonNull(allColumns, "columns is empty");
-        return allColumns.stream().filter(col -> HR.equalsIgnoreCase(col.getHtmlType()))
+        return allColumns.stream().filter(col -> HR.equals(col.getHtmlType()))
                 .sorted(Comparator.comparing(GenTableColumn::getSort))
                 .collect(Collectors.toList());
     }
 
 
     public static List<GenTableColumn> withHr(List<GenTableColumn> columns) {
-        requireNonNull(columns, "columns is empty");
-        return filter(columns, col -> HR.equalsIgnoreCase(col.getHtmlType()));
+        return filter(columns, col -> HR.equals(col.getHtmlType()));
     }
 
     public static List<GenTableColumn> withoutHr(List<GenTableColumn> columns) {
-        requireNonNull(columns, "columns is empty");
-        return filter(columns, col -> !HR.equalsIgnoreCase(col.getHtmlType()));
+        return filter(columns, col -> !HR.equals(col.getHtmlType()));
     }
 
     /**