main
黄海 7 months ago
parent 52868746b6
commit bd7e971907

@ -59,13 +59,14 @@ public class CallApiToCopy {
String screenId = JSONObject.parseObject(res).getString("data"); String screenId = JSONObject.parseObject(res).getString("data");
System.out.println("生成大屏ID=" + screenId); System.out.println("生成大屏ID=" + screenId);
JSONObject canvasViewInfo = FileUtil.readJsonFile(PathKit.getRootClassPath() + "/Data/CanvasViewInfo.json");
//将临时副本保存下来 //将临时副本保存下来
url = urlPrefix + "/de2api/dataVisualization/saveCanvas"; url = urlPrefix + "/de2api/dataVisualization/saveCanvas";
jo = new JSONObject(); jo = new JSONObject();
jo.put("appData", null);
jo.put("canvasStyleData", canvas_style_data); jo.put("canvasStyleData", canvas_style_data);
jo.put("canvasViewInfo", canvasViewInfo);
jo.put("componentData", component_data); jo.put("componentData", component_data);
jo.put("canvasViewInfo", FileUtil.readJsonFile(PathKit.getRootClassPath() + "/Data/CanvasViewInfo.json"));
jo.put("appData", null);
jo.put("id", screenId); jo.put("id", screenId);
jo.put("name", screenName); jo.put("name", screenName);
jo.put("pid", pid); jo.put("pid", pid);

@ -102,8 +102,6 @@ public class SyncCityScreen {
* @throws InterruptedException * @throws InterruptedException
*/ */
public static void SyncCityScreen(String dataVisualizationName) throws InterruptedException { public static void SyncCityScreen(String dataVisualizationName) throws InterruptedException {
// 二、开始全新插入数据 // 二、开始全新插入数据
//1、获取母屏数据 //1、获取母屏数据
String sql = "select * from data_visualization_info where name =?"; String sql = "select * from data_visualization_info where name =?";
@ -113,8 +111,8 @@ public class SyncCityScreen {
sql = "select * from core_chart_view where scene_id=?"; sql = "select * from core_chart_view where scene_id=?";
List<Record> motherChartList = Db.use(DataEaseModel.DB_NAME).find(sql, motherId); List<Record> motherChartList = Db.use(DataEaseModel.DB_NAME).find(sql, motherId);
//母屏共享链接 //母屏共享链接
sql = "select * from xpack_share where resource_id=?"; // sql = "select * from xpack_share where resource_id=?";
Record motherShareRecord = Db.use(DataEaseModel.DB_NAME).findFirst(sql, motherId); // Record motherShareRecord = Db.use(DataEaseModel.DB_NAME).findFirst(sql, motherId);
//母屏的可视化资源表 //母屏的可视化资源表
sql = "select * from core_opt_recent where resource_id=?"; sql = "select * from core_opt_recent where resource_id=?";
Record motherOptRecord = Db.use(DataEaseModel.DB_NAME).findFirst(sql, motherId); Record motherOptRecord = Db.use(DataEaseModel.DB_NAME).findFirst(sql, motherId);
@ -123,17 +121,17 @@ public class SyncCityScreen {
sql = "select * from visualization_link_jump where source_dv_id=?"; sql = "select * from visualization_link_jump where source_dv_id=?";
List<Record> motherLinkJumpList = Db.use(DataEaseModel.DB_NAME).find(sql, motherId); List<Record> motherLinkJumpList = Db.use(DataEaseModel.DB_NAME).find(sql, motherId);
//母屏的linkJumpInfo //母屏的linkJumpInfo
sql = "select * from visualization_link_jump_info where target_dv_id=?"; // sql = "select * from visualization_link_jump_info where target_dv_id=?";
List<Record> motherLinkJumpInfoList = Db.use(DataEaseModel.DB_NAME).find(sql, motherId); // List<Record> motherLinkJumpInfoList = Db.use(DataEaseModel.DB_NAME).find(sql, motherId);
//母屏的外部参数关联关系表 //母屏的外部参数关联关系表
sql = "select * from visualization_outer_params where visualization_id=?"; // sql = "select * from visualization_outer_params where visualization_id=?";
List<Record> motheRouterParamsList = Db.use(DataEaseModel.DB_NAME).find(sql, motherId); // List<Record> motheRouterParamsList = Db.use(DataEaseModel.DB_NAME).find(sql, motherId);
//跳转目标仪表板图表字段配置表 //跳转目标仪表板图表字段配置表
sql = "select * from visualization_link_jump_target_view_info where link_jump_info_id in (" + // sql = "select * from visualization_link_jump_target_view_info where link_jump_info_id in (" +
"select id from visualization_link_jump_info where target_dv_id=?)"; // "select id from visualization_link_jump_info where target_dv_id=?)";
List<Record> motherLinkJumpTargetViewInfo = Db.use(DataEaseModel.DB_NAME).find(sql, motherId); // List<Record> motherLinkJumpTargetViewInfo = Db.use(DataEaseModel.DB_NAME).find(sql, motherId);
//2、需要哪16个城市 //2、需要哪16个城市
for (String cityName : dm.getCityNameList()) { for (String cityName : dm.getCityNameList()) {
//1复制16个大屏 //1复制16个大屏
@ -177,11 +175,11 @@ public class SyncCityScreen {
} }
// (4) 发布共享链接 // (4) 发布共享链接
Record shareRecord = new Record().setColumns(motherShareRecord); // Record shareRecord = new Record().setColumns(motherShareRecord);
shareRecord.set("resource_id", bigScreenId); // shareRecord.set("resource_id", bigScreenId);
shareRecord.set("id", getSnowId()); // shareRecord.set("id", getSnowId());
shareRecord.set("uuid", randomString(8));//大小写字母和数字组合长度为8 // shareRecord.set("uuid", randomString(8));//大小写字母和数字组合长度为8
Db.use(DataEaseModel.DB_NAME).save("xpack_share", "id", shareRecord); // Db.use(DataEaseModel.DB_NAME).save("xpack_share", "id", shareRecord);
// (5) 插入可视化资源表 // (5) 插入可视化资源表
Record optRecord = new Record().setColumns(motherOptRecord); Record optRecord = new Record().setColumns(motherOptRecord);
@ -199,16 +197,16 @@ public class SyncCityScreen {
} }
// (7) 插入跳转配置信息表 // (7) 插入跳转配置信息表
Map<Integer, Long> map = new HashMap<>(); // Map<Integer, Long> map = new HashMap<>();
int idx = 0; // int idx = 0;
for (Record rMotherLinkJumpInfo : motherLinkJumpInfoList) { // for (Record rMotherLinkJumpInfo : motherLinkJumpInfoList) {
idx++; // idx++;
Record rCityLinkJumpInfo = new Record().setColumns(rMotherLinkJumpInfo);//克隆出来 // Record rCityLinkJumpInfo = new Record().setColumns(rMotherLinkJumpInfo);//克隆出来
rCityLinkJumpInfo.set("id", getSnowId()); // rCityLinkJumpInfo.set("id", getSnowId());
map.put(idx, rCityLinkJumpInfo.getLong("id")); // map.put(idx, rCityLinkJumpInfo.getLong("id"));
rCityLinkJumpInfo.set("target_dv_id", bigScreenId); // rCityLinkJumpInfo.set("target_dv_id", bigScreenId);
Db.use(DataEaseModel.DB_NAME).save("visualization_link_jump_info", "id", rCityLinkJumpInfo); // Db.use(DataEaseModel.DB_NAME).save("visualization_link_jump_info", "id", rCityLinkJumpInfo);
} // }
//TODO 外部参数比较复杂 //TODO 外部参数比较复杂
/* /*
@ -216,28 +214,29 @@ public class SyncCityScreen {
*/ */
//(8) 跳转目标仪表板图表字段配置表visualization_link_jump_info //(8) 跳转目标仪表板图表字段配置表visualization_link_jump_info
idx = 0; // idx = 0;
for (Record record : motherLinkJumpTargetViewInfo) { // for (Record record : motherLinkJumpTargetViewInfo) {
idx++; // idx++;
Record rCityLinkJumpTargetViewInfo = new Record().setColumns(record);//克隆出来 // Record rCityLinkJumpTargetViewInfo = new Record().setColumns(record);//克隆出来
rCityLinkJumpTargetViewInfo.set("target_id", getSnowId()); // rCityLinkJumpTargetViewInfo.set("target_id", getSnowId());
rCityLinkJumpTargetViewInfo.set("link_jump_info_id", map.get(idx)); // rCityLinkJumpTargetViewInfo.set("link_jump_info_id", map.get(idx));
Db.use(DataEaseModel.DB_NAME).save( // Db.use(DataEaseModel.DB_NAME).save(
"visualization_link_jump_target_view_info", "target_id", rCityLinkJumpTargetViewInfo); // "visualization_link_jump_target_view_info", "target_id", rCityLinkJumpTargetViewInfo);
} // }
System.out.println("完成" + cityName + "的数据填充~"); System.out.println("完成" + cityName + "的数据填充~");
break;
} }
//查询出每个城市的共享链接 // //查询出每个城市的共享链接
for (String cityName : dm.getCityNameList()) { // for (String cityName : dm.getCityNameList()) {
String screenName = dataVisualizationName + cityName; // String screenName = dataVisualizationName + cityName;
sql = "select * from data_visualization_info where name =?"; // sql = "select * from data_visualization_info where name =?";
Record record = Db.use(DataEaseModel.DB_NAME).findFirst(sql, screenName); // Record record = Db.use(DataEaseModel.DB_NAME).findFirst(sql, screenName);
long id = record.getLong("id"); // long id = record.getLong("id");
sql = "select * from xpack_share where resource_id=?"; // sql = "select * from xpack_share where resource_id=?";
Record shareRecord = Db.use(DataEaseModel.DB_NAME).findFirst(sql, id); // Record shareRecord = Db.use(DataEaseModel.DB_NAME).findFirst(sql, id);
System.out.println(cityName + "的共享链接:" + shareRecord.getStr("uuid")); // System.out.println(cityName + "的共享链接:" + shareRecord.getStr("uuid"));
} // }
System.out.println("生成完毕"); System.out.println("生成完毕");
} }
@ -246,6 +245,6 @@ public class SyncCityScreen {
//获取数据可视化名称 //获取数据可视化名称
String dataVisualizationName = LocalMysqlConnectUtil.PropKit.get("dataEase.dataVisualizationName"); String dataVisualizationName = LocalMysqlConnectUtil.PropKit.get("dataEase.dataVisualizationName");
clear(dataVisualizationName); clear(dataVisualizationName);
// SyncCityScreen(dataVisualizationName); //SyncCityScreen(dataVisualizationName);
} }
} }

