diff --git a/WebRoot/upload/C7E022EC-E098-484C-8B04-6F841946CFC9.xlsx b/WebRoot/upload/C7E022EC-E098-484C-8B04-6F841946CFC9.xlsx new file mode 100644 index 00000000..8f7ecab7 Binary files /dev/null and b/WebRoot/upload/C7E022EC-E098-484C-8B04-6F841946CFC9.xlsx differ diff --git a/src/main/java/com/dsideal/base/DataEase/Controller/DataEaseController.java b/src/main/java/com/dsideal/base/DataEase/Controller/DataEaseController.java index 07262ea0..da76e554 100644 --- a/src/main/java/com/dsideal/base/DataEase/Controller/DataEaseController.java +++ b/src/main/java/com/dsideal/base/DataEase/Controller/DataEaseController.java @@ -34,10 +34,14 @@ public class DataEaseController extends Controller { DataEaseModel dm = new DataEaseModel(); ResourceModel rm = new ResourceModel(); String tempDir = System.getProperty("java.io.tmpdir"); - // http://10.10.21.20:9000/dsBase/dataease/route?city_name=昆明市 - // http://10.10.21.20:9000/dsBase/dataease/route?city_name=楚雄彝族自治州 - // http://10.10.21.20:9000/dsBase/dataease/route?city_name=西双版纳傣族自治州 - // !!!必须发布后访问才能做到进入此接口,否则浏览器就走缓存,不进来这个接口了!!! + /* + http://10.10.21.20:9000/dsBase/dataease/route?city_name=昆明市 + http://10.10.21.20:9000/dsBase/dataease/routePage?type_id=1 + + http://10.10.21.20:9000/dsBase/dataease/routeArea?area_name=五华区 + http://10.10.21.20:9000/dsBase/dataease/routePageArea?type_id=1 + !!!必须发布后访问才能做到进入此接口,否则浏览器就走缓存,不进来这个接口了!!! + */ /** * 省级路由 @@ -52,15 +56,11 @@ public class DataEaseController extends Controller { //发布的地址 String publish_url = BaseApplication.PropKit.get("dataEase.publish_url"); //先更新一下数据表 - int res = dm.updateCity(dataVisualizationName, city_name); + int res = dm.updateCityArea(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); @@ -71,12 +71,40 @@ public class DataEaseController extends Controller { redirect(publish_url + BaseApplication.PropKit.get("dataEase.ShiZhou_url") + "?attachParams=" + base64Str); } + /** * 市级路由 * + * @param area_name 县区名称 + */ + @Before({GET.class}) + @EmptyInterface({"area_name"}) + public void routeArea(String area_name) { + //大屏名称 + String dataVisualizationName = BaseApplication.PropKit.get("dataEase.dataVisualizationNameArea"); + //发布的地址 + String publish_url = BaseApplication.PropKit.get("dataEase.publish_url"); + //先更新一下数据表 + int res = dm.updateCityArea(dataVisualizationName, area_name); + if (res == -1) { + renderJson(CommonUtil.returnMessageJson(false, dataVisualizationName + "名称的大屏不唯一,无法完成更新操作!")); + return; + } + //拼接一下URL的最终地址 + JSONObject jo = new JSONObject(); + jo.put("area_name", area_name); + String base64Str = Base64.encode(jo.toString()); + //记录最后一次操作的是哪个市或者县区 + dm.writeLastArea(area_name); + //跳转 + redirect(publish_url + BaseApplication.PropKit.get("dataEase.Area_url") + "?attachParams=" + base64Str); + } + + /** + * 市级仪表盘路由 + * * @param type_id 哪一个仪表盘 */ - // http://10.10.21.20:9000/dsBase/dataease/routePage?type_id=1 @Before({GET.class}) @IsNumericInterface({"type_id"}) public void routePage(int type_id) { @@ -103,6 +131,38 @@ public class DataEaseController extends Controller { redirect(publish_url + "?attachParams=" + base64Str); } + + /** + * 县区级仪表盘路由 + * + * @param type_id 哪一个仪表盘 + */ + @Before({GET.class}) + @IsNumericInterface({"type_id"}) + public void routePageArea(int type_id) { + //最后一次操作的区域名称 + String area_name = dm.getLastArea(); + //发布的地址 + String publish_url = BaseApplication.PropKit.get("dataEase.publish_url"); + //拼接一下URL的最终地址 + JSONObject jo = new JSONObject(); + jo.put("area_name", area_name); + String base64Str = Base64.encode(jo.toString()); + switch (type_id) { + case 1://左侧学前教育规模发展预测,义务教育规模发展预测,普通高中教育规模发展预测 + publish_url = publish_url + BaseApplication.PropKit.get("dataEase.AreaLeft_url"); + break; + case 2://最底下,人口 + publish_url = publish_url + BaseApplication.PropKit.get("dataEase.AreaBottom_url"); + break; + case 3://教育资源配置发展预测 + publish_url = publish_url + BaseApplication.PropKit.get("dataEase.AreaRight_url"); + break; + } + //跳转 + redirect(publish_url + "?attachParams=" + base64Str); + } + /** * 根据当前登录人员的identity_id,获取此人员可以维护的数据集名称 */ @@ -483,7 +543,7 @@ public class DataEaseController extends Controller { ExcelReader excelReader = new ExcelReader(); List rows = excelReader.readXlsxFile(excelPath, excelCols); - dm.saveDataSetTableByCity(id,area_name, rows); + dm.saveDataSetTableByCity(id, area_name, rows); //返回结果 Kv kv = Kv.create(); diff --git a/src/main/java/com/dsideal/base/DataEase/Model/DataEaseModel.java b/src/main/java/com/dsideal/base/DataEase/Model/DataEaseModel.java index e358b64b..34f01b1b 100644 --- a/src/main/java/com/dsideal/base/DataEase/Model/DataEaseModel.java +++ b/src/main/java/com/dsideal/base/DataEase/Model/DataEaseModel.java @@ -38,6 +38,9 @@ public class DataEaseModel { for (Record record : list) { //这个数据集,当前的区域,已经填写了多少条数据 String table_name = record.getStr("table_name"); + if(table_name.equals("excel_区域人口流动分布_374179b760")){ + System.out.println("ddd"); + } sql = "select count(1) as c from `" + table_name + "`"; if (identity_id > 1) { sql += " where `行政区划`='" + area_name + "' or `上级行政区划`='" + area_name + "'"; @@ -87,7 +90,8 @@ public class DataEaseModel { if (isInteger(value)) { record.set(colName, Integer.parseInt(value)); } else if (isDouble(value)) { - record.set(colName, Double.parseDouble(value)); + double roundedValue = Math.round(Double.parseDouble(value) * 100) / 100.0; + record.set(colName,roundedValue ); } else { record.set(colName, value); } @@ -144,9 +148,9 @@ public class DataEaseModel { * 修改大屏的城市地图为指定的城市 * * @param dataVisualizationName 大屏名称 - * @param cityName 城市名称 + * @param cityAreaName 城市或县区名称 */ - public int updateCity(String dataVisualizationName, String cityName) { + public int updateCityArea(String dataVisualizationName, String cityAreaName) { //取出大屏的ID值 //云南省教育决策支持系统 String sql = "select * from data_visualization_info where name =?"; @@ -156,11 +160,6 @@ public class DataEaseModel { } Record dataVisualizationInfo = L1.getFirst(); long bigScreenId = dataVisualizationInfo.getLong("id"); - //这个名称确实是存在,但它是不是我想要的这个云南省项目中的大屏呢 -// Set set = getFamilyNodes(); -// if (!set.contains(bigScreenId)) { -// return -2; -// } // 配置的内容 List list = getMap(bigScreenId); @@ -169,7 +168,7 @@ public class DataEaseModel { long id = record.getLong("id"); JSONObject jo = JSONObject.fromObject(record.getStr("custom_attr")); //获取城市编码 - String area_code = getCityCode(cityName); + String area_code = getCityCode(cityAreaName); //修改前 System.out.println("修改前=" + jo.getJSONObject("map")); @@ -456,7 +455,7 @@ public class DataEaseModel { //对此表中的数据进行直接导出EXCEL String sql = "select * from `" + tableName + "`"; if (identity_id > 1) { - sql = sql + "where `行政区划`='" + area_name + "'"; + sql = sql + "where `行政区划`='" + area_name + "' or `上级行政区划`='" + area_name + "'" ; } //获取一下表有哪些列 //List columnNames = getColumns(tableName); @@ -590,7 +589,7 @@ public class DataEaseModel { String tableName = record.getStr("table_name"); if (identity_id > 1) { - String sql = "select * from `" + tableName + "` where `行政区划`='" + area_name + "'"; + String sql = "select * from `" + tableName + "` where `行政区划`='" + area_name + "' or `上级行政区划`='" + area_name + "'"; return Db.use(DB_NAME).find(sql); } else { String sql = "select * from `" + tableName + "`"; diff --git a/src/main/java/com/dsideal/base/Test/ChangeCity.java b/src/main/java/com/dsideal/base/Test/ChangeCity.java index 2f38f146..e2f9fad5 100644 --- a/src/main/java/com/dsideal/base/Test/ChangeCity.java +++ b/src/main/java/com/dsideal/base/Test/ChangeCity.java @@ -4,7 +4,6 @@ import com.dsideal.base.BaseApplication; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Plugin.YamlProp; import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; -import com.jfinal.kit.Prop; public class ChangeCity { public static DataEaseModel dm = new DataEaseModel(); @@ -16,6 +15,6 @@ public class ChangeCity { LocalMysqlConnectUtil.Init(); //dm.updateCity("云南省教育决策支持系统【市州】", "楚雄州"); - dm.updateCity("云南省教育决策支持系统【市州】", "昆明市"); + dm.updateCityArea("云南省教育决策支持系统【市州】", "昆明市"); } } diff --git a/src/main/java/com/dsideal/base/Tools/Step3_DataSetFakeData.java b/src/main/java/com/dsideal/base/Tools/Step3_DataSetFakeData.java index bb167d93..77339af9 100644 --- a/src/main/java/com/dsideal/base/Tools/Step3_DataSetFakeData.java +++ b/src/main/java/com/dsideal/base/Tools/Step3_DataSetFakeData.java @@ -113,24 +113,56 @@ public class Step3_DataSetFakeData { // } // } - //有一些表是以 上级行政区划为根的,然后遍历了它的县区,还有类型,不好直接抄过来,只能硬写了 + + //市州净注入与净流出的数据集 + String tableName = "excel_区域人口流动分布_193751804a"; for (Record record : listCity) { - //String cityName = "昭通市"; String cityName = record.getStr("area_name"); - if (keepArea.contains(cityName)) continue; + String sql = "delete from `" + tableName + "` where `行政区划`='" + cityName + "'"; + Db.use(DataEaseModel.DB_NAME).update(sql); + System.out.println(cityName + "正在处理数据集:" + tableName); + //if (keepArea.contains(cityName)) continue; Record rCity = dm.getAreaByName(cityName); List lArea = dm.getAreaList(rCity.getStr("id")); List writeList = new ArrayList<>(); + int x = 0; for (Record r : lArea) { + x++; Record rArea = new Record(); - rArea.set("上级行政区划", cityName); - rArea.set("行政区划", r.getStr("area_name")); - rArea.set("类型", "净流出"); - rArea.set("数值(人)", 2313250); + rArea.set("行政区划", cityName); + rArea.set("下级行政区划", r.getStr("area_name")); + rArea.set("类型", x % 2 == 1 ? "净流出" : "净流入"); + rArea.set("数值", 900); writeList.add(rArea); } - Db.use(DataEaseModel.DB_NAME).batchSave("excel_区域人口流动分布_374179b760", writeList, 100); + Db.use(DataEaseModel.DB_NAME).batchSave(tableName, writeList, 100); } + +// //县区净注入与净流出的数据集 +// String tableName = "excel_区域人口流动分布_374179b760"; +// int x=0; +// for (Record record : listCity) { +// x++; +// String cityName = record.getStr("area_name"); +// if (keepArea.contains(cityName)) continue; +// String sql = "delete from `" + tableName + "` where `上级行政区划`='" + cityName + "'"; +// Db.use(DataEaseModel.DB_NAME).update(sql); +// +// System.out.println(cityName + "正在处理数据集:" + tableName); +// Record rCity = dm.getAreaByName(cityName); +// List lArea = dm.getAreaList(rCity.getStr("id")); +// List writeList = new ArrayList<>(); +// for (Record r : lArea) { +// Record rArea = new Record(); +// rArea.set("上级行政区划", cityName); +// rArea.set("行政区划", r.getStr("area_name")); +// rArea.set("类型", x % 2 == 1 ? "净流出" : "净流入"); +// rArea.set("数值(人)", 2313250); +// writeList.add(rArea); +// } +// Db.use(DataEaseModel.DB_NAME).batchSave(tableName, writeList, 100); +// } + } } diff --git a/src/main/java/com/dsideal/base/Tools/Test/ChangeDataEaseCity.java b/src/main/java/com/dsideal/base/Tools/Test/ChangeDataEaseCity.java index 701fc48f..feafdba5 100644 --- a/src/main/java/com/dsideal/base/Tools/Test/ChangeDataEaseCity.java +++ b/src/main/java/com/dsideal/base/Tools/Test/ChangeDataEaseCity.java @@ -34,7 +34,7 @@ public class ChangeDataEaseCity { String dataVisualizationName = "黄海测试的市州地图"; String cityName = "昭通市"; DataEaseModel dm = new DataEaseModel(); - dm.updateCity(dataVisualizationName, cityName); + dm.updateCityArea(dataVisualizationName, cityName); /* 要修改的市州名称,需要用全称 156530100 昆明市 diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index 5f48ab56..d75b5f68 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -23,13 +23,20 @@ redis: # 数据可视化 dataEase: + publish_url: http://10.10.14.203:8100 + 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 + + dataVisualizationNameArea: 云南省教育决策支持系统【县区】 + Area_url: /#/de-link/OxwyzDTr + AreaLeft_url: /#/de-link/WTtaPIn6 + AreaBottom_url: /#/de-link/j3vwbtKm + AreaRight_url: /#/de-link/ufRSlWmB # ============================================================== excel: