You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

110 lines
4.6 KiB

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