@ -0,0 +1,120 @@
package com.dsideal.base.DataEase.Util;
import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.IdUtil;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class SyncCityScreenNew {
/*
SQL
SHOW VARIABLES LIKE 'general_log%';
SET GLOBAL general_log = 'ON';
SET GLOBAL general_log = 'OFF';
*/
/**
* ID
*
* @return
*/
public static long getSnowId() throws InterruptedException {
//雪花算法生成唯一ID
Snowflake snowflake = IdUtil.createSnowflake(1, 1);
Thread.sleep(2);
return snowflake.nextId();
}
public static DataEaseModel dm = new DataEaseModel();
/**
* @param dataVisualizationName
* @throws InterruptedException
*/
public static void SyncScreen(String dataVisualizationName) throws InterruptedException {
//1、获取母屏数据
String sql = "select * from data_visualization_info where name =?";
Record motherRecord = Db.use(DataEaseModel.DB_NAME).findFirst(sql, dataVisualizationName);
long motherId = motherRecord.getLong("id");
//母屏细节表
sql = "select * from core_chart_view where scene_id=?";
List<Record> motherChartList = Db.use(DataEaseModel.DB_NAME).find(sql, motherId);
//母屏的可视化资源表
sql = "select * from core_opt_recent where resource_id=?";
Record motherOptRecord = Db.use(DataEaseModel.DB_NAME).findFirst(sql, motherId);
//母屏的linkJump
sql = "select * from visualization_link_jump where source_dv_id=?";
List<Record> motherLinkJumpList = Db.use(DataEaseModel.DB_NAME).find(sql, motherId);
//1复制大屏
Record cityRecord = new Record().setColumns(motherRecord);//复制record对象
cityRecord.set("name", dataVisualizationName + "_copy");
long bigScreenId = getSnowId();
cityRecord.set("id", bigScreenId);
Db.use(DataEaseModel.DB_NAME).save("data_visualization_info", "id", cityRecord);
Map<Long, Long> mcMap = new HashMap<>();
// (2) 复制大屏的细节表
List<Record> writeList = new ArrayList<>();
for (Record rMotherChart : motherChartList) {
long motherChartId = rMotherChart.getLong("id");
Record rCityChart = new Record().setColumns(rMotherChart);//克隆出来
//修改大屏ID
rCityChart.set("id", getSnowId());
rCityChart.set("scene_id", bigScreenId);
writeList.add(rCityChart);
//保存母屏的组件IDS 与复制品组件IDS之间的对应关系
mcMap.put(motherChartId, rCityChart.getLong("id"));
}
//批量保存
Db.use(DataEaseModel.DB_NAME).batchSave("core_chart_view", writeList, 100);//需要修改
//回头修改一下主表
sql = "select component_data from data_visualization_info where id=?";
Record rChild = Db.use(DataEaseModel.DB_NAME).findFirst(sql, bigScreenId);
String component_data = rChild.getStr("component_data");
//遍历map
for (Map.Entry<Long, Long> entry : mcMap.entrySet()) {
Long key = entry.getKey();
Long value = entry.getValue();
component_data = component_data.replace(key.toString(), value.toString());
}
// 更新回去
sql = "update data_visualization_info set component_data=? where id=?";
Db.use(DataEaseModel.DB_NAME).update(sql, component_data, bigScreenId);
// (5) 插入可视化资源表
Record optRecord = new Record().setColumns(motherOptRecord);
optRecord.set("resource_id", bigScreenId);
optRecord.set("id", getSnowId());
Db.use(DataEaseModel.DB_NAME).save("core_opt_recent", "id", optRecord);
// (6) 插入跳转配置表
for (Record rMotherLinkJump : motherLinkJumpList) {
Record rCityLinkJump = new Record().setColumns(rMotherLinkJump);//克隆出来
rCityLinkJump.set("id", getSnowId());
rCityLinkJump.set("source_dv_id", bigScreenId);
Db.use(DataEaseModel.DB_NAME).save("visualization_link_jump", "id", rCityLinkJump);
}
System.out.println("生成完毕");
}
public static void main(String[] args) throws InterruptedException {
LocalMysqlConnectUtil.Init();
//获取数据可视化名称
String dataVisualizationName = "黄海测试的气泡地图";
SyncScreen(dataVisualizationName);
}
}

