From beaa48e49a6f94fafdf9849ed7b0a6646e1e475a Mon Sep 17 00:00:00 2001 From: linbangquan <1437892690@qq.com> Date: Mon, 18 Mar 2024 18:10:31 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E7=9F=A9=E9=98=B5?= =?UTF-8?q?=E7=AE=A1=E7=90=86-=E5=A2=9E=E5=8A=A0=E5=87=BA=E5=8E=82?= =?UTF-8?q?=E8=87=AA=E5=B8=A6=E7=9A=84=E7=94=A8=E6=88=B7=E3=80=81=E5=88=86?= =?UTF-8?q?=E7=BB=84=E3=80=81=E8=A7=92=E8=89=B2=E4=B8=89=E4=B8=AA=E7=9F=A9?= =?UTF-8?q?=E9=98=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1021566328995840]矩阵管理-增加出厂自带的用户、分组、角色三个矩阵 http://192.168.0.96:8090/demo/rdm.html#/story-detail/939050947543040/939050947543042/1021566328995840 --- .../framework/dao/mapper/RoleMapper.xml | 3 - .../framework/dao/mapper/TeamMapper.java | 3 +- .../framework/dao/mapper/TeamMapper.xml | 59 ++++++++---- .../framework/dao/mapper/UserMapper.java | 3 +- .../framework/dao/mapper/UserMapper.xml | 48 +++++----- .../framework/matrix/dto/MatrixDataVo.java | 6 +- .../RoleMatrixPrivateDataSourceHandler.java | 11 ++- .../TeamMatrixPrivateDataSourceHandler.java | 69 +++++++++++--- .../UserMatrixPrivateDataSourceHandler.java | 93 +++++++++++++++---- 9 files changed, 210 insertions(+), 85 deletions(-) diff --git a/src/main/java/neatlogic/framework/dao/mapper/RoleMapper.xml b/src/main/java/neatlogic/framework/dao/mapper/RoleMapper.xml index 12789a74a..07f094222 100644 --- a/src/main/java/neatlogic/framework/dao/mapper/RoleMapper.xml +++ b/src/main/java/neatlogic/framework/dao/mapper/RoleMapper.xml @@ -413,9 +413,6 @@ along with this program. If not, see .--> - - AND (`name` LIKE CONCAT('%', #{keyword}, '%') OR `description` LIKE CONCAT('%', #{keyword}, '%')) - AND diff --git a/src/main/java/neatlogic/framework/dao/mapper/TeamMapper.java b/src/main/java/neatlogic/framework/dao/mapper/TeamMapper.java index a6fb9f196..fa7e7e071 100644 --- a/src/main/java/neatlogic/framework/dao/mapper/TeamMapper.java +++ b/src/main/java/neatlogic/framework/dao/mapper/TeamMapper.java @@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param; import java.util.Date; import java.util.List; +import java.util.Map; public interface TeamMapper { TeamVo getTeam(TeamVo teamVo); @@ -78,7 +79,7 @@ public interface TeamMapper { int searchTeamCountForMatrix(MatrixDataVo searchVo); - List searchTeamListForMatrix(MatrixDataVo searchVo); + List> searchTeamListForMatrix(MatrixDataVo searchVo); int insertTeam(TeamVo teamVo); diff --git a/src/main/java/neatlogic/framework/dao/mapper/TeamMapper.xml b/src/main/java/neatlogic/framework/dao/mapper/TeamMapper.xml index 2b702fe26..1ca046236 100644 --- a/src/main/java/neatlogic/framework/dao/mapper/TeamMapper.xml +++ b/src/main/java/neatlogic/framework/dao/mapper/TeamMapper.xml @@ -562,8 +562,10 @@ along with this program. If not, see .--> - - AND (a.`name` LIKE CONCAT('%', #{keyword}, '%') OR a.`description` LIKE CONCAT('%', #{keyword}, '%')) + + + ${notColumn} IS NOT NULL + AND @@ -647,27 +649,48 @@ along with this program. If not, see .--> - + - SELECT - a.`id`, - a.`uuid`, - a.`name`, - a.`description`, - a.`parent_uuid` AS parentUuid, - a.`is_delete` AS isDelete - FROM `team` a - left join `team` b on b.`uuid` = a.`parent_uuid` - WHERE a.`is_delete` = 0 - + COUNT(1) + FROM ( + SELECT DISTINCT + + `${column}` + + FROM ( + + ) a + + + + ) b + + + diff --git a/src/main/java/neatlogic/framework/dao/mapper/UserMapper.java b/src/main/java/neatlogic/framework/dao/mapper/UserMapper.java index d479a0604..da180c2fd 100644 --- a/src/main/java/neatlogic/framework/dao/mapper/UserMapper.java +++ b/src/main/java/neatlogic/framework/dao/mapper/UserMapper.java @@ -21,6 +21,7 @@ import org.apache.ibatis.annotations.Param; import java.util.Date; import java.util.List; +import java.util.Map; public interface UserMapper { String getUserTokenByUserId(String userId); @@ -188,7 +189,7 @@ public interface UserMapper { int searchUserCountForMatrix(MatrixDataVo searchVo); - List searchUserListForMatrix(MatrixDataVo searchVo); + List> searchUserListForMatrix(MatrixDataVo searchVo); int insertUserAuth(UserAuthVo userAuthVo); diff --git a/src/main/java/neatlogic/framework/dao/mapper/UserMapper.xml b/src/main/java/neatlogic/framework/dao/mapper/UserMapper.xml index 5dd7c717b..c896a81a2 100644 --- a/src/main/java/neatlogic/framework/dao/mapper/UserMapper.xml +++ b/src/main/java/neatlogic/framework/dao/mapper/UserMapper.xml @@ -1180,8 +1180,10 @@ along with this program. If not, see .--> - - AND (a.`user_id` LIKE CONCAT('%', #{keyword}, '%') OR a.`user_name` LIKE CONCAT('%', #{keyword}, '%')) + + + ${notColumn} IS NOT NULL + AND @@ -1269,14 +1271,14 @@ along with this program. If not, see .--> SELECT a.`id`, a.`uuid`, - a.`user_id`, - a.`user_name`, + a.`user_id` AS userId, + a.`user_name` AS userName, a.`email`, a.`phone`, - a.`vip_level`, - a.`is_active`, - a.`is_delete`, - GROUP_CONCAT(`c`.`name` SEPARATOR ',') AS `team_name` + a.`vip_level` AS vipLevel, + a.`is_active` AS isActive, + a.`is_delete` AS isDelete, + GROUP_CONCAT(`c`.`name` SEPARATOR ',') AS `teamName` FROM `user` a left join `user_team` b on b.`user_uuid` = a.`uuid` left join `team` c on c.`uuid` = b.`team_uuid` @@ -1289,24 +1291,24 @@ along with this program. If not, see .--> SELECT COUNT(1) FROM ( + SELECT DISTINCT + + `${column}` + + FROM ( - ) a - - - + ) a + + + + ) b - + SELECT DISTINCT + + `${column}` + FROM ( ) a diff --git a/src/main/java/neatlogic/framework/matrix/dto/MatrixDataVo.java b/src/main/java/neatlogic/framework/matrix/dto/MatrixDataVo.java index 666adf5b0..17e6cf33e 100644 --- a/src/main/java/neatlogic/framework/matrix/dto/MatrixDataVo.java +++ b/src/main/java/neatlogic/framework/matrix/dto/MatrixDataVo.java @@ -46,7 +46,7 @@ public class MatrixDataVo extends BasePageVo { /** * 查询数据时不能为空的column列表 */ - private List NotNullColumnList; + private List notNullColumnList; public String getMatrixUuid() { return matrixUuid; } @@ -201,10 +201,10 @@ public class MatrixDataVo extends BasePageVo { } public List getNotNullColumnList() { - return NotNullColumnList; + return notNullColumnList; } public void setNotNullColumnList(List notNullColumnList) { - NotNullColumnList = notNullColumnList; + this.notNullColumnList = notNullColumnList; } } diff --git a/src/main/java/neatlogic/module/framework/matrix/privatedatasource/handler/RoleMatrixPrivateDataSourceHandler.java b/src/main/java/neatlogic/module/framework/matrix/privatedatasource/handler/RoleMatrixPrivateDataSourceHandler.java index 1f104fdb9..37b4dca2e 100644 --- a/src/main/java/neatlogic/module/framework/matrix/privatedatasource/handler/RoleMatrixPrivateDataSourceHandler.java +++ b/src/main/java/neatlogic/module/framework/matrix/privatedatasource/handler/RoleMatrixPrivateDataSourceHandler.java @@ -98,6 +98,7 @@ public class RoleMatrixPrivateDataSourceHandler implements IMatrixPrivateDataSou MatrixDataVo searchVo = matrixDataVoConvertSearchCondition(dataVo); int rowNum = roleMapper.searchRoleCountForMatrix(searchVo); if (rowNum > 0) { + dataVo.setRowNum(rowNum); searchVo.setRowNum(rowNum); roleList = roleMapper.searchRoleListForMatrix(searchVo); } @@ -106,9 +107,13 @@ public class RoleMatrixPrivateDataSourceHandler implements IMatrixPrivateDataSou } private MatrixDataVo matrixDataVoConvertSearchCondition(MatrixDataVo dataVo) { + MatrixDataVo newDataVo = new MatrixDataVo(); + newDataVo.setCurrentPage(dataVo.getCurrentPage()); + newDataVo.setPageSize(dataVo.getPageSize()); + newDataVo.setNeedPage(dataVo.getNeedPage()); List filterList = dataVo.getFilterList(); if (CollectionUtils.isEmpty(filterList)) { - return dataVo; + return newDataVo; } List newFilterList = new ArrayList<>(); for (MatrixFilterVo filter : filterList) { @@ -136,8 +141,8 @@ public class RoleMatrixPrivateDataSourceHandler implements IMatrixPrivateDataSou newFilterList.add(new MatrixFilterVo("description", filter.getExpression(), filter.getValueList())); } } - dataVo.setFilterList(newFilterList); - return dataVo; + newDataVo.setFilterList(newFilterList); + return newDataVo; } private List> roleListConvertDataList(List roleList) { diff --git a/src/main/java/neatlogic/module/framework/matrix/privatedatasource/handler/TeamMatrixPrivateDataSourceHandler.java b/src/main/java/neatlogic/module/framework/matrix/privatedatasource/handler/TeamMatrixPrivateDataSourceHandler.java index 0395ef5e3..2290b5f45 100644 --- a/src/main/java/neatlogic/module/framework/matrix/privatedatasource/handler/TeamMatrixPrivateDataSourceHandler.java +++ b/src/main/java/neatlogic/module/framework/matrix/privatedatasource/handler/TeamMatrixPrivateDataSourceHandler.java @@ -11,6 +11,7 @@ import neatlogic.framework.matrix.dto.MatrixDataVo; import neatlogic.framework.matrix.dto.MatrixFilterVo; import neatlogic.framework.util.UuidUtil; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; @@ -95,29 +96,71 @@ public class TeamMatrixPrivateDataSourceHandler implements IMatrixPrivateDataSou if (CollectionUtils.isNotEmpty(defaultValue)) { List uuidList = defaultValue.toJavaList(String.class); teamList = teamMapper.getTeamListContainsDeletedByUuidList(uuidList); + if (CollectionUtils.isNotEmpty(teamList)) { + List parentUuidList = teamList.stream().map(TeamVo::getParentUuid).collect(Collectors.toList()); + List parentList = teamMapper.getTeamListContainsDeletedByUuidList(parentUuidList); + Map map = parentList.stream().collect(Collectors.toMap(TeamVo::getUuid, TeamVo::getName)); + for (TeamVo teamVo : teamList) { + teamVo.setParentName(map.get(teamVo.getParentUuid())); + } + } + return teamListConvertDataList(teamList); } else { + List> resultList = new ArrayList<>(); MatrixDataVo searchVo = matrixDataVoConvertSearchCondition(dataVo); int rowNum = teamMapper.searchTeamCountForMatrix(searchVo); if (rowNum > 0) { + dataVo.setRowNum(rowNum); searchVo.setRowNum(rowNum); - teamList = teamMapper.searchTeamListForMatrix(searchVo); - } - } - if (CollectionUtils.isNotEmpty(teamList)) { - List parentUuidList = teamList.stream().map(TeamVo::getParentUuid).collect(Collectors.toList()); - List parentList = teamMapper.getTeamListContainsDeletedByUuidList(parentUuidList); - Map map = parentList.stream().collect(Collectors.toMap(TeamVo::getUuid, TeamVo::getName)); - for (TeamVo teamVo : teamList) { - teamVo.setParentName(map.get(teamVo.getParentUuid())); + List> list = teamMapper.searchTeamListForMatrix(searchVo); + for (Map map : list) { + if (MapUtils.isEmpty(map)) { + continue; + } + Map newMap = new HashMap<>(); + for (String column : searchVo.getColumnList()) { + Object value = map.get(column); + if (value != null) { + newMap.put(columnsMap.get(column), value.toString()); + } else { + newMap.put(columnsMap.get(column), ""); + } + } + resultList.add(newMap); + } } + return resultList; } - return teamListConvertDataList(teamList); } private MatrixDataVo matrixDataVoConvertSearchCondition(MatrixDataVo dataVo) { + MatrixDataVo newDataVo = new MatrixDataVo(); + newDataVo.setCurrentPage(dataVo.getCurrentPage()); + newDataVo.setPageSize(dataVo.getPageSize()); + newDataVo.setNeedPage(dataVo.getNeedPage()); + List columnList = new ArrayList<>(); + for (String column : dataVo.getColumnList()) { + for(MatrixAttributeVo matrixAttributeVo : matrixAttributeList){ + if (Objects.equals(matrixAttributeVo.getUuid(), column)) { + columnList.add(matrixAttributeVo.getLabel()); + } + } + } + newDataVo.setColumnList(columnList); + if (CollectionUtils.isNotEmpty(dataVo.getNotNullColumnList())) { + List notNullColumnList = new ArrayList<>(); + for (String notNullColumn : dataVo.getNotNullColumnList()) { + for (MatrixAttributeVo matrixAttributeVo : matrixAttributeList) { + if (Objects.equals(matrixAttributeVo.getUuid(), notNullColumn)) { + notNullColumnList.add(matrixAttributeVo.getLabel()); + } + } + } + newDataVo.setNotNullColumnList(notNullColumnList); + } List filterList = dataVo.getFilterList(); if (CollectionUtils.isEmpty(filterList)) { - return dataVo; + return newDataVo; } List newFilterList = new ArrayList<>(); for (MatrixFilterVo filter : filterList) { @@ -142,10 +185,10 @@ public class TeamMatrixPrivateDataSourceHandler implements IMatrixPrivateDataSou } else if (columnsMap.get("name").equals(uuid)) { newFilterList.add(new MatrixFilterVo("a.`name`", filter.getExpression(), filter.getValueList())); } else if (columnsMap.get("parentName").equals(uuid)) { - newFilterList.add(new MatrixFilterVo("b.`name`", filter.getExpression(), filter.getValueList())); + newFilterList.add(new MatrixFilterVo("a.`parentName`", filter.getExpression(), filter.getValueList())); } } - dataVo.setFilterList(newFilterList); + newDataVo.setFilterList(newFilterList); return dataVo; } diff --git a/src/main/java/neatlogic/module/framework/matrix/privatedatasource/handler/UserMatrixPrivateDataSourceHandler.java b/src/main/java/neatlogic/module/framework/matrix/privatedatasource/handler/UserMatrixPrivateDataSourceHandler.java index 49676c1cb..f60426d6e 100644 --- a/src/main/java/neatlogic/module/framework/matrix/privatedatasource/handler/UserMatrixPrivateDataSourceHandler.java +++ b/src/main/java/neatlogic/module/framework/matrix/privatedatasource/handler/UserMatrixPrivateDataSourceHandler.java @@ -13,6 +13,7 @@ import neatlogic.framework.matrix.dto.MatrixDataVo; import neatlogic.framework.matrix.dto.MatrixFilterVo; import neatlogic.framework.util.UuidUtil; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; @@ -88,7 +89,7 @@ public class UserMatrixPrivateDataSourceHandler implements IMatrixPrivateDataSou { JSONObject jsonObj = new JSONObject(); jsonObj.put("name", "所属组"); - jsonObj.put("label", "teamNameList"); + jsonObj.put("label", "teamName"); jsonObj.put("isPrimaryKey", 0); jsonObj.put("isSearchable", 1); attributeDefinedList.add(jsonObj); @@ -127,33 +128,83 @@ public class UserMatrixPrivateDataSourceHandler implements IMatrixPrivateDataSou @Override public List> searchTableData(MatrixDataVo dataVo) { - List userList = new ArrayList<>(); JSONArray defaultValue = dataVo.getDefaultValue(); if (CollectionUtils.isNotEmpty(defaultValue)) { List uuidList = defaultValue.toJavaList(String.class); + List userList = new ArrayList<>(); userList = userMapper.getUserByUserUuidList(uuidList); + if (CollectionUtils.isNotEmpty(userList)) { + for (UserVo userVo : userList) { + List teamList = teamMapper.getTeamListByUserUuid(userVo.getUuid()); + List teamNameList = teamList.stream().map(TeamVo::getName).collect(Collectors.toList()); + userVo.setTeamNameList(teamNameList); + } + } + return userListConvertDataList(userList); } else { + List> resultList = new ArrayList<>(); MatrixDataVo searchVo = matrixDataVoConvertSearchCondition(dataVo); int rowNum = userMapper.searchUserCountForMatrix(searchVo); if (rowNum > 0) { + dataVo.setRowNum(rowNum); searchVo.setRowNum(rowNum); - userList = userMapper.searchUserListForMatrix(searchVo); - } - } - if (CollectionUtils.isNotEmpty(userList)) { - for (UserVo userVo : userList) { - List teamList = teamMapper.getTeamListByUserUuid(userVo.getUuid()); - List teamNameList = teamList.stream().map(TeamVo::getName).collect(Collectors.toList()); - userVo.setTeamNameList(teamNameList); + List> list = userMapper.searchUserListForMatrix(searchVo); + for (Map map : list) { + if (MapUtils.isEmpty(map)) { + continue; + } + Map newMap = new HashMap<>(); + for (String column : searchVo.getColumnList()) { + Object value = map.get(column); + if (value != null) { + String valueStr = value.toString(); + if (Objects.equals(column, "vipLevel")) { + if (Objects.equals(valueStr, "1")) { + valueStr = "是"; + } else { + valueStr = "否"; + } + } + newMap.put(columnsMap.get(column), valueStr); + } else { + newMap.put(columnsMap.get(column), ""); + } + } + resultList.add(newMap); + } } + return resultList; } - return userListConvertDataList(userList); } private MatrixDataVo matrixDataVoConvertSearchCondition(MatrixDataVo dataVo) { + MatrixDataVo newDataVo = new MatrixDataVo(); + newDataVo.setCurrentPage(dataVo.getCurrentPage()); + newDataVo.setPageSize(dataVo.getPageSize()); + newDataVo.setNeedPage(dataVo.getNeedPage()); + List columnList = new ArrayList<>(); + for (String column : dataVo.getColumnList()) { + for(MatrixAttributeVo matrixAttributeVo : matrixAttributeList){ + if (Objects.equals(matrixAttributeVo.getUuid(), column)) { + columnList.add(matrixAttributeVo.getLabel()); + } + } + } + newDataVo.setColumnList(columnList); + if (CollectionUtils.isNotEmpty(dataVo.getNotNullColumnList())) { + List notNullColumnList = new ArrayList<>(); + for (String notNullColumn : dataVo.getNotNullColumnList()) { + for(MatrixAttributeVo matrixAttributeVo : matrixAttributeList){ + if (Objects.equals(matrixAttributeVo.getUuid(), notNullColumn)) { + notNullColumnList.add(matrixAttributeVo.getLabel()); + } + } + } + newDataVo.setNotNullColumnList(notNullColumnList); + } List filterList = dataVo.getFilterList(); if (CollectionUtils.isEmpty(filterList)) { - return dataVo; + return newDataVo; } List newFilterList = new ArrayList<>(); for (MatrixFilterVo filter : filterList) { @@ -176,9 +227,9 @@ public class UserMatrixPrivateDataSourceHandler implements IMatrixPrivateDataSou } else if (columnsMap.get("id").equals(uuid)) { newFilterList.add(new MatrixFilterVo("a.`id`", filter.getExpression(), filter.getValueList())); } else if (columnsMap.get("userId").equals(uuid)) { - newFilterList.add(new MatrixFilterVo("a.`user_id`", filter.getExpression(), filter.getValueList())); + newFilterList.add(new MatrixFilterVo("a.`userId`", filter.getExpression(), filter.getValueList())); } else if (columnsMap.get("userName").equals(uuid)) { - newFilterList.add(new MatrixFilterVo("a.`user_name`", filter.getExpression(), filter.getValueList())); + newFilterList.add(new MatrixFilterVo("a.`userName`", filter.getExpression(), filter.getValueList())); } else if (columnsMap.get("vipLevel").equals(uuid)) { List valueList = new ArrayList<>(); if (CollectionUtils.isNotEmpty(filter.getValueList())) { @@ -187,19 +238,21 @@ public class UserMatrixPrivateDataSourceHandler implements IMatrixPrivateDataSou valueList.add("1"); } else if (Objects.equals(value, "否")) { valueList.add("0"); + } else { + valueList.add("2"); } } - newFilterList.add(new MatrixFilterVo("a.`vip_level`", filter.getExpression(), valueList)); + newFilterList.add(new MatrixFilterVo("a.`vipLevel`", filter.getExpression(), valueList)); } else if (columnsMap.get("email").equals(uuid)) { newFilterList.add(new MatrixFilterVo("a.`email`", filter.getExpression(), filter.getValueList())); } else if (columnsMap.get("phone").equals(uuid)) { newFilterList.add(new MatrixFilterVo("a.`phone`", filter.getExpression(), filter.getValueList())); - } else if (columnsMap.get("teamNameList").equals(uuid)) { - newFilterList.add(new MatrixFilterVo("a.`team_name`", filter.getExpression(), filter.getValueList())); + } else if (columnsMap.get("teamName").equals(uuid)) { + newFilterList.add(new MatrixFilterVo("a.`teamName`", filter.getExpression(), filter.getValueList())); } } - dataVo.setFilterList(newFilterList); - return dataVo; + newDataVo.setFilterList(newFilterList); + return newDataVo; } private List> userListConvertDataList(List userList) { @@ -211,7 +264,7 @@ public class UserMatrixPrivateDataSourceHandler implements IMatrixPrivateDataSou data.put(columnsMap.get("id"), userVo.getId().toString()); data.put(columnsMap.get("userId"), userVo.getUserId()); data.put(columnsMap.get("userName"), userVo.getUserName()); - data.put(columnsMap.get("teamNameList"), String.join(",", userVo.getTeamNameList())); + data.put(columnsMap.get("teamName"), String.join(",", userVo.getTeamNameList())); data.put(columnsMap.get("vipLevel"), Objects.equals(userVo.getVipLevel(), 1) ? "是" : "否"); data.put(columnsMap.get("email"), userVo.getEmail() == null ? "" : userVo.getEmail()); data.put(columnsMap.get("phone"), userVo.getPhone() == null ? "" : userVo.getPhone()); -- Gitee