diff --git a/muyu-modules/muyu-data-source/muyu-data-source-common/src/main/java/com/muyu/data/source/domain/AssetStructure.java b/muyu-modules/muyu-data-source/muyu-data-source-common/src/main/java/com/muyu/data/source/domain/AssetStructure.java new file mode 100644 index 0000000..412be99 --- /dev/null +++ b/muyu-modules/muyu-data-source/muyu-data-source-common/src/main/java/com/muyu/data/source/domain/AssetStructure.java @@ -0,0 +1,44 @@ +package com.muyu.data.source.domain; + +import com.muyu.common.core.web.domain.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * 资产结构对象 AssetStructure + * + * @author DeKangLiu + * on 2024/4/22 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class AssetStructure{ + /** 接入源名称 */ + private String accessSourceName; + + /** 数据来源系统名称 */ + private String dataSourceSystemName; + + /** 数据库名称 */ + private String databaseName; + + /**数据库表名*/ + private String databaseTableName; + + /**数据量*/ + private Integer dataVolume; + + /**数据条数*/ + private Integer dataQuantity; + + /**是否核心*/ + private String coreOrNot; + + +} diff --git a/muyu-modules/muyu-data-source/muyu-data-source-server/pom.xml b/muyu-modules/muyu-data-source/muyu-data-source-server/pom.xml index c482806..a9bd46b 100644 --- a/muyu-modules/muyu-data-source/muyu-data-source-server/pom.xml +++ b/muyu-modules/muyu-data-source/muyu-data-source-server/pom.xml @@ -82,6 +82,13 @@ com.muyu muyu-common-swagger + + com.alibaba + druid + 1.2.20 + compile + + diff --git a/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/controller/DataSourceController.java b/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/controller/DataSourceController.java index fec056b..9202891 100644 --- a/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/controller/DataSourceController.java +++ b/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/controller/DataSourceController.java @@ -4,6 +4,7 @@ import java.util.List; import javax.servlet.http.HttpServletResponse; import com.muyu.data.source.domain.AccessType; +import com.muyu.data.source.domain.AssetStructure; import io.swagger.annotations.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -121,4 +122,9 @@ public class DataSourceController extends BaseController { public Result testConnection(@RequestBody DataSourceSaveReq dataSourceSaveReq){ return dataSourceService.testConnection(dataSourceSaveReq); } + + @PostMapping("/synchronization") + public Result synchronization(@RequestBody DataSource dataSource){ + return dataSourceService.synchronization(dataSource); + } } diff --git a/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/mapper/DataSourceMapper.java b/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/mapper/DataSourceMapper.java index 747edaf..3a48ee4 100644 --- a/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/mapper/DataSourceMapper.java +++ b/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/mapper/DataSourceMapper.java @@ -3,7 +3,9 @@ package com.muyu.data.source.mapper; import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.muyu.data.source.domain.AccessType; +import com.muyu.data.source.domain.AssetStructure; import com.muyu.data.source.domain.DataSource; +import org.apache.ibatis.annotations.Param; /** * 数据源Mapper接口 @@ -14,4 +16,8 @@ import com.muyu.data.source.domain.DataSource; public interface DataSourceMapper extends BaseMapper { List findAccessType(); + + void addAssets(@Param("assetStructure") List assetStructure); + + void addAssets1(AssetStructure assetStructure); } diff --git a/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/service/DataSourceService.java b/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/service/DataSourceService.java index d58bcd6..4dc8f1a 100644 --- a/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/service/DataSourceService.java +++ b/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/service/DataSourceService.java @@ -4,6 +4,7 @@ import java.util.List; import com.muyu.common.core.domain.Result; import com.muyu.data.source.domain.AccessType; +import com.muyu.data.source.domain.AssetStructure; import com.muyu.data.source.domain.DataSource; import com.baomidou.mybatisplus.extension.service.IService; import com.muyu.data.source.domain.req.DataSourceSaveReq; @@ -26,4 +27,7 @@ public interface DataSourceService extends IService { List findAccessType(); Result testConnection(DataSourceSaveReq dataSourceQueryReq); + + + Result synchronization(DataSource dataSource); } diff --git a/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/service/impl/DataSourceServiceImpl.java b/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/service/impl/DataSourceServiceImpl.java index 6c61a89..69ffe42 100644 --- a/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/service/impl/DataSourceServiceImpl.java +++ b/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/service/impl/DataSourceServiceImpl.java @@ -1,14 +1,15 @@ package com.muyu.data.source.service.impl; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.SQLException; -import java.sql.Statement; +import java.sql.*; +import java.util.ArrayList; +import java.util.Date; import java.util.List; import com.muyu.common.core.domain.Result; import com.muyu.common.core.utils.ObjUtils; +import com.muyu.common.security.utils.SecurityUtils; import com.muyu.data.source.domain.AccessType; +import com.muyu.data.source.domain.AssetStructure; import com.muyu.data.source.domain.req.DataSourceSaveReq; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -115,4 +116,53 @@ public class DataSourceServiceImpl extends ServiceImpl tableNames = new ArrayList<>(); + List list = new ArrayList<>(); + + + String user=dataSource.getDatabaseUserName(); + String password=dataSource.getDatabaseUserPassword(); + String jdbcDriver="com.mysql.cj.jdbc.Driver"; + String url = "jdbc:mysql://" + dataSource.getHostAddress() + ":" + dataSource.getHostPort() + "/" + dataSource.getDatabaseName(); + String query="show tables "; + try(Connection con=DriverManager.getConnection(url,user,password); + Statement stmt=con.createStatement(); + ResultSet rs= stmt.executeQuery(query)) { + ResultSetMetaData rsmd = rs.getMetaData(); + // 5. 处理查询结果 + while (rs.next()) { + String tableName = rs.getString(1); + tableNames.add(tableName); + } + System.out.println(tableNames); + for (String tableName : tableNames) { + assetStructure.setAccessSourceName(dataSource.getAccessSourceName()); + assetStructure.setDatabaseName(dataSource.getDatabaseName()); + assetStructure.setDataSourceSystemName(dataSource.getDataSourceSystemName()); + for (int a = 0; a < rsmd.getColumnCount(); a++) { + assetStructure.setDatabaseTableName(rsmd.getTableName(a+1)); + assetStructure.setDataQuantity(rsmd.getColumnDisplaySize(a+1)); + assetStructure.setDataVolume(rsmd.getColumnDisplaySize(a+1)); + } + assetStructure.setDatabaseTableName(tableName); +// assetStructure.setCreateBy(SecurityUtils.getUsername()); +// assetStructure.setCreateTime(new Date()); + dataSourceMapper.addAssets1(assetStructure); + } + return Result.success("同步成功"); + + } catch (SQLException e) { + System.out.println("连接失败"+e.getMessage()); + return Result.error("同步失败"); + } + + } + + } diff --git a/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/resources/mapper/dataSource/DataSourceMapper.xml b/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/resources/mapper/dataSource/DataSourceMapper.xml index 83fc0c2..549af72 100644 --- a/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/resources/mapper/dataSource/DataSourceMapper.xml +++ b/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/resources/mapper/dataSource/DataSourceMapper.xml @@ -29,6 +29,41 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select id, access_source_name, data_source_system_name, host_address, host_port, data_access_type_id, database_name, data_connection_parameter, initial_quantity, maximum_quantity, maximum_time, maximum_frequency, remark, create_by, create_time, update_by, update_time ,database_user_name ,database_user_password from data_source + + + INSERT INTO `data_management`.`asset_structure` + (`access_source_name`, `data_source_system_name`, `database_name`, `database_table_name`, `data_volume`, `data_quantity`, `core_or_not`) + VALUES + + ( + #{assetStructure.accessSourceName}, + #{assetStructure.dataSourceSystemName}, + #{assetStructure.databaseName}, + #{assetStructure.databaseTableName}, + #{assetStructure.dataVolume}, + #{assetStructure.dataQuantity}, + 'Y' + ) + + + + + INSERT INTO `data_management`.`asset_structure` + (`access_source_name`, `data_source_system_name`, `database_name`, `database_table_name`, `data_volume`, `data_quantity`, `core_or_not`) + VALUES + + ( + #{accessSourceName}, + #{dataSourceSystemName}, + #{databaseName}, + #{databaseTableName}, + #{dataVolume}, + #{dataQuantity}, + 'Y' + ) + + +