diff --git a/src/main/java/com/dsideal/base/DataEase/Util/CallApiToCopy.java b/src/main/java/com/dsideal/base/DataEase/Util/CallApiToCopy.java index ec2900d1..d5a5e02c 100644 --- a/src/main/java/com/dsideal/base/DataEase/Util/CallApiToCopy.java +++ b/src/main/java/com/dsideal/base/DataEase/Util/CallApiToCopy.java @@ -2,13 +2,16 @@ package com.dsideal.base.DataEase.Util; import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSONObject; +import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; import com.dsideal.base.Util.FileUtil; import com.jfinal.kit.PathKit; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Record; +import java.util.List; import java.util.Locale; +import java.util.UUID; import static com.dsideal.base.DataEase.Model.DataEaseModel.DB_NAME; @@ -26,69 +29,127 @@ public class CallApiToCopy { //读取Data目录下DataEaseLogin.json文件 JSONObject jo = FileUtil.readJsonFile(PathKit.getRootClassPath() + "/Data/DataEaseLogin.json"); String url = urlPrefix + "/de2api/login/localLogin"; - //.header("Authorization", "Bearer " + token) String res = HttpUtil.createPost(url).contentType("application/json") .body(jo.toString()).execute().body(); return JSONObject.parseObject(res).getJSONObject("data").getString("token"); } + public static DataEaseModel dm = new DataEaseModel(); + + public static void clear(String dataVisualizationName) { + //一、先删除后插入保持健康:保留:【云南省教育决策支持系统【市州】】,删除掉云南省教育决策支持系统【市州】+昆明市,云南省教育决策支持系统【市州】+楚雄州等数据 + String sql = "select * from data_visualization_info where name like '%" + dataVisualizationName + "%' and name <>'" + dataVisualizationName + "'"; + List toDelList = Db.use(DB_NAME).find(sql); + for (Record record : toDelList) { + long id = record.getLong("id"); + //(1) 删除关联的表core_chart_view + sql = "delete from core_chart_view where scene_id=?"; + Db.use(DB_NAME).update(sql, id); + //(2) 删除共享链接表 + sql = "delete from xpack_share WHERE resource_id=?"; + Db.use(DB_NAME).update(sql, id); + + //(3) 删除可视化资源表 + sql = "delete from core_opt_recent where resource_id=?"; + Db.use(DB_NAME).update(sql, id); + + // (4) 跳转记录表 + sql = "delete from visualization_link_jump where source_dv_id=?"; + Db.use(DB_NAME).update(sql, id); + + // (5) 跳转配置表 + sql = "select * from visualization_link_jump_info where target_dv_id=?"; + List jumpList = Db.use(DB_NAME).find(sql, id); + for (Record r : jumpList) { + long jumpId = r.getLong("id"); + sql = "delete from visualization_link_jump_target_view_info where link_jump_info_id =?"; + Db.use(DB_NAME).update(sql, jumpId); + + 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 = "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); + } + System.out.println("成功删除大屏数据" + toDelList.size() + "条~"); + } + public static void main(String[] args) { LocalMysqlConnectUtil.Init(); + //获取数据可视化名称 + String dataVisualizationName = LocalMysqlConnectUtil.PropKit.get("dataEase.dataVisualizationName"); + //旧的不去,新的不来 + clear(dataVisualizationName); //母屏的id String motherId = "1036286881547030528"; //母屏所在的文件夹ID String pid = "1036643788262608896"; - //要拷贝出来的屏幕名称 - String screenName = "云南省教育决策支持系统【市州】-copy"; - String sql = "select canvas_style_data,component_data from data_visualization_info where id=?"; - Record record = Db.use(DB_NAME).findFirst(sql, motherId); - String canvas_style_data = record.getStr("canvas_style_data"); - String component_data = record.getStr("component_data"); - //拷贝 - String url = urlPrefix + "/de2api/dataVisualization/copy"; - JSONObject jo = new JSONObject(); - jo.put("nodeType", "leaf"); - jo.put("name", screenName); - jo.put("type", "dataV"); - jo.put("id", motherId); - jo.put("pid", pid); - String res = HttpUtil.createPost(url).contentType("application/json") - .header("x-de-token", getToken()) - .body(jo.toString()).execute().body(); - String screenId = JSONObject.parseObject(res).getString("data"); - System.out.println("生成大屏ID=" + screenId); - - JSONObject canvasViewInfo = FileUtil.readJsonFile(PathKit.getRootClassPath() + "/Data/CanvasViewInfo.json"); - //将临时副本保存下来 - url = urlPrefix + "/de2api/dataVisualization/saveCanvas"; - jo = new JSONObject(); - jo.put("appData", null); - jo.put("canvasStyleData", canvas_style_data); - jo.put("canvasViewInfo", canvasViewInfo); - jo.put("componentData", component_data); - jo.put("id", screenId); - jo.put("name", screenName); - jo.put("pid", pid); - jo.put("status", 1); - jo.put("type", "dataV"); - jo.put("selfWatermarkStatus", true); - jo.put("creatorName", null); - jo.put("updateName", null); - jo.put("createTime", 1734047402783L); - jo.put("updateTime", 1734047402783L); - jo.put("watermarkInfo", null); - jo.put("weight", null); - jo.put("mobileLayout", false); - jo.put("dataState", "ready"); - jo.put("optType", "copy"); - - //将jo保存下来与原文档进行对比 - //cn.hutool.core.io.FileUtil.writeUtf8String(jo.toString(), "c:/1.json"); - - res = HttpUtil.createPost(url).contentType("application/json") - .header("x-de-token", getToken()) - .body(jo.toString()).execute().body(); - System.out.println(res); + for (String cityName : dm.getCityNameList()) { + //要拷贝出来的屏幕名称 + String screenName = dataVisualizationName + cityName; + //拷贝 + String url = urlPrefix + "/de2api/dataVisualization/copy"; + JSONObject jo = new JSONObject(); + jo.put("nodeType", "leaf"); + jo.put("name", screenName); + jo.put("type", "dataV"); + jo.put("id", motherId); + jo.put("pid", pid); + + String res = HttpUtil.createPost(url).contentType("application/json") + .header("x-de-token", getToken()) + .body(jo.toString()).execute().body(); + long bigScreenId = Long.parseLong(JSONObject.parseObject(res).getString("data")); + System.out.println("生成大屏ID=" + bigScreenId); + + //更新pid + String sql = "update data_visualization_info set pid=? where id=?"; + Db.use(DB_NAME).update(sql, pid, bigScreenId); + + // (3) 修改地图中城市 + List list = dm.getMap(bigScreenId); + //core_chart_view表 + for (Record record : list) { + long id = record.getLong("id"); + jo = JSONObject.parseObject(record.getStr("custom_attr")); + //获取城市编码 + String area_code = dm.getCityCode(cityName); + //修改城市编码 + jo.getJSONObject("map").put("id", area_code); + jo.getJSONObject("map").put("level", "city"); + //写到数据库 + String jsonString = jo.toString(); + Db.use(DB_NAME).update("update core_chart_view set custom_attr=? where id=?", jsonString, id); + } + + //4、修改外部参数 + sql = "select * from visualization_outer_params where visualization_id =?"; + Record motherOuterParamsRecord = Db.use(DB_NAME).findFirst(sql, motherId); + String motherParamsId = motherOuterParamsRecord.getStr("params_id"); + Record cityOuterParamsRecord = new Record().setColumns(motherOuterParamsRecord); + cityOuterParamsRecord.set("params_id", UUID.randomUUID().toString()); + cityOuterParamsRecord.set("visualization_id", bigScreenId); + Db.use(DB_NAME).save("visualization_outer_params", "params_id", cityOuterParamsRecord); + //复制外部参数关联关系表 + sql = "select * from visualization_outer_params_info where params_id=?"; + Record paramsInfoRecord = Db.use(DB_NAME).findFirst(sql, motherParamsId); + Record cityParamsInfoRecord = new Record().setColumns(paramsInfoRecord); + 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); + + System.out.println(cityName + "修改完成"); + } + System.out.println("ok"); } } diff --git a/src/main/java/com/dsideal/base/DataEase/Util/SyncCityScreen.java b/src/main/java/com/dsideal/base/DataEase/Util/SyncCityScreen.java index c246d040..e9ccae34 100644 --- a/src/main/java/com/dsideal/base/DataEase/Util/SyncCityScreen.java +++ b/src/main/java/com/dsideal/base/DataEase/Util/SyncCityScreen.java @@ -87,8 +87,8 @@ public class SyncCityScreen { } // (6) 外部参数关联关系表 -// sql = "delete from visualization_outer_params where visualization_id=?"; -// Db.use(DataEaseModel.DB_NAME).update(sql, id); + sql = "delete from visualization_outer_params where visualization_id=?"; + Db.use(DataEaseModel.DB_NAME).update(sql, id); //(7) 删除主表数据 Db.use(DataEaseModel.DB_NAME).deleteById("data_visualization_info", id); @@ -202,25 +202,38 @@ public class SyncCityScreen { // (6) 插入跳转配置表 + Map linkJumpMap = new HashMap<>(); for (Record rMotherLinkJump : motherLinkJumpList) { + long motherLinkJumpId = rMotherLinkJump.getLong("id"); Record rCityLinkJump = new Record().setColumns(rMotherLinkJump);//克隆出来 rCityLinkJump.set("id", getSnowId()); rCityLinkJump.set("source_dv_id", bigScreenId); + linkJumpMap.put(motherLinkJumpId, rCityLinkJump.getLong("id")); Db.use(DataEaseModel.DB_NAME).save("visualization_link_jump", "id", rCityLinkJump); } - System.out.println("完成" + cityName + "的数据填充~"); + + for (Record rMotherLinkJumpInfo : motherLinkJumpInfoList) { + if(rMotherLinkJumpInfo.get("link_jump_id")==null)continue; + long motherLinkJumpId = rMotherLinkJumpInfo.getLong("link_jump_id"); + Record rCityLinkJumpInfo = new Record().setColumns(rMotherLinkJumpInfo);//克隆出来 + rCityLinkJumpInfo.set("id", getSnowId()); + rCityLinkJumpInfo.set("link_jump_id", linkJumpMap.get(motherLinkJumpId)); + Db.use(DataEaseModel.DB_NAME).save("visualization_link_jump_info", "id", rCityLinkJumpInfo); + } + break; + //System.out.println("完成" + cityName + "的数据填充~"); } //查询出每个城市的共享链接 - for (String cityName : dm.getCityNameList()) { - String screenName = dataVisualizationName + cityName; - sql = "select * from data_visualization_info where name =?"; - Record record = Db.use(DataEaseModel.DB_NAME).findFirst(sql, screenName); - long id = record.getLong("id"); - sql = "select * from xpack_share where resource_id=?"; - Record shareRecord = Db.use(DataEaseModel.DB_NAME).findFirst(sql, id); - System.out.println(cityName + "的共享链接:" + shareRecord.getStr("uuid")); - } +// for (String cityName : dm.getCityNameList()) { +// String screenName = dataVisualizationName + cityName; +// sql = "select * from data_visualization_info where name =?"; +// Record record = Db.use(DataEaseModel.DB_NAME).findFirst(sql, screenName); +// long id = record.getLong("id"); +// sql = "select * from xpack_share where resource_id=?"; +// Record shareRecord = Db.use(DataEaseModel.DB_NAME).findFirst(sql, id); +// System.out.println(cityName + "的共享链接:" + shareRecord.getStr("uuid")); +// } System.out.println("生成完毕"); } @@ -229,6 +242,6 @@ public class SyncCityScreen { //获取数据可视化名称 String dataVisualizationName = LocalMysqlConnectUtil.PropKit.get("dataEase.dataVisualizationName"); clear(dataVisualizationName); - SyncCityScreen(dataVisualizationName); + //SyncCityScreen(dataVisualizationName); } }