feat:初始化数据转换模块,druid数据源获取正常
parent
81c1289111
commit
608f365b60
|
@ -10,7 +10,6 @@ import org.aspectj.lang.annotation.Aspect;
|
||||||
import org.aspectj.lang.annotation.Pointcut;
|
import org.aspectj.lang.annotation.Pointcut;
|
||||||
import org.aspectj.lang.reflect.MethodSignature;
|
import org.aspectj.lang.reflect.MethodSignature;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -18,6 +18,11 @@
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
</properties>
|
</properties>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>ruoyi-data_asset-common</artifactId>
|
||||||
|
<version>3.6.3</version>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.muyu</groupId>
|
<groupId>com.muyu</groupId>
|
||||||
<artifactId>ruoyi-data_asset-remote</artifactId>
|
<artifactId>ruoyi-data_asset-remote</artifactId>
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
package com.ruoyi.dataAsset.config;
|
package com.ruoyi.dataAsset.config;
|
||||||
|
|
||||||
|
import com.alibaba.druid.pool.DruidDataSource;
|
||||||
import com.ruoyi.common.core.domain.Result;
|
import com.ruoyi.common.core.domain.Result;
|
||||||
|
import com.ruoyi.common.core.text.Convert;
|
||||||
|
import com.ruoyi.common.core.utils.StringUtils;
|
||||||
import com.ruoyi.common.core.web.page.TableDataInfo;
|
import com.ruoyi.common.core.web.page.TableDataInfo;
|
||||||
import com.ruoyi.dataAsset.domain.DataSource;
|
import com.ruoyi.dataAsset.domain.DataSource;
|
||||||
import com.ruoyi.dataAsset.domain.req.DataSourceQueryReq;
|
import com.ruoyi.dataAsset.domain.req.DataSourceQueryReq;
|
||||||
|
@ -9,6 +12,7 @@ import lombok.extern.log4j.Log4j2;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.boot.ApplicationArguments;
|
import org.springframework.boot.ApplicationArguments;
|
||||||
import org.springframework.boot.ApplicationRunner;
|
import org.springframework.boot.ApplicationRunner;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 数据资产应用程序运行程序
|
* 数据资产应用程序运行程序
|
||||||
|
@ -22,13 +26,94 @@ public class DataAssetApplicationRunner implements ApplicationRunner {
|
||||||
@Autowired
|
@Autowired
|
||||||
private RemoteDataAssetService remoteDataAssetService;
|
private RemoteDataAssetService remoteDataAssetService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private DruidDataSourceFactory druidDataSourceFactory;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run(ApplicationArguments args) throws Exception {
|
public void run(ApplicationArguments args) throws Exception {
|
||||||
Result<TableDataInfo<DataSource>> result = remoteDataAssetService.list(new DataSourceQueryReq());
|
Result<TableDataInfo<DataSource>> result = remoteDataAssetService.list(new DataSourceQueryReq());
|
||||||
if(Result.isSuccess(result)){
|
if(Result.isSuccess(result)){
|
||||||
log.info(result.getData());
|
this.druidDataSourceMap(result.getData().getRows());
|
||||||
}else {
|
|
||||||
log.error(result.getMsg());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void druidDataSourceMap(List<DataSource> dataSourceList){
|
||||||
|
for (DataSource dataSource : dataSourceList) {
|
||||||
|
if(dataSource.getStatus().equals("N")){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
druidDataSourceFactory.put(dataSource.getId(),this.createDataSource(dataSource));
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取Druid连接池数据源
|
||||||
|
* @param dataSource 数据源
|
||||||
|
* @return Druid数据源
|
||||||
|
*/
|
||||||
|
public DruidDataSource createDataSource(DataSource dataSource) {
|
||||||
|
DruidDataSource druidDataSource = null;
|
||||||
|
String driverType=null;
|
||||||
|
String url="jdbc:"+dataSource.getDatabaseType()+dataSource.getIp()+":"+dataSource.getPort();
|
||||||
|
if(dataSource.getDatabaseType().contains("mysql")){
|
||||||
|
driverType="com.mysql.cj.jdbc.Driver";
|
||||||
|
url+="/"+dataSource.getDatabases();
|
||||||
|
}else if(dataSource.getDatabaseType().contains("sqlserver")){
|
||||||
|
driverType="com.microsoft.sqlserver.jdbc.SQLServerDriver";
|
||||||
|
url+=";DatabaseName="+dataSource.getDatabases()+";";
|
||||||
|
}
|
||||||
|
if(StringUtils.isNotEmpty(dataSource.getConnectionParameter())){
|
||||||
|
if(dataSource.getDatabaseType().contains("mysql")){
|
||||||
|
url+="?"+dataSource.getConnectionParameter();
|
||||||
|
}else {
|
||||||
|
url+=dataSource.getConnectionParameter()+";";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
//手动创建数据源
|
||||||
|
druidDataSource = new DruidDataSource();
|
||||||
|
druidDataSource.setName(dataSource.getId().toString());
|
||||||
|
druidDataSource.setDriverClassName(driverType);
|
||||||
|
druidDataSource.setUrl(url);
|
||||||
|
druidDataSource.setUsername(dataSource.getUsername());
|
||||||
|
druidDataSource.setPassword(dataSource.getPassword());
|
||||||
|
//设置连接配置
|
||||||
|
if(StringUtils.isNotEmpty(dataSource.getConnectionConfig())){
|
||||||
|
String[] configs = dataSource.getConnectionConfig().split(",");
|
||||||
|
for (String config : configs) {
|
||||||
|
String[] split = config.split("=");
|
||||||
|
if(config.contains("initNum")){
|
||||||
|
//初始化连接池大小
|
||||||
|
druidDataSource.setInitialSize(split.length>1&&!split[1].equals("null")&&StringUtils.isNotEmpty(split[1])? Convert.toInt(split[1]):5);
|
||||||
|
}else if(config.contains("maxNum")){
|
||||||
|
//最大连接数
|
||||||
|
druidDataSource.setMaxActive(split.length>1&&!split[1].equals("null")&&StringUtils.isNotEmpty(split[1])?Convert.toInt(split[1]):20);
|
||||||
|
}else if(config.contains("minIdle")){
|
||||||
|
//最小空闲数
|
||||||
|
druidDataSource.setMinIdle(split.length>1&&!split[1].equals("null")&&StringUtils.isNotEmpty(split[1])?Convert.toInt(split[1]):5);
|
||||||
|
}else {
|
||||||
|
//获取连接最大等待时间,单位毫秒
|
||||||
|
druidDataSource.setMaxWait(split.length>1&&!split[1].equals("null")&&StringUtils.isNotEmpty(split[1])?Convert.toInt(split[1]):4000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
String validationQuery = "select 1";
|
||||||
|
//申请连接时执行validationQuery检测连接是否有效,防止取到的连接不可用
|
||||||
|
druidDataSource.setTestOnBorrow(true);
|
||||||
|
druidDataSource.setValidationQuery(validationQuery);
|
||||||
|
//防止DruidDataSource一直尝试获取连接,导致服务卡死
|
||||||
|
druidDataSource.setConnectionErrorRetryAttempts(0);
|
||||||
|
druidDataSource.setBreakAfterAcquireFailure(true);
|
||||||
|
druidDataSource.setConnectTimeout(2000);
|
||||||
|
druidDataSource.init();
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
return druidDataSource;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
package com.ruoyi.dataAsset.config;
|
|
||||||
|
|
||||||
import org.springframework.context.annotation.ComponentScan;
|
|
||||||
import org.springframework.context.annotation.Import;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 数据资产客户端配置
|
|
||||||
* @ClassName DataAssetClientConfig
|
|
||||||
* @Author 森静若林
|
|
||||||
* @Date 2024/5/8 20:30
|
|
||||||
*/
|
|
||||||
@ComponentScan
|
|
||||||
@Import(DataAssetApplicationRunner.class)
|
|
||||||
public class DataAssetClientConfig {
|
|
||||||
}
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
package com.ruoyi.dataAsset.config;
|
||||||
|
|
||||||
|
import com.alibaba.druid.pool.DruidDataSource;
|
||||||
|
import org.springframework.context.annotation.ComponentScan;
|
||||||
|
import org.springframework.context.annotation.Import;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数据资产客户端配置
|
||||||
|
* @ClassName DataAssetClientConfig
|
||||||
|
* @Author 森静若林
|
||||||
|
* @Date 2024/5/8 20:30
|
||||||
|
*/
|
||||||
|
@ComponentScan
|
||||||
|
@Import(DataAssetApplicationRunner.class)
|
||||||
|
public class DruidDataSourceFactory {
|
||||||
|
|
||||||
|
private final Map<Long, DruidDataSource> druidDataSourceMap=new HashMap<>();
|
||||||
|
|
||||||
|
public Map<Long,DruidDataSource> getMap(){
|
||||||
|
return this.druidDataSourceMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void put(Long id,DruidDataSource druidDataSource){
|
||||||
|
this.druidDataSourceMap.put(id,druidDataSource);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1 +1 @@
|
||||||
com.ruoyi.dataAsset.config.DataAssetClientConfig
|
com.ruoyi.dataAsset.config.DruidDataSourceFactory
|
||||||
|
|
|
@ -3,7 +3,6 @@ package com.ruoyi.dataAsset.remote;
|
||||||
import com.ruoyi.common.core.constant.ServiceNameConstants;
|
import com.ruoyi.common.core.constant.ServiceNameConstants;
|
||||||
import com.ruoyi.common.core.domain.Result;
|
import com.ruoyi.common.core.domain.Result;
|
||||||
import com.ruoyi.common.core.web.page.TableDataInfo;
|
import com.ruoyi.common.core.web.page.TableDataInfo;
|
||||||
import com.ruoyi.common.security.annotation.InnerAuth;
|
|
||||||
import com.ruoyi.dataAsset.domain.DataSource;
|
import com.ruoyi.dataAsset.domain.DataSource;
|
||||||
import com.ruoyi.dataAsset.domain.req.DataSourceQueryReq;
|
import com.ruoyi.dataAsset.domain.req.DataSourceQueryReq;
|
||||||
import com.ruoyi.dataAsset.remote.factory.RemoteDataAssetFactory;
|
import com.ruoyi.dataAsset.remote.factory.RemoteDataAssetFactory;
|
||||||
|
|
|
@ -44,7 +44,7 @@ public class DataSourceController extends BaseController {
|
||||||
* 查询数据接入列表
|
* 查询数据接入列表
|
||||||
*/
|
*/
|
||||||
@ApiOperation("获取数据接入列表")
|
@ApiOperation("获取数据接入列表")
|
||||||
@RequiresPermissions("dataAsset:source:list")
|
//@RequiresPermissions("dataAsset:source:list")
|
||||||
@GetMapping("/list")
|
@GetMapping("/list")
|
||||||
public Result<TableDataInfo<DataSource>> list(DataSourceQueryReq dataSourceQueryReq) {
|
public Result<TableDataInfo<DataSource>> list(DataSourceQueryReq dataSourceQueryReq) {
|
||||||
startPage();
|
startPage();
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
package com.ruoyi.dataTransform.controller;
|
||||||
|
|
||||||
|
import com.alibaba.druid.pool.DruidDataSource;
|
||||||
|
import com.ruoyi.common.core.domain.Result;
|
||||||
|
import com.ruoyi.dataAsset.config.DruidDataSourceFactory;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数据源测试
|
||||||
|
* @ClassName DataSourceTestController
|
||||||
|
* @Author 森静若林
|
||||||
|
* @Date 2024/5/9 10:56
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
public class DataSourceTestController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private DruidDataSourceFactory druidDataSourceFactory;
|
||||||
|
|
||||||
|
@GetMapping("/test")
|
||||||
|
public Result<Object> test(){
|
||||||
|
Map<Long, DruidDataSource> map = druidDataSourceFactory.getMap();
|
||||||
|
System.out.println(map);
|
||||||
|
return Result.success();
|
||||||
|
}
|
||||||
|
}
|
|
@ -39,7 +39,7 @@ public class EngineVersionController extends BaseController {
|
||||||
* 查询引擎规则版本列表
|
* 查询引擎规则版本列表
|
||||||
*/
|
*/
|
||||||
@ApiOperation("查询引擎规则版本列表")
|
@ApiOperation("查询引擎规则版本列表")
|
||||||
@RequiresPermissions("ruleEngine:version:list")
|
//@RequiresPermissions("ruleEngine:version:list")
|
||||||
@GetMapping("/list")
|
@GetMapping("/list")
|
||||||
public Result<List<EngineVersion>> list(EngineVersionQueryReq engineConfigQueryReq) {
|
public Result<List<EngineVersion>> list(EngineVersionQueryReq engineConfigQueryReq) {
|
||||||
return Result.success(engineVersionService.list(EngineVersion.queryBuild(engineConfigQueryReq)));
|
return Result.success(engineVersionService.list(EngineVersion.queryBuild(engineConfigQueryReq)));
|
||||||
|
|
Loading…
Reference in New Issue