From f652e52141fc11a75a94bc024cccfde40ecbf16b Mon Sep 17 00:00:00 2001 From: "han\\hanst" Date: Fri, 24 Jul 2026 16:16:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=8A=A0=E5=AD=97=E6=AE=B5=E4=B9=9F?= =?UTF-8?q?=E5=8F=AF=E4=BB=A5=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/GridTableUserServiceImpl.java | 38 +++++++++++++------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/xujie/sys/modules/grid/service/impl/GridTableUserServiceImpl.java b/src/main/java/com/xujie/sys/modules/grid/service/impl/GridTableUserServiceImpl.java index 0e61d2e0..1033a56f 100644 --- a/src/main/java/com/xujie/sys/modules/grid/service/impl/GridTableUserServiceImpl.java +++ b/src/main/java/com/xujie/sys/modules/grid/service/impl/GridTableUserServiceImpl.java @@ -10,7 +10,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Comparator; -import java.util.HashSet; import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -76,21 +75,35 @@ public class GridTableUserServiceImpl extends ServiceImpl getTableUserListLanguage(GridTableUserQuery gridTableUserQuery) { List result = gridTableUserDao.getTableUserListLanguage(gridTableUserQuery); List defaultColumns = gridTableUserDao.getTableUserListLanguageDefault(gridTableUserQuery); - if(result.size()==0){ - if(defaultColumns.size()>0){ + if(result.isEmpty()){ + long userConfigCount = lambdaQuery() + .eq(GridTableUser::getUserId, gridTableUserQuery.getUserId()) + .eq(GridTableUser::getFunctionId, gridTableUserQuery.getFunctionId()) + .eq(GridTableUser::getTableId, gridTableUserQuery.getTableId()) + .count(); + // 仅在“用户完全没有配置”时才初始化默认列,避免覆盖“全部隐藏”场景 + if(!defaultColumns.isEmpty() && userConfigCount == 0){ saveGridTableUserList(defaultColumns); + return defaultColumns; } - return defaultColumns; + return result; } - if (defaultColumns.size() == 0) { + if (defaultColumns.isEmpty()) { return result; } - Set existingColumnProps = new HashSet<>(); - Integer maxSortLv = 0; + Set allExistingColumnProps = lambdaQuery() + .eq(GridTableUser::getUserId, gridTableUserQuery.getUserId()) + .eq(GridTableUser::getFunctionId, gridTableUserQuery.getFunctionId()) + .eq(GridTableUser::getTableId, gridTableUserQuery.getTableId()) + .list() + .stream() + .map(GridTableUser::getColumnProp) + .collect(Collectors.toSet()); + + int maxSortLv = 0; for (GridTableUser gridTableUser : result) { - existingColumnProps.add(gridTableUser.getColumnProp()); if (gridTableUser.getSortLv() != null && gridTableUser.getSortLv() > maxSortLv) { maxSortLv = gridTableUser.getSortLv(); } @@ -99,7 +112,8 @@ public class GridTableUserServiceImpl extends ServiceImpl appendColumns = new ArrayList<>(); for (GridTableUser defaultColumn : defaultColumns) { - if (existingColumnProps.contains(defaultColumn.getColumnProp())) { + // 已有用户配置(无论显示/隐藏)都不再补回,防止隐藏列被误展示 + if (allExistingColumnProps.contains(defaultColumn.getColumnProp())) { continue; } GridTableUser appendColumn = new GridTableUser(); @@ -109,8 +123,8 @@ public class GridTableUserServiceImpl extends ServiceImpl