|
@@ -4,6 +4,13 @@ import com.alibaba.fastjson2.JSON;
|
|
import com.ruoyi.common.constant.DataSourceType;
|
|
import com.ruoyi.common.constant.DataSourceType;
|
|
import com.ruoyi.common.core.domain.AjaxResult;
|
|
import com.ruoyi.common.core.domain.AjaxResult;
|
|
import com.ruoyi.common.core.domain.entity.DataSource;
|
|
import com.ruoyi.common.core.domain.entity.DataSource;
|
|
|
|
+
|
|
|
|
+import java.sql.Connection;
|
|
|
|
+import java.sql.DriverManager;
|
|
|
|
+import javax.sql.rowset.JdbcRowSet;
|
|
|
|
+
|
|
|
|
+import com.sun.rowset.JdbcRowSetImpl;
|
|
|
|
+
|
|
import com.zkqy.datamodeling.domain.TableInfo;
|
|
import com.zkqy.datamodeling.domain.TableInfo;
|
|
import com.zkqy.datamodeling.domain.vo.TableInfoVO;
|
|
import com.zkqy.datamodeling.domain.vo.TableInfoVO;
|
|
import com.zkqy.datamodeling.mapper.TableInfoMapper;
|
|
import com.zkqy.datamodeling.mapper.TableInfoMapper;
|
|
@@ -14,6 +21,7 @@ import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
|
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
|
import org.springframework.util.StringUtils;
|
|
import org.springframework.util.StringUtils;
|
|
|
|
+import org.springframework.web.client.RestTemplate;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
@@ -35,7 +43,7 @@ public class TableInfoServiceImpl implements ITableInfoService {
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@Transactional
|
|
@Transactional
|
|
- public void createMysqlDataBase(Map<String, Object> map) {
|
|
|
|
|
|
+ public void createMysqlTable(Map<String, Object> map) {
|
|
// String dataBaseName = (String) map.get("dataBaseName");
|
|
// String dataBaseName = (String) map.get("dataBaseName");
|
|
String tableName = (String) map.get("tableName");
|
|
String tableName = (String) map.get("tableName");
|
|
String tableComment = (String) map.get("tableComment");
|
|
String tableComment = (String) map.get("tableComment");
|
|
@@ -56,7 +64,7 @@ public class TableInfoServiceImpl implements ITableInfoService {
|
|
stringBuilder.append("COMMENT '" + filed.getFieldDescription() + "'");
|
|
stringBuilder.append("COMMENT '" + filed.getFieldDescription() + "'");
|
|
return stringBuilder.toString();
|
|
return stringBuilder.toString();
|
|
}).collect(Collectors.toList());
|
|
}).collect(Collectors.toList());
|
|
- tableInfoMapper.createMysqlDataBase(tableName, tableComment, list);
|
|
|
|
|
|
+ tableInfoMapper.createMysqlTable(tableName, tableComment, list);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -212,7 +220,7 @@ public class TableInfoServiceImpl implements ITableInfoService {
|
|
if (tableInfoMapper.mysqlTableExist(dataBaseName, tableName) > 0) {
|
|
if (tableInfoMapper.mysqlTableExist(dataBaseName, tableName) > 0) {
|
|
return AjaxResult.warn("当前数据库中表已存在");
|
|
return AjaxResult.warn("当前数据库中表已存在");
|
|
}
|
|
}
|
|
- createMysqlDataBase(map);
|
|
|
|
|
|
+ createMysqlTable(map);
|
|
return AjaxResult.success();
|
|
return AjaxResult.success();
|
|
} else if (databaseType.equals(DataSourceType.SQLSERVER.getDataSourceName())) {
|
|
} else if (databaseType.equals(DataSourceType.SQLSERVER.getDataSourceName())) {
|
|
if (sqlServerTableExist(dataBaseName, tableName) > 0) {
|
|
if (sqlServerTableExist(dataBaseName, tableName) > 0) {
|
|
@@ -236,7 +244,7 @@ public class TableInfoServiceImpl implements ITableInfoService {
|
|
if (tableInfoMapper.mysqlTableExist(dataBaseName, tableName) > 0) {
|
|
if (tableInfoMapper.mysqlTableExist(dataBaseName, tableName) > 0) {
|
|
return AjaxResult.warn("当前数据库中表已存在");
|
|
return AjaxResult.warn("当前数据库中表已存在");
|
|
}
|
|
}
|
|
- createMysqlDataBase(map);
|
|
|
|
|
|
+ createMysqlTable(map);
|
|
return AjaxResult.success();
|
|
return AjaxResult.success();
|
|
}
|
|
}
|
|
|
|
|
|
@@ -525,8 +533,101 @@ public class TableInfoServiceImpl implements ITableInfoService {
|
|
descriptionList.stream().forEach(f -> tableInfoMapper.addOracleTableDescription(f));
|
|
descriptionList.stream().forEach(f -> tableInfoMapper.addOracleTableDescription(f));
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Value("${parameter.ip.MAIN_DICTIONARY_IP}")
|
|
|
|
+ private String dictIp;
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
- public void initDatabase(String databaseName) {
|
|
|
|
|
|
+ public int initDatabase(DataSource dataSource) {
|
|
|
|
+ RestTemplate restTemplate = new RestTemplate();
|
|
|
|
+ // 得到基础模版库的连接信息
|
|
|
|
+ String result = restTemplate.getForObject(dictIp + dataSource.getDatabaseType() + "_connection_information", String.class);
|
|
|
|
+ Map<String, Object> objectMap = (Map<String, Object>) JSON.parse(result);
|
|
|
|
+ List<Map<String, Object>> dictList = (List<Map<String, Object>>) objectMap.get("data");
|
|
|
|
+ // 封住基础模版库的信息
|
|
|
|
+ DataSource dataSource2 = new DataSource();
|
|
|
|
+ try {
|
|
|
|
+ this.asd();
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ throw new RuntimeException(e);
|
|
|
|
+ }
|
|
|
|
+ for (Map<String, Object> map : dictList) {
|
|
|
|
+ switch (map.get("dictLabel").toString()) {
|
|
|
|
+ case "databaseName":
|
|
|
|
+ dataSource2.setDatabaseName(map.get("dictValue").toString());
|
|
|
|
+ break;
|
|
|
|
+ case "databaseIp":
|
|
|
|
+ dataSource2.setDatabaseIp(map.get("dictValue").toString());
|
|
|
|
+ break;
|
|
|
|
+ case "username":
|
|
|
|
+ dataSource2.setUsername(map.get("dictValue").toString());
|
|
|
|
+ break;
|
|
|
|
+ case "password":
|
|
|
|
+ dataSource2.setPassword(map.get("dictValue").toString());
|
|
|
|
+ break;
|
|
|
|
+ case "portNumber":
|
|
|
|
+ dataSource2.setPortNumber(Long.parseLong(map.get("dictValue").toString()));
|
|
|
|
+ break;
|
|
|
|
+ case "databaseType":
|
|
|
|
+ dataSource2.setDatabaseType(map.get("dictValue").toString());
|
|
|
|
+ break;
|
|
|
|
+ // 如果还有其他字段需要处理,可以继续添加case分支
|
|
|
|
+ default:
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 得到数据源信息 创建连接后进行创建数据库,以及基础数据表
|
|
|
|
+ switch (dataSource.getDatabaseType()) {
|
|
|
|
+ case "mysql":
|
|
|
|
+ // 创建数据库
|
|
|
|
+ tableInfoMapper.createMysqlDataBase(dataSource.getDatabaseName());
|
|
|
|
+ // 读取基础表信息
|
|
|
|
+
|
|
|
|
+ // /system/dict/data/type/{dictType}
|
|
|
|
+
|
|
|
|
|
|
|
|
+ // 查询主库中字典数据源信息
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // 创建所需的基础表
|
|
|
|
+ List<String> sd = new ArrayList<>();
|
|
|
|
+ tableInfoMapper.createMysqlTable("表名", "表描述", sd);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ break;
|
|
|
|
+ case "sqlserver":
|
|
|
|
+ tableInfoMapper.createSqlServerDataBase(dataSource.getDatabaseName());
|
|
|
|
+
|
|
|
|
+ // tableInfoMapper.createSqlServerTable();
|
|
|
|
+ break;
|
|
|
|
+ case "dm":
|
|
|
|
+ tableInfoMapper.createDmDataBase(dataSource.getDatabaseName());
|
|
|
|
+ break;
|
|
|
|
+ case "oracle":
|
|
|
|
+ tableInfoMapper.createOracleUser(dataSource.getUsername(), dataSource.getPassword());
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ return 1;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ public static void asd() throws Exception {
|
|
|
|
+ Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
|
|
|
|
+ try (
|
|
|
|
+// Connection con = DriverManager.getConnection("jdbc:sqlserver://192.168.110.52", "sa", "root1234");
|
|
|
|
+ Connection con = DriverManager.getConnection("jdbc:sqlserver://192.168.110.52:1433;", "sa", "root1234");
|
|
|
|
+ JdbcRowSet jrs = new JdbcRowSetImpl(con);
|
|
|
|
+ ) {
|
|
|
|
+// jrs.setCommand("use test"); //执行选择数据库操作
|
|
|
|
+// jrs.execute();
|
|
|
|
+ jrs.setCommand("select name from sys.databases;");
|
|
|
|
+ jrs.execute();
|
|
|
|
+ while (jrs.next()) {
|
|
|
|
+ System.out.println(jrs.getString(1));
|
|
|
|
+// System.out.println(jrs.getString(1) + "\t" + jrs.getString(2) + "\t" + jrs.getString(3));
|
|
|
|
+ }
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|