kgdxpr 9 months ago
commit d35ef7c496

@ -3,6 +3,8 @@ package com.dsideal.base.DataEase.Controller;
import cn.hutool.core.codec.Base64;
import com.dsideal.base.BaseApplication;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.DataEase.Model.ExcelReader;
import com.dsideal.base.DataEase.Model.ExcelRow;
import com.dsideal.base.Interceptor.EmptyInterface;
import com.dsideal.base.Interceptor.IsLoginInterface;
import com.dsideal.base.Interceptor.IsNumericInterface;
@ -14,6 +16,7 @@ import com.jfinal.core.Controller;
import com.jfinal.ext.interceptor.GET;
import com.jfinal.ext.interceptor.POST;
import com.jfinal.kit.Kv;
import com.jfinal.kit.StrKit;
import com.jfinal.plugin.activerecord.Record;
import com.jfinal.upload.UploadFile;
import io.github.yedaxia.apidocs.ApiDoc;
@ -48,15 +51,23 @@ public class DataEaseController extends Controller {
//发布的地址
String publish_url = BaseApplication.PropKit.get("dataEase.publish_url");
//先更新一下数据表
dm.updateCity(dataVisualizationName, city_name);
//再拼接一下URL的最终地址
int res = dm.updateCity(dataVisualizationName, city_name);
if (res == -1) {
renderJson(CommonUtil.returnMessageJson(false, dataVisualizationName + "名称的大屏不唯一,无法完成更新操作!"));
return;
}
if (res == -2) {
renderJson(CommonUtil.returnMessageJson(false, dataVisualizationName + "名称的大屏并不是隶属于云南教科院项目,无法完成更新操作!"));
return;
}
//拼接一下URL的最终地址
JSONObject jo = new JSONObject();
jo.put("city_name", city_name);
String base64Str = Base64.encode(jo.toString());
//记录最后一次操作的是哪个市或者县区
dm.writeLastArea(city_name);
//跳转
redirect(publish_url + "/#/de-link/X4l1qGNH?attachParams=" + base64Str);
redirect(publish_url + BaseApplication.PropKit.get("dataEase.ShiZhou_url") + "?attachParams=" + base64Str);
}
/**
@ -74,17 +85,17 @@ public class DataEaseController extends Controller {
String publish_url = BaseApplication.PropKit.get("dataEase.publish_url");
//拼接一下URL的最终地址
JSONObject jo = new JSONObject();
jo.put("area_name", area_name);
jo.put("city_name", area_name);
String base64Str = Base64.encode(jo.toString());
switch (type_id) {
case 1://左侧学前教育规模发展预测,义务教育规模发展预测,普通高中教育规模发展预测
publish_url = publish_url + "/#/de-link/TgShVA0z";
publish_url = publish_url + BaseApplication.PropKit.get("dataEase.ShiLeft_url");
break;
case 2://最底下,人口
publish_url = publish_url + "/#/de-link/QZVOyXqD";
publish_url = publish_url + BaseApplication.PropKit.get("dataEase.ShiBottom_url");
break;
case 3://教育资源配置发展预测
publish_url = publish_url + "/#/de-link/oitjXDlA";
publish_url = publish_url + BaseApplication.PropKit.get("dataEase.ShiRight_url");
break;
}
//跳转
@ -101,7 +112,11 @@ public class DataEaseController extends Controller {
// identity_id=1 省
// identity_id=2 市
// identity_id=3 县
int identity_id = Integer.parseInt(CookieUtil.getValue(getRequest(), "identity_id"));
String identity_idStr = CookieUtil.getValue(getRequest(), "identity_id");
int identity_id = 1;
if (!StrKit.isBlank(identity_idStr)) {
identity_id = Integer.parseInt(identity_idStr);
}
List<com.jfinal.plugin.activerecord.Record> list = dm.getDataSetByIdentityId(identity_id);
renderJson(CommonUtil.renderJsonForLayUI(list));
}
@ -115,8 +130,12 @@ public class DataEaseController extends Controller {
@IsLoginInterface({})
@IsNumericInterface({"id"})
public void downloadExcel(int id) throws IOException {
String identity_idStr = CookieUtil.getValue(getRequest(), "identity_id");
int identity_id = 1;
if (!StrKit.isBlank(identity_idStr)) {
identity_id = Integer.parseInt(identity_idStr);
}
//根据当前登录人员的身份,获取对应的数据集名称
int identity_id = Integer.parseInt(CookieUtil.getValue(getRequest(), "identity_id"));
String person_id = CookieUtil.getValue(getRequest(), "person_id");
//获取他是哪个城市或者县区的管理员
//行政区划码
@ -127,9 +146,8 @@ public class DataEaseController extends Controller {
String tableName = record.getStr("table_name");
String dataSetName = record.getStr("dataset_name");
//导出excel
String upPath = BaseApplication.PropKit.get("upload.path")+"/";
String excelFileName = dm.exportExcel(identity_id, tableName, dataSetName, upPath, area_name);
System.out.println(excelFileName);
String upPath = BaseApplication.PropKit.get("upload.path") + "/";
String excelFileName = dm.exportExcel(identity_id, tableName, upPath, area_name);
//renderFile
renderFile(new File(excelFileName), "【" + area_name + "】" + dataSetName + "." + "xlsx");
}
@ -141,14 +159,14 @@ public class DataEaseController extends Controller {
*/
@Before(GET.class)
@IsLoginInterface({})
@IsNumericInterface({"id"})
public void downSampleExcel(int id) throws IOException {
//根据当前登录人员的身份,获取对应的数据集名称
int identity_id = Integer.parseInt(CookieUtil.getValue(getRequest(), "identity_id"));
if (identity_id == 1) {
renderJson(CommonUtil.returnMessageJson(false, "省管理员不能下载模板!"));
return;
String identity_idStr = CookieUtil.getValue(getRequest(), "identity_id");
int identity_id = 1;
if (!StrKit.isBlank(identity_idStr)) {
identity_id = Integer.parseInt(identity_idStr);
}
String area_name = "";
String area_name = "云南省";
//获取他是哪个城市的管理员
if (identity_id == 2) {
area_name = "昆明市";
@ -161,9 +179,9 @@ public class DataEaseController extends Controller {
String tableName = record.getStr("table_name");
String dataSetName = record.getStr("dataset_name");
//导出excel
String excelFileName = dm.exportExcel(identity_id, tableName, dataSetName, tempDir, area_name);
String excelFileName = dm.exportExcel(identity_id, tableName, tempDir, area_name);
//renderFile
renderFile(new File(excelFileName), "【" + area_name + "】" + dataSetName + "." + "xlsx");
renderFile(new File(excelFileName), "【样例:" + area_name + "】" + dataSetName + "." + "xlsx");
}
/**
@ -173,14 +191,19 @@ public class DataEaseController extends Controller {
@IsLoginInterface({})
public void uploadExcel() {
//根据当前登录人员的身份,获取对应的数据集名称
int identity_id = Integer.parseInt(CookieUtil.getValue(getRequest(), "identity_id"));
String identity_idStr = CookieUtil.getValue(getRequest(), "identity_id");
int identity_id = 1;
if (!StrKit.isBlank(identity_idStr)) {
identity_id = Integer.parseInt(identity_idStr);
}
String person_id = CookieUtil.getValue(getRequest(), "person_id");
//获取他是哪个城市或者县区的管理员
//行政区划码
String area_code = rm.getAreaCode(identity_id, person_id);
//根据区域码,获取区域名称
String area_name = rm.getAreaName(area_code);
//父亲的区域名称
String parent_area_name=rm.getParentAreaName(area_name);
//上传的文件
UploadFile uploadFile = getFile("file", tempDir);
//数据集id
@ -192,7 +215,8 @@ public class DataEaseController extends Controller {
return;
}
//检查上传的excel获取它有哪些列与数据集的列是否一致
List<String> cols = dm.getColumnNamesFromExcel(uploadFile.getFile().getAbsolutePath());
String excelPath = uploadFile.getFile().getAbsolutePath();
List<String> excelCols = dm.getColumnNamesFromExcel(excelPath);
//获取指定数据表有哪些列
Record rDataSet = dm.getDataSetById(id);
String tableName = rDataSet.getStr("table_name");
@ -200,9 +224,9 @@ public class DataEaseController extends Controller {
List<String> mysqlCols = dm.getColumns(tableName);
//id列需要特殊处理
if (mysqlCols.contains("id")) mysqlCols.remove("id");
mysqlCols.remove("id");
//对比两个数组集是不是一致,就是对比列名是不是完全匹配,使用交集去检查
Set<String> set1 = new HashSet<>(cols);
Set<String> set1 = new HashSet<>(excelCols);
Set<String> set2 = new HashSet<>(mysqlCols);
//是不是完整匹配
boolean match = set1.equals(set2);
@ -211,7 +235,10 @@ public class DataEaseController extends Controller {
return;
}
//如果一致,那么需要先把数据集的指定行政区划列的表清空,再导入数据
//TODO
ExcelReader excelReader = new ExcelReader();
List<ExcelRow> rows = excelReader.readXlsxFile(excelPath, excelCols);
dm.saveDataSetTable(identity_id, id,parent_area_name, area_name, rows);
//返回结果
Kv kv = Kv.create();

@ -1,11 +1,11 @@
package com.dsideal.base.DataEase.Model;
import com.dsideal.base.BaseApplication;
import com.dsideal.base.Util.ExcelCommonUtil;
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;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
@ -13,12 +13,9 @@ import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.*;
import java.util.stream.Collectors;
@ -33,54 +30,48 @@ public class DataEaseModel {
* @return
*/
public List<Record> getDataSetByIdentityId(int identity_id) {
String sql = "select * from t_dp_dataset where owner_id=? order by dataease_id desc";
String sql = "select * from t_dp_dataset where owner_id=? order by dataease_id";
return Db.find(sql, identity_id);
}
/**
*
*
* @param dataset_id id
* @return
*/
public List<Record> getDataSetTableContent(int dataset_id) {
Record record = getDataSetById(dataset_id);
if (record == null) return null;
String sql = "select * from `" + record.getStr("table_name") + "`";
List<Record> list = Db.use(DB_NAME).find(sql);
return list;
}
/**
*
*
* @param dataset_id id
* @param ja json
*/
public void saveDataSetTable(int identity_id, int dataset_id, String xmqh, JSONArray ja) {
public void saveDataSetTable(int identity_id, int dataset_id, String parent_area_name, String area_name, List<ExcelRow> listExcelRow) {
//根据数据集id获取表名
String tableName = getDataSetById(dataset_id).getStr("table_name");
// 清除数据
if (identity_id > 1) {
String sql = "delete from dataease.`" + tableName + "` where `行政区划`=?";
Db.update(sql, xmqh);
String sql = "delete from `" + tableName + "` where `行政区划`=?";
Db.use(DB_NAME).update(sql, area_name);
} else {
String sql = "delete from dataease.`" + tableName + "`";
Db.update(sql);
String sql = "delete from `" + tableName + "`";
Db.use(DB_NAME).update(sql);
}
List<Record> list = new ArrayList<>();
for (int i = 0; i < ja.size(); i++) {
JSONObject jsonObject = ja.getJSONObject(i);
//遍历jo的每一个属性
// 或者使用keySet和for-each循环遍历
//数据行
for (int i = 1; i < listExcelRow.size(); i++) {
ExcelRow row = listExcelRow.get(i);
Record record = new Record();
for (Object key : jsonObject.keySet()) {
Object value = jsonObject.get(key);
if (value.equals("null")) value = null;
record.set(key.toString(), value);
for (int j = 0; j < row.getData().size(); j++) {
String value = row.getData().get(j);
//第一行是表头
String colName = listExcelRow.getFirst().getData().get(j);
if (colName.equals("行政区划")) {
record.set(colName, area_name);
} else if (colName.equals("上级行政区划")) {
record.set(colName, parent_area_name);
} else {
record.set(colName, value);
}
}
list.add(record);
}
Db.use("dataease").batchSave(tableName, list, 100);
Db.use(DB_NAME).batchSave(tableName, list, 100);
}
@ -91,9 +82,8 @@ public class DataEaseModel {
* @return
*/
public List<Record> getMap(long bigScreenId) {
String sql = "select id,custom_attr from dataease.core_chart_view where scene_id=? and type='map'";
List<Record> list = Db.find(sql, bigScreenId);
return list;
String sql = "select id,custom_attr from core_chart_view where scene_id=? and type like '%map%'";
return Db.use(DB_NAME).find(sql, bigScreenId);
}
/**
@ -114,25 +104,43 @@ public class DataEaseModel {
* @param dataVisualizationName
* @param cityName
*/
public void updateCity(String dataVisualizationName, String cityName) {
public int updateCity(String dataVisualizationName, String cityName) {
//取出大屏的ID值
String sql = "select * from dataease.data_visualization_info where name =?";
Record dataVisualizationInfo = Db.findFirst(sql, dataVisualizationName);
//云南省教育决策支持系统
String sql = "select * from data_visualization_info where name =?";
List<Record> L1 = Db.use(DB_NAME).find(sql, dataVisualizationName);
if (L1.size() > 1) {
return -1;
}
Record dataVisualizationInfo = L1.getFirst();
long bigScreenId = dataVisualizationInfo.getLong("id");
//这个名称确实是存在,但它是不是我想要的这个云南省项目中的大屏呢
Set<Long> set = getFamilyNodes();
if (!set.contains(bigScreenId)) {
return -2;
}
// 配置的内容
List<Record> list = getMap(bigScreenId);
for (Record record : list) {
long id = record.getLong("id");
com.alibaba.fastjson.JSONObject jo = com.alibaba.fastjson.JSONObject.parseObject(record.getStr("custom_attr"));
JSONObject jo = JSONObject.fromObject(record.getStr("custom_attr"));
//获取城市编码
String area_code = getCityCode(cityName);
//修改前
//System.out.println("修改前=" + jo.getJSONObject("map"));
//修改城市编码
jo.getJSONObject("map").put("id", area_code);
jo.getJSONObject("map").put("level", "city");
//System.out.println("修改后=" + jo.getJSONObject("map"));
//写到数据库
String jsonString = jo.toJSONString();
Db.update("update dataease.core_chart_view set custom_attr=? where id=?", jsonString, id);
String jsonString = jo.toString();
Db.use(DB_NAME).update("update core_chart_view set custom_attr=? where id=?", jsonString, id);
}
return 0;
}
@ -167,25 +175,20 @@ public class DataEaseModel {
* @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);
} else {
System.out.println("数据集已存在,跳过添加");
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);
}
/**
@ -291,6 +294,10 @@ public class DataEaseModel {
Record rRoot = Db.findFirst(sqlPara);
long rootId = rRoot.getLong("id");
//清空数据集表
String sql = "truncate table t_dp_dataset";
Db.update(sql);
//2、查询有哪些数据集
Kv kv = Kv.by("id", rootId);
kv.set("dataset", true);
@ -354,27 +361,43 @@ public class DataEaseModel {
Db.use(DataEaseModel.DB_NAME).update(sql);
}
public void fillDefaultXzqh(int identity_id, String tableName) {
//补全默认行政区划
if (identity_id == 2) {
String sql = "update `" + tableName + "` set `行政区划`='昆明市',`上级行政区划`='云南省' where `行政区划` is null or `上级行政区划` is null";
Db.use(DB_NAME).update(sql);
}
if (identity_id == 3) {
String sql = "update `" + tableName + "` set `行政区划`='寻甸县',`上级行政区划`='昆明市' where `行政区划` is null or `上级行政区划` is null";
Db.use(DB_NAME).update(sql);
}
}
/**
* Excel
*
* @param identity_id
* @param tableName
* @param dataSetName
* @param exportPath
* @param area_name
* @throws IOException
*/
public String exportExcel(int identity_id, String tableName, String dataSetName, String exportPath, String area_name) throws IOException {
public String exportExcel(int identity_id, String tableName, String exportPath, String area_name) throws IOException {
//填充默认的行政区划
fillDefaultXzqh(identity_id, tableName);
//对此表中的数据进行直接导出EXCEL
String sql = "select * from `" + tableName + "`";
if (identity_id > 1) {
sql = sql + "where `行政区划`='" + area_name + "'";
}
//获取一下表有哪些列
List<String> columnNames = getColumns(tableName);
List<Record> tableData = Db.use(DataEaseModel.DB_NAME).find(sql);
String excelFileName = UUID.randomUUID().toString().toUpperCase() + ".xlsx";
String filePath = exportPath + excelFileName;
//导出
ExcelCommonUtil.writeExcel(tableData, filePath, true);
ExcelCommonUtil.writeExcel(columnNames, tableData, filePath, true);
return filePath;
}
@ -384,9 +407,9 @@ public class DataEaseModel {
* @param filePath
* @return
*/
public static List<String> getColumnNamesFromExcel(String filePath) {
public List<String> getColumnNamesFromExcel(String filePath) {
List<String> columnNames = new ArrayList<>();
try (FileInputStream fis = new FileInputStream(new File(filePath));
try (FileInputStream fis = new FileInputStream(filePath);
Workbook workbook = new XSSFWorkbook(fis)) {
Sheet sheet = workbook.getSheetAt(0); // 读取第一个工作表
@ -410,8 +433,7 @@ public class DataEaseModel {
*/
public void writeLastArea(String area_name) {
String sql = "update t_dataease_last_area set area_name=? where id=1";
String full_name = getFullAreaName(area_name);
Db.update(sql, full_name);
Db.update(sql, area_name);
}
/**
@ -438,4 +460,42 @@ public class DataEaseModel {
String sql = "select area_name from t_dataease_last_area where id=1";
return Db.findFirst(sql).getStr("area_name");
}
/**
*
*
* @return
*/
public Record getVisuallizationRoot() {
String rootName = BaseApplication.PropKit.get("dataEase.dataVisualizationRootName");
String sql = "select * from data_visualization_info where name =?";
return Db.use(DB_NAME).findFirst(sql, rootName);
}
/**
*
*
* @param id id
* @return
*/
public List<Long> getChildren(long id) {
List<Long> list = new ArrayList<>();
list.add(id);
String sql = "select * from data_visualization_info where pid=?";
List<Record> children = Db.use(DB_NAME).find(sql, id);
for (Record r : children) {
list.addAll(getChildren(r.getLong("id")));
}
return list;
}
/**
*
*
* @return
*/
public Set<Long> getFamilyNodes() {
long rootId = getVisuallizationRoot().getLong("id");
return new HashSet<>(getChildren(rootId));
}
}

@ -0,0 +1,47 @@
package com.dsideal.base.DataEase.Model;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.List;
public class ExcelReader {
public List<ExcelRow> readXlsxFile(String filePath, List<String> cols) {
List<ExcelRow> rows = new ArrayList<>();
try (FileInputStream fis = new FileInputStream(filePath);
Workbook workbook = new XSSFWorkbook(fis)) {
Sheet sheet = workbook.getSheetAt(0); // 读取第一个工作表
int rowNum = 0;
for (Row row : sheet) {
List<String> rowData = new ArrayList<>();
for (Cell cell : row) {
rowData.add(getCellValue(cell));
}
if (rowNum == 0) {
// 如果文件中没有列名,可以在这里手动指定
rows.add(new ExcelRow(cols)); // 根据您的实际列名进行修改
rowNum++;
continue;
}
rows.add(new ExcelRow(rowData));
rowNum++;
}
} catch (Exception e) {
e.printStackTrace();
}
return rows;
}
private String getCellValue(Cell cell) {
return switch (cell.getCellType()) {
case STRING -> cell.getStringCellValue();
case NUMERIC -> String.valueOf(cell.getNumericCellValue());
case BOOLEAN -> String.valueOf(cell.getBooleanCellValue());
case FORMULA -> cell.getCellFormula();
default -> "";
};
}
}

@ -0,0 +1,17 @@
package com.dsideal.base.DataEase.Model;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Setter
@Getter
public class ExcelRow {
private List<String> data;
public ExcelRow(List<String> data) {
this.data = data;
}
}

@ -36,6 +36,41 @@ public class ResourceModel {
return Db.findFirst(sql, area_code).getStr("area_name");
}
/**
*
*
* @param area_name
* @return
*/
public Record getAreaRecordByName(String area_name) {
String sql = "select * from t_dm_area where area_name=?";
return Db.findFirst(sql, area_name);
}
/**
*
*
* @param id
* @return
*/
public Record getAreaRecordByAreaCode(String id) {
String sql = "select * from t_dm_area where id=?";
return Db.findFirst(sql, id);
}
/**
*
* @param area_name
* @return
*/
public String getParentAreaName(String area_name) {
Record child = getAreaRecordByName(area_name);
String parent_id = child.getStr("parent_id");
Record parent = getAreaRecordByAreaCode(parent_id);
return parent.getStr("area_name");
}
/**
*
*

@ -0,0 +1,39 @@
package com.dsideal.base.Tools;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
import com.jcraft.jsch.JSchException;
import com.jfinal.kit.StrKit;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;
import java.io.IOException;
import java.util.List;
public class ChangUrlLink {
public static DataEaseModel dm = new DataEaseModel();
public static void main(String[] args) throws IOException, JSchException {
LocalMysqlConnectUtil.Init();
//原地址
String sourceHost = "http://10.10.21.20:9000/dsBase/";
//目标地址
String targetHost = "https://www.edusoa.com/dsBase/";
String sql = "select * from visualization_link_jump_info";
List<Record> list = Db.use(DataEaseModel.DB_NAME).find(sql);
String prefix = "http://";
for (Record record : list) {
String content = record.getStr("content");
long id = record.getLong("id");
if (!StrKit.isBlank(content)
//只有http的不要
&& content.startsWith(prefix) && content.length() > prefix.length()) {
System.out.println(content);
//sql="update visualization_link_jump_info set content=? where id=?";
//Db.use(DataEaseModel.DB_NAME).update(sql, content.replace(sourceHost, targetHost), id);
}
}
}
}

@ -1,33 +0,0 @@
package com.dsideal.base.Tools;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.Util.SshConnectUtil;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;
import java.io.File;
import java.io.IOException;
import java.sql.SQLOutput;
import java.util.List;
public class ChangeUrlLink {
public static DataEaseModel dm = new DataEaseModel();
public static void main(String[] args) throws IOException, JSchException {
//通过ssh链接到Mysql数据库
Session session = SshConnectUtil.Init();
String sql="select * from core_chart_view";
List<Record> list = Db.use(DataEaseModel.DB_NAME).find(sql);
for (Record record : list) {
String custom_attr=record.getStr("custom_attr");
if(custom_attr.contains("http://")){
System.out.println("Found");
}
}
//关闭Ssh链接
session.disconnect();
}
}

@ -1,7 +1,7 @@
package com.dsideal.base.Tools;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.Util.SshConnectUtil;
import com.dsideal.base.Tools.Util.SshMysqlConnectUtil;
import com.jcraft.jsch.JSchException;
import com.jfinal.plugin.activerecord.Record;
@ -10,12 +10,12 @@ import java.util.List;
import com.jcraft.jsch.Session;
public class AddXzqh {
public class DataSetAddXzqh {
public static DataEaseModel dm = new DataEaseModel();
public static void main(String[] args) throws IOException, JSchException {
Session session = SshConnectUtil.Init();
Session session = SshMysqlConnectUtil.Init();
//遍历所有以excel_开头的表找出这些表中是不是存在行政区划,上级行政区划的列名
for (int identity_id : new int[]{1, 2, 3}) {
List<Record> list = dm.getDataSetByIdentityId(identity_id);

@ -0,0 +1,20 @@
package com.dsideal.base.Tools;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
import java.io.IOException;
public class DataSetInit {
public static DataEaseModel dm = new DataEaseModel();
public static void main(String[] args) throws IOException {
LocalMysqlConnectUtil.Init();
//1、添加到数据集表中
dm.collectDataSet();
//2、加上主键
dm.addPrimaryKey();
//3、将所有非空列去掉不允许为空的限制
dm.updateNotNullColumns();
}
}

@ -1,27 +0,0 @@
package com.dsideal.base.Tools;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.Util.SshConnectUtil;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import java.io.IOException;
public class InitDataEaseDataSet {
public static DataEaseModel dm = new DataEaseModel();
public static void main(String[] args) throws IOException, JSchException {
//通过ssh链接到Mysql数据库
Session session = SshConnectUtil.Init();
//1、添加到数据集表中
dm.collectDataSet();
//2、加上主键
dm.addPrimaryKey();
//3、将所有非空列去掉不允许为空的限制
dm.updateNotNullColumns();
//关闭数据库
session.disconnect();
}
}

@ -1,5 +1,6 @@
package com.dsideal.base.Tools;
import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
import com.dsideal.base.Util.CommonUtil;
import com.dsideal.base.Util.PkUtil;
import com.dsideal.base.Plugin.YamlProp;
@ -23,20 +24,7 @@ public class InitOrgPerson {
public static Prop PropKit;
public static void main(String[] args) throws Exception {
//告之配置文件位置
String configFile = "application.yaml";
PropKit = new YamlProp(configFile);
HikariCpPlugin druid = new HikariCpPlugin(PropKit.get("mysql.jdbcUrl"), PropKit.get("mysql.user"),
PropKit.get("mysql.password").trim(), PropKit.get("mysql.driverClassName"));
druid.start();
// 配置ActiveRecord插件
ActiveRecordPlugin arp = new ActiveRecordPlugin(druid);
//应用系统
String basePath = "/Sql/";
arp.addSqlTemplate(basePath + "organization.sql");
arp.addSqlTemplate(basePath + "loginPerson.sql");
arp.start();
LocalMysqlConnectUtil.Init();
// 用于缓存模块的redis服务
RedisPlugin redis = new RedisPlugin("myRedis", PropKit.get("redis.ip"), PropKit.getInt("redis.port"), 10 * 1000);
@ -98,8 +86,7 @@ public class InitOrgPerson {
*
* 2018-12-21
*/
public static void generateUser(int identity_id, String person_name, String city_id, String area_id, int sort_id, String operator, String org_id)
throws Exception {
public static void generateUser(int identity_id, String person_name, String city_id, String area_id, int sort_id, String operator, String org_id) {
Record record = new Record();
String person_id = UUID.randomUUID().toString().toUpperCase();
record.set("person_id", person_id);

@ -1,4 +1,4 @@
package com.dsideal.base.Tools;
package com.dsideal.base.Tools.Test;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Plugin.YamlProp;

@ -1,4 +1,4 @@
package com.dsideal.base.Tools;
package com.dsideal.base.Tools.Test;
import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil;
@ -8,8 +8,6 @@ import java.io.File;
import java.io.IOException;
import java.util.*;
import com.jfinal.plugin.activerecord.Record;
public class ConvertExcel {
// 获取系统的临时文件目录
private static final String tempDir = System.getProperty("java.io.tmpdir");

@ -1,25 +1,20 @@
package com.dsideal.base.Tools;
package com.dsideal.base.Tools.Test;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.Util.SshConnectUtil;
import com.dsideal.base.Util.ExcelCommonUtil;
import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;
public class ExportExcel {
public static DataEaseModel dm = new DataEaseModel();
public static void main(String[] args) throws IOException, JSchException {
//通过ssh链接到Mysql数据库
Session session = SshConnectUtil.Init();
LocalMysqlConnectUtil.Init();
//Excel的保存目录
String exportPath = "D:/360Downloads/Excel";
@ -37,7 +32,7 @@ public class ExportExcel {
String tableName = record.getStr("table_name");
String dataSetName = record.getStr("dataset_name");
System.out.println("正在处理数据集:" + dataSetName);
dm.exportExcel(1, tableName, dataSetName, exportPath, privinceName);
dm.exportExcel(1, tableName, exportPath, privinceName);
}
//二、导出市的数据集
System.out.println("正在处理市数据集...");
@ -46,12 +41,12 @@ public class ExportExcel {
System.out.println("数据集个数=" + list.size());
for (Record record : list) {
String tableName = record.getStr("table_name");
String dataSetName = record.getStr("dataset_name").replace("\\","").replace("/","");
String dataSetName = record.getStr("dataset_name").replace("\\", "").replace("/", "");
System.out.println("正在处理数据集:" + dataSetName);
Record cityRecord = dm.getAreaByName(city_name);
String cityName = cityRecord.getStr("area_name");
dm.exportExcel(2, tableName, dataSetName, exportPath, cityName);
dm.exportExcel(2, tableName, exportPath, cityName);
}
//三、导出县区的数据集
System.out.println("正在处理县区数据集...");
@ -60,15 +55,13 @@ public class ExportExcel {
System.out.println("数据集个数=" + list.size());
for (Record record : list) {
String tableName = record.getStr("table_name");
String dataSetName = record.getStr("dataset_name").replace("\\","").replace("/","");
String dataSetName = record.getStr("dataset_name").replace("\\", "").replace("/", "");
System.out.println("正在处理数据集:" + dataSetName);
Record areaRecord = dm.getAreaByName(area_name);
String areaName = areaRecord.getStr("area_name");
dm.exportExcel(3, tableName, dataSetName, exportPath, areaName);
dm.exportExcel(3, tableName, exportPath, areaName);
}
System.out.println("导出完成!");
//关闭Ssh链接
session.disconnect();
}
}

@ -0,0 +1,52 @@
package com.dsideal.base.Tools.Util;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Plugin.YamlProp;
import com.dsideal.base.Tools.DataSetInit;
import com.jfinal.kit.Prop;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.dialect.MysqlDialect;
import com.jfinal.plugin.hikaricp.HikariCpPlugin;
import java.io.File;
public class LocalMysqlConnectUtil {
public static Prop PropKit;
public static void Init() {
//加载配置文件
String configFile = "application.yaml";
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"));
HikariCpPlugin dataEasePlugin = new HikariCpPlugin(PropKit.get("mysql.jdbcUrl").replace("ds_db", "dataease"), PropKit.get("mysql.user"),
PropKit.get("mysql.password").trim(), PropKit.get("mysql.driverClassName"));
masterPlugin.start();
dataEasePlugin.start();
// 配置ActiveRecord插件
ActiveRecordPlugin arp = new ActiveRecordPlugin(masterPlugin);
arp.setDialect(new MysqlDialect());
ActiveRecordPlugin arpDataEase = new ActiveRecordPlugin(DataEaseModel.DB_NAME, dataEasePlugin);
arpDataEase.setDialect(new MysqlDialect());
//遍历sql目录下所有的sql文件
File sqlDir;
String basePath = DataSetInit.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();
}
}

@ -1,7 +1,7 @@
package com.dsideal.base.Tools.Util;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.InitDataEaseDataSet;
import com.dsideal.base.Tools.DataSetInit;
import com.dsideal.base.Util.SSHConnector;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
@ -11,7 +11,7 @@ import com.jfinal.plugin.hikaricp.HikariCpPlugin;
import java.io.File;
public class SshConnectUtil {
public class SshMysqlConnectUtil {
public static Session Init() throws JSchException {
//远程主机的SSH登录信息
String sshHost = "117.78.60.214";
@ -45,7 +45,7 @@ public class SshConnectUtil {
//遍历sql目录下所有的sql文件
File sqlDir;
String basePath = InitDataEaseDataSet.class.getResource("/").getPath();
String basePath = DataSetInit.class.getResource("/").getPath();
sqlDir = new File(basePath + "/Sql");
File[] sqlFiles = sqlDir.listFiles();
for (File sqlFile : sqlFiles != null ? sqlFiles : new File[0]) {

@ -852,29 +852,21 @@ public class ExcelCommonUtil {
* @param filePath
* @throws IOException
*/
public static void writeExcel(List<Record> tableData, String filePath, boolean killIdColumns) throws IOException {
public static void writeExcel(List<String> columnNames, List<Record> tableData, String filePath, boolean killIdColumns) throws IOException {
if (killIdColumns) {
//表tableData中如果有一列叫id,那么去掉这一列
for (Record tableDatum : tableData) {
tableDatum.remove("id");
}
columnNames.remove("id");
}
if (tableData == null || tableData.isEmpty()) {
//throw new IllegalArgumentException("The list of records must not be empty.");
return;
}
// 获取第一个Record的元数据以确定列名
Record firstRecord = tableData.getFirst();
String[] headers = firstRecord.getColumnNames();
int columnCount = headers.length;
// 创建Excel工作簿
Workbook workbook = new XSSFWorkbook();
// 创建一个Excel工作表
Sheet sheet = workbook.createSheet("Sheet1");
// 获取第一个Record的元数据以确定列名
int columnCount = columnNames.size();
// 创建标题行
Row titleRow = sheet.createRow(0);
// 设置标题行的样式
@ -891,7 +883,7 @@ public class ExcelCommonUtil {
// 填充标题行
for (int i = 1; i <= columnCount; i++) {
Cell cell = titleRow.createCell(i - 1);
cell.setCellValue(headers[i - 1]);
cell.setCellValue(columnNames.get(i - 1));
cell.setCellStyle(titleStyle);
}
@ -912,7 +904,7 @@ public class ExcelCommonUtil {
int cellNum = 0;
for (int i = 1; i <= columnCount; i++) {
Cell cell = row.createCell(cellNum++);
Object value = record.get(headers[i - 1]);
Object value = record.get(columnNames.get(i - 1));
cell.setCellValue(value == null ? "" : value.toString());
cell.setCellStyle(dataStyle);
}
@ -920,12 +912,12 @@ public class ExcelCommonUtil {
// 设置最小列宽
int minColumnWidth = 100 * 256 / 7; // 将像素转换为字符单位Excel的单位是1/256个字符宽度
for (int i = 0; i < headers.length; i++) {
for (int i = 0; i < columnNames.size(); i++) {
sheet.setColumnWidth(i, Math.max(minColumnWidth, sheet.getColumnWidth(i)));
}
// 自动调整列宽
for (int i = 0; i < headers.length; i++) {
for (int i = 0; i < columnNames.size(); i++) {
sheet.autoSizeColumn(i);
int columnWidth = sheet.getColumnWidth(i);
int newColumnWidth = Math.max(minColumnWidth, columnWidth);

@ -23,8 +23,13 @@ redis:
# 数据可视化
dataEase:
dataVisualizationName: 云南省教育决策支持系统
dataVisualizationRootName: 云南省教科院
dataVisualizationName: 云南省教育决策支持系统【市州】
publish_url: http://10.10.14.203:8100
ShiZhou_url: /#/de-link/X4l1qGNH
ShiLeft_url: /#/de-link/TgShVA0z
ShiBottom_url: /#/de-link/QZVOyXqD
ShiRight_url: /#/de-link/oitjXDlA
# ==============================================================
excel:

Loading…
Cancel
Save