From 29bab5972d43b6ae01b7b6beef0764725c104b2c Mon Sep 17 00:00:00 2001 From: HuangHai <10402852@qq.com> Date: Wed, 9 Apr 2025 14:04:15 +0800 Subject: [PATCH] 'commit' --- .../Tools/Excel/Bean/BeanSchool2019_CZ.java | 32 ---- .../Tools/Excel/Bean/BeanSchool2019_GZ.java | 32 ---- .../Tools/Excel/Bean/BeanSchool2019_XX.java | 32 ---- .../dsideal/base/Tools/Excel/School2019.java | 140 ------------------ .../Data/SchoolCount.json | 0 .../SchoolCountSummary.java} | 10 +- .../Util/CloseLogUtil.java | 2 +- .../Util/ColumnConfig.java | 2 +- .../{Excel => JkyNewData}/Util/ExcelUtil.java | 2 +- 9 files changed, 8 insertions(+), 244 deletions(-) delete mode 100644 src/main/java/com/dsideal/base/Tools/Excel/Bean/BeanSchool2019_CZ.java delete mode 100644 src/main/java/com/dsideal/base/Tools/Excel/Bean/BeanSchool2019_GZ.java delete mode 100644 src/main/java/com/dsideal/base/Tools/Excel/Bean/BeanSchool2019_XX.java delete mode 100644 src/main/java/com/dsideal/base/Tools/Excel/School2019.java rename src/main/java/com/dsideal/base/Tools/{Excel => JkyNewData}/Data/SchoolCount.json (100%) rename src/main/java/com/dsideal/base/Tools/{Excel/SchoolWithMap.java => JkyNewData/SchoolCountSummary.java} (93%) rename src/main/java/com/dsideal/base/Tools/{Excel => JkyNewData}/Util/CloseLogUtil.java (92%) rename src/main/java/com/dsideal/base/Tools/{Excel => JkyNewData}/Util/ColumnConfig.java (84%) rename src/main/java/com/dsideal/base/Tools/{Excel => JkyNewData}/Util/ExcelUtil.java (93%) diff --git a/src/main/java/com/dsideal/base/Tools/Excel/Bean/BeanSchool2019_CZ.java b/src/main/java/com/dsideal/base/Tools/Excel/Bean/BeanSchool2019_CZ.java deleted file mode 100644 index 1b314f9e..00000000 --- a/src/main/java/com/dsideal/base/Tools/Excel/Bean/BeanSchool2019_CZ.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.dsideal.base.Tools.Excel.Bean; - - -import cn.idev.excel.annotation.ExcelProperty; -import com.dsideal.base.Tools.Excel.Util.ExcelUtil; -import lombok.Data; - -@Data -public class BeanSchool2019_CZ { - - @ExcelProperty(index = 1) // B列 - private String schoolName; - - @ExcelProperty(index = 3) // D列 - private String schoolType; - - @ExcelProperty(index = 5) // F列 - private Integer schoolCount; - - @ExcelProperty(index = 374) // NK列 - private String city; - - @ExcelProperty(index = 375) // NL列 - private String district; - - public static void main(String[] args) { - // 测试字母标号转列索引 - String columnLetter = "NK"; // 示例输入 - int columnIndex = ExcelUtil.columnLetterToIndex(columnLetter); - System.out.printf("字母标号 %s 对应的列索引是: %d%n", columnLetter, columnIndex); - } -} \ No newline at end of file diff --git a/src/main/java/com/dsideal/base/Tools/Excel/Bean/BeanSchool2019_GZ.java b/src/main/java/com/dsideal/base/Tools/Excel/Bean/BeanSchool2019_GZ.java deleted file mode 100644 index 15543d6d..00000000 --- a/src/main/java/com/dsideal/base/Tools/Excel/Bean/BeanSchool2019_GZ.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.dsideal.base.Tools.Excel.Bean; - - -import cn.idev.excel.annotation.ExcelProperty; -import com.dsideal.base.Tools.Excel.Util.ExcelUtil; -import lombok.Data; - -@Data -public class BeanSchool2019_GZ { - - @ExcelProperty(index = 1) // B列 - private String schoolName; - - @ExcelProperty(index = 3) // D列 - private String schoolType; - - @ExcelProperty(index = 5) // F列 - private Integer schoolCount; - - @ExcelProperty(index = 320) // LI列 - private String city; - - @ExcelProperty(index = 321) // LJ列 - private String district; - - public static void main(String[] args) { - // 测试字母标号转列索引 - String columnLetter = "LI"; // 示例输入 - int columnIndex = ExcelUtil.columnLetterToIndex(columnLetter); - System.out.printf("字母标号 %s 对应的列索引是: %d%n", columnLetter, columnIndex); - } -} \ No newline at end of file diff --git a/src/main/java/com/dsideal/base/Tools/Excel/Bean/BeanSchool2019_XX.java b/src/main/java/com/dsideal/base/Tools/Excel/Bean/BeanSchool2019_XX.java deleted file mode 100644 index 7eebe5ab..00000000 --- a/src/main/java/com/dsideal/base/Tools/Excel/Bean/BeanSchool2019_XX.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.dsideal.base.Tools.Excel.Bean; - - -import cn.idev.excel.annotation.ExcelProperty; -import com.dsideal.base.Tools.Excel.Util.ExcelUtil; -import lombok.Data; - -@Data -public class BeanSchool2019_XX { - - @ExcelProperty(index = 1) // B列 - private String schoolName; - - @ExcelProperty(index = 3) // D列 - private String schoolType; - - @ExcelProperty(index = 5) // F列 - private Integer schoolCount; - - @ExcelProperty(index = 350) // MM列 - private String city; - - @ExcelProperty(index = 351) // MN列 - private String district; - - public static void main(String[] args) { - // 测试字母标号转列索引 - String columnLetter = "MM"; // 示例输入 - int columnIndex = ExcelUtil.columnLetterToIndex(columnLetter); - System.out.printf("字母标号 %s 对应的列索引是: %d%n", columnLetter, columnIndex); - } -} \ No newline at end of file diff --git a/src/main/java/com/dsideal/base/Tools/Excel/School2019.java b/src/main/java/com/dsideal/base/Tools/Excel/School2019.java deleted file mode 100644 index 64d2f5f2..00000000 --- a/src/main/java/com/dsideal/base/Tools/Excel/School2019.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.dsideal.base.Tools.Excel; - -import ch.qos.logback.classic.Level; -import ch.qos.logback.classic.Logger; -import cn.idev.excel.*; -import com.dsideal.base.Tools.Excel.Bean.BeanSchool2019_CZ; -import com.dsideal.base.Tools.Excel.Bean.BeanSchool2019_GZ; -import com.dsideal.base.Tools.Excel.Bean.BeanSchool2019_XX; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; -import com.jfinal.plugin.activerecord.Db; -import com.jfinal.plugin.activerecord.Record; -import org.slf4j.LoggerFactory; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class School2019 { - - public static void main(String[] args) { - // 一、关闭各种日志输出信息 - // 禁用 logback 的状态输出 - System.setProperty("logback.statusListenerClass", "ch.qos.logback.core.status.NopStatusListener"); - // 设置所有相关日志级别 - Logger root = (Logger) LoggerFactory.getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME); - root.setLevel(Level.ERROR); - // 设置特定包的日志级别 - String[] packages = { - "org.ehcache", - "org.ehcache.core", - "org.ehcache.impl", - "org.terracotta", - "ch.qos.logback", - "org.slf4j" - }; - for (String pkg : packages) { - Logger logger = (Logger) LoggerFactory.getLogger(pkg); - logger.setLevel(Level.ERROR); - logger.setAdditive(false); // 防止日志向上传递 - } - //初始化数据库连接 - LocalMysqlConnectUtil.Init(); - - //二、业务逻辑 - String filePath = "D:/dsWork/2025年收集的人口与教育数据库(20250328)/2015-2020年的数据/基础教育/2019.xlsx"; - // 创建一个Map来存储所有处理结果 - Map>> allResults = new HashMap<>(); - //跳过的行数 - int skipRows = 7; - // 处理小学数据 - allResults.put("小学", processSheet(filePath, "基教小学", skipRows, BeanSchool2019_XX.class)); - // 处理初中数据 - allResults.put("初中", processSheet(filePath, "基教初中", skipRows, BeanSchool2019_CZ.class)); - // 处理高中数据 - allResults.put("高中", processSheet(filePath, "基教高中", skipRows, BeanSchool2019_GZ.class)); - // 保存统计结果到数据库 - saveToDatabase(allResults, 2019); - } - - /** - * 将统计结果保存到数据库 - * - * @param allResults 所有处理结果 - * @param year 年份 - */ - private static void saveToDatabase(Map>> allResults, int year) { - // 先删除该年份的旧数据 - Db.delete("DELETE FROM t_yn_school_count WHERE year = ?", year); - - // 遍历所有结果并保存 - for (Map.Entry>> schoolTypeEntry : allResults.entrySet()) { - String schoolType = schoolTypeEntry.getKey(); - - for (Map.Entry> cityEntry : schoolTypeEntry.getValue().entrySet()) { - String city = cityEntry.getKey(); - - for (Map.Entry districtEntry : cityEntry.getValue().entrySet()) { - String district = districtEntry.getKey(); - int count = districtEntry.getValue(); - - // 创建记录 - Record record = new Record(); - record.set("school_type", schoolType) - .set("city", city) - .set("district", district) - .set("school_count", count) - .set("year", year); - - // 保存到数据库 - Db.save("t_yn_school_count", record); - } - } - } - - System.out.println("数据已成功保存到数据库"); - } - - /** - * 通用方法:处理指定 Sheet 表的数据 - * - * @param filePath 文件路径 - * @param sheetName Sheet 表名称 - * @param skipRows 跳过的行数 - * @param beanClass Bean 类 - * @return 处理结果Map - */ - private static Map> processSheet(String filePath, String sheetName, int skipRows, - Class beanClass) { - // 从指定行开始读取 - List dataList = FastExcel.read(filePath) - .head(beanClass) - .sheet(sheetName) - .headRowNumber(skipRows) // 跳过前 skipRows 行 - .doReadSync(); - - // 使用 Map 进行分组统计 - Map> cityDistrictMap = new HashMap<>(); - - for (T data : dataList) { - try { - // 通过反射获取字段值 - String city = (String) beanClass.getMethod("getCity").invoke(data); - String district = (String) beanClass.getMethod("getDistrict").invoke(data); - int count = (int) beanClass.getMethod("getSchoolCount").invoke(data); - - if (count > 0) { - // 如果市不存在,创建新的 Map - cityDistrictMap.putIfAbsent(city, new HashMap<>()); - - // 累加区对应的学校数量 - cityDistrictMap.get(city).merge(district, count, Integer::sum); - } - } catch (Exception e) { - throw new RuntimeException("处理数据时发生错误", e); - } - } - - return cityDistrictMap; - } -} \ No newline at end of file diff --git a/src/main/java/com/dsideal/base/Tools/Excel/Data/SchoolCount.json b/src/main/java/com/dsideal/base/Tools/JkyNewData/Data/SchoolCount.json similarity index 100% rename from src/main/java/com/dsideal/base/Tools/Excel/Data/SchoolCount.json rename to src/main/java/com/dsideal/base/Tools/JkyNewData/Data/SchoolCount.json diff --git a/src/main/java/com/dsideal/base/Tools/Excel/SchoolWithMap.java b/src/main/java/com/dsideal/base/Tools/JkyNewData/SchoolCountSummary.java similarity index 93% rename from src/main/java/com/dsideal/base/Tools/Excel/SchoolWithMap.java rename to src/main/java/com/dsideal/base/Tools/JkyNewData/SchoolCountSummary.java index 63ff9b37..cab25294 100644 --- a/src/main/java/com/dsideal/base/Tools/Excel/SchoolWithMap.java +++ b/src/main/java/com/dsideal/base/Tools/JkyNewData/SchoolCountSummary.java @@ -1,4 +1,4 @@ -package com.dsideal.base.Tools.Excel; +package com.dsideal.base.Tools.JkyNewData; import cn.idev.excel.*; import com.alibaba.fastjson2.JSON; @@ -7,9 +7,9 @@ import com.alibaba.fastjson2.JSONObject; import java.io.FileNotFoundException; import java.io.FileReader; -import com.dsideal.base.Tools.Excel.Util.CloseLogUtil; -import com.dsideal.base.Tools.Excel.Util.ColumnConfig; -import com.dsideal.base.Tools.Excel.Util.ExcelUtil; +import com.dsideal.base.Tools.JkyNewData.Util.CloseLogUtil; +import com.dsideal.base.Tools.JkyNewData.Util.ColumnConfig; +import com.dsideal.base.Tools.JkyNewData.Util.ExcelUtil; import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Record; @@ -18,7 +18,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -public class SchoolWithMap { +public class SchoolCountSummary { public static void main(String[] args) throws FileNotFoundException { // 一、关闭日志输出 diff --git a/src/main/java/com/dsideal/base/Tools/Excel/Util/CloseLogUtil.java b/src/main/java/com/dsideal/base/Tools/JkyNewData/Util/CloseLogUtil.java similarity index 92% rename from src/main/java/com/dsideal/base/Tools/Excel/Util/CloseLogUtil.java rename to src/main/java/com/dsideal/base/Tools/JkyNewData/Util/CloseLogUtil.java index c37b39ee..f7db67bc 100644 --- a/src/main/java/com/dsideal/base/Tools/Excel/Util/CloseLogUtil.java +++ b/src/main/java/com/dsideal/base/Tools/JkyNewData/Util/CloseLogUtil.java @@ -1,4 +1,4 @@ -package com.dsideal.base.Tools.Excel.Util; +package com.dsideal.base.Tools.JkyNewData.Util; import ch.qos.logback.classic.Level; import ch.qos.logback.classic.Logger; diff --git a/src/main/java/com/dsideal/base/Tools/Excel/Util/ColumnConfig.java b/src/main/java/com/dsideal/base/Tools/JkyNewData/Util/ColumnConfig.java similarity index 84% rename from src/main/java/com/dsideal/base/Tools/Excel/Util/ColumnConfig.java rename to src/main/java/com/dsideal/base/Tools/JkyNewData/Util/ColumnConfig.java index 73a202f2..ea67e588 100644 --- a/src/main/java/com/dsideal/base/Tools/Excel/Util/ColumnConfig.java +++ b/src/main/java/com/dsideal/base/Tools/JkyNewData/Util/ColumnConfig.java @@ -1,4 +1,4 @@ -package com.dsideal.base.Tools.Excel.Util; +package com.dsideal.base.Tools.JkyNewData.Util; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/dsideal/base/Tools/Excel/Util/ExcelUtil.java b/src/main/java/com/dsideal/base/Tools/JkyNewData/Util/ExcelUtil.java similarity index 93% rename from src/main/java/com/dsideal/base/Tools/Excel/Util/ExcelUtil.java rename to src/main/java/com/dsideal/base/Tools/JkyNewData/Util/ExcelUtil.java index 6b5116b1..b7156216 100644 --- a/src/main/java/com/dsideal/base/Tools/Excel/Util/ExcelUtil.java +++ b/src/main/java/com/dsideal/base/Tools/JkyNewData/Util/ExcelUtil.java @@ -1,4 +1,4 @@ -package com.dsideal.base.Tools.Excel.Util; +package com.dsideal.base.Tools.JkyNewData.Util; import java.util.Map;