diff --git a/cloud-property-server/src/main/java/com/muyu/server/controller/DataRunNameController.java b/cloud-property-server/src/main/java/com/muyu/server/controller/DataRunNameController.java index 82cc5c8..84d1d27 100644 --- a/cloud-property-server/src/main/java/com/muyu/server/controller/DataRunNameController.java +++ b/cloud-property-server/src/main/java/com/muyu/server/controller/DataRunNameController.java @@ -63,6 +63,18 @@ public class DataRunNameController { return success(dataRunNameService.getDataBaseTableName()); } + /** + * 资产展示 + * 连接数据库获取当前所有的数据库名称和所有字段 + * @return 所有数据库以及所有表的结果集 + */ + @PostMapping("/extractDataTableNameShow") + @Operation(summary = "获取数据",description = "返回所有数据库以及所有表的结果集到资产展示") + public Result> extractDataTableNameShow(){ + + return success(dataRunNameService.extractDataTableNameShow()); + } + /** * 数据类型转换 * @par 数据类型转换ID diff --git a/cloud-property-server/src/main/java/com/muyu/server/service/DataRunNameService.java b/cloud-property-server/src/main/java/com/muyu/server/service/DataRunNameService.java index 16c80bb..afc7746 100644 --- a/cloud-property-server/src/main/java/com/muyu/server/service/DataRunNameService.java +++ b/cloud-property-server/src/main/java/com/muyu/server/service/DataRunNameService.java @@ -31,6 +31,13 @@ public interface DataRunNameService { */ List getDataBaseTableName(); + /** + * 资产展示 + * 连接数据库获取当前所有的数据库名称和所有字段 + * @return 所有数据库以及所有表的结果集 + */ + List extractDataTableNameShow(); + /** * 数据类型转换 * @paracId 数据类型转换ID @@ -79,4 +86,6 @@ public interface DataRunNameService { * @return 返回结果 */ boolean addDeptAssetAuthorization(AssetAuthorization authorization); + + } diff --git a/cloud-property-server/src/main/java/com/muyu/server/service/impl/DataRunNameServiceImpl.java b/cloud-property-server/src/main/java/com/muyu/server/service/impl/DataRunNameServiceImpl.java index f65c63f..64bb763 100644 --- a/cloud-property-server/src/main/java/com/muyu/server/service/impl/DataRunNameServiceImpl.java +++ b/cloud-property-server/src/main/java/com/muyu/server/service/impl/DataRunNameServiceImpl.java @@ -2,9 +2,7 @@ package com.muyu.server.service.impl; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.pool.DruidPooledConnection; -import com.alibaba.nacos.api.common.Constants; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.muyu.common.core.domain.Result; import com.muyu.common.datascope.annotation.DataScope; import com.muyu.common.domain.*; import com.muyu.common.domain.enums.DataType; @@ -24,7 +22,6 @@ import org.springframework.util.CollectionUtils; import java.sql.*; import java.util.ArrayList; -import java.util.Collection; import java.util.HashSet; import java.util.List; import java.util.concurrent.ExecutorService; @@ -113,6 +110,83 @@ public class DataRunNameServiceImpl implements DataRunNameService { return dataNames; } + /** + * 资产展示 + * 连接数据库获取当前所有的数据库名称和所有字段 + * @return 所有数据库以及所有表的结果集 + */ + @Override + public List extractDataTableNameShow() { + //数据库名称查询 + List dataNameList = dataNameService.list().stream() + .map(DataName::dataNameBuild).toList(); + + //遍历获取数据数据库名称对象 + dataNameList.forEach(dataName -> { + + //判断getId不为空 + if (StringUtils.isNotBlank(String.valueOf(dataName.getId()))) { + + //使用安全管理工具获取当前登录的用户对象 + LoginUser loginUser = SecurityUtils.getLoginUser(); + //从登录用户对象中获取系统用户对象 + SysUser sysUser = loginUser.getSysUser(); + //从系统用户对象中获取用户ID + Long userId = sysUser.getUserId(); + //从系统用户对象中获取部门ID + Long deptId = sysUser.getDeptId(); + // 调用DataRunNameServiceImpl服务的findTableIdAndBasicIdByUserId方法 + // 传入用户ID, + // 获取该用户授权的所有表ID和基础ID + List tableIdAndBasicIdByUserId = dataRunNameMapper.findTableIdAndBasicIdByUserId(userId); + + // 调用assetImpowerService服务的findTableIdAndBasicIdByDeptId方法 + // 传入部门ID,获取该部门下所有授权的表ID和基础ID + List idByDeptId = dataRunNameMapper.findTableIdAndBasicIdByDeptId(deptId); + //在取数据数据遍历里获取表名称查询方法 + tableIdAndBasicIdByUserId.forEach(tableIdAndBasicId -> { + + this.dataDeptShow(tableIdAndBasicId,dataName); + + }); + idByDeptId.forEach(tableIdAndBasicId -> { + if (tableIdAndBasicId.getDeptId()==tableIdAndBasicId.getDeptId()){ + + this.dataDeptShow(tableIdAndBasicId,dataName); + } + }); + + } + }); + //返回所有数据 + return dataNameList; + } + + private void dataDeptShow(AssetAuthorization tableIdAndBasicId, DataName dataName) { + List tableNamesList = tableRunNameService.list(new LambdaQueryWrapper() + .eq(TableNames::getDataId, dataName.getId()) + .eq(TableNames::getId, tableIdAndBasicId.getTableId())) + + .stream() + .map(TableNames::tableNamesBuild) + .toList(); + + //判断tableNamesList查询数据为空直接返回 + if (CollectionUtils.isEmpty(tableNamesList)) { + return; + } + + //在每一次循环中创建一个新的集合 + ArrayList namesArrayList = new ArrayList<>(tableNamesList); + //添加到数据库实体类集合字段上 + dataName.setTableNames(namesArrayList); + //将添加好的实体类集合进行遍历操作 + log.info("数据库表名称:{}",dataName.getTableNames()); + if (CollectionUtils.isEmpty(dataName.getTableNames())) {return;} + //在内部封装方法 + dataName.getTableNames().forEach(tableName1 -> {this.tableNameRun(tableName1,dataName);}); + } + /** * 连接数据库获取当前所有的数据库名称和所有字段 * @return 所有数据库以及所有表的结果集 @@ -374,22 +448,7 @@ public class DataRunNameServiceImpl implements DataRunNameService { */ @Override public List extractDataTableNames(AssetAuthorization assetAuthorization) { - //使用安全管理工具获取当前登录的用户对象 - LoginUser loginUser = SecurityUtils.getLoginUser(); - //从登录用户对象中获取系统用户对象 - SysUser sysUser = loginUser.getSysUser(); - //从系统用户对象中获取用户ID - Long userId = sysUser.getUserId(); - //从系统用户对象中获取部门ID - Long deptId = sysUser.getDeptId(); - // 调用DataRunNameServiceImpl服务的findTableIdAndBasicIdByUserId方法 - // 传入用户ID, - // 获取该用户授权的所有表ID和基础ID - List tableIdAndBasicIdByUserId = dataRunNameMapper.findTableIdAndBasicIdByUserId(userId); - // 调用assetImpowerService服务的findTableIdAndBasicIdByDeptId方法 - // 传入部门ID,获取该部门下所有授权的表ID和基础ID - List idByDeptId = dataRunNameMapper.findTableIdAndBasicIdByDeptId(deptId); HashSet hashSet = new HashSet<>(); tableIdAndBasicIdByUserId.forEach(assetAuthorization1 -> {