@ -8,7 +8,9 @@ import java.io.IOException;
import java.net.URI; import java.net.URI;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet;
import java.util.Map; import java.util.Map;
import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
public class Watch { public class Watch {
@ -23,6 +25,9 @@ public class Watch {
int port = uri.getPort(); // 获取端口号 int port = uri.getPort(); // 获取端口号
String user = "root";//用户名 String user = "root";//用户名
String password = "Password123@mysql";//密码 String password = "Password123@mysql";//密码
Set<String> set = new HashSet<>();
set.add("QRTZ_FIRED_TRIGGERS");
// 构建二进制日志客户端 // 构建二进制日志客户端
BinaryLogClient client = new BinaryLogClient(host, port, user, password); BinaryLogClient client = new BinaryLogClient(host, port, user, password);
// 反序列化配置 // 反序列化配置
@ -32,7 +37,7 @@ public class Watch {
client.setEventDeserializer(eventDeserializer); client.setEventDeserializer(eventDeserializer);
// 设置自己的client作为服务器的id // 设置自己的client作为服务器的id
client.setServerId(SERVER_ID); client.setServerId(SERVER_ID);
Map<Long,String> tableMap = new HashMap<>(); Map<Long, String> tableMap = new HashMap<>();
client.registerEventListener(event -> { client.registerEventListener(event -> {
EventData data = event.getData(); EventData data = event.getData();
@ -41,10 +46,13 @@ public class Watch {
tableMap.put(tableMapEventData.getTableId(), tableMapEventData.getTable()); tableMap.put(tableMapEventData.getTableId(), tableMapEventData.getTable());
} }
if (data instanceof WriteRowsEventData) { if (data instanceof WriteRowsEventData) {
System.out.println("Insert:"+tableMap.get(((WriteRowsEventData) data).getTableId())); String tableName = tableMap.get(((WriteRowsEventData) data).getTableId());
if (!set.contains(tableName) && !tableName.startsWith("tmp_") && !tableName.endsWith("_log")) {
set.add(tableName);
System.out.println(tableName);
}
} }
}); });
client.connect(); client.connect();
} }
} }

Loading…
Cancel
Save