diff --git a/src/main/java/com/dsideal/base/DataEase/Model/DataEaseModel.java b/src/main/java/com/dsideal/base/DataEase/Model/DataEaseModel.java index e3f69ecd..5848696c 100644 --- a/src/main/java/com/dsideal/base/DataEase/Model/DataEaseModel.java +++ b/src/main/java/com/dsideal/base/DataEase/Model/DataEaseModel.java @@ -1,7 +1,9 @@ package com.dsideal.base.DataEase.Model; +import com.jfinal.kit.Kv; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Record; +import com.jfinal.plugin.activerecord.SqlPara; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -81,14 +83,13 @@ public class DataEaseModel { } - /** * 获取指定大屏中的地图配置信息 * * @param bigScreenId 大屏ID * @return */ - public List getMap(long bigScreenId) { + public List getMap(long bigScreenId) { String sql = "select id,custom_attr from dataease.core_chart_view where scene_id=? and type='map'"; List list = Db.find(sql, bigScreenId); return list; @@ -100,7 +101,7 @@ public class DataEaseModel { * @param cityName 城市名称 * @return 城市编码 */ - public String getCityCode(String cityName) { + public String getCityCode(String cityName) { String sql = "select area_code from t_city_code where area_name=?"; return Db.findFirst(sql, cityName).getStr("area_code"); } @@ -111,7 +112,7 @@ public class DataEaseModel { * @param dataVisualizationName 大屏名称 * @param cityName 城市名称 */ - public void updateCity(String dataVisualizationName, String cityName) { + public void updateCity(String dataVisualizationName, String cityName) { //取出大屏的ID值 String sql = "select * from dataease.data_visualization_info where name =?"; Record dataVisualizationInfo = Db.findFirst(sql, dataVisualizationName); @@ -131,4 +132,155 @@ public class DataEaseModel { Db.update("update dataease.core_chart_view set custom_attr=? where id=?", jsonString, id); } } + + + /** + * 获取数据集的表名 + * + * @param dataset_group_id 数据集的id + * @return 表名 + */ + public String getTableName(long dataset_group_id) { + Kv kv = Kv.by("dataset_group_id", dataset_group_id); + SqlPara sqlPara = Db.getSqlPara("DataEase.getTableName", kv); + return Db.findFirst(sqlPara).getStr("table_name"); + } + + + /** + * 将数据集填充到数据库表中,用于配置此数据集让谁来维护 + * + * @param parent_name 数据集的父名称 + * @param table_name 表名 + * @param dataset_name 数据集名 + */ + public void collectDataSet(String parent_name, String table_name, String dataset_name, long dataease_id) { + String sql = "select count(1) from t_dp_dataset where table_name=?"; + if (Db.queryInt(sql, table_name) == 0) { + Record record = new Record(); + record.set("parent_name", parent_name.replace("-", "")); + record.set("table_name", table_name); + record.set("dataset_name", dataset_name); + if (parent_name.contains("省")) { + record.set("owner_id", 1); + } else if (parent_name.contains("市") || parent_name.contains("州")) { + record.set("owner_id", 2); + } else if (parent_name.contains("县")) { + record.set("owner_id", 3); + } + record.set("dataease_id", dataease_id); + Db.save("t_dp_dataset", "id", record); + System.out.println("添加数据集成功,parent_name=" + parent_name + ",table_name=" + table_name + ",dataset_name=" + dataset_name); + } + } + + /** + * 获取表中不允许为空的列名 + * + * @param tableName 表名 + * @return 列名列表 + */ + public List getNotNullColumns(String tableName) { + List columns = new ArrayList<>(); + String sql = "SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ? AND IS_NULLABLE = 'NO'"; + List results = Db.find(sql, DataEaseModel.DB_NAME, tableName); + for (Record result : results) { + columns.add(result.get("COLUMN_NAME").toString()); + } + return columns; + } + + // 检查表是否存在主键 + public boolean hasPrimaryKey(String tableName) { + String sql = "SELECT COUNT(*) as c FROM information_schema.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ? AND CONSTRAINT_TYPE = 'PRIMARY KEY'"; + return Db.use("dataease").queryInt(sql, DataEaseModel.DB_NAME, tableName) > 0; + } + + // 添加主键列,并设置为主键 + public void addPrimaryKey(String tableName) { + // 添加 id 列 + String sql = "ALTER TABLE `" + tableName + "` ADD COLUMN `id` int(11) primary key auto_increment first"; + Db.use(DataEaseModel.DB_NAME).update(sql); + } + + /** + * 获取所有以 excel_ 开头的表 + * + * @return + */ + public List getExcelTable() { + // 查询所有以 excel_ 开头的表 + String sql = "SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'dataease' AND TABLE_NAME LIKE 'excel\\_%'"; + return Db.use(DataEaseModel.DB_NAME).find(sql); + } + + /** + * 添加主键 + */ + public void addPrimaryKey() { + // 查询所有以 excel_ 开头的表 + List tables = getExcelTable(); + + for (Record table : tables) { + String tableName = table.getStr("TABLE_NAME"); + //没有主键的表,添加上主键 + if (!hasPrimaryKey(tableName)) { + System.out.println("表" + tableName + "没有主键,正在添加主键..."); + addPrimaryKey(tableName); + System.out.println("添加主键成功"); + } + } + } + + /** + * 将Excel表中不允许为空的列改为允许为空 + */ + public void updateNotNullColumns() { + // 查询所有以 excel_ 开头的表 + List tables = getExcelTable(); + + for (Record table : tables) { + String tableName = table.getStr("TABLE_NAME"); + //获取非空列 + List cols = getNotNullColumns(tableName); + + for (String col : cols) { + if (!col.equals("id")) { + System.out.println("列" + col + "非空,正在去掉不允许为空的限制..."); + //去掉不允许为空的限制 + String sql = "ALTER TABLE `" + tableName + "` MODIFY `" + col + "` VARCHAR(255) NULL"; + Db.use(DataEaseModel.DB_NAME).update(sql); + System.out.println("去掉不允许为空的限制成功"); + } + } + } + } + + /** + * 将数据集添加到数据库中 + */ + public void collectDataSet() { + //1、获取树根 + SqlPara sqlPara = Db.getSqlPara("DataEase.getTreeRoot"); + Record rRoot = Db.findFirst(sqlPara); + long rootId = rRoot.getLong("id"); + + //2、查询有哪些数据集 + Kv kv = Kv.by("id", rootId); + kv.set("dataset", true); + sqlPara = Db.getSqlPara("DataEase.getAllDataSet", kv); + List list = Db.find(sqlPara); + + for (Record record : list) { + long dataease_id = record.getLong("id"); + //数据集父名称 + String parent_name = record.getStr("parent_name"); + //数据集名称 + String dataset_name = record.getStr("name"); + //对应的表名 + String table_name = getTableName(dataease_id); + //将这些数据集扫描到表中,然后标识这个数据集由谁来维护 + collectDataSet(parent_name, table_name, dataset_name, dataease_id); + } + } } diff --git a/src/main/java/com/dsideal/base/Tools/InitDataEaseDataSet.java b/src/main/java/com/dsideal/base/Tools/InitDataEaseDataSet.java index bc90ad62..676ffdc9 100644 --- a/src/main/java/com/dsideal/base/Tools/InitDataEaseDataSet.java +++ b/src/main/java/com/dsideal/base/Tools/InitDataEaseDataSet.java @@ -2,142 +2,15 @@ package com.dsideal.base.Tools; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Plugin.YamlProp; -import com.jfinal.kit.Kv; import com.jfinal.kit.Prop; import com.jfinal.plugin.activerecord.ActiveRecordPlugin; -import com.jfinal.plugin.activerecord.Db; -import com.jfinal.plugin.activerecord.SqlPara; import com.jfinal.plugin.activerecord.dialect.MysqlDialect; import com.jfinal.plugin.hikaricp.HikariCpPlugin; -import com.jfinal.plugin.activerecord.Record; import java.io.File; -import java.util.ArrayList; -import java.util.List; public class InitDataEaseDataSet { - /** - * 获取数据集的表名 - * - * @param dataset_group_id 数据集的id - * @return 表名 - */ - public static String getTableName(long dataset_group_id) { - Kv kv = Kv.by("dataset_group_id", dataset_group_id); - SqlPara sqlPara = Db.getSqlPara("DataEase.getTableName", kv); - return Db.findFirst(sqlPara).getStr("table_name"); - } - - - /** - * 将数据集填充到数据库表中,用于配置此数据集让谁来维护 - * - * @param parent_name 数据集的父名称 - * @param table_name 表名 - * @param dataset_name 数据集名 - */ - public static void addDataSet(String parent_name, String table_name, String dataset_name,long dataease_id) { - String sql = "select count(1) from t_dp_dataset where table_name=?"; - if (Db.queryInt(sql, table_name) == 0) { - Record record = new Record(); - record.set("parent_name", parent_name.replace("-","")); - record.set("table_name", table_name); - record.set("dataset_name", dataset_name); - if (parent_name.contains("省")) { - record.set("owner_id", 1); - } else if (parent_name.contains("市") || parent_name.contains("州")) { - record.set("owner_id", 2); - } else if (parent_name.contains("县")) { - record.set("owner_id", 3); - } - record.set("dataease_id",dataease_id); - Db.save("t_dp_dataset", "id", record); - System.out.println("添加数据集成功,parent_name=" + parent_name + ",table_name=" + table_name + ",dataset_name=" + dataset_name); - } - } - - /** - * 获取表中不允许为空的列名 - * - * @param tableName 表名 - * @return 列名列表 - */ - public static List getNotNullColumns(String tableName) { - List columns = new ArrayList<>(); - String sql = "SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ? AND IS_NULLABLE = 'NO'"; - List results = Db.find(sql, DataEaseModel.DB_NAME, tableName); - for (Record result : results) { - columns.add(result.get("COLUMN_NAME").toString()); - } - return columns; - } - - // 检查表是否存在主键 - public static boolean hasPrimaryKey(String tableName) { - String sql = "SELECT COUNT(*) as c FROM information_schema.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ? AND CONSTRAINT_TYPE = 'PRIMARY KEY'"; - return Db.use("dataease").queryInt(sql, DataEaseModel.DB_NAME, tableName) > 0; - } - - // 添加主键列,并设置为主键 - public static void addPrimaryKey(String tableName) { - // 添加 id 列 - String sql = "ALTER TABLE `" + tableName + "` ADD COLUMN `id` int(11) primary key auto_increment first"; - Db.use(DataEaseModel.DB_NAME).update(sql); - } - - /** - * 获取所有以 excel_ 开头的表 - * - * @return - */ - public static List getExcelTable() { - // 查询所有以 excel_ 开头的表 - String sql = "SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'dataease' AND TABLE_NAME LIKE 'excel\\_%'"; - return Db.use(DataEaseModel.DB_NAME).find(sql); - } - - /** - * 添加主键 - */ - public static void addPrimaryKey() { - // 查询所有以 excel_ 开头的表 - List tables = getExcelTable(); - - for (Record table : tables) { - String tableName = table.getStr("TABLE_NAME"); - //没有主键的表,添加上主键 - if (!hasPrimaryKey(tableName)) { - System.out.println("表" + tableName + "没有主键,正在添加主键..."); - addPrimaryKey(tableName); - System.out.println("添加主键成功"); - } - } - } - - /** - * 将Excel表中不允许为空的列改为允许为空 - */ - public static void updateNotNullColumns() { - // 查询所有以 excel_ 开头的表 - List tables = getExcelTable(); - - for (Record table : tables) { - String tableName = table.getStr("TABLE_NAME"); - //获取非空列 - List cols = getNotNullColumns(tableName); - - for (String col : cols) { - if (!col.equals("id")) { - System.out.println("列" + col + "非空,正在去掉不允许为空的限制..."); - //去掉不允许为空的限制 - String sql = "ALTER TABLE `" + tableName + "` MODIFY `" + col + "` VARCHAR(255) NULL"; - Db.use(DataEaseModel.DB_NAME).update(sql); - System.out.println("去掉不允许为空的限制成功"); - } - } - } - } public static void main(String[] args) { //加载配置文件 @@ -173,32 +46,13 @@ public class InitDataEaseDataSet { arp.start(); arpDataEase.start(); - //1、获取树根 - SqlPara sqlPara = Db.getSqlPara("DataEase.getTreeRoot"); - Record rRoot = Db.findFirst(sqlPara); - long rootId = rRoot.getLong("id"); + DataEaseModel dm = new DataEaseModel(); - //2、查询有哪些数据集 - Kv kv = Kv.by("id", rootId); - kv.set("dataset", true); - sqlPara = Db.getSqlPara("DataEase.getAllDataSet", kv); - List list = Db.find(sqlPara); - - for (Record record : list) { - long dataease_id = record.getLong("id"); - //数据集父名称 - String parent_name = record.getStr("parent_name"); - //数据集名称 - String dataset_name = record.getStr("name"); - //对应的表名 - String table_name = getTableName(dataease_id); - - //将这些数据集扫描到表中,然后标识这个数据集由谁来维护 - addDataSet(parent_name, table_name, dataset_name,dataease_id); - } - //加上主键 - //addPrimaryKey(); - //将所有非空列去掉不允许为空的限制 - updateNotNullColumns(); + //1、添加到数据集表中 + dm.collectDataSet(); + //2、加上主键 + dm.addPrimaryKey(); + //3、将所有非空列去掉不允许为空的限制 + dm.updateNotNullColumns(); } }