diff --git a/muyu-modules/muyu-kvt/muyu-kvt-server/src/main/java/com/muyu/kvt/controller/KvtController.java b/muyu-modules/muyu-kvt/muyu-kvt-server/src/main/java/com/muyu/kvt/controller/KvtController.java index 04a2fe8..1dc6567 100644 --- a/muyu-modules/muyu-kvt/muyu-kvt-server/src/main/java/com/muyu/kvt/controller/KvtController.java +++ b/muyu-modules/muyu-kvt/muyu-kvt-server/src/main/java/com/muyu/kvt/controller/KvtController.java @@ -199,7 +199,7 @@ public class KvtController extends BaseController { //查询字典 @PostMapping("/selectDictionaryy") - public Result> selectDictionaryy(@RequestParam Integer id){ + public Result> selectDictionaryy( Integer id){ List list= kvtService.selectDictionaryy(id); return Result.success(list); } @@ -259,4 +259,10 @@ public class KvtController extends BaseController { List list= kvtService.listResult(); return Result.success(list); } + //根据库名查询资产展示 + @PostMapping("/selectDataDisplayName") + public Result> listResult(String name ){ + List list= kvtService.selectDataDisplayName(name); + return Result.success(list); + } } diff --git a/muyu-modules/muyu-kvt/muyu-kvt-server/src/main/java/com/muyu/kvt/mapper/KvtMapper.java b/muyu-modules/muyu-kvt/muyu-kvt-server/src/main/java/com/muyu/kvt/mapper/KvtMapper.java index a66bdd6..e0e8676 100644 --- a/muyu-modules/muyu-kvt/muyu-kvt-server/src/main/java/com/muyu/kvt/mapper/KvtMapper.java +++ b/muyu-modules/muyu-kvt/muyu-kvt-server/src/main/java/com/muyu/kvt/mapper/KvtMapper.java @@ -93,4 +93,5 @@ public interface KvtMapper extends BaseMapper { List listResult(); + List selectDataDisplayName(@Param("name") String name); } diff --git a/muyu-modules/muyu-kvt/muyu-kvt-server/src/main/java/com/muyu/kvt/service/KvtService.java b/muyu-modules/muyu-kvt/muyu-kvt-server/src/main/java/com/muyu/kvt/service/KvtService.java index 0671cc4..4463386 100644 --- a/muyu-modules/muyu-kvt/muyu-kvt-server/src/main/java/com/muyu/kvt/service/KvtService.java +++ b/muyu-modules/muyu-kvt/muyu-kvt-server/src/main/java/com/muyu/kvt/service/KvtService.java @@ -67,4 +67,5 @@ public interface KvtService extends IService { List listResult(); + List selectDataDisplayName(String name); } diff --git a/muyu-modules/muyu-kvt/muyu-kvt-server/src/main/java/com/muyu/kvt/service/impl/KvtServiceImpl.java b/muyu-modules/muyu-kvt/muyu-kvt-server/src/main/java/com/muyu/kvt/service/impl/KvtServiceImpl.java index 273f58a..b0d298f 100644 --- a/muyu-modules/muyu-kvt/muyu-kvt-server/src/main/java/com/muyu/kvt/service/impl/KvtServiceImpl.java +++ b/muyu-modules/muyu-kvt/muyu-kvt-server/src/main/java/com/muyu/kvt/service/impl/KvtServiceImpl.java @@ -356,64 +356,131 @@ public class KvtServiceImpl extends ServiceImpl implements KvtSe */ private void dataStructureAdd(Connection connection,Kvt kvt,String tableName){ try{ - //执行一个预编译的 SQL 查询 - PreparedStatement preparedStatement = connection.prepareStatement(this.sql() - + " TABLE_SCHEMA = ?\n" - + " AND TABLE_NAME = ?"); - preparedStatement.setString(1, kvt.getDatabaseName()); // 设置第一个参数的值 - preparedStatement.setString(2, tableName); // 设置第二个参数的值 + PreparedStatement preparedStatement = null; + DataStructure build = null; + if (kvt.getType()==1){ + //执行一个预编译的 SQL 查询 + preparedStatement = connection.prepareStatement(this.sql() + + " TABLE_SCHEMA = ?\n" + + " AND TABLE_NAME = ?"); + preparedStatement.setString(1, kvt.getDatabaseName()); // 设置第一个参数的值 + preparedStatement.setString(2, tableName); // 设置第二个参数的值 + } + if (kvt.getType()==2){ + //执行一个预编译的 SQL 查询 + preparedStatement = connection.prepareStatement(this.sql4() + + " information_schema.columns.table_name = '"+ tableName+" ' "); + } + + ResultSet executeQuery = preparedStatement.executeQuery(); while (executeQuery.next()) { + if (kvt.getType()==1){ + String name = executeQuery.getString("name"); + /** + * 注释 + */ + String comment = executeQuery.getString("comment"); + /** + * 是否主键 + */ + String isPrimaryKey = executeQuery.getString("isPrimaryKey"); + /** + * 类型 + */ + String type = executeQuery.getString("type"); + /** + * 映射类型 + */ + String mappingType = executeQuery.getString("mappingType"); + /** + * 长度 + */ + String length = executeQuery.getString("length"); + /** + * 小数位 + */ + String decimalPlaces = executeQuery.getString("decimalPlaces"); + /** + * 是否为空 + */ + String isNull = executeQuery.getString("isNull"); + /** + * 默认值 + */ + String defaultValue = executeQuery.getString("defaultValue"); + + build = DataStructure.builder() + .tableName(tableName) + .warName(kvt.getDatabaseName()) + .name(name) + .comment(comment) + .isPrimaryKey(isPrimaryKey) + .type(type) + .mappingType(mappingType) + .length(length) + .decimalPlaces(null) + .isNull(isNull) + .defaultValue(defaultValue) + .isDict(null) + .dictKey(null) + .build(); + } + + if (kvt.getType() == 2){ + //名称 + String name = executeQuery.getString(1); + /** + * 注释 + */ + String comment = executeQuery.getString(2); + /** + * 类型 + */ + String type = executeQuery.getString(3); + /** + * 长度 + */ + String length = executeQuery.getString(4); + + /** + * 映射类型 + */ + String mappingType = executeQuery.getString(5); + + /** + * 默认值 + */ + String defaultValue = executeQuery.getString(6); + + /** + * 是否为空 + */ + String isNull = executeQuery.getString(7); + /** + * 是否主键 + */ + String isPrimaryKey = executeQuery.getString(8); + build = DataStructure.builder() + .tableName(tableName) + .warName(kvt.getDatabaseName()) + .name(name) + .comment(comment) + .isPrimaryKey(isPrimaryKey) + .type(type) + .mappingType(mappingType) + .length(length) + .decimalPlaces(null) + .isNull(isNull) + .defaultValue(defaultValue) + .isDict(null) + .dictKey(null) + .build(); + + } + - String name = executeQuery.getString("name"); - /** - * 注释 - */ - String comment = executeQuery.getString("comment"); - /** - * 是否主键 - */ - String isPrimaryKey = executeQuery.getString("isPrimaryKey"); - /** - * 类型 - */ - String type = executeQuery.getString("type"); - /** - * 映射类型 - */ - String mappingType = executeQuery.getString("mappingType"); - /** - * 长度 - */ - String length = executeQuery.getString("length"); - /** - * 小数位 - */ - String decimalPlaces = executeQuery.getString("decimalPlaces"); - /** - * 是否为空 - */ - String isNull = executeQuery.getString("isNull"); - /** - * 默认值 - */ - String defaultValue = executeQuery.getString("defaultValue"); - DataStructure build = DataStructure.builder() - .tableName(tableName) - .warName(kvt.getDatabaseName()) - .name(name) - .comment(comment) - .isPrimaryKey(isPrimaryKey) - .type(type) - .mappingType(mappingType) - .length(length) - .decimalPlaces(decimalPlaces) - .isNull(isNull) - .defaultValue(defaultValue) - .isDict(null) - .dictKey(null) - .build(); baseMapper.add(build); } executeQuery.close(); @@ -431,16 +498,37 @@ public class KvtServiceImpl extends ServiceImpl implements KvtSe */ public void selectDatabaseName(Connection connection,Kvt kvt){ try { - //查询总条数 - String sql2 = "SELECT\n" + - " TABLE_NAME as 'name',\n" + - " TABLE_COMMENT as 'as',\n" + - " TABLE_ROWS as 'dataTotal'\n" + - " FROM INFORMATION_SCHEMA.TABLES\n" + - " WHERE\n" + - " TABLE_SCHEMA = ?"; - PreparedStatement preparedStatement2 = connection.prepareStatement(sql2); - preparedStatement2.setString(1, kvt.getDatabaseName()); // 设置第一个参数的值 + PreparedStatement preparedStatement2 = null; + if (kvt.getType() ==1 ){ + //查询总条数 + String sql2 = "SELECT\n" + + " TABLE_NAME as 'name',\n" + + " TABLE_COMMENT as 'as',\n" + + " TABLE_ROWS as 'dataTotal'\n" + + " FROM INFORMATION_SCHEMA.TABLES\n" + + " WHERE\n" + + " TABLE_SCHEMA = ?"; + preparedStatement2= connection.prepareStatement(sql2); + preparedStatement2.setString(1, kvt.getDatabaseName()); // 设置第一个参数的值 + + } + + if (kvt.getType() ==2 ){ + String sql5 = "SELECT \n" + + " c.relname AS \"name\", \n" + + " d.description AS \"as\", \n" + + " COALESCE(s.n_live_tup, 0) AS \"dataTotal\" \n" + + "FROM \n" + + " pg_catalog.pg_class c \n" + + " JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace \n" + + " LEFT JOIN pg_catalog.pg_description d ON d.objoid = c.oid AND d.objsubid = 0 \n" + + " LEFT JOIN pg_catalog.pg_stat_user_tables s ON s.relid = c.oid \n" + + "WHERE \n" + + " n.nspname = 'public' \n" + + " AND c.relkind = 'r'"; + preparedStatement2= connection.prepareStatement(sql5); + } + ResultSet query = preparedStatement2.executeQuery(); while (query.next()) { //表名 @@ -467,7 +555,7 @@ public class KvtServiceImpl extends ServiceImpl implements KvtSe public Result postgres(Kvt kvt) { Connection connection = null; - Statement stmt = null; + try { // 加载 PostgreSQL 驱动类 Class.forName("org.postgresql.Driver"); @@ -479,25 +567,33 @@ public class KvtServiceImpl extends ServiceImpl implements KvtSe connection = DriverManager.getConnection(url, user, password); Statement statement = connection.createStatement(); - ResultSet resultSet = stmt.executeQuery("SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';"); + String sql = "SELECT table_name FROM information_schema.tables WHERE table_schema = 'public'"; + ResultSet resultSet = statement.executeQuery(sql); while (resultSet.next()) { - String name = resultSet.getString("name"); - System.out.println("name" + name); + String tableName = resultSet.getString("table_name"); + //添加资产展示数据 + this.dataDisplayAdd(tableName,connection,kvt); + //添加数据结构 + this.dataStructureAdd(connection,kvt,tableName); + } + this.selectDatabaseName(connection, kvt); + + + Result sysUserResult = remoteUserSer.selectUserId(SecurityUtils.getUserId()); + SysUser data = sysUserResult.getData(); + DeptUserKvt build = DeptUserKvt.builder() + .userId(SecurityUtils.getUserId()) + .kvtId(kvt.getId()) + .deptId(data.getDeptId()).build(); + baseMapper.DeptUserKvtAdd(build); + resultSet.close(); statement.close(); connection.close(); } catch (ClassNotFoundException | SQLException e) { - e.printStackTrace(); - } finally { - try { - if (connection != null) { - connection.close(); - } - } catch (SQLException e) { - e.printStackTrace(); - } + throw new RuntimeException("postgres同步失败",e); } return Result.success("postgres同步成功"); } @@ -512,7 +608,9 @@ public class KvtServiceImpl extends ServiceImpl implements KvtSe //先判断哪种数据库 if (kvt.getType() == 1) { mysql(kvt); - } else { + } + + if (kvt.getType() ==2 ){ postgres(kvt); } return Result.success("同步成功"); @@ -562,6 +660,11 @@ public class KvtServiceImpl extends ServiceImpl implements KvtSe return baseMapper.listResult(); } + @Override + public List selectDataDisplayName(String name) { + return baseMapper.selectDataDisplayName(name); + } + /** * 查询 根据库名跟表名查询字段信息 * @return @@ -592,4 +695,38 @@ public class KvtServiceImpl extends ServiceImpl implements KvtSe " INFORMATION_SCHEMA.COLUMNS\n" + " WHERE\n"; } + public String sql4(){ + return "SELECT\n" + + " information_schema.columns.column_name,\n" + + " col_description(t1.oid, t2.attnum) AS column_description,\n" + + " information_schema.columns.data_type,\n" + + " COALESCE(numeric_precision, datetime_precision) AS precision,\n" + + " CASE\n" + + " WHEN information_schema.columns.data_type = 'numeric' THEN numeric_scale\n" + + " ELSE NULL\n" + + " END AS numeric_scale,\n" + + " CASE\n" + + " WHEN EXISTS (\n" + + " SELECT 1\n" + + " FROM pg_attrdef ad\n" + + " JOIN pg_attribute a ON ad.adrelid = a.attrelid AND ad.adnum = a.attnum\n" + + " WHERE a.attrelid = t1.oid AND a.attnum = t2.attnum\n" + + " ) THEN (SELECT pg_get_expr(adbin, adrelid) FROM pg_attrdef WHERE adrelid = t1.oid AND adnum = t2.attnum)\n" + + " ELSE NULL\n" + + " END AS default_value,\n" + + " CASE\n" + + " WHEN information_schema.columns.is_nullable = 'NO' THEN '0'\n" + + " ELSE '1'\n" + + " END AS is_nullable,\n" + + " CASE\n" + + " WHEN kcu.column_name IS NOT NULL THEN '1'\n" + + " ELSE '0'\n" + + " END AS is_primary_key\n" + + "FROM\n" + + " information_schema.columns\n" + + "JOIN pg_class t1 ON t1.relname = information_schema.columns.table_name\n" + + "JOIN pg_attribute t2 ON t2.attname = information_schema.columns.column_name AND t1.oid = t2.attrelid\n" + + "LEFT JOIN information_schema.key_column_usage kcu ON kcu.table_name = information_schema.columns.table_name AND kcu.column_name = information_schema.columns.column_name\n" + + "WHERE\n"; + } } diff --git a/muyu-modules/muyu-kvt/muyu-kvt-server/src/main/resources/mapper/kvt/KvtMapper.xml b/muyu-modules/muyu-kvt/muyu-kvt-server/src/main/resources/mapper/kvt/KvtMapper.xml index 594e2e7..7025ddb 100644 --- a/muyu-modules/muyu-kvt/muyu-kvt-server/src/main/resources/mapper/kvt/KvtMapper.xml +++ b/muyu-modules/muyu-kvt/muyu-kvt-server/src/main/resources/mapper/kvt/KvtMapper.xml @@ -77,7 +77,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select * from synchronization select * from data_display + diff --git a/muyu-modules/muyu-rule-engine/muyu-rule-engine-common/pom.xml b/muyu-modules/muyu-rule-engine/muyu-rule-engine-common/pom.xml new file mode 100644 index 0000000..7b5bce5 --- /dev/null +++ b/muyu-modules/muyu-rule-engine/muyu-rule-engine-common/pom.xml @@ -0,0 +1,26 @@ + + + 4.0.0 + + com.muyu + muyu-rule-engine + 3.6.3 + + + muyu-rule-engine-common + + + 17 + 17 + UTF-8 + + + + + com.muyu + muyu-common-core + + + diff --git a/muyu-modules/muyu-rule-engine/muyu-rule-engine-remote/pom.xml b/muyu-modules/muyu-rule-engine/muyu-rule-engine-remote/pom.xml new file mode 100644 index 0000000..a326fff --- /dev/null +++ b/muyu-modules/muyu-rule-engine/muyu-rule-engine-remote/pom.xml @@ -0,0 +1,20 @@ + + + 4.0.0 + + com.muyu + muyu-rule-engine + 3.6.3 + + + muyu-rule-engine-remote + + + 17 + 17 + UTF-8 + + + diff --git a/muyu-modules/muyu-rule-engine/muyu-rule-engine-server/pom.xml b/muyu-modules/muyu-rule-engine/muyu-rule-engine-server/pom.xml new file mode 100644 index 0000000..eee21df --- /dev/null +++ b/muyu-modules/muyu-rule-engine/muyu-rule-engine-server/pom.xml @@ -0,0 +1,114 @@ + + + 4.0.0 + + com.muyu + muyu-rule-engine + 3.6.3 + + + muyu-rule-engine-server + + + 17 + 17 + UTF-8 + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-sentinel + + + + + org.springframework.boot + spring-boot-starter-actuator + + + + + io.springfox + springfox-swagger-ui + ${swagger.fox.version} + + + + + com.mysql + mysql-connector-j + + + + + com.muyu + muyu-common-datasource + + + + + com.muyu + muyu-common-datascope + + + + + com.muyu + muyu-common-log + + + + + com.muyu + muyu-common-swagger + + + + com.muyu + muyu-rule-engine-common + 3.6.3 + + + + + +${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + + org.apache.maven.plugins + maven-deploy-plugin + + true + + + + + + diff --git a/muyu-modules/muyu-rule-engine/pom.xml b/muyu-modules/muyu-rule-engine/pom.xml new file mode 100644 index 0000000..b0bce1c --- /dev/null +++ b/muyu-modules/muyu-rule-engine/pom.xml @@ -0,0 +1,26 @@ + + + 4.0.0 + + com.muyu + muyu-modules + 3.6.3 + + + muyu-rule-engine + pom + + muyu-rule-engine-common + muyu-rule-engine-remote + muyu-rule-engine-server + + + + 17 + 17 + UTF-8 + + + diff --git a/muyu-modules/pom.xml b/muyu-modules/pom.xml index b4ae4b7..69d2c7e 100644 --- a/muyu-modules/pom.xml +++ b/muyu-modules/pom.xml @@ -14,6 +14,7 @@ muyu-job muyu-file muyu-kvt + muyu-rule-engine muyu-modules