From db1da8613dedb1fc9f1f0ce10cda434f74dd98c9 Mon Sep 17 00:00:00 2001 From: rouchen <3133657697@qq.com> Date: Fri, 10 May 2024 22:27:41 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=20=E8=BF=9E=E6=8E=A5=E6=B1=A0=E4=BB=A5?= =?UTF-8?q?=E5=8F=8Ajdbc=20=E5=B0=81=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/constant/ServiceNameConstants.java | 3 + muyu-common/muyu-common-mysql/pom.xml | 27 ++ .../main/java/com/muyu/mysql/MySqlConfig.java | 25 ++ .../java/com/muyu/mysql/MySqlConnect.java | 28 ++ .../main/java/com/muyu/mysql/MysqlApp.java | 71 +++++ .../com/muyu/mysql/MysqlConnException.java | 13 + .../mysql/MysqlConnectionInformation.java | 69 ++++ .../com/muyu/mysql/confilg/MySqlConfilg.java | 67 ++++ .../main/java/com/muyu/mysql/dto/Mysql.java | 45 +++ .../system/remote/RemoteUserService.java | 6 +- muyu-common/pom.xml | 1 + muyu-modules/muyu-kvt/muyu-kvt-client/pom.xml | 5 + .../kvt/client/config/KvtClientRunner.java | 162 +++++++++- .../com/muyu/kvt/client/hashMap/HashMapp.java | 30 ++ .../com/muyu/kvt/client/pool/BaseConfig.java | 24 ++ .../com/muyu/kvt/client/pool/BasePool.java | 34 ++ .../kvt/client/pool/MysqlConnException.java | 13 + .../com/muyu/kvt/client/pool/MysqlPool.java | 195 ++++++++++++ .../client/pool/confilg/MysqlPoolConfig.java | 74 +++++ .../kvt/client/pool/dto/SysDataSource.java | 68 ++++ .../main/java/com/muyu/kvt/domain/Kvt.java | 18 +- .../com/muyu/kvt/domain/req/KvtEditReq.java | 15 +- .../com/muyu/kvt/domain/req/KvtQueryReq.java | 16 +- .../com/muyu/kvt/domain/req/KvtSaveReq.java | 15 +- .../kvt/remote/RemoteDataManagerService.java | 12 +- .../remote/factory/DataManagerFactory.java | 11 +- .../muyu/kvt/controller/KvtController.java | 33 +- .../java/com/muyu/kvt/mapper/KvtMapper.java | 8 +- .../java/com/muyu/kvt/service/KvtService.java | 5 +- .../muyu/kvt/service/impl/KvtServiceImpl.java | 296 +++++++++++------- .../main/resources/mapper/kvt/KvtMapper.xml | 6 + .../muyu-rule-engine-clinet/pom.xml | 9 + .../muyu/engine/client/EngClientConfig.java | 15 + .../muyu/engine/client/EngClientRunner.java | 31 ++ ...ot.autoconfigure.AutoConfiguration.imports | 1 + .../engine/custom/engine_custom_email_ss.java | 22 -- .../custom/engine_custom_email_ss.class | Bin 0 -> 737 bytes .../java/com/muyu/engine/custom/null_qq.class | Bin 0 -> 555 bytes .../java/com/muyu/engine/custom/null_ss.class | Bin 0 -> 555 bytes .../muyu-rule-engine-remote/pom.xml | 8 + .../remote/RuleEngineManangerService.java | 30 ++ .../RuleEngineManangerServiceFactory.java | 30 ++ ...ot.autoconfigure.AutoConfiguration.imports | 1 + .../muyu/engine/RuleEngineApplication.java | 2 +- .../controller/RuleEngineController.java | 35 ++- .../service/impl/RuleEngineServiceImpl.java | 23 +- .../impl/RuleEngineVersionServiceImpl.java | 189 ++++++----- muyu-modules/muyu-unit/pom.xml | 11 +- 48 files changed, 1466 insertions(+), 336 deletions(-) create mode 100644 muyu-common/muyu-common-mysql/pom.xml create mode 100644 muyu-common/muyu-common-mysql/src/main/java/com/muyu/mysql/MySqlConfig.java create mode 100644 muyu-common/muyu-common-mysql/src/main/java/com/muyu/mysql/MySqlConnect.java create mode 100644 muyu-common/muyu-common-mysql/src/main/java/com/muyu/mysql/MysqlApp.java create mode 100644 muyu-common/muyu-common-mysql/src/main/java/com/muyu/mysql/MysqlConnException.java create mode 100644 muyu-common/muyu-common-mysql/src/main/java/com/muyu/mysql/MysqlConnectionInformation.java create mode 100644 muyu-common/muyu-common-mysql/src/main/java/com/muyu/mysql/confilg/MySqlConfilg.java create mode 100644 muyu-common/muyu-common-mysql/src/main/java/com/muyu/mysql/dto/Mysql.java create mode 100644 muyu-modules/muyu-kvt/muyu-kvt-client/src/main/java/com/muyu/kvt/client/hashMap/HashMapp.java create mode 100644 muyu-modules/muyu-kvt/muyu-kvt-client/src/main/java/com/muyu/kvt/client/pool/BaseConfig.java create mode 100644 muyu-modules/muyu-kvt/muyu-kvt-client/src/main/java/com/muyu/kvt/client/pool/BasePool.java create mode 100644 muyu-modules/muyu-kvt/muyu-kvt-client/src/main/java/com/muyu/kvt/client/pool/MysqlConnException.java create mode 100644 muyu-modules/muyu-kvt/muyu-kvt-client/src/main/java/com/muyu/kvt/client/pool/MysqlPool.java create mode 100644 muyu-modules/muyu-kvt/muyu-kvt-client/src/main/java/com/muyu/kvt/client/pool/confilg/MysqlPoolConfig.java create mode 100644 muyu-modules/muyu-kvt/muyu-kvt-client/src/main/java/com/muyu/kvt/client/pool/dto/SysDataSource.java create mode 100644 muyu-modules/muyu-rule-engine/muyu-rule-engine-clinet/src/main/java/com/muyu/engine/client/EngClientConfig.java create mode 100644 muyu-modules/muyu-rule-engine/muyu-rule-engine-clinet/src/main/java/com/muyu/engine/client/EngClientRunner.java create mode 100644 muyu-modules/muyu-rule-engine/muyu-rule-engine-clinet/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports delete mode 100644 muyu-modules/muyu-rule-engine/muyu-rule-engine-common/src/main/java/com/muyu/engine/custom/engine_custom_email_ss.java create mode 100644 muyu-modules/muyu-rule-engine/muyu-rule-engine-common/src/main/java/com/muyu/engine/java/com/muyu/engine/custom/engine_custom_email_ss.class create mode 100644 muyu-modules/muyu-rule-engine/muyu-rule-engine-common/src/main/java/com/muyu/engine/java/com/muyu/engine/custom/null_qq.class create mode 100644 muyu-modules/muyu-rule-engine/muyu-rule-engine-common/src/main/java/com/muyu/engine/java/com/muyu/engine/custom/null_ss.class create mode 100644 muyu-modules/muyu-rule-engine/muyu-rule-engine-remote/src/main/java/com/muyu/engine/remote/RuleEngineManangerService.java create mode 100644 muyu-modules/muyu-rule-engine/muyu-rule-engine-remote/src/main/java/com/muyu/engine/remote/factory/RuleEngineManangerServiceFactory.java create mode 100644 muyu-modules/muyu-rule-engine/muyu-rule-engine-remote/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports diff --git a/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/constant/ServiceNameConstants.java b/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/constant/ServiceNameConstants.java index 39736f9..0169186 100644 --- a/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/constant/ServiceNameConstants.java +++ b/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/constant/ServiceNameConstants.java @@ -21,5 +21,8 @@ public class ServiceNameConstants { * 文件服务的serviceid */ public static final String FILE_SERVICE = "muyu-file"; + public static final String MUYU_KVT = "muyu-kvt"; + + public static final String MUYU_RULE_ENGINE ="muyu-rule-engine" ; } diff --git a/muyu-common/muyu-common-mysql/pom.xml b/muyu-common/muyu-common-mysql/pom.xml new file mode 100644 index 0000000..77a1450 --- /dev/null +++ b/muyu-common/muyu-common-mysql/pom.xml @@ -0,0 +1,27 @@ + + + 4.0.0 + + com.muyu + muyu-common + 3.6.3 + + + muyu-common-mysql + + + 17 + 17 + UTF-8 + + + + org.projectlombok + lombok + 1.18.30 + + + + diff --git a/muyu-common/muyu-common-mysql/src/main/java/com/muyu/mysql/MySqlConfig.java b/muyu-common/muyu-common-mysql/src/main/java/com/muyu/mysql/MySqlConfig.java new file mode 100644 index 0000000..666f4c8 --- /dev/null +++ b/muyu-common/muyu-common-mysql/src/main/java/com/muyu/mysql/MySqlConfig.java @@ -0,0 +1,25 @@ +package com.muyu.mysql; + +/** + * mysql基本定值 MySqlConfig + * + * @author LeYang + * on 2024/5/10 + */ + +public class MySqlConfig { + + /** + * mysql连接前缀 + */ + public static final String MYSQLJDBCPRO="jdbc:mysql://"; + + public static void dirver(String dirverName) + { + try { + Class.forName(dirverName); + } catch (ClassNotFoundException e) { + throw new RuntimeException(e); + } + } +} diff --git a/muyu-common/muyu-common-mysql/src/main/java/com/muyu/mysql/MySqlConnect.java b/muyu-common/muyu-common-mysql/src/main/java/com/muyu/mysql/MySqlConnect.java new file mode 100644 index 0000000..ff8119b --- /dev/null +++ b/muyu-common/muyu-common-mysql/src/main/java/com/muyu/mysql/MySqlConnect.java @@ -0,0 +1,28 @@ +package com.muyu.mysql; + +import com.muyu.mysql.confilg.MySqlConfilg; + +/** + * mysql提供一个连接准则 MySql + * + * @author LeYang + * on 2024/5/10 + */ +public interface MySqlConnect { + + /** + * 获取连接 + */ + public T getConn(MySqlConfilg mySqlConfilg); + + /** + * 关闭连接 + */ + public void closeConn(); + + + + + + +} diff --git a/muyu-common/muyu-common-mysql/src/main/java/com/muyu/mysql/MysqlApp.java b/muyu-common/muyu-common-mysql/src/main/java/com/muyu/mysql/MysqlApp.java new file mode 100644 index 0000000..1a64d89 --- /dev/null +++ b/muyu-common/muyu-common-mysql/src/main/java/com/muyu/mysql/MysqlApp.java @@ -0,0 +1,71 @@ +package com.muyu.mysql; + +import com.muyu.mysql.confilg.MySqlConfilg; +import com.muyu.mysql.dto.Mysql; +import lombok.extern.log4j.Log4j2; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * mysql测试 MysqlApp + * + * @author LeYang + * on 2024/5/10 + */ +@SpringBootApplication +@Log4j2 +public class MysqlApp { + public static void main(String[] args) { + HashMap hashMap = new HashMap<>(); + List mySqlConfigs = new ArrayList<>(); + + Mysql mysql = new Mysql(); + mysql.setId("1"); + mysql.setUsername("root"); + mysql.setPassword("root"); + mysql.setHost("localhost"); + mysql.setDatabaseName("data_basete"); + mysql.setPort("3306"); + mysql.setType("mysql"); + mysql.setConnectionParam("useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8"); + + mySqlConfigs.add(mysql); + + mySqlConfigs.forEach(mysql1 -> { + MySqlConfilg build = MySqlConfilg.builder() + .id(mysql1.getId()) + .name(mysql1.getName()) + .userName(mysql1.getUsername()) + .password(mysql1.getPassword()) + .databaseName(mysql1.getDatabaseName()) + .port(mysql1.getPort()) + .type(mysql1.getType()) + .driverName(mysql1.getConnectionParam()) + .ip(mysql1.getHost()) + .build(); + + MySqlConnect mySqlConnect = new MysqlConnectionInformation(build); + Connection conn = mySqlConnect.getConn(build); + try { + Statement statement = conn.createStatement(); + ResultSet resultSet = statement.executeQuery("SHOW TABLES"); + while (resultSet.next()){ + String string = resultSet.getString(1); + log.info("name:{}",string); + } + log.info("连接成功"); + mySqlConnect.closeConn(); + } catch (SQLException e) { + throw new RuntimeException(e); + } + }); + + } +} diff --git a/muyu-common/muyu-common-mysql/src/main/java/com/muyu/mysql/MysqlConnException.java b/muyu-common/muyu-common-mysql/src/main/java/com/muyu/mysql/MysqlConnException.java new file mode 100644 index 0000000..f044b55 --- /dev/null +++ b/muyu-common/muyu-common-mysql/src/main/java/com/muyu/mysql/MysqlConnException.java @@ -0,0 +1,13 @@ +package com.muyu.mysql; + +/** + * Mysql超时异常 MysqlConn + * + * @author LeYang + * on 2024/5/9 + */ +public class MysqlConnException extends RuntimeException { + public MysqlConnException(String message) { + super(message); + } +} diff --git a/muyu-common/muyu-common-mysql/src/main/java/com/muyu/mysql/MysqlConnectionInformation.java b/muyu-common/muyu-common-mysql/src/main/java/com/muyu/mysql/MysqlConnectionInformation.java new file mode 100644 index 0000000..671ffe3 --- /dev/null +++ b/muyu-common/muyu-common-mysql/src/main/java/com/muyu/mysql/MysqlConnectionInformation.java @@ -0,0 +1,69 @@ +package com.muyu.mysql; + +import com.muyu.mysql.confilg.MySqlConfilg; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; + +/** + * mysql连接信息 MysqlConnectionInformation + * + * @author LeYang + * on 2024/5/10 + */ +public class MysqlConnectionInformation implements MySqlConnect { + /** + * 打印日志 + */ + private static final Logger log = LoggerFactory.getLogger(MysqlConnectionInformation.class); + + public MySqlConfilg mySqlConfilg; + + public MysqlConnectionInformation(MySqlConfilg mySqlConfilg) { + this.mySqlConfilg = mySqlConfilg; + MySqlConfig.dirver(this.mySqlConfilg.getDriverName()); + } + + + + @Override + public Connection getConn(MySqlConfilg mySqlConfig) { + this.mySqlConfilg = mySqlConfig; + String url = this.mySqlConfilg.getUrl(); + String password = this.mySqlConfilg.getPassword(); + String name = this.mySqlConfilg.getName(); + Connection connection = null; + try { + connection = DriverManager.getConnection(url, name, password); + if (connection != null) { + log.info("获取数据库连接成功"); + } + } catch (SQLException e) { + log.error("获取数据库连接失败"); + throw new RuntimeException(e); + } + + return connection; + } + + @Override + public void closeConn() { + this.close(); + } + + //关闭连接 + public void close(){ + + Connection conn = this.getConn(this.mySqlConfilg); + try { + conn.close(); + log.info("关闭连接"); + } catch (SQLException e) { + log.error("关闭连接失败"); + throw new RuntimeException(e); + } + } +} diff --git a/muyu-common/muyu-common-mysql/src/main/java/com/muyu/mysql/confilg/MySqlConfilg.java b/muyu-common/muyu-common-mysql/src/main/java/com/muyu/mysql/confilg/MySqlConfilg.java new file mode 100644 index 0000000..093f31d --- /dev/null +++ b/muyu-common/muyu-common-mysql/src/main/java/com/muyu/mysql/confilg/MySqlConfilg.java @@ -0,0 +1,67 @@ +package com.muyu.mysql.confilg; + +import com.muyu.mysql.MySqlConfig; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + * mysql连接配置 MySqlConfilg + * + * @author LeYang + * on 2024/5/10 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@SuperBuilder +public class MySqlConfilg { + /** + * id + */ + private String id; /** + * id + */ + private String name; + + /** + * 驱动 + */ + private String driverName; + /** + * url ip 端口 数据库名 编码 + */ + private String ip; + private String port; + private String databaseName; + private String param; + /** + * 用户名 + */ + private String userName; + /** + * 类型 + */ + private String type; + + /** + * 密码 + */ + + private String password; + + public String getUrl(){ + StringBuffer stringBuffer = new StringBuffer(MySqlConfig.MYSQLJDBCPRO); + stringBuffer.append(this.ip); + stringBuffer.append(":"); + stringBuffer.append(this.port); + stringBuffer.append("/"); + stringBuffer.append(this.databaseName); + stringBuffer.append("?"); + stringBuffer.append(this.param); + + + return stringBuffer.toString(); + } +} diff --git a/muyu-common/muyu-common-mysql/src/main/java/com/muyu/mysql/dto/Mysql.java b/muyu-common/muyu-common-mysql/src/main/java/com/muyu/mysql/dto/Mysql.java new file mode 100644 index 0000000..95b18b1 --- /dev/null +++ b/muyu-common/muyu-common-mysql/src/main/java/com/muyu/mysql/dto/Mysql.java @@ -0,0 +1,45 @@ +package com.muyu.mysql.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + * mysql对象 Mysql + * + * @author LeYang + * on 2024/5/10 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +public class Mysql { + + private String id; + /** 接入源名称 */ + private String name; + + /** 数据来源系统名称 */ + private String systemName; + + /** 主机地址 */ + private String host; + private String port; + + /** 用户名 */ + private String username; + + /** 密码 */ + private String password; + + /** 数据接入类型 */ + private String type; + /** 数据库名称 */ + private String databaseName; + + /** 数据连接参数 */ + private String connectionParam; + +} diff --git a/muyu-common/muyu-common-system/src/main/java/com/muyu/common/system/remote/RemoteUserService.java b/muyu-common/muyu-common-system/src/main/java/com/muyu/common/system/remote/RemoteUserService.java index 9d5572f..f10e2bb 100644 --- a/muyu-common/muyu-common-system/src/main/java/com/muyu/common/system/remote/RemoteUserService.java +++ b/muyu-common/muyu-common-system/src/main/java/com/muyu/common/system/remote/RemoteUserService.java @@ -14,7 +14,9 @@ import org.springframework.web.bind.annotation.*; * * @author muyu */ -@FeignClient(contextId = "remoteUserService", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = RemoteUserFallbackFactory.class) +@FeignClient(contextId = "remoteUserService", + value = ServiceNameConstants.SYSTEM_SERVICE, + fallbackFactory = RemoteUserFallbackFactory.class) public interface RemoteUserService { /** * 通过用户名查询用户信息 @@ -38,7 +40,7 @@ public interface RemoteUserService { @PostMapping("/user/register") public Result registerUserInfo (@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); - @PostMapping("/selectUserId") + @PostMapping("/user/selectUserId") public Result selectUserId(@RequestParam("userId") Long userId); } diff --git a/muyu-common/pom.xml b/muyu-common/pom.xml index 2505976..81363a1 100644 --- a/muyu-common/pom.xml +++ b/muyu-common/pom.xml @@ -18,6 +18,7 @@ muyu-common-datascope muyu-common-datasource muyu-common-system + muyu-common-mysql muyu-common diff --git a/muyu-modules/muyu-kvt/muyu-kvt-client/pom.xml b/muyu-modules/muyu-kvt/muyu-kvt-client/pom.xml index 4ca1683..4348549 100644 --- a/muyu-modules/muyu-kvt/muyu-kvt-client/pom.xml +++ b/muyu-modules/muyu-kvt/muyu-kvt-client/pom.xml @@ -23,6 +23,11 @@ 3.6.3 compile + + com.alibaba + druid + 1.2.6 + diff --git a/muyu-modules/muyu-kvt/muyu-kvt-client/src/main/java/com/muyu/kvt/client/config/KvtClientRunner.java b/muyu-modules/muyu-kvt/muyu-kvt-client/src/main/java/com/muyu/kvt/client/config/KvtClientRunner.java index 6a07af8..cc7482b 100644 --- a/muyu-modules/muyu-kvt/muyu-kvt-client/src/main/java/com/muyu/kvt/client/config/KvtClientRunner.java +++ b/muyu-modules/muyu-kvt/muyu-kvt-client/src/main/java/com/muyu/kvt/client/config/KvtClientRunner.java @@ -1,15 +1,25 @@ package com.muyu.kvt.client.config; import com.muyu.common.core.domain.Result; -import com.muyu.common.core.web.page.TableDataInfo; +import com.muyu.kvt.client.pool.BasePool; +import com.muyu.kvt.client.pool.MysqlPool; +import com.muyu.kvt.client.pool.confilg.MysqlPoolConfig; +import com.muyu.kvt.client.pool.dto.SysDataSource; import com.muyu.kvt.domain.Kvt; -import com.muyu.kvt.domain.req.KvtQueryReq; import com.muyu.kvt.remote.RemoteDataManagerService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + /** * 初始化加载 KvtCilentRunner * @@ -23,9 +33,153 @@ public class KvtClientRunner implements ApplicationRunner { private RemoteDataManagerService remoteDataManagerService; + static HashMap map = new HashMap<>(); + @Override public void run(ApplicationArguments args) throws Exception { -// Result> list = remoteDataManagerService.list(null); - log.info("list"); + + List list = new ArrayList<>(); + Result> listResult = remoteDataManagerService.selectKvt(); + List data = listResult.getData(); + HashMap hashMap = new HashMap<>(); + + data.forEach(kvt -> { + + MysqlPoolConfig build = MysqlPoolConfig.builder() + .id(String.valueOf(kvt.getId())) + .ip(kvt.getHost()) + .port(kvt.getPort()) + .databaseName(kvt.getDatabaseName()) + .param(kvt.getConnectionParam()) + .initTotal(Math.toIntExact(kvt.getInitNum())) + .maxTotal(Math.toIntExact(kvt.getMaxNum())) + .maxWaitTimes(kvt.getMaxWaitTime()) + .userName(kvt.getUsername()) + .password(kvt.getPassword()) + .driverName("com.mysql.cj.jdbc.Driver") + .build(); + BasePool mysqlPool = new MysqlPool(build); + + log.info("初始化开始"); + + mysqlPool.init(); + int initNum = build.getInitTotal(); + for (int i = 0; i < initNum; i++) { + Connection connection = mysqlPool.creatConnection(); + map.put(String.valueOf(i), connection); + mysqlPool.returnConn(connection); + } + log.info("-------------------------"); + mysqlPool.close(); + log.info("map:{}",map); + }); + Connection connection = map.get("1"); + Statement statement =null; + try{ + statement = connection.createStatement(); + ResultSet resultSet = statement.executeQuery("SHOW Tables"); + while (resultSet.next()){ + String name = resultSet.getString(1); + log.info("name:{}",name); + } + log.info("连接成功"); + }catch (SQLException e){ + log.error("sql错误"); + } + + +// SysDataSource sysDataSource = new SysDataSource(); +// sysDataSource.setId("1"); +// sysDataSource.setName("本地数据库"); +// sysDataSource.setSystemName("localhost"); +// sysDataSource.setHost("127.0.0.1"); +// sysDataSource.setPort("3306"); +// sysDataSource.setUsername("root"); +// sysDataSource.setPassword("root"); +// sysDataSource.setType("MySql"); +// sysDataSource.setDatabaseName("damo01"); +// sysDataSource.setConnectionParam("useUnicode=true&characterEncoding=utf8&allowMultiQueries=true"); +// sysDataSource.setInitNum(5); +// sysDataSource.setMaxNum(10); +// sysDataSource.setMaxWaitTime(4); +// sysDataSource.setMaxWaitSize(3); +// sysDataSource.setRemark("测试"); +// sysDataSource.setIsInit("Y"); +// +// list.add(sysDataSource); +// +// list.forEach(sysDataSoure -> { +// MysqlPoolConfig build = MysqlPoolConfig.builder() +// .id(sysDataSoure.getId()) +// .ip(sysDataSoure.getHost()) +// .port(sysDataSoure.getPort()) +// .databaseName(sysDataSoure.getDatabaseName()) +// .param(sysDataSoure.getConnectionParam()) +// .initTotal(sysDataSoure.getInitNum()) +// .maxTotal(sysDataSoure.getMaxNum()) +// .maxWaitTimes(sysDataSoure.getMaxWaitTime()) +// .userName(sysDataSoure.getUsername()) +// .password(sysDataSoure.getPassword()) +// .driverName("com.mysql.cj.jdbc.Driver") +// .build(); +// BasePool mysqlPool = new MysqlPool(build); +// +// log.info("初始化开始"); +// +// mysqlPool.init(); +// int initNum = sysDataSoure.getInitNum(); +// for (int i = 0; i < initNum; i++) { +// Connection connection = mysqlPool.creatConnection(); +// map.put(String.valueOf(i), connection); +// mysqlPool.returnConn(connection); +// } +// log.info("-------------------------"); +// mysqlPool.close(); +// log.info("map:{}",map); +// }); + +// Connection connection = map.get("1"); +// Statement statement =null; +// try{ +// statement = connection.createStatement(); +// ResultSet resultSet = statement.executeQuery("select * from user"); +// while (resultSet.next()){ +// int id = resultSet.getInt(1); +// String name = resultSet.getString(2); +// log.info("id:{},name:{}",id,name); +// } +// log.info("连接成功"); +// }catch (SQLException e){ +// log.error("sql错误"); +// } + + +// DruidDataSource dataSource = new DruidDataSource(); +// dataSource.setUsername("root"); +// dataSource.setPassword("wxl@123"); +// dataSource.setUrl("jdbc:mysql://111.229.37.54:3306/rule_engine?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8"); +// dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); +// // 连接池最小空闲的连接数 +// dataSource.setMinIdle(5); +// // 连接池最大活跃的连接数 +// dataSource.setMaxActive(20); +// // 初始化连接池时创建的连接数 +// dataSource.setInitialSize(10); +// MysqlPool mysqlPool = new MysqlPool(); +// mysqlPool.init(); +// try { +// dataSource.init(); +// } catch (SQLException e) { +// throw new RuntimeException(e); +// } +// System.out.println(dataSource); } +// @Configuration +// class DataSourceConfig{ +// @Bean +// public DataSource dataSource(){ +// +// } +// } + } diff --git a/muyu-modules/muyu-kvt/muyu-kvt-client/src/main/java/com/muyu/kvt/client/hashMap/HashMapp.java b/muyu-modules/muyu-kvt/muyu-kvt-client/src/main/java/com/muyu/kvt/client/hashMap/HashMapp.java new file mode 100644 index 0000000..03995ab --- /dev/null +++ b/muyu-modules/muyu-kvt/muyu-kvt-client/src/main/java/com/muyu/kvt/client/hashMap/HashMapp.java @@ -0,0 +1,30 @@ +package com.muyu.kvt.client.hashMap; + +import com.muyu.kvt.client.config.KvtClientRunner; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Import; + +import java.util.HashMap; + +/** + * 公共类HashMap HashMap + * + * @author LeYang + * on 2024/5/9 + */ +@ComponentScan +@Import(value = {KvtClientRunner.class}) + +public class HashMapp { + public static final HashMap params = new HashMap<>(); + + public void put(String value){ + params.put("params",value); + } + public static HashMap getParams (String id) + { + Object o = params.get(id); + return (HashMap) o; + + } +} diff --git a/muyu-modules/muyu-kvt/muyu-kvt-client/src/main/java/com/muyu/kvt/client/pool/BaseConfig.java b/muyu-modules/muyu-kvt/muyu-kvt-client/src/main/java/com/muyu/kvt/client/pool/BaseConfig.java new file mode 100644 index 0000000..0e560ff --- /dev/null +++ b/muyu-modules/muyu-kvt/muyu-kvt-client/src/main/java/com/muyu/kvt/client/pool/BaseConfig.java @@ -0,0 +1,24 @@ +package com.muyu.kvt.client.pool; + +/** + * 基本定值 BaseConfig + * + * @author LeYang + * on 2024/5/9 + */ +public class BaseConfig { + + /** + * mysql连接前缀 + */ + public static final String MYSQLJDBCPRO="jdbc:mysql://"; + + public static void dirver(String dirverName){ + try { + Class.forName(dirverName); + }catch (ClassNotFoundException e){ + throw new RuntimeException(e); + } + + } +} diff --git a/muyu-modules/muyu-kvt/muyu-kvt-client/src/main/java/com/muyu/kvt/client/pool/BasePool.java b/muyu-modules/muyu-kvt/muyu-kvt-client/src/main/java/com/muyu/kvt/client/pool/BasePool.java new file mode 100644 index 0000000..59df844 --- /dev/null +++ b/muyu-modules/muyu-kvt/muyu-kvt-client/src/main/java/com/muyu/kvt/client/pool/BasePool.java @@ -0,0 +1,34 @@ +package com.muyu.kvt.client.pool; + +/** + * 提供一个连接池的准则 BasePool + * + * @author LeYang + * on 2024/5/9 + */ +public interface BasePool { + /** + * 初始化 + */ + public void init(); + + /** + * 获取连接 + */ + public T getConn(); + + /** + * 归还连接 + */ + public void returnConn(T conn); + + /** + * 创建连接 + */ + public T creatConnection(); + + /** + * 关闭连接 + */ + public void close(); +} diff --git a/muyu-modules/muyu-kvt/muyu-kvt-client/src/main/java/com/muyu/kvt/client/pool/MysqlConnException.java b/muyu-modules/muyu-kvt/muyu-kvt-client/src/main/java/com/muyu/kvt/client/pool/MysqlConnException.java new file mode 100644 index 0000000..c10652f --- /dev/null +++ b/muyu-modules/muyu-kvt/muyu-kvt-client/src/main/java/com/muyu/kvt/client/pool/MysqlConnException.java @@ -0,0 +1,13 @@ +package com.muyu.kvt.client.pool; + +/** + * Mysql超时异常 MysqlConn + * + * @author LeYang + * on 2024/5/9 + */ +public class MysqlConnException extends RuntimeException { + public MysqlConnException(String message) { + super(message); + } +} diff --git a/muyu-modules/muyu-kvt/muyu-kvt-client/src/main/java/com/muyu/kvt/client/pool/MysqlPool.java b/muyu-modules/muyu-kvt/muyu-kvt-client/src/main/java/com/muyu/kvt/client/pool/MysqlPool.java new file mode 100644 index 0000000..857021b --- /dev/null +++ b/muyu-modules/muyu-kvt/muyu-kvt-client/src/main/java/com/muyu/kvt/client/pool/MysqlPool.java @@ -0,0 +1,195 @@ +package com.muyu.kvt.client.pool; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import com.muyu.kvt.client.pool.confilg.MysqlPoolConfig; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.util.Queue; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.atomic.AtomicInteger; + +/** + * Mysql的连接池信息 MysqlPool + * + * @author LeYang + * on 2024/5/9 + */ + +public class MysqlPool implements BasePool { + + + /** + * 打印日志 + */ + private static final Logger log = LoggerFactory.getLogger(MysqlPool.class); + + /** + * 等待队列 基础队列 + */ + private Queue mysqlConnQueue = null; + + /** + * 活动队列 + */ + private Queue activeMysqlQueue = null; + + /** + * 记录队列的连接总数 + */ + private AtomicInteger count = new AtomicInteger(); + + public MysqlPoolConfig mysqlPoolConfig; + + /** + * 进行实例化连接池 并且加载驱动 + */ + public MysqlPool(MysqlPoolConfig mysqlPoolConfig) { + log.info("Mysql连接池实例化完成"); + this.mysqlPoolConfig = mysqlPoolConfig; + BaseConfig.dirver(this.mysqlPoolConfig.getDriverName()); + } + + /** + * 进行初始化连接池 + */ + @Override + public void init() { + int maxTotal = this.mysqlPoolConfig.getMaxTotal(); + int initTotal = this.mysqlPoolConfig.getInitTotal(); + this.mysqlConnQueue = new LinkedBlockingQueue<>(); + this.activeMysqlQueue = new LinkedBlockingQueue<>(); + for (int i = 0; i < initTotal; i++) { + this.mysqlConnQueue.offer(creatConnection()); + count.incrementAndGet(); + } + log.info("Mysql连接池初始化完成"); + } + + /** + * 获取当前毫秒 用来计算连接是否超时 + * 获取队列当中是否还有空闲连接 + * 如果有连接我们获取连接进行返回 + * 如果没有 判断是否到达最大连接数 + * 如何达到最大连接数则进行等待 + * 如何没有达到最大连接数额 进行创建一个连接 + * 放到使用队列当中 然后进行返回 + * 如果连接超时的话进行抛出异常 + */ + @Override + public Connection getConn() { + long startTime = System.currentTimeMillis(); + //从空闲队列当中取出放入活动队列当中 + Connection conn = this.mysqlConnQueue.poll(); + if (conn == null) { + this.activeMysqlQueue.offer(conn); + return conn; + } + + //如果当前连接数小于最大连接数进行创建新的连接 + if (count.get() < this.mysqlPoolConfig.getMaxTotal()) { + Connection connection = creatConnection(); + this.activeMysqlQueue.offer(connection); + count.incrementAndGet(); + return connection; + } +// +// if (System.currentTimeMillis() - startTime > this.mysqlPoolConfig.getMaxWaitTimes()) { +// throw new MysqlConnException("连接超时"); +// } + + + return null; + } + + /** + * 归还连接 + * + * @param conn + */ + @Override + public void returnConn(Connection conn) { + //删除活动队列当中的连接 + if (this.activeMysqlQueue.remove(conn)) { + //把这个连接放入空闲队列当中 + this.mysqlConnQueue.offer(conn); + } + } + + + + /** + * 获取mysql连接信息 + */ + @Override + public Connection creatConnection() { + String url = this.mysqlPoolConfig.getUrl(); + String userName = this.mysqlPoolConfig.getUserName(); + String password = this.mysqlPoolConfig.getPassword(); + Connection connection = null; + try { + connection = DriverManager.getConnection(url, userName, password); + } catch (SQLException e) { + throw new RuntimeException(e); + } + log.info("初始化了一个数据库连接:{ip: " + this.mysqlPoolConfig.getIp() + " port: " + this.mysqlPoolConfig.getPort() + " databaseName: " + this.mysqlPoolConfig.getDatabaseName() + "}"); + return connection; + } + + @Override + public void close() { + closeBaseConn(); + closeActiveConn(); + } + + + /** + * 关闭空闲连接 + */ + public void closeBaseConn() { + Connection poll = this.mysqlConnQueue.poll(); + if (poll != null) { + try { + poll.close(); + } catch (SQLException e) { + e.printStackTrace(); + try{ + if (!poll.isClosed()) { + this.mysqlConnQueue.offer(poll); + } + + }catch (Exception e1){ + e1.printStackTrace(); + } + } finally { + closeBaseConn(); + } + + } + } + + public void closeActiveConn() { + Connection poll = this.activeMysqlQueue.poll(); + if (poll != null) { + try { + poll.close(); + } catch (SQLException e) { + e.printStackTrace(); + try{ + if (!poll.isClosed()) { + this.activeMysqlQueue.offer(poll); + } + + }catch (Exception e1){ + e1.printStackTrace(); + } + } finally { + closeBaseConn(); + } + + } + + } +} diff --git a/muyu-modules/muyu-kvt/muyu-kvt-client/src/main/java/com/muyu/kvt/client/pool/confilg/MysqlPoolConfig.java b/muyu-modules/muyu-kvt/muyu-kvt-client/src/main/java/com/muyu/kvt/client/pool/confilg/MysqlPoolConfig.java new file mode 100644 index 0000000..022d66b --- /dev/null +++ b/muyu-modules/muyu-kvt/muyu-kvt-client/src/main/java/com/muyu/kvt/client/pool/confilg/MysqlPoolConfig.java @@ -0,0 +1,74 @@ +package com.muyu.kvt.client.pool.confilg; + +import com.muyu.kvt.client.pool.BaseConfig; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + * mysql连接池配置 MysqlPoolConfig + * + * @author LeYang + * on 2024/5/9 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@SuperBuilder +public class MysqlPoolConfig { + /** + * id + */ + private String id; + /** + * 初始化连接数 + */ + private int initTotal; + /** + * 最大连接数 + */ + private int maxTotal; + /** + * 最长等待时间 毫秒 + */ + private long maxWaitTimes; + /** + * 驱动 + */ + private String driverName; + /** + * url ip 端口 数据库名 编码 + */ + private String ip; + private String port; + private String databaseName; + private String param; + /** + * 用户名 + */ + private String userName; + /** + * 密码 + */ + + private String password; + + /** + * 获取数据库连接 + */ + public String getUrl() { + StringBuilder urlSb = new StringBuilder(BaseConfig.MYSQLJDBCPRO); + urlSb.append(this.ip); + urlSb.append(":"); + urlSb.append(this.port); + urlSb.append("/"); + urlSb.append(this.databaseName); + urlSb.append("?"); + urlSb.append(this.param); + return urlSb.toString(); + }; + + + +} diff --git a/muyu-modules/muyu-kvt/muyu-kvt-client/src/main/java/com/muyu/kvt/client/pool/dto/SysDataSource.java b/muyu-modules/muyu-kvt/muyu-kvt-client/src/main/java/com/muyu/kvt/client/pool/dto/SysDataSource.java new file mode 100644 index 0000000..f34dc8c --- /dev/null +++ b/muyu-modules/muyu-kvt/muyu-kvt-client/src/main/java/com/muyu/kvt/client/pool/dto/SysDataSource.java @@ -0,0 +1,68 @@ +package com.muyu.kvt.client.pool.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + * 数据源对象 SysDataSoure + * + * @author LeYang + * on 2024/5/9 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +public class SysDataSource { + private static final long serialVersionUID = 1L; + + /** 数据源密码 */ + private String id; + + /** 接入源名称 */ + private String name; + + /** 数据来源系统名称 */ + private String systemName; + + /** 主机地址 */ + private String host; + private String port; + + /** 用户名 */ + private String username; + + /** 密码 */ + private String password; + + /** 数据接入类型 */ + private String type; + /** 数据库名称 */ + private String databaseName; + + /** 数据连接参数 */ + private String connectionParam; + + /** 初始连接数量 */ + private int initNum; + + /** 最大连接数量 */ + private int maxNum; + + /** 最大等待时间 */ + private int maxWaitTime; + + /** 最大等待次数 */ + private int maxWaitSize; + + /** 备注 */ + private String remark; + + + + /** 是否初始化 */ + private String isInit; + +} diff --git a/muyu-modules/muyu-kvt/muyu-kvt-common/src/main/java/com/muyu/kvt/domain/Kvt.java b/muyu-modules/muyu-kvt/muyu-kvt-common/src/main/java/com/muyu/kvt/domain/Kvt.java index 08ec7d1..0ac85ca 100644 --- a/muyu-modules/muyu-kvt/muyu-kvt-common/src/main/java/com/muyu/kvt/domain/Kvt.java +++ b/muyu-modules/muyu-kvt/muyu-kvt-common/src/main/java/com/muyu/kvt/domain/Kvt.java @@ -1,22 +1,21 @@ package com.muyu.kvt.domain; -import java.util.Date; -import com.fasterxml.jackson.annotation.JsonFormat; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.muyu.common.core.annotation.Excel; +import com.muyu.common.core.web.domain.BaseEntity; import com.muyu.kvt.domain.req.KvtEditReq; import com.muyu.kvt.domain.req.KvtQueryReq; import com.muyu.kvt.domain.req.KvtSaveReq; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; -import lombok.AllArgsConstructor; import lombok.experimental.SuperBuilder; -import io.swagger.annotations.*; -import com.muyu.common.core.annotation.Excel; - -import com.muyu.common.core.web.domain.BaseEntity; /** * kvt @@ -90,14 +89,13 @@ public class Kvt extends BaseEntity { @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "最大等待时间", width = 30, dateFormat = "yyyy-MM-dd") @ApiModelProperty(name = "最大等待时间", value = "最大等待时间") - private Date maxWaitTime; + private Long maxWaitTime; /** 最大等待次数 */ @Excel(name = "最大等待次数") @ApiModelProperty(name = "最大等待次数", value = "最大等待次数") private Long maxWaitSize; - - /** + /** * 用户名 */ @Excel(name = "用户名") diff --git a/muyu-modules/muyu-kvt/muyu-kvt-common/src/main/java/com/muyu/kvt/domain/req/KvtEditReq.java b/muyu-modules/muyu-kvt/muyu-kvt-common/src/main/java/com/muyu/kvt/domain/req/KvtEditReq.java index a7be023..54c52d3 100644 --- a/muyu-modules/muyu-kvt/muyu-kvt-common/src/main/java/com/muyu/kvt/domain/req/KvtEditReq.java +++ b/muyu-modules/muyu-kvt/muyu-kvt-common/src/main/java/com/muyu/kvt/domain/req/KvtEditReq.java @@ -1,14 +1,13 @@ package com.muyu.kvt.domain.req; -import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; -import lombok.AllArgsConstructor; -import lombok.experimental.SuperBuilder; -import io.swagger.annotations.*; import com.muyu.common.core.web.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; /** * kvt @@ -65,7 +64,7 @@ public class KvtEditReq extends BaseEntity { /** 最大等待时间 */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(name = "最大等待时间", value = "最大等待时间") - private Date maxWaitTime; + private Long maxWaitTime; /** 最大等待次数 */ @ApiModelProperty(name = "最大等待次数", value = "最大等待次数") diff --git a/muyu-modules/muyu-kvt/muyu-kvt-common/src/main/java/com/muyu/kvt/domain/req/KvtQueryReq.java b/muyu-modules/muyu-kvt/muyu-kvt-common/src/main/java/com/muyu/kvt/domain/req/KvtQueryReq.java index a5c3a45..6616e2d 100644 --- a/muyu-modules/muyu-kvt/muyu-kvt-common/src/main/java/com/muyu/kvt/domain/req/KvtQueryReq.java +++ b/muyu-modules/muyu-kvt/muyu-kvt-common/src/main/java/com/muyu/kvt/domain/req/KvtQueryReq.java @@ -1,15 +1,13 @@ package com.muyu.kvt.domain.req; -import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; -import com.muyu.common.core.annotation.Excel; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; -import lombok.AllArgsConstructor; -import lombok.experimental.SuperBuilder; -import io.swagger.annotations.*; import com.muyu.common.core.web.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; /** * kvt @@ -66,7 +64,7 @@ public class KvtQueryReq extends BaseEntity { /** 最大等待时间 */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(name = "最大等待时间", value = "最大等待时间") - private Date maxWaitTime; + private Long maxWaitTime; /** 最大等待次数 */ @ApiModelProperty(name = "最大等待次数", value = "最大等待次数") diff --git a/muyu-modules/muyu-kvt/muyu-kvt-common/src/main/java/com/muyu/kvt/domain/req/KvtSaveReq.java b/muyu-modules/muyu-kvt/muyu-kvt-common/src/main/java/com/muyu/kvt/domain/req/KvtSaveReq.java index 2b8e5df..80cccf0 100644 --- a/muyu-modules/muyu-kvt/muyu-kvt-common/src/main/java/com/muyu/kvt/domain/req/KvtSaveReq.java +++ b/muyu-modules/muyu-kvt/muyu-kvt-common/src/main/java/com/muyu/kvt/domain/req/KvtSaveReq.java @@ -1,14 +1,13 @@ package com.muyu.kvt.domain.req; -import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; -import lombok.AllArgsConstructor; -import lombok.experimental.SuperBuilder; -import io.swagger.annotations.*; import com.muyu.common.core.web.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; /** * kvt @@ -80,7 +79,7 @@ public class KvtSaveReq extends BaseEntity { @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(name = "最大等待时间", value = "最大等待时间") - private Date maxWaitTime; + private Long maxWaitTime; /** 最大等待次数 */ diff --git a/muyu-modules/muyu-kvt/muyu-kvt-remote/src/main/java/com/muyu/kvt/remote/RemoteDataManagerService.java b/muyu-modules/muyu-kvt/muyu-kvt-remote/src/main/java/com/muyu/kvt/remote/RemoteDataManagerService.java index 26c8a89..3c327a2 100644 --- a/muyu-modules/muyu-kvt/muyu-kvt-remote/src/main/java/com/muyu/kvt/remote/RemoteDataManagerService.java +++ b/muyu-modules/muyu-kvt/muyu-kvt-remote/src/main/java/com/muyu/kvt/remote/RemoteDataManagerService.java @@ -2,14 +2,12 @@ package com.muyu.kvt.remote; import com.muyu.common.core.constant.ServiceNameConstants; import com.muyu.common.core.domain.Result; -import com.muyu.common.core.web.page.TableDataInfo; - import com.muyu.kvt.domain.Kvt; -import com.muyu.kvt.domain.req.KvtQueryReq; - import com.muyu.kvt.remote.factory.DataManagerFactory; import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; + +import java.util.List; /** * RemoteUser @@ -25,7 +23,7 @@ import org.springframework.web.bind.annotation.GetMapping; ) public interface RemoteDataManagerService { - @GetMapping("/list") - public Result> list(KvtQueryReq kvtQueryReq) ; + @PostMapping("/selectKvt") + public Result> selectKvt(); } diff --git a/muyu-modules/muyu-kvt/muyu-kvt-remote/src/main/java/com/muyu/kvt/remote/factory/DataManagerFactory.java b/muyu-modules/muyu-kvt/muyu-kvt-remote/src/main/java/com/muyu/kvt/remote/factory/DataManagerFactory.java index 6f15643..68edf65 100644 --- a/muyu-modules/muyu-kvt/muyu-kvt-remote/src/main/java/com/muyu/kvt/remote/factory/DataManagerFactory.java +++ b/muyu-modules/muyu-kvt/muyu-kvt-remote/src/main/java/com/muyu/kvt/remote/factory/DataManagerFactory.java @@ -2,14 +2,13 @@ package com.muyu.kvt.remote.factory; import com.muyu.common.core.domain.Result; -import com.muyu.common.core.web.page.TableDataInfo; import com.muyu.kvt.domain.Kvt; -import com.muyu.kvt.domain.req.KvtQueryReq; import com.muyu.kvt.remote.RemoteDataManagerService; - import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.stereotype.Component; +import java.util.List; + /** * 用户服务降级处理 * @@ -21,9 +20,11 @@ public class DataManagerFactory implements FallbackFactory> list(KvtQueryReq kvtQueryReq) { - return Result.error("获取数据失败"); + public Result> selectKvt() { + return Result.error(cause.getMessage()); } }; } 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 3752dda..07970f9 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 @@ -1,10 +1,5 @@ package com.muyu.kvt.controller; -import java.security.Permissions; -import java.sql.SQLException; -import java.util.List; - - import com.muyu.common.core.domain.Result; import com.muyu.common.core.utils.poi.ExcelUtil; import com.muyu.common.core.web.controller.BaseController; @@ -23,14 +18,16 @@ import com.muyu.kvt.domain.req.KvtEditReq; import com.muyu.kvt.domain.req.KvtQueryReq; import com.muyu.kvt.domain.req.KvtSaveReq; import com.muyu.kvt.permissions.PermissionsUser; +import com.muyu.kvt.service.KvtService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; -import com.muyu.kvt.service.KvtService; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; +import java.sql.SQLException; +import java.util.List; /** * kvt @@ -58,6 +55,13 @@ public class KvtController extends BaseController { return getDataTable(list); } + //查询数据接入 + @PostMapping("/selectKvt") + public Result> selectKvt(){ + List list = kvtService.list(); + return Result.success(list); + } + /** * 导出kvt列表 */ @@ -270,8 +274,8 @@ public class KvtController extends BaseController { //添加权限表 @PostMapping("/permissionsUserAdd") public Result permissionsUserAdd(@RequestBody PermissionsUser permissionsUser){ - kvtService.permissionsUserAdd(permissionsUser); - return Result.success("添加成功"); + + return kvtService.permissionsUserAdd(permissionsUser); } //删除权限表 @@ -287,4 +291,17 @@ public class KvtController extends BaseController { List list= kvtService.selectPermission(); return Result.success(list); } + + //根据库名查表名 + @PostMapping("/selectTable") + public Result> selectTable(@RequestBody String databaseName){ + List list= kvtService.selectTable(databaseName); + return Result.success(list); + } + + @PostMapping("/selectTableName") + public Result> selectTableName(@RequestBody String tableName){ + List list= kvtService.selectTableName(tableName); + 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 ff844ad..95f489b 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 @@ -102,5 +102,11 @@ public interface KvtMapper extends BaseMapper { List selectPermission(); - List permissionsUserSelect(PermissionsUser build); + PermissionsUser permissionsUserSelect(PermissionsUser build); + + List selectTableName(String tableName); + + List selectDataStructureAll(); + + } 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 4045464..84d20c5 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 @@ -70,11 +70,14 @@ public interface KvtService extends IService { List selectDataDisplayName(String name); - void permissionsUserAdd(PermissionsUser permissionsUser); + Result permissionsUserAdd(PermissionsUser permissionsUser); void permissionsUserDel(PermissionsUser permissionsUser); List selectPermission(); + List selectTable(String databaseName); + + List selectTableName(String tableName); } 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 9450bd9..52b891d 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 @@ -1,17 +1,9 @@ package com.muyu.kvt.service.impl; -import java.sql.*; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; -import java.util.stream.IntStream; - - -import com.muyu.common.core.domain.Result; -import com.muyu.common.core.utils.ObjUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.utils.ObjUtils; import com.muyu.common.security.utils.SecurityUtils; import com.muyu.common.system.domain.SysDept; import com.muyu.common.system.domain.SysUser; @@ -23,15 +15,20 @@ import com.muyu.kvt.dictionary.Diction; import com.muyu.kvt.dictionary.DictionaryType; import com.muyu.kvt.dictionary.Dictionaryy; import com.muyu.kvt.domain.*; - +import com.muyu.kvt.mapper.KvtMapper; import com.muyu.kvt.permissions.PermissionsUser; - -import com.muyu.kvt.remote.RemoteDataManagerService; +import com.muyu.kvt.service.KvtService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.muyu.kvt.mapper.KvtMapper; -import com.muyu.kvt.service.KvtService; + +import java.sql.*; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.IntStream; /** @@ -169,20 +166,39 @@ public class KvtServiceImpl extends ServiceImpl implements KvtSe public List selectDepartment(String databaseName) { List list = baseMapper.selectDepartment(databaseName); // Kvt kvt = baseMapper.selectType(databaseName); - List childrenLists = new ArrayList<>(); + HashSet set = new HashSet<>(); + + Result sysUserResult = remoteUserSer.selectUserId(SecurityUtils.getUserId()); + SysUser data = sysUserResult.getData(); + List permissionsUsers = this.selectPermission(); +// ...(你可能不需要SysUser对象,除非后续有使用) + + Set tableNameSet = permissionsUsers.stream() + .map(PermissionsUser::getTbaleName) // 确保使用正确的方法名getTableName + .collect(Collectors.toSet()); for (ChildrenList childrenList : list) { - - ChildrenList build = ChildrenList.builder() - .name(childrenList.getName()) - .dataTotal(childrenList.getDataTotal()) - .as(childrenList.getAs()) - .type(Long.valueOf(2)) - .build(); - childrenLists.add(build); + boolean isInSet = false; // 标记变量,用于检查name是否在tableNameSet中 + for (String s : tableNameSet) { + if (childrenList.getName().equals(s)) { + isInSet = true; // 如果找到匹配的name,则设置标记为true + break; // 跳出循环,因为我们已经找到了匹配的项 + } + } + if (!isInSet) { // 如果name不在tableNameSet中 + ChildrenList build = ChildrenList.builder() + .id(childrenList.getId()) + .name(childrenList.getName()) + .dataTotal(childrenList.getDataTotal()) + .as(childrenList.getAs()) + .type(Long.valueOf(2)) // 注意:这里将type硬编码为2,可能需要根据实际情况调整 + .build(); + set.add(build); // 将新的ChildrenList对象添加到set中 + } } - return childrenLists; + + return set.stream().distinct().collect(Collectors.toList()); } @@ -198,13 +214,15 @@ public class KvtServiceImpl extends ServiceImpl implements KvtSe @Override public List selectDataStur(String tableName) { - List list = baseMapper.selectDataStur(tableName); + List list = baseMapper.selectDataStur(tableName); return list; } - public void user(){ + + public void user() { } + @Override public Child selectChild(String tableName) { return baseMapper.selectChild(tableName); @@ -212,22 +230,45 @@ public class KvtServiceImpl extends ServiceImpl implements KvtSe @Override public List selectChildAll() { - Result sysUserResult = remoteUserSer.selectUserId(SecurityUtils.getUserId()); - SysUser data = sysUserResult.getData(); - List permissionsUsers = this.selectPermission(); -// ...(你可能不需要SysUser对象,除非后续有使用) +// Result sysUserResult = remoteUserSer.selectUserId(SecurityUtils.getUserId()); +// SysUser data = sysUserResult.getData(); +// List permissionsUsers = this.selectPermission(); +//// ...(你可能不需要SysUser对象,除非后续有使用) +// +// Set tableNameSet = permissionsUsers.stream() +// .map(PermissionsUser::getTbaleName) // 确保使用正确的方法名getTableName +// .collect(Collectors.toSet()); +// List dataStructures = new ArrayList<>(); + List list = baseMapper.selectDataStructureAll(); - Set tableNameSet = permissionsUsers.stream() - .map(PermissionsUser::getTbaleName) // 确保使用正确的方法名getTableName - .collect(Collectors.toSet()); + return list; +// list.forEach(dataStructure -> tableNameSet.stream().filter(s -> !dataStructure.getTableName().equals(s)).map(s -> dataStructure).forEach(dataStructures::add)); +// List collect = dataStructures.stream().distinct().collect(Collectors.toList()); +// return collect; +// +// List dataStructures = list.stream() +// .filter(dataStructure -> !tableNameSet.contains(dataStructure.getName())) +// .distinct() // 移除重复的DataStructure对象 +// .collect(Collectors.toList()); - List list = baseMapper.selectChildAll(); - List notContainingCollect = list.stream() - .filter(dataStructure -> !tableNameSet.contains(dataStructure.getTableName())) // 使用!进行否定 - .collect(Collectors.toList()); + //List dataStructures = list.stream() + // .map(dataStructure -> { + // if (!tableNameSet.contains(dataStructure.getName())) { + // return Optional.of(dataStructure); + // } else { + // return Optional.empty(); // 当名称匹配时返回空Optional + // } + // }) + // .filter(Optional::isPresent) // 移除空Optional + // .map(Optional::get) // 提取非空Optional中的对象 + // .collect(Collectors.toList()); +// +// List notContainingCollect = list.stream() +// .filter(dataStructure -> !list.contains(dataStructure.getTableName())) // 使用!进行否定 +// .collect(Collectors.toList()); // notContainingCollect现在包含了不包含在permissionsUsers中tableName的DataStructure对象列表 - return notContainingCollect; // 返回不包含符合条件的数据的列表 + // 返回不包含符合条件的数据的列表 } @Override @@ -282,9 +323,9 @@ public class KvtServiceImpl extends ServiceImpl implements KvtSe Class.forName(jdbcDriver); connection = DriverManager.getConnection(jdbcUrl, user, password); - if (connection == null){ - return Result.error("连接失败"); - } + if (connection == null) { + return Result.error("连接失败"); + } Statement statement = connection.createStatement(); DatabaseMetaData metaData = connection.getMetaData(); //添加到同步表中 @@ -299,13 +340,13 @@ public class KvtServiceImpl extends ServiceImpl implements KvtSe String tableName = resultSet.getString("table_name"); //添加资产展示数据 - this.dataDisplayAdd(tableName,connection,kvt); + this.dataDisplayAdd(tableName, connection, kvt); //添加数据结构 - this.dataStructureAdd(connection,kvt,tableName); + this.dataStructureAdd(connection, kvt, tableName); } - this.selectDatabaseName(connection, kvt); + this.selectDatabaseName(connection, kvt); Result sysUserResult = remoteUserSer.selectUserId(SecurityUtils.getUserId()); @@ -327,11 +368,12 @@ public class KvtServiceImpl extends ServiceImpl implements KvtSe /** * 同步添加资产展示 + * * @param tableName * @param connection * @param kvt */ - public void dataDisplayAdd(String tableName,Connection connection,Kvt kvt) { + public void dataDisplayAdd(String tableName, Connection connection, Kvt kvt) { try { //查询表中的数据 String selectSql = "SELECT * FROM " + tableName; @@ -362,12 +404,12 @@ public class KvtServiceImpl extends ServiceImpl implements KvtSe } System.out.println(dataDisplays); - if(dataDisplays!=null && dataDisplays.size()!=0){ + if (dataDisplays != null && dataDisplays.size() != 0) { baseMapper.dataDisplayAdd(dataDisplays); } resultSet2.close(); } catch (SQLException e) { - throw new RuntimeException("添加资产展示数据有误",e); + throw new RuntimeException("添加资产展示数据有误", e); } log.info("资产展示添加成功"); @@ -375,33 +417,34 @@ public class KvtServiceImpl extends ServiceImpl implements KvtSe /** - *添加数据结构 + * 添加数据结构 + * * @param connection * @param kvt * @param tableName */ - private void dataStructureAdd(Connection connection,Kvt kvt,String tableName){ - try{ + private void dataStructureAdd(Connection connection, Kvt kvt, String tableName) { + try { PreparedStatement preparedStatement = null; DataStructure build = null; - if (kvt.getType()==1){ + if (kvt.getType() == 1) { //执行一个预编译的 SQL 查询 - preparedStatement = connection.prepareStatement(this.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){ + if (kvt.getType() == 2) { //执行一个预编译的 SQL 查询 - preparedStatement = connection.prepareStatement(this.sql4() - + " information_schema.columns.table_name = '"+ tableName+" ' "); + preparedStatement = connection.prepareStatement(this.sql4() + + " information_schema.columns.table_name = '" + tableName + " ' "); } ResultSet executeQuery = preparedStatement.executeQuery(); while (executeQuery.next()) { - if (kvt.getType()==1){ + if (kvt.getType() == 1) { String name = executeQuery.getString("name"); /** * 注释 @@ -453,7 +496,7 @@ public class KvtServiceImpl extends ServiceImpl implements KvtSe .build(); } - if (kvt.getType() == 2){ + if (kvt.getType() == 2) { //名称 String name = executeQuery.getString(1); /** @@ -506,7 +549,6 @@ public class KvtServiceImpl extends ServiceImpl implements KvtSe } - baseMapper.add(build); } executeQuery.close(); @@ -519,13 +561,14 @@ public class KvtServiceImpl extends ServiceImpl implements KvtSe /** * 查询数据库中表的总条数 以及备注 名称 + * * @param connection * @param kvt */ - public void selectDatabaseName(Connection connection,Kvt kvt){ + public void selectDatabaseName(Connection connection, Kvt kvt) { try { PreparedStatement preparedStatement2 = null; - if (kvt.getType() ==1 ){ + if (kvt.getType() == 1) { //查询总条数 String sql2 = "SELECT\n" + " TABLE_NAME as 'name',\n" + @@ -534,25 +577,25 @@ public class KvtServiceImpl extends ServiceImpl implements KvtSe " FROM INFORMATION_SCHEMA.TABLES\n" + " WHERE\n" + " TABLE_SCHEMA = ?"; - preparedStatement2= connection.prepareStatement(sql2); + 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); + 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(); @@ -599,9 +642,9 @@ public class KvtServiceImpl extends ServiceImpl implements KvtSe while (resultSet.next()) { String tableName = resultSet.getString("table_name"); //添加资产展示数据 - this.dataDisplayAdd(tableName,connection,kvt); + this.dataDisplayAdd(tableName, connection, kvt); //添加数据结构 - this.dataStructureAdd(connection,kvt,tableName); + this.dataStructureAdd(connection, kvt, tableName); } this.selectDatabaseName(connection, kvt); @@ -619,7 +662,7 @@ public class KvtServiceImpl extends ServiceImpl implements KvtSe statement.close(); connection.close(); } catch (ClassNotFoundException | SQLException e) { - throw new RuntimeException("postgres同步失败",e); + throw new RuntimeException("postgres同步失败", e); } return Result.success("postgres同步成功"); } @@ -636,7 +679,7 @@ public class KvtServiceImpl extends ServiceImpl implements KvtSe mysql(kvt); } - if (kvt.getType() ==2 ){ + if (kvt.getType() == 2) { postgres(kvt); } return Result.success("同步成功"); @@ -692,7 +735,7 @@ public class KvtServiceImpl extends ServiceImpl implements KvtSe } @Override - public void permissionsUserAdd(PermissionsUser permissionsUser) { + public Result permissionsUserAdd(PermissionsUser permissionsUser) { PermissionsUser build = PermissionsUser.builder() .userId(permissionsUser.getUserId()) @@ -701,10 +744,13 @@ public class KvtServiceImpl extends ServiceImpl implements KvtSe .tbaleName(permissionsUser.getTbaleName()) .build(); //先查询表中是否有这条数据 - if (baseMapper.permissionsUserSelect(build)!=null) { + PermissionsUser users = baseMapper.permissionsUserSelect(build); + if (users == null) { baseMapper.permissionsUserAdd(build); - }else { + return Result.success("添加成功"); + } else { baseMapper.permissionsUserDel(build); + return Result.success("删除成功"); } } @@ -712,7 +758,7 @@ public class KvtServiceImpl extends ServiceImpl implements KvtSe @Override public void permissionsUserDel(PermissionsUser permissionsUser) { - baseMapper.permissionsUserDel(permissionsUser); + baseMapper.permissionsUserDel(permissionsUser); } @Override @@ -720,13 +766,24 @@ public class KvtServiceImpl extends ServiceImpl implements KvtSe return baseMapper.selectPermission(); } + @Override + public List selectTable(String databaseName) { + return baseMapper.selectTable(databaseName); + } + + @Override + public List selectTableName(String tableName) { + return baseMapper.selectTableName(tableName); + } + /** * 查询 根据库名跟表名查询字段信息 + * * @return */ - private String sql () { + private String sql() { //查询 根据库名跟表名查询字段信息 - return "SELECT\n" + + return "SELECT\n" + " TABLE_NAME AS 'tableName',\n" + " COLUMN_NAME AS 'name',\n" + " COLUMN_COMMENT AS 'comment',\n" + @@ -750,38 +807,39 @@ 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"; + + 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 e69a378..37b7154 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 @@ -217,6 +217,12 @@ SELECT and tbale_name = #{tbaleName} and dept_id = #{deptId} + + diff --git a/muyu-modules/muyu-rule-engine/muyu-rule-engine-clinet/pom.xml b/muyu-modules/muyu-rule-engine/muyu-rule-engine-clinet/pom.xml index 61f2a1b..383159d 100644 --- a/muyu-modules/muyu-rule-engine/muyu-rule-engine-clinet/pom.xml +++ b/muyu-modules/muyu-rule-engine/muyu-rule-engine-clinet/pom.xml @@ -16,5 +16,14 @@ 17 UTF-8 + + + + com.muyu + muyu-rule-engine-remote + 3.6.3 + compile + + diff --git a/muyu-modules/muyu-rule-engine/muyu-rule-engine-clinet/src/main/java/com/muyu/engine/client/EngClientConfig.java b/muyu-modules/muyu-rule-engine/muyu-rule-engine-clinet/src/main/java/com/muyu/engine/client/EngClientConfig.java new file mode 100644 index 0000000..be87455 --- /dev/null +++ b/muyu-modules/muyu-rule-engine/muyu-rule-engine-clinet/src/main/java/com/muyu/engine/client/EngClientConfig.java @@ -0,0 +1,15 @@ +package com.muyu.engine.client; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Import; + +/** + * 规则接入开发端 EngClientConfig + * + * @author LeYang + * on 2024/5/9 + */ +@ComponentScan +@Import(value = {EngClientRunner.class}) +public class EngClientConfig { +} diff --git a/muyu-modules/muyu-rule-engine/muyu-rule-engine-clinet/src/main/java/com/muyu/engine/client/EngClientRunner.java b/muyu-modules/muyu-rule-engine/muyu-rule-engine-clinet/src/main/java/com/muyu/engine/client/EngClientRunner.java new file mode 100644 index 0000000..4a7a04a --- /dev/null +++ b/muyu-modules/muyu-rule-engine/muyu-rule-engine-clinet/src/main/java/com/muyu/engine/client/EngClientRunner.java @@ -0,0 +1,31 @@ +package com.muyu.engine.client; + +import com.muyu.common.core.domain.Result; +import com.muyu.engine.domain.RuleEngine; +import com.muyu.engine.remote.RuleEngineManangerService; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; + +import java.util.List; + +/** + * 初始化加载 EngClientRunner + * + * @author LeYang + * on 2024/5/9 + */ +@Log4j2 +public class EngClientRunner implements ApplicationRunner { + + @Autowired + private RuleEngineManangerService ruleEngineManangerService;; + + @Override + public void run(ApplicationArguments args) throws Exception { + Result> listResult = ruleEngineManangerService.selectRuleEngine(); + System.out.println("sdsssssssssssssssssssssssss"+listResult.getData()); + + } +} diff --git a/muyu-modules/muyu-rule-engine/muyu-rule-engine-clinet/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/muyu-modules/muyu-rule-engine/muyu-rule-engine-clinet/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..8c4395b --- /dev/null +++ b/muyu-modules/muyu-rule-engine/muyu-rule-engine-clinet/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.muyu.engine.client.EngClientConfig diff --git a/muyu-modules/muyu-rule-engine/muyu-rule-engine-common/src/main/java/com/muyu/engine/custom/engine_custom_email_ss.java b/muyu-modules/muyu-rule-engine/muyu-rule-engine-common/src/main/java/com/muyu/engine/custom/engine_custom_email_ss.java deleted file mode 100644 index ecffe4a..0000000 --- a/muyu-modules/muyu-rule-engine/muyu-rule-engine-common/src/main/java/com/muyu/engine/custom/engine_custom_email_ss.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.muyu.engine.custom; - - -import com.muyu.engine.action.ActionDiscard; -import com.muyu.engine.scope.DataModelEngine; - -/** - * @Author: yl - * @date: 2024/5/6 - * @Description: ss-ss - * @Version: 1.0 - */ -public class engine_custom_email_ss extends DataModelEngine { - @Override - public void execution () { - Object value = getValue(); - - if (value == null || "".equals(value) || "null".equals(value)) { - throw new ActionDiscard(); - } - } -} \ No newline at end of file diff --git a/muyu-modules/muyu-rule-engine/muyu-rule-engine-common/src/main/java/com/muyu/engine/java/com/muyu/engine/custom/engine_custom_email_ss.class b/muyu-modules/muyu-rule-engine/muyu-rule-engine-common/src/main/java/com/muyu/engine/java/com/muyu/engine/custom/engine_custom_email_ss.class new file mode 100644 index 0000000000000000000000000000000000000000..66d548ca66106c20cade7fd6f82d4de7417f3e43 GIT binary patch literal 737 zcmZva%Wl&^6o&sv+K%HoG;B z4$_pt8Y$fuVWt>1nqK!ryb*pV;*tMsc%r24lyCuS92E!aa2YCp9eSs!RuKh}WSXHi zmj;Rdd=kXErzc889Sa-eFr7|qY~muvB?p&rg`t{b7M&UR*hs^eXw82jAyyENI$qzx zRR-9&hU*+R9NfgM#fWl8s*ie|iI9?8!2C|gdud^ZVJXhSkmEMP&iRT7se>f;ALheB zkV-K*w$VV5RF9|+3~OEL&eJR!s>zWUhO|>sZUBpb3LV)*J(6vaLU^lB5Q) z+nRxQKcehbXQ;Kmq2_M2XV`uZ$E};mJFI?2B9Y7;{O7Iv#oys literal 0 HcmV?d00001 diff --git a/muyu-modules/muyu-rule-engine/muyu-rule-engine-common/src/main/java/com/muyu/engine/java/com/muyu/engine/custom/null_qq.class b/muyu-modules/muyu-rule-engine/muyu-rule-engine-common/src/main/java/com/muyu/engine/java/com/muyu/engine/custom/null_qq.class new file mode 100644 index 0000000000000000000000000000000000000000..cd81ef06355ef79345190d2e445e804ad9c044ae GIT binary patch literal 555 zcmZWm$!-%t5Pjt(V~@wgjAOExY+xiW67vCsND)p>b~qRXg-g`#v_@mbGhU_ zNm?HYctXgTsTS46?Y^f0n$zg+zM^!6)zeF?-x#J$ g%H$%)afL^^oLBK2H698Sk-0_P!j{EDcGC9U-|<3u-T(jq literal 0 HcmV?d00001 diff --git a/muyu-modules/muyu-rule-engine/muyu-rule-engine-common/src/main/java/com/muyu/engine/java/com/muyu/engine/custom/null_ss.class b/muyu-modules/muyu-rule-engine/muyu-rule-engine-common/src/main/java/com/muyu/engine/java/com/muyu/engine/custom/null_ss.class new file mode 100644 index 0000000000000000000000000000000000000000..6fde98f1f5762ed12bfbdf70f9c8b74503bcd43c GIT binary patch literal 555 zcmZWm+b#o96kVq+(@v+?d-Mo-s`-+KRf|g#jJ@0k_J*1deF--FM_tyR#(cAe$(}(6N;cColPF` zo#0e@TXB`4cg6MHXpJFRsUDa}BV)j{kcGuC^_N4aFd|xCdEQAFGNhX_I^dp?3`3P_ zt;H|6<8i;~>@`|aM9XRPF~CF~0|smhgBW7S|FqSkuIo2x33;x#M}&pSf0F8P8p8}J zJ=MSnL;3GoTtsf*JL|FAbVI?rrzVO>5^95vW$3Sw1iPx;kllUW@TiiJmr^K=W60Gb zF3xs%Cw?<9{cFk3TNuoGpt?eCyBcnNX|SY^L5Xxr&^LfA)B2Mgqim8q34or3d$3yy z7{bpqiq*a0jEd_=19+Tf9U64J^B$gKK0TQ9QcG=(A=@#7s6)6z6HA ZP5B_^P@the28lO}8<;X^$V}W``T+X2dFB8B literal 0 HcmV?d00001 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 index a326fff..1d0c65f 100644 --- a/muyu-modules/muyu-rule-engine/muyu-rule-engine-remote/pom.xml +++ b/muyu-modules/muyu-rule-engine/muyu-rule-engine-remote/pom.xml @@ -17,4 +17,12 @@ UTF-8 + + + com.muyu + muyu-rule-engine-common + 3.6.3 + + + diff --git a/muyu-modules/muyu-rule-engine/muyu-rule-engine-remote/src/main/java/com/muyu/engine/remote/RuleEngineManangerService.java b/muyu-modules/muyu-rule-engine/muyu-rule-engine-remote/src/main/java/com/muyu/engine/remote/RuleEngineManangerService.java new file mode 100644 index 0000000..e5773db --- /dev/null +++ b/muyu-modules/muyu-rule-engine/muyu-rule-engine-remote/src/main/java/com/muyu/engine/remote/RuleEngineManangerService.java @@ -0,0 +1,30 @@ +package com.muyu.engine.remote; + +import com.muyu.common.core.constant.ServiceNameConstants; +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.web.page.TableDataInfo; +import com.muyu.engine.domain.RuleEngine; +import com.muyu.engine.domain.req.RuleEngineQueryReq; +import com.muyu.engine.remote.factory.RuleEngineManangerServiceFactory; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; + +import java.util.List; + +/** + * RuleEngineManangerService + * + * @author LeYang + * on 2024/5/9 + */ +@FeignClient( + contextId = "RuleEngineManangerService", + value = ServiceNameConstants.MUYU_RULE_ENGINE, + fallbackFactory = RuleEngineManangerServiceFactory.class, + path = "/engine" +) +public interface RuleEngineManangerService { + @PostMapping("/selectRuleEngine") + public Result> selectRuleEngine(); +} diff --git a/muyu-modules/muyu-rule-engine/muyu-rule-engine-remote/src/main/java/com/muyu/engine/remote/factory/RuleEngineManangerServiceFactory.java b/muyu-modules/muyu-rule-engine/muyu-rule-engine-remote/src/main/java/com/muyu/engine/remote/factory/RuleEngineManangerServiceFactory.java new file mode 100644 index 0000000..c90d274 --- /dev/null +++ b/muyu-modules/muyu-rule-engine/muyu-rule-engine-remote/src/main/java/com/muyu/engine/remote/factory/RuleEngineManangerServiceFactory.java @@ -0,0 +1,30 @@ +package com.muyu.engine.remote.factory; + +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.web.page.TableDataInfo; +import com.muyu.engine.domain.RuleEngine; +import com.muyu.engine.domain.req.RuleEngineQueryReq; +import com.muyu.engine.remote.RuleEngineManangerService; +import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * 用户服务器降级处理 RuleEngineManangerServiceFactory + * + * @author LeYang + * on 2024/5/9 + */ +@Component +public class RuleEngineManangerServiceFactory implements FallbackFactory { + @Override + public RuleEngineManangerService create(Throwable cause) { + return new RuleEngineManangerService() { + @Override + public Result> selectRuleEngine() { + return Result.error(cause.getMessage()); + } + }; + } +} diff --git a/muyu-modules/muyu-rule-engine/muyu-rule-engine-remote/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/muyu-modules/muyu-rule-engine/muyu-rule-engine-remote/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..78bbac9 --- /dev/null +++ b/muyu-modules/muyu-rule-engine/muyu-rule-engine-remote/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.muyu.engine.remote.factory.RuleEngineManangerServiceFactory diff --git a/muyu-modules/muyu-rule-engine/muyu-rule-engine-server/src/main/java/com/muyu/engine/RuleEngineApplication.java b/muyu-modules/muyu-rule-engine/muyu-rule-engine-server/src/main/java/com/muyu/engine/RuleEngineApplication.java index 4c97ea7..1f46539 100644 --- a/muyu-modules/muyu-rule-engine/muyu-rule-engine-server/src/main/java/com/muyu/engine/RuleEngineApplication.java +++ b/muyu-modules/muyu-rule-engine/muyu-rule-engine-server/src/main/java/com/muyu/engine/RuleEngineApplication.java @@ -18,11 +18,11 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class RuleEngineApplication { public static void main(String[] args) { - SpringApplication.run(RuleEngineApplication.class); } + } diff --git a/muyu-modules/muyu-rule-engine/muyu-rule-engine-server/src/main/java/com/muyu/engine/controller/RuleEngineController.java b/muyu-modules/muyu-rule-engine/muyu-rule-engine-server/src/main/java/com/muyu/engine/controller/RuleEngineController.java index a2822f7..87b893c 100644 --- a/muyu-modules/muyu-rule-engine/muyu-rule-engine-server/src/main/java/com/muyu/engine/controller/RuleEngineController.java +++ b/muyu-modules/muyu-rule-engine/muyu-rule-engine-server/src/main/java/com/muyu/engine/controller/RuleEngineController.java @@ -1,32 +1,27 @@ package com.muyu.engine.controller; -import java.io.IOException; -import java.util.List; -import javax.servlet.http.HttpServletResponse; - -import com.muyu.engine.domain.RuleEngines; -import io.swagger.annotations.*; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; import com.muyu.common.core.domain.Result; import com.muyu.common.core.utils.poi.ExcelUtil; import com.muyu.common.core.web.controller.BaseController; +import com.muyu.common.core.web.page.TableDataInfo; import com.muyu.common.log.annotation.Log; import com.muyu.common.log.enums.BusinessType; import com.muyu.common.security.annotation.RequiresPermissions; import com.muyu.engine.domain.RuleEngine; +import com.muyu.engine.domain.RuleEngines; +import com.muyu.engine.domain.req.RuleEngineEditReq; import com.muyu.engine.domain.req.RuleEngineQueryReq; import com.muyu.engine.domain.req.RuleEngineSaveReq; -import com.muyu.engine.domain.req.RuleEngineEditReq; import com.muyu.engine.service.RuleEngineService; -import com.muyu.common.core.web.page.TableDataInfo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.List; /** * 规则引擎Controller @@ -145,4 +140,10 @@ public class RuleEngineController extends BaseController { ruleEngineService.updateRuleEngineVersionStates(ruleEngine); return Result.success("引擎状态操作成功"); } + + @PostMapping("/selectRuleEngine") + public Result> selectRuleEngine(){ + List list = ruleEngineService.list(); + return Result.success(list); + } } diff --git a/muyu-modules/muyu-rule-engine/muyu-rule-engine-server/src/main/java/com/muyu/engine/service/impl/RuleEngineServiceImpl.java b/muyu-modules/muyu-rule-engine/muyu-rule-engine-server/src/main/java/com/muyu/engine/service/impl/RuleEngineServiceImpl.java index f3db0ca..6363547 100644 --- a/muyu-modules/muyu-rule-engine/muyu-rule-engine-server/src/main/java/com/muyu/engine/service/impl/RuleEngineServiceImpl.java +++ b/muyu-modules/muyu-rule-engine/muyu-rule-engine-server/src/main/java/com/muyu/engine/service/impl/RuleEngineServiceImpl.java @@ -1,5 +1,16 @@ package com.muyu.engine.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.utils.ObjUtils; +import com.muyu.engine.domain.RuleEngine; +import com.muyu.engine.domain.RuleEngines; +import com.muyu.engine.mapper.RuleEngineMapper; +import com.muyu.engine.service.RuleEngineService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; @@ -8,18 +19,6 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.List; -import java.util.Map; - -import com.muyu.common.core.domain.Result; -import com.muyu.common.core.utils.ObjUtils; -import com.muyu.engine.domain.RuleEngines; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import com.muyu.engine.mapper.RuleEngineMapper; -import com.muyu.engine.domain.RuleEngine; -import com.muyu.engine.service.RuleEngineService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; /** * 规则引擎Service业务层处理 diff --git a/muyu-modules/muyu-rule-engine/muyu-rule-engine-server/src/main/java/com/muyu/engine/service/impl/RuleEngineVersionServiceImpl.java b/muyu-modules/muyu-rule-engine/muyu-rule-engine-server/src/main/java/com/muyu/engine/service/impl/RuleEngineVersionServiceImpl.java index 6bbe9f8..1e4db8a 100644 --- a/muyu-modules/muyu-rule-engine/muyu-rule-engine-server/src/main/java/com/muyu/engine/service/impl/RuleEngineVersionServiceImpl.java +++ b/muyu-modules/muyu-rule-engine/muyu-rule-engine-server/src/main/java/com/muyu/engine/service/impl/RuleEngineVersionServiceImpl.java @@ -2,11 +2,9 @@ package com.muyu.engine.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.muyu.common.core.domain.Result; import com.muyu.engine.domain.RuleEngine; import com.muyu.engine.domain.rule_engine_version.RuleEngineList; import com.muyu.engine.domain.rule_engine_version.RuleEngineVersion; -import com.muyu.engine.mapper.RuleEngineMapper; import com.muyu.engine.mapper.RuleEngineVersionMapper; import com.muyu.engine.service.RuleEngineService; import com.muyu.engine.service.RuleEngineVersionService; @@ -15,14 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.tools.*; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; import java.net.URI; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; import java.util.Arrays; import java.util.List; import java.util.Objects; @@ -103,7 +94,7 @@ private RuleEngineService ruleEngineService; } //全局变量 - public static String url="D:\\work\\zglkh\\cloud-server\\muyu-modules\\muyu-rule-engine\\muyu-rule-engine-common\\src\\main\\java\\com\\muyu\\engine\\custom\\"; +// public static String url="D:\\work\\zglkh\\cloud-server\\muyu-modules\\muyu-rule-engine\\muyu-rule-engine-common\\src\\main\\java\\com\\muyu\\engine\\custom\\"; @Override public void RuleEngineVersionAdd(RuleEngineVersion ruleEngineVersion) { this.save(ruleEngineVersion); @@ -118,110 +109,110 @@ private RuleEngineService ruleEngineService; .build(); this.update(build,new LambdaQueryWrapper().eq(RuleEngineVersion::getId,ruleEngineVersion.getId())); this.writeCodeAdd(ruleEngineVersion); - log.info("编码保存成功",build); - + log.info("编码保存成功"); } - //生产源文件 - public void writeCodeAdd(RuleEngineVersion ruleEngineVersion) { - try{ - //文件路径 - String fileName =ruleEngineVersion.getVersionCode()+".java"; - String filePath = url+fileName; - - //编写java文件 - ProcessBuilder pbCompiler = new ProcessBuilder("javac", fileName); - pbCompiler.directory(Paths.get(url).toFile()); - pbCompiler.redirectErrorStream(true); - - //将字符串写入文件中 - Path path = Paths.get(filePath); - Files.write(path,ruleEngineVersion.getCodeIng().getBytes(StandardCharsets.UTF_8)); - - // 编译 - Process process = pbCompiler.start(); - - BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); - // 等待编译结果 - int exitCode = process.waitFor(); - - if (exitCode == 0) { - System.out.println("编译成功"); - } else { - System.out.println("编译失败"); - } - - //编译成class文件 - ProcessBuilder processBuilder = new ProcessBuilder("java", ruleEngineVersion.getWriteCode()); - processBuilder.directory(Paths.get(url).toFile()); - processBuilder.redirectErrorStream(true); - Process Runprocess = processBuilder.start(); - BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(Runprocess.getInputStream())); - String str ; - while ((str = bufferedReader.readLine()) != null) { - System.out.println(str); - break; - } - Runprocess.waitFor(); - int i = Runprocess.exitValue(); - if (i==0){ - System.out.println("运行成功"); - }else { - System.out.println("运行失败"); - } - }catch (Exception e){ - throw new RuntimeException(); - } - - } - -// private String url ="D:\\work\\zglkh\\cloud-server\\muyu-modules\\muyu-rule-engine\\muyu-rule-engine-common\\src\\main\\java\\com\\muyu\\engine\\java"; -// // //生产源文件 // public void writeCodeAdd(RuleEngineVersion ruleEngineVersion) { -// try { +// try{ +// //文件路径 +// String fileName =ruleEngineVersion.getVersionCode()+".java"; +// String filePath = url+fileName; // -// String className = ruleEngineVersion.getVersionCode(); -// String content = ruleEngineVersion.getCodeIng(); -// // 指定输出目录 -// JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); +// //编写java文件 +// ProcessBuilder pbCompiler = new ProcessBuilder("javac", fileName); +// pbCompiler.directory(Paths.get(url).toFile()); +// pbCompiler.redirectErrorStream(true); +// System.out.println("Writing to file: " + filePath); +// //将字符串写入文件中 +// Path path = Paths.get(filePath); Files.write(path,ruleEngineVersion.getCodeIng().getBytes(StandardCharsets.UTF_8)); // -// try (StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null)) { -// // 创建一个内存中的源文件 -// JavaFileObject sourceFileObject = new JavaSourceFromString(className, content); // -// // 编译选项 -// Iterable options = Arrays.asList("-d", url); -// // 编译源代码 -// JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, null, options, null, Arrays.asList(sourceFileObject)); -// boolean success = task.call(); +// // 编译 +// Process process = pbCompiler.start(); // -// if (success) { +// BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); +// // 等待编译结果 +// int exitCode = process.waitFor(); +// +// if (exitCode == 0) { // System.out.println("编译成功"); // } else { // System.out.println("编译失败"); // } // -// -// } catch (Exception e) { -// e.printStackTrace(); +// //编译成class文件 +// ProcessBuilder processBuilder = new ProcessBuilder("java", ruleEngineVersion.getWriteCode()); +// processBuilder.directory(Paths.get(url).toFile()); +// processBuilder.redirectErrorStream(true); +// Process Runprocess = processBuilder.start(); +// BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(Runprocess.getInputStream())); +// String str ; +// while ((str = bufferedReader.readLine()) != null) { +// System.out.println(str); +// break; // } -// }catch (Exception e) { -// e.printStackTrace(); +// Runprocess.waitFor(); +// int i = Runprocess.exitValue(); +// if (i==0){ +// System.out.println("运行成功"); +// }else { +// System.out.println("运行失败"); +// } +// }catch (Exception e){ +// throw new RuntimeException(); // } // // } -// static class JavaSourceFromString extends SimpleJavaFileObject { -// final String code; -// -// -// JavaSourceFromString(String name, String code) { -// super(URI.create("string:///" + name.replace('.', '/') + Kind.SOURCE.extension), Kind.SOURCE); -// this.code = code; -// } -// @Override -// public CharSequence getCharContent(boolean ignoreEncodingErrors) { -// return code; -// } -// } + + private String url ="D:\\work\\zglkh\\cloud-server\\muyu-modules\\muyu-rule-engine\\muyu-rule-engine-common\\src\\main\\java\\com\\muyu\\engine\\java"; + + //生产源文件 + public void writeCodeAdd(RuleEngineVersion ruleEngineVersion) { + try { + //编译 + String className = ruleEngineVersion.getVersionCode(); + //编译内容 + String content = ruleEngineVersion.getCodeIng(); + // 指定输出目录 + JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); + // 获取编译器 + try (StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null)) { + // 创建一个内存中的源文件 + JavaFileObject sourceFileObject = new JavaSourceFromString(className, content); + + // 编译选项 + Iterable options = Arrays.asList("-d", url); + // 编译源代码 + JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, null, options, null, Arrays.asList(sourceFileObject)); + boolean success = task.call(); + + if (success) { + System.out.println("编译成功"); + } else { + System.out.println("编译失败"); + } + } catch (Exception e) { + e.printStackTrace(); + } + }catch (Exception e) { + e.printStackTrace(); + } + + } + //内存中的源文件 + static class JavaSourceFromString extends SimpleJavaFileObject { + final String code; + // 构造方法 + JavaSourceFromString(String name, String code) { + // URI + super(URI.create("string:///" + name.replace('.', '/') + Kind.SOURCE.extension), Kind.SOURCE); + this.code = code; + } + // 返回源代码 + @Override + public CharSequence getCharContent(boolean ignoreEncodingErrors) { + return code; + } + } } diff --git a/muyu-modules/muyu-unit/pom.xml b/muyu-modules/muyu-unit/pom.xml index 8feb23b..1d71d9a 100644 --- a/muyu-modules/muyu-unit/pom.xml +++ b/muyu-modules/muyu-unit/pom.xml @@ -18,9 +18,14 @@ - org.postgresql - postgresql - 42.2.18 + com.muyu + muyu-rule-engine-clinet + 3.6.3 + + + com.muyu + muyu-kvt-client + 3.6.3