@ -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 ( "恭喜,所有操作成功完成~~~" ) ;
}
}