|
@@ -84,7 +84,7 @@ public class ColumnUtils {
|
|
* 功能描述: 把新增可见或者修改可见或者.....的列过滤出来
|
|
* 功能描述: 把新增可见或者修改可见或者.....的列过滤出来
|
|
*
|
|
*
|
|
* @param allColumns 所有的列
|
|
* @param allColumns 所有的列
|
|
- * @param sort 那六个1的顺序 [1,1,1,1,1,1]
|
|
|
|
|
|
+ * @param maskIndex 那六个1的顺序 [1,1,1,1,1,1]
|
|
* sort=0 => 新增可见
|
|
* sort=0 => 新增可见
|
|
* sort=1 => 新增可修改
|
|
* sort=1 => 新增可修改
|
|
* sort=2 => 修改可见
|
|
* sort=2 => 修改可见
|
|
@@ -93,52 +93,65 @@ public class ColumnUtils {
|
|
* sort=5 => 列表可修改
|
|
* sort=5 => 列表可修改
|
|
* @return List<GenTableColumn>
|
|
* @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);
|
|
List<GenTableColumn> returnData = Lists.newArrayListWithCapacity(16);
|
|
for (GenTableColumn allColumn : allColumns) {
|
|
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;
|
|
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 allColumns 所有的列
|
|
- * @param sort 那六个1的顺序 [1,1,1,1,1,1]
|
|
|
|
|
|
+ * @param maskIndex 那六个1的顺序 [1,1,1,1,1,1]
|
|
* sort=0 => 新增可见
|
|
* sort=0 => 新增可见
|
|
* sort=1 => 新增可修改
|
|
* sort=1 => 新增可修改
|
|
* sort=2 => 修改可见
|
|
* sort=2 => 修改可见
|
|
* sort=3 => 修改可修改
|
|
* sort=3 => 修改可修改
|
|
* sort=4 => 列表可见
|
|
* sort=4 => 列表可见
|
|
* sort=5 => 列表可修改
|
|
* 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) {
|
|
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;
|
|
return returnData;
|
|
@@ -148,54 +161,45 @@ public class ColumnUtils {
|
|
* 功能描述: 按照predicate的规则过滤allColumns中包含data并且符合过滤规则的数据, <p>过滤掉hr !!!</p>
|
|
* 功能描述: 按照predicate的规则过滤allColumns中包含data并且符合过滤规则的数据, <p>过滤掉hr !!!</p>
|
|
*
|
|
*
|
|
* @param allColumns 所有的列
|
|
* @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
|
|
* @param predicate predicate
|
|
* @return JSONArray
|
|
* @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();
|
|
JSONArray returnData = new JSONArray();
|
|
boolean dataIsEmpty = isEmpty(data);
|
|
boolean dataIsEmpty = isEmpty(data);
|
|
if (dataIsEmpty) {
|
|
if (dataIsEmpty) {
|
|
// data为空,拿出所有列中列表可见的
|
|
// 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 {
|
|
} else {
|
|
// data不为空,拿出前端传过来的列中可见的
|
|
// data不为空,拿出前端传过来的列中可见的
|
|
for (GenTableColumn allColumn : allColumns) {
|
|
for (GenTableColumn allColumn : allColumns) {
|
|
String columnName = allColumn.getColumnName();
|
|
String columnName = allColumn.getColumnName();
|
|
- if (HR.equalsIgnoreCase(allColumn.getHtmlType())) {
|
|
|
|
|
|
+ if (HR.equals(allColumn.getHtmlType())) {
|
|
continue;
|
|
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;
|
|
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) {
|
|
public static String parseVariables(String variables) {
|
|
return variables.replaceAll("\\$", "");
|
|
return variables.replaceAll("\\$", "");
|
|
}
|
|
}
|
|
@@ -326,21 +330,18 @@ public class ColumnUtils {
|
|
* @return java.util.List<com.boman.domain.GenTableColumn>
|
|
* @return java.util.List<com.boman.domain.GenTableColumn>
|
|
*/
|
|
*/
|
|
public static List<GenTableColumn> filterHrAndSort(List<GenTableColumn> allColumns) {
|
|
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))
|
|
.sorted(Comparator.comparing(GenTableColumn::getSort))
|
|
.collect(Collectors.toList());
|
|
.collect(Collectors.toList());
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
public static List<GenTableColumn> withHr(List<GenTableColumn> columns) {
|
|
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) {
|
|
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()));
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|