package com.dsideal.base.Tools; import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.file.PathUtil; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Plugin.YamlProp; import com.dsideal.base.Util.ExcelCommonUtil; import com.jfinal.kit.FileKit; import com.jfinal.kit.PathKit; import com.jfinal.kit.Prop; import com.jfinal.plugin.activerecord.ActiveRecordPlugin; import com.jfinal.plugin.activerecord.Db; 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.io.IOException; import java.util.List; public class InitDataEaseDataSet { public static void main(String[] args) throws IOException { //加载配置文件 String configFile = "application_dev.yaml"; Prop PropKit = new YamlProp(configFile); HikariCpPlugin masterPlugin = new HikariCpPlugin(PropKit.get("mysql.jdbcUrl"), PropKit.get("mysql.user"), PropKit.get("mysql.password").trim(), PropKit.get("mysql.driverClassName")); masterPlugin.start(); HikariCpPlugin dataEasePlugin = new HikariCpPlugin(PropKit.get("mysql.jdbcUrl").replace("ds_db", DataEaseModel.DB_NAME), PropKit.get("mysql.user"), PropKit.get("mysql.password").trim(), PropKit.get("mysql.driverClassName")); dataEasePlugin.start(); // 配置ActiveRecord插件 ActiveRecordPlugin arp = new ActiveRecordPlugin("master", masterPlugin); arp.setDialect(new MysqlDialect()); ActiveRecordPlugin arpDataEase = new ActiveRecordPlugin(DataEaseModel.DB_NAME, dataEasePlugin); arpDataEase.setDialect(new MysqlDialect()); //遍历sql目录下所有的sql文件 File sqlDir; String basePath = InitDataEaseDataSet.class.getResource("/").getPath(); sqlDir = new File(basePath + "/Sql"); File[] sqlFiles = sqlDir.listFiles(); for (File sqlFile : sqlFiles != null ? sqlFiles : new File[0]) { //只加载.sql文件 if (sqlFile.getName().indexOf(".sql") > 0) { arp.addSqlTemplate("/Sql/" + sqlFile.getName()); arpDataEase.addSqlTemplate("/Sql/" + sqlFile.getName()); } } arp.start(); arpDataEase.start(); DataEaseModel dm = new DataEaseModel(); //1、添加到数据集表中 dm.collectDataSet(); //2、加上主键 dm.addPrimaryKey(); //3、将所有非空列去掉不允许为空的限制 dm.updateNotNullColumns(); //4、遍历所有数据集的表 int total = 0; for (int i = 1; i <= 3; i++) {//1:省管理员,2:市州管理员,3:县区管理员 switch (i) { case 1: System.out.println("正在处理省管理员需要看到的数据集~"); break; case 2: System.out.println("正在处理市州管理员需要看到的数据集~"); break; case 3: System.out.println("正在处理县区管理员需要看到的数据集~"); break; } //Excel的保存目录 String exportPath = "D:/360Downloads/Excel"; File directory = new File(exportPath); // 检查目录是否存在 if (!directory.exists()) { directory.mkdirs(); } List list = dm.getDataSetByIdentityId(i); System.out.println("数据集个数=" + list.size()); total += list.size(); for (Record record : list) { int id = record.getInt("id"); String tableName = record.getStr("table_name"); System.out.println("正在处理数据集:" + tableName); //对此表中的数据进行直接导出EXCEL String sql = "select * from `" + tableName + "`"; List tableData = Db.use(DataEaseModel.DB_NAME).find(sql); //表tableData中如果有一列叫id,那么去掉这一列 for (Record tableDatum : tableData) { tableDatum.remove("id"); } ExcelCommonUtil.writeExcel(tableData, exportPath + "/" + tableName + ".xlsx"); } } System.out.println("恭喜,所有数据处理完毕,共生成数据集数量=" + total + "个。"); } }