main
黄海 7 months ago
parent 04566447a5
commit cb2d078dde

@ -10,6 +10,7 @@ import com.jfinal.kit.PathKit;
import com.jfinal.kit.StrKit;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;
import org.sqlite.core.DB;
import java.util.*;
@ -41,7 +42,8 @@ public class CopyBigScreen {
* @param bigScreenName
*/
public static void clearScreen(String bigScreenName) {
//一、先删除后插入保持健康:保留:【云南省教育决策支持系统【市州】】,删除掉云南省教育决策支持系统【市州】+昆明市,云南省教育决策支持系统【市州】+楚雄州等数据
//一、先删除后插入保持健康
// 保留:【云南省教育决策支持系统【市州拷贝】】,删除掉云南省教育决策支持系统【市州拷贝】+昆明市,云南省教育决策支持系统【市州】+楚雄州等数据
String sql = "select * from data_visualization_info where name like '%" + bigScreenName + "%' and name <>'" + bigScreenName + "'";
List<Record> toDelList = Db.use(DB_NAME).find(sql);
for (Record record : toDelList) {
@ -68,22 +70,6 @@ public class CopyBigScreen {
sql = "delete from visualization_link_jump_info where id=?";
Db.use(DB_NAME).update(sql, jumpId);
}
// (6) 外部参数关联关系表
sql = "select params_id from visualization_outer_params where visualization_id=?";
String paramsId = Db.use(DB_NAME).queryStr(sql, id);
sql = "select params_info_id from visualization_outer_params_info where params_id=?";
String params_info_id = Db.use(DB_NAME).queryStr(sql, paramsId);
sql = "delete from visualization_outer_params_target_view_info where params_info_id=?";
Db.use(DB_NAME).update(sql, params_info_id);
sql = "delete from visualization_outer_params_info where params_id=?";
Db.use(DB_NAME).update(sql, paramsId);
sql = "delete from visualization_outer_params where visualization_id=?";
Db.use(DB_NAME).update(sql, id);
//(7) 删除主表数据
Db.use(DB_NAME).deleteById("data_visualization_info", id);
}
@ -144,10 +130,6 @@ public class CopyBigScreen {
Db.use(DataEaseModel.DB_NAME).save("xpack_share", "id", shareRecord);
}
public static List<Record> getViewList(long screenId) {
String sql = "select * from core_chart_view where scene_id=?";
return Db.use(DB_NAME).find(sql, screenId);
}
/**
*
@ -155,7 +137,7 @@ public class CopyBigScreen {
* @param dataVisualizationNameCity
*/
public static void copyCityScreen(String dataVisualizationNameCity) throws InterruptedException {
//母屏信息
//母屏信息
Record motherRecord = getVisualizationByName(dataVisualizationNameCity);
long motherId = motherRecord.getLong("id");//母屏ID
long pid = motherRecord.getLong("pid"); //隶属文件夹
@ -164,25 +146,6 @@ public class CopyBigScreen {
String sql = "select * from xpack_share where resource_id=?";
Record motherShareRecord = Db.use(DataEaseModel.DB_NAME).findFirst(sql, motherId);
//母屏的外部参数
sql = "select * from visualization_outer_params where visualization_id =?";
Record motherOuterParamsRecord = Db.use(DB_NAME).findFirst(sql, motherId);
String motherParamsId = motherOuterParamsRecord.getStr("params_id");
//外部参数关联关系表
sql = "select * from visualization_outer_params_info where params_id=?";
Record motherParamsInfoRecord = Db.use(DB_NAME).findFirst(sql, motherParamsId);
String params_info_id = motherParamsInfoRecord.getStr("params_info_id");
//母屏的visualization_outer_params_target_view_info
sql = "select * from visualization_outer_params_target_view_info where params_info_id=?";
List<Record> motherTargetViewInfoList = Db.use(DB_NAME).find(sql, params_info_id);
Map<Long, Integer> motherMap = new HashMap<>();
List<Record> listView = getViewList(motherId);
for (int i = 0; i < listView.size(); i++) {
motherMap.put(listView.get(i).getLong("id"), i);
}
//按16个市州进行生成
List<String> list = dm.getCityNameList();
for (int i = 0; i < list.size(); i++) {
@ -205,34 +168,9 @@ public class CopyBigScreen {
String jsonString = jo.toString();
Db.use(DB_NAME).update("update core_chart_view set custom_attr=? where id=?", jsonString, id);
}
//修改外部参数
Record cityOuterParamsRecord = new Record().setColumns(motherOuterParamsRecord);
cityOuterParamsRecord.set("params_id", UUID.randomUUID().toString());
cityOuterParamsRecord.set("visualization_id", childId);
Db.use(DB_NAME).save("visualization_outer_params", "params_id", cityOuterParamsRecord);
//复制外部参数关联关系表
Record cityParamsInfoRecord = new Record().setColumns(motherParamsInfoRecord);
cityParamsInfoRecord.set("params_id", cityOuterParamsRecord.getStr("params_id"));
cityParamsInfoRecord.set("params_info_id", UUID.randomUUID().toString());
Db.use(DB_NAME).save("visualization_outer_params_info", "params_info_id", cityParamsInfoRecord);
List<Record> childChartViewMap = getViewList(childId);
List<Record> writeList = new ArrayList<>();
for (int j = 0; j < motherTargetViewInfoList.size(); j++) {
Record record = motherTargetViewInfoList.get(j);
long target_view_id = record.getLong("target_view_id");
//这个target_view_id是母屏在core_chart_view表中的id是第几个?
if (motherMap.containsKey(target_view_id)) {
int k = motherMap.get(target_view_id);
record.set("target_view_id", childChartViewMap.get(k).getStr("id"));
record.set("target_id", UUID.randomUUID().toString());//主键,全新生成
record.set("params_info_id", cityParamsInfoRecord.getStr("params_info_id"));//附本的params_info_id
writeList.add(record);
}
}
Db.use(DB_NAME).batchSave("visualization_outer_params_target_view_info", writeList, 100);
//更改过滤器
sql = "update core_chart_view set custom_filer=replace(custom_filer,'昆明市','" + cityName + "') where scene_id=?";
Db.use(DB_NAME).update(sql, childId);
//发布共享链接
publishShare(motherShareRecord, childId);
@ -247,7 +185,6 @@ public class CopyBigScreen {
* @param dataVisualizationProvince
*/
public static void copyProvinceScreen(String dataVisualizationProvince) throws InterruptedException {
//母屏信息
Record motherRecord = getVisualizationByName(dataVisualizationProvince);
long motherId = motherRecord.getLong("id");//母屏ID
@ -257,7 +194,7 @@ public class CopyBigScreen {
String sql = "select * from xpack_share where resource_id=?";
Record motherShareRecord = Db.use(DataEaseModel.DB_NAME).findFirst(sql, motherId);
String screenName = dataVisualizationProvince + "【黄海】";//要拷贝出来的屏幕名称
String screenName = dataVisualizationProvince + "【拷贝】";//要拷贝出来的屏幕名称
//拷贝API
long childId = callApiToCopy(screenName, motherId, pid);
@ -297,14 +234,14 @@ public class CopyBigScreen {
clearScreen(dataVisualizationNameCity);
//拷贝省级大屏
// copyProvinceScreen(dataVisualizationProvince);
// //拷贝市州级大屏
// copyCityScreen(dataVisualizationNameCity);
// //更新复制出的省级大屏的链接路由
// Record motherRecord = getVisualizationByName(dataVisualizationProvince + "【黄海】");
// long motherId = motherRecord.getLong("id");//母屏ID
// String sql = "update visualization_link_jump_info set content=REPLACE(content,'/dsBase/dataease/route?city_name=','/dsBase/dataease/routeV2?city_name=') where link_jump_id in (select id from visualization_link_jump where source_dv_id=?)";
// Db.use(DB_NAME).update(sql, motherId);
// System.out.println("恭喜,所有操作成功完成~~~");
copyProvinceScreen(dataVisualizationProvince);
//拷贝市州级大屏
copyCityScreen(dataVisualizationNameCity);
//更新复制出的省级大屏的链接路由
Record motherRecord = getVisualizationByName(dataVisualizationProvince + "【拷贝】");
long motherId = motherRecord.getLong("id");//母屏ID
String sql = "update visualization_link_jump_info set content=REPLACE(content,'/dsBase/dataease/route?city_name=','/dsBase/dataease/routeV2?city_name=') where link_jump_id in (select id from visualization_link_jump where source_dv_id=?)";
Db.use(DB_NAME).update(sql, motherId);
System.out.println("恭喜,所有操作成功完成~~~");
}
}

@ -28,7 +28,7 @@ dataEase:
dataVisualizationProvince: 云南省教育决策支持系统【云南省】
dataVisualizationRootName: 云南省教科院
# 市级大屏名称
dataVisualizationNameCity: 云南省教育决策支持系统【市州
dataVisualizationNameCity: 云南省教育决策支持系统【市州拷贝
ShiZhou_url: /#/de-link/X4l1qGNH
ShiLeft_url: /#/de-link/TgShVA0z
ShiBottom_url: /#/de-link/QZVOyXqD

Loading…
Cancel
Save