diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..c3b5e46 --- /dev/null +++ b/pom.xml @@ -0,0 +1,50 @@ + + + 4.0.0 + + com.example + mountain-flood-importer + 1.0.0 + + + 8 + 8 + UTF-8 + + + + + + org.apache.poi + poi + 5.2.3 + + + org.apache.poi + poi-ooxml + 5.2.3 + + + + + com.dameng + DmJdbcDriver18 + 8.1.1.193 + + + + + org.slf4j + slf4j-api + 1.7.36 + + + org.slf4j + slf4j-simple + 1.7.36 + + + \ No newline at end of file diff --git a/src/main/java/org/example/GetWscdDataImporter.java b/src/main/java/org/example/GetWscdDataImporter.java index 8868d84..ae1ea39 100644 --- a/src/main/java/org/example/GetWscdDataImporter.java +++ b/src/main/java/org/example/GetWscdDataImporter.java @@ -1,4 +1,3 @@ -// MountainFloodDataImporter.java package org.example; import java.io.File; @@ -16,7 +15,7 @@ public class GetWscdDataImporter { } // 测试用的固定路径 - args = new String[]{"I:\\6666-华科26个流域1023-已统一表头-待入库"}; + args = new String[]{"D:\\1111-湖工大-已通过初检-空间格式通过-已统一表头-重新入库\\1111-湖工大-已通过初检-空间格式通过-已统一表头-重新入库"}; if (args.length == 0) { System.out.println("请提供湖工大9.29目录路径作为参数"); @@ -161,7 +160,7 @@ public class GetWscdDataImporter { for (File subDir : subDirs) { String dirName = subDir.getName(); // 包含"水系"或者以HBWFF开头的文件夹都认为是水系文件夹 - if (dirName.contains("水系") || dirName.startsWith("HBWF")) { + if (dirName.contains("水系") || dirName.startsWith("HBW")) { sxDirs.add(subDir); } } diff --git a/src/main/java/org/example/IaEftsTownImporter.java b/src/main/java/org/example/IaEftsTownImporter.java index b269939..42a476c 100644 --- a/src/main/java/org/example/IaEftsTownImporter.java +++ b/src/main/java/org/example/IaEftsTownImporter.java @@ -45,7 +45,7 @@ public class IaEftsTownImporter { // args = new String[]{"F:\\1111-湖工大50条成果-已通过初检-待入库"}; // args = new String[]{"F:\\3333-2024年度咸宁市8条20251017-已通过初检-待入库"}; // args = new String[]{"F:\\2222-华科-黄石局-14条小流域(10.20)-已通过初检-已统一表头-待入库"}; - args = new String[]{"F:\\小流域\\5555-长江科学院20条10.23-已通过初检-已统一表头-待入库\\5555-长江科学院20条10.23-已通过初检-已统一表头-待入库"}; + args = new String[]{"D:\\1111-湖工大-已通过初检-空间格式通过-已统一表头-重新入库\\1111-湖工大-已通过初检-空间格式通过-已统一表头-重新入库"}; if (args.length == 0) { @@ -248,7 +248,7 @@ public class IaEftsTownImporter { Row row = sheet.getRow(i); if (row == null) continue; - Cell serialCell = row.getCell(0); + Cell serialCell = row.getCell(1); if (serialCell == null || isCellEmpty(serialCell)) { continue; } @@ -542,7 +542,7 @@ public class IaEftsTownImporter { if (subDirs != null) { List sxDirs = new ArrayList<>(); for (File subDir : subDirs) { - if (subDir.getName().contains("水系") || subDir.getName().matches("^HBWFF.*")) { + if (subDir.getName().contains("水系") || subDir.getName().matches("^HBW.*")) { sxDirs.add(subDir); } } diff --git a/src/main/java/org/example/IaGlaInfoDataImporter.java b/src/main/java/org/example/IaGlaInfoDataImporter.java index c2aef7d..75c715a 100644 --- a/src/main/java/org/example/IaGlaInfoDataImporter.java +++ b/src/main/java/org/example/IaGlaInfoDataImporter.java @@ -33,7 +33,7 @@ public class IaGlaInfoDataImporter { // args = new String[]{"F:\\3333-2024年度咸宁市8条20251017-已通过初检-待入库"}; // args = new String[]{"F:\\4444-长江科学院-黄冈28条-已通过初检-已统一表头-待入库"}; // args = new String[]{"F:\\小流域\\5555-长江科学院20条10.23-已通过初检-已统一表头-待入库\\5555-长江科学院20条10.23-已通过初检-已统一表头-待入库"}; - args = new String[]{"I:\\7777-华科-咸宁市8条1027-已通过初检-已统一表头-已入库"}; + args = new String[]{"D:\\1111-湖工大-已通过初检-空间格式通过-已统一表头-重新入库\\1111-湖工大-已通过初检-空间格式通过-已统一表头-重新入库"}; if (args.length == 0) { System.out.println("请提供湖工大9.29目录路径作为参数"); @@ -128,7 +128,7 @@ public class IaGlaInfoDataImporter { if (subDirs != null) { List sxDirs = new ArrayList<>(); for (File subDir : subDirs) { - if (subDir.getName().contains("水系") || subDir.getName().matches("^HBWF.*")) { + if (subDir.getName().contains("水系") || subDir.getName().matches("^HBW.*")) { sxDirs.add(subDir); } } diff --git a/src/main/java/org/example/IaHdpPointDataImporter.java b/src/main/java/org/example/IaHdpPointDataImporter.java index 7057688..70454bc 100644 --- a/src/main/java/org/example/IaHdpPointDataImporter.java +++ b/src/main/java/org/example/IaHdpPointDataImporter.java @@ -39,7 +39,7 @@ public class IaHdpPointDataImporter { // args = new String[]{"F:\\2222-华科-黄石局-14条小流域(10.20)-已通过初检-已统一表头-已入库"}; // args = new String[]{"F:\\3333-华科-地大9条-20251021-已通过初检-已统一表头-已入库"}; // args = new String[]{"F:\\4444-长江科学院-黄冈28条-已通过初检-已统一表头-待入库"}; - args = new String[]{"I:\\8888-长科院-孝昌县8条1028-已通过初检-已统一表头-待入库"}; + args = new String[]{"D:\\1111-湖工大-已通过初检-空间格式通过-已统一表头-重新入库\\1111-湖工大-已通过初检-空间格式通过-已统一表头-重新入库"}; if (args.length == 0) { System.out.println("请提供湖工大9.29目录路径作为参数"); @@ -134,7 +134,7 @@ public class IaHdpPointDataImporter { if (subDirs != null) { List sxDirs = new ArrayList<>(); for (File subDir : subDirs) { - if (subDir.getName().contains("水系") || subDir.getName().matches("^HBWF.*")) { + if (subDir.getName().contains("水系") || subDir.getName().matches("^HBW.*")) { sxDirs.add(subDir); } } @@ -157,7 +157,7 @@ public class IaHdpPointDataImporter { // 查找Excel文件 File excelFile = findExcelFile(reportDir); if (excelFile == null) { - System.out.println("在 " + reportDir.getPath() + " 下未找到" + six); + System.out.println("在 " + reportDir.getPath() + " 下未找到" + seven); return 0; } System.out.println("找到Excel文件: " + excelFile.getPath()); @@ -200,11 +200,11 @@ public class IaHdpPointDataImporter { private static File findExcelFile(File reportDir) { File[] files = reportDir.listFiles((dir, name) -> - name.equals(six) || name.toLowerCase().endsWith(".xlsx")); + name.equals(seven) || name.toLowerCase().endsWith(".xlsx")); if (files != null && files.length > 0) { for (File file : files) { - if (file.getName().equals(six)) { + if (file.getName().equals(seven)) { return file; } } @@ -270,7 +270,7 @@ public class IaHdpPointDataImporter { continue; } - Object[] rowData = parseRowData(row,countyName, watershedCode); + Object[] rowData = parseRowData1(row,countyName, watershedCode); if (rowData != null) { dataList.add(rowData); System.out.println("✓ 解析第 " + (i + 1) + " 行数据成功"); diff --git a/src/main/java/org/example/IaRbadInfoDataImporter.java b/src/main/java/org/example/IaRbadInfoDataImporter.java index f3d4798..5135f69 100644 --- a/src/main/java/org/example/IaRbadInfoDataImporter.java +++ b/src/main/java/org/example/IaRbadInfoDataImporter.java @@ -34,7 +34,7 @@ public class IaRbadInfoDataImporter { // args = new String[]{"F:\\4444-长江科学院-黄冈28条-已通过初检-已统一表头-待入库"}; // args = new String[]{"F:\\3333-华科-地大9条-20251021-已通过初检-已统一表头-待入库"}; // args = new String[]{"F:\\小流域\\5555-长江科学院20条10.23-已通过初检-已统一表头-待入库\\5555-长江科学院20条10.23-已通过初检-已统一表头-待入库"}; - args = new String[]{"I:\\8888-长科院-孝昌县8条1028-已通过初检-已统一表头-待入库"}; + args = new String[]{"D:\\1111-湖工大-已通过初检-空间格式通过-已统一表头-重新入库\\1111-湖工大-已通过初检-空间格式通过-已统一表头-重新入库"}; if (args.length == 0) { System.out.println("请提供湖工大9.29目录路径作为参数"); @@ -129,7 +129,7 @@ public class IaRbadInfoDataImporter { if (subDirs != null) { List sxDirs = new ArrayList<>(); for (File subDir : subDirs) { - if (subDir.getName().contains("水系") || subDir.getName().matches("^HBWF.*")) { + if (subDir.getName().contains("水系") || subDir.getName().matches("^HBW.*")) { sxDirs.add(subDir); } } diff --git a/src/main/java/org/example/IaShzhHdpDataImporter.java b/src/main/java/org/example/IaShzhHdpDataImporter.java index 33ecb00..64cb72c 100644 --- a/src/main/java/org/example/IaShzhHdpDataImporter.java +++ b/src/main/java/org/example/IaShzhHdpDataImporter.java @@ -56,7 +56,7 @@ public class IaShzhHdpDataImporter { // args = new String[]{"F:\\4444-长江科学院-黄冈28条-已通过初检-已统一表头-待入库"}; // args = new String[]{"F:\\3333-华科-地大9条-20251021-已通过初检-已统一表头-待入库"}; // args = new String[]{"F:\\小流域\\5555-长江科学院20条10.23-已通过初检-已统一表头-待入库\\5555-长江科学院20条10.23-已通过初检-已统一表头-待入库"}; - args = new String[]{"I:\\8888-长科院-孝昌县8条1028-已通过初检-已统一表头-待入库"}; + args = new String[]{"D:\\1111-湖工大-已通过初检-空间格式通过-已统一表头-重新入库\\1111-湖工大-已通过初检-空间格式通过-已统一表头-重新入库"}; if (args.length == 0) { System.out.println("请提供湖工大9.29目录路径作为参数"); @@ -540,7 +540,7 @@ public class IaShzhHdpDataImporter { List sxDirs = new ArrayList<>(); for (File subDir : subDirs) { // 包含"水系"或者是类似HBWF开头的文件夹都认为是水系文件夹 - if (subDir.getName().contains("水系") || subDir.getName().matches("^HBWF.*")) { + if (subDir.getName().contains("水系") || subDir.getName().matches("^HBW.*")) { sxDirs.add(subDir); } } diff --git a/src/main/java/org/example/IaShzhHsurfaceDataImporter.java b/src/main/java/org/example/IaShzhHsurfaceDataImporter.java index 22f270f..27bda78 100644 --- a/src/main/java/org/example/IaShzhHsurfaceDataImporter.java +++ b/src/main/java/org/example/IaShzhHsurfaceDataImporter.java @@ -58,7 +58,7 @@ public class IaShzhHsurfaceDataImporter { // args = new String[]{"C:\\Users\\gsiot\\Desktop\\项目资料\\山洪\\小流域\\222"}; // args = new String[]{"F:\\1111-湖工大50条成果-已通过初检-待入库"};--湖工大 // args = new String[]{"F:\\4444-长江科学院-黄冈28条-已通过初检-已统一表头-待入库"}; - args = new String[]{"I:\\7777-华科-咸宁市8条1027-已通过初检-已统一表头-已入库"}; + args = new String[]{"D:\\1111-湖工大-已通过初检-空间格式通过-已统一表头-重新入库\\1111-湖工大-已通过初检-空间格式通过-已统一表头-重新入库"}; if (args.length == 0) { System.out.println("请提供湖工大9.29目录路径作为参数"); @@ -794,7 +794,7 @@ public class IaShzhHsurfaceDataImporter { if (subDirs != null) { List sxDirs = new ArrayList<>(); for (File subDir : subDirs) { - if (subDir.getName().contains("水系") || subDir.getName().matches("^HBWF.*")) { + if (subDir.getName().contains("水系") || subDir.getName().matches("^HBW.*")) { sxDirs.add(subDir); } } diff --git a/src/main/java/org/example/IaShzhHsurfaceDataImporter2.java b/src/main/java/org/example/IaShzhHsurfaceDataImporter2.java index c8fad2a..e4dddd7 100644 --- a/src/main/java/org/example/IaShzhHsurfaceDataImporter2.java +++ b/src/main/java/org/example/IaShzhHsurfaceDataImporter2.java @@ -61,7 +61,7 @@ public class IaShzhHsurfaceDataImporter2 { // args = new String[]{"C:\\Users\\gsiot\\Desktop\\项目资料\\山洪\\小流域\\222"}; // args = new String[]{"F:\\1111-湖工大50条成果-已通过初检-待入库"};--湖工大 // args = new String[]{"F:\\4444-长江科学院-黄冈28条-已通过初检-已统一表头-待入库"}; - args = new String[]{"I:\\7777-华科-咸宁市8条1027-已通过初检-已统一表头-已入库"}; + args = new String[]{"I:\\11.11长科院待定-已通过初检-空间格式通过-已统一表头-待入库\\长江科学院2024湖北提交数据-11.10"}; if (args.length == 0) { System.out.println("请提供湖工大9.29目录路径作为参数"); @@ -807,7 +807,7 @@ public class IaShzhHsurfaceDataImporter2 { if (subDirs != null) { List sxDirs = new ArrayList<>(); for (File subDir : subDirs) { - if (subDir.getName().contains("水系") || subDir.getName().matches("^HBWFF.*")) { + if (subDir.getName().contains("水系") || subDir.getName().matches("^HBW.*")) { sxDirs.add(subDir); } } diff --git a/src/main/java/org/example/IaShzhVsurfaceDataImporter.java b/src/main/java/org/example/IaShzhVsurfaceDataImporter.java index 771280c..b2d0465 100644 --- a/src/main/java/org/example/IaShzhVsurfaceDataImporter.java +++ b/src/main/java/org/example/IaShzhVsurfaceDataImporter.java @@ -50,7 +50,7 @@ public class IaShzhVsurfaceDataImporter { // args = new String[]{"F:\\3333-2024年度咸宁市8条20251017-已通过初检-待入库"}; // args = new String[]{"F:\\4444-长江科学院-黄冈28条-已通过初检-已统一表头-待入库"}; - args = new String[]{"I:\\7777-华科-咸宁市8条1027-已通过初检-已统一表头-已入库"}; + args = new String[]{"D:\\1111-湖工大-已通过初检-空间格式通过-已统一表头-重新入库\\1111-湖工大-已通过初检-空间格式通过-已统一表头-重新入库"}; if (args.length == 0) { System.out.println("请提供湖工大9.29目录路径作为参数"); return; @@ -738,7 +738,7 @@ public class IaShzhVsurfaceDataImporter { if (subDirs != null) { List sxDirs = new ArrayList<>(); for (File subDir : subDirs) { - if (subDir.getName().contains("水系") || subDir.getName().matches("^HBWF.*")) { + if (subDir.getName().contains("水系") || subDir.getName().matches("^HBW.*")) { sxDirs.add(subDir); } } diff --git a/src/main/java/org/example/IaShzhVsurfaceDataImporter2.java b/src/main/java/org/example/IaShzhVsurfaceDataImporter2.java index 077ce37..67d2b43 100644 --- a/src/main/java/org/example/IaShzhVsurfaceDataImporter2.java +++ b/src/main/java/org/example/IaShzhVsurfaceDataImporter2.java @@ -54,7 +54,7 @@ public class IaShzhVsurfaceDataImporter2 { // args = new String[]{"F:\\3333-2024年度咸宁市8条20251017-已通过初检-待入库"}; // args = new String[]{"F:\\4444-长江科学院-黄冈28条-已通过初检-已统一表头-待入库"}; - args = new String[]{"C:\\Users\\gsiot\\Desktop\\项目资料\\山洪\\小流域\\111"}; + args = new String[]{"I:\\11.11长科院待定-已通过初检-空间格式通过-已统一表头-待入库\\长江科学院2024湖北提交数据-11.10"}; if (args.length == 0) { System.out.println("请提供湖工大9.29目录路径作为参数"); return; @@ -756,7 +756,7 @@ public class IaShzhVsurfaceDataImporter2 { if (subDirs != null) { List sxDirs = new ArrayList<>(); for (File subDir : subDirs) { - if (subDir.getName().contains("水系") || subDir.getName().matches("^HBWFF.*")) { + if (subDir.getName().contains("水系") || subDir.getName().matches("^HBW.*")) { sxDirs.add(subDir); } } diff --git a/src/main/java/org/example/IaStHdpDataImporter.java b/src/main/java/org/example/IaStHdpDataImporter.java index 05b572e..686df15 100644 --- a/src/main/java/org/example/IaStHdpDataImporter.java +++ b/src/main/java/org/example/IaStHdpDataImporter.java @@ -42,7 +42,7 @@ public class IaStHdpDataImporter { // 测试用的固定路径 // args = new String[]{"F:\\1111-湖工大50条成果-已通过初检-待入库"}; // args = new String[]{"F:\\4444-长江科学院-黄冈28条-已通过初检-已统一表头-待入库"}; - args = new String[]{"I:\\8888-长科院-孝昌县8条1028-已通过初检-已统一表头-待入库"}; + args = new String[]{"D:\\1111-湖工大-已通过初检-空间格式通过-已统一表头-重新入库\\1111-湖工大-已通过初检-空间格式通过-已统一表头-重新入库"}; if (args.length == 0) { System.out.println("请提供湖工大9.29目录路径作为参数"); @@ -486,7 +486,7 @@ public class IaStHdpDataImporter { if (subDirs != null) { List sxDirs = new ArrayList<>(); for (File subDir : subDirs) { - if (subDir.getName().contains("水系") || subDir.getName().matches("^HBWF.*")) { + if (subDir.getName().contains("水系") || subDir.getName().matches("^HBW.*")) { sxDirs.add(subDir); } } diff --git a/src/main/java/org/example/MountainFloodDataImporter.java b/src/main/java/org/example/MountainFloodDataImporter.java index ef533db..b6f526d 100644 --- a/src/main/java/org/example/MountainFloodDataImporter.java +++ b/src/main/java/org/example/MountainFloodDataImporter.java @@ -429,7 +429,7 @@ public class MountainFloodDataImporter { List sxDirs = new ArrayList<>(); for (File subDir : subDirs) { // 包含"水系"或者是类似HBWFF开头的文件夹都认为是水系文件夹 - if (subDir.getName().contains("水系") || subDir.getName().matches("^HBWFF.*")) { + if (subDir.getName().contains("水系") || subDir.getName().matches("^HBW.*")) { sxDirs.add(subDir); } } diff --git a/src/main/java/org/example/WatershedDataCleaner.java b/src/main/java/org/example/WatershedDataCleaner.java index 243d4f8..6cc7a99 100644 --- a/src/main/java/org/example/WatershedDataCleaner.java +++ b/src/main/java/org/example/WatershedDataCleaner.java @@ -37,9 +37,9 @@ public class WatershedDataCleaner { result.table4Count = deleteFromTable4(conn, watershedCodes); result.table5_7Count = deleteFromTable5_7(conn, watershedCodes); result.table8Count = deleteFromTable8(conn, watershedCodes); - result.hsPointCount = deleteFromHSPoint(conn, watershedCodes); +// result.hsPointCount = deleteFromHSPoint(conn, watershedCodes); result.hSurfaceCount = deleteFromHSurface(conn, watershedCodes); - result.vsPointCount = deleteFromVSPoint(conn, watershedCodes); +// result.vsPointCount = deleteFromVSPoint(conn, watershedCodes); result.vSurfaceCount = deleteFromVSurface(conn, watershedCodes); // 提交事务 @@ -136,10 +136,10 @@ public class WatershedDataCleaner { /** * 横断面点 - IA_M_HSPOINT */ - private static int deleteFromHSPoint(Connection conn, List watershedCodes) throws SQLException { - String sql = "DELETE FROM \"SHZH_JCSJ\".\"IA_M_HSPOINT\" WHERE \"HSURFACEID\" IN (SELECT GUID FROM \"SHZH_JCSJ\".\"IA_M_HSURFACE\" WHERE \"WSCD\" = ?)"; - return executeBatchDelete(conn, sql, watershedCodes, "IA_M_HSPOINT"); - } +// private static int deleteFromHSPoint(Connection conn, List watershedCodes) throws SQLException { +// String sql = "DELETE FROM \"SHZH_JCSJ\".\"IA_M_HSPOINT\" WHERE \"HSURFACEID\" IN (SELECT GUID FROM \"SHZH_JCSJ\".\"IA_M_HSURFACE\" WHERE \"WSCD\" = ?)"; +// return executeBatchDelete(conn, sql, watershedCodes, "IA_M_HSPOINT"); +// } /** * 纵断面 - IA_M_VSURFACE @@ -152,10 +152,10 @@ public class WatershedDataCleaner { /** * 纵断面点 - IA_M_VSPOINT */ - private static int deleteFromVSPoint(Connection conn, List watershedCodes) throws SQLException { - String sql = "DELETE FROM \"SHZH_JCSJ\".\"IA_M_VSPOINT\" WHERE WHERE \"ZSURFACEID\" IN (SELECT GUID FROM \"SHZH_JCSJ\".\"IA_M_VSURFACE\" WHERE \"WSCD\" = ?)"; - return executeBatchDelete(conn, sql, watershedCodes, "IA_M_VSPOINT"); - } +// private static int deleteFromVSPoint(Connection conn, List watershedCodes) throws SQLException { +// String sql = "DELETE FROM \"SHZH_JCSJ\".\"IA_M_VSPOINT\" WHERE WHERE \"ZSURFACEID\" IN (SELECT GUID FROM \"SHZH_JCSJ\".\"IA_M_VSURFACE\" WHERE \"WSCD\" = ?)"; +// return executeBatchDelete(conn, sql, watershedCodes, "IA_M_VSPOINT"); +// } /** * 执行批量删除操作 @@ -273,20 +273,56 @@ public class WatershedDataCleaner { public static void main(String[] args) { // 测试数据 List testWatershedCodes = Arrays.asList( - "HBWFA8900124H00000", - "HBWFA8900125M00000", - "HBWFA8900126F00000", - "HBWFA8900127000000", - "HBWFAA200123o00000", - "HBWFAA200125cE0000", - "HBWFAA200127c00000", - "HBWFAA200127m00000", - "HBWFAA200127t00000", - "HBWFAA20012g000000", - "HBWFAA2103N0000000", - "HBWFAA2106F0000000", - "HBWFAA210G00000000", - "HBWFADJ00125000000" + "HBWFF1400123GD0000000", + "HBWFF1400125D00000000", + "HBWFF1400126000000000", + "HBWFF14302PC000000000", + "HBWFF14303G0000000000", + "HBWFA861031kA00000000", + "HBWFA8610l10000000000", + "HBWFA86206f0000000000", + "HBWFA8300114M00000000", + "HBWFA830011GP00000000", + "HBWFABV3011I000000000", + "HBWFA85001211FC000000", + "HBWFA85001231lB000000", + "HBWFA85001241LC000000", + "HBWFA85001251IC000000", + "HBWFA85001261JC000000", + "HBWFA85001281dBH00000", + "HBWFA8580500000000000", + "HBWFA8580C00000000000", + "HBWFA85001241hBE00000", + "HBWFA850012A1hB000000", + "HBWFA850012B1kB000000", + "HBWFA85405G0000000000", + "HBWFA8540800000000000", + "HBWFA7800126000000000", + "HBWFA7800127000000000", + "HBWFA85001221IA000001", + "HBWFA85001241GA000000", + "HBWFA850012C100000000", + "HBWFE22001261G0000000", + "HBWFE2200128100000000", + "HBWFE2400121000000000", + "HBWFE240012P000000000", + "HBWFA85001231SB000001", + "HBWFA85202D0000000000", + "HBWFA85206E0000000000", + "HBWFA8520B00000000000", + "HBWFAHV00125000000000", + "HBWFA03002016T0000000", + "HBWFA03002018Z0000000", + "HBWFA8200115P00000000", + "HBWFA820011C000000000", + "HBWFA85001261RB000000", + "HBWFA850012A1dB000000", + "HBWFA85001241lA000000", + "HBWFF12A0153I00000000", + "HBWFF12A0155NE0000000", + "HBWFF12A0156L00000000", + "HBWFF12A0156N00000000", + "HBWFF12A0157M00000000" ); System.out.println("开始测试删除操作..."); diff --git a/src/main/java/org/example/WscdUpdater.java b/src/main/java/org/example/WscdUpdater.java new file mode 100644 index 0000000..84e79db --- /dev/null +++ b/src/main/java/org/example/WscdUpdater.java @@ -0,0 +1,191 @@ +package org.example; + +import java.io.FileInputStream; +import java.io.IOException; +import java.sql.*; +import java.util.HashMap; +import java.util.Map; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; + +public class WscdUpdater { + + // 数据库配置 + private static final String DB_URL = "jdbc:dm://10.42.6.248:5236/SHZH_JCSJ"; + private static final String DB_USER = "SHZH"; + private static final String DB_PASSWORD = "Shzh_890"; + + // 需要更新的表名列表 + private static final String[] TARGET_TABLES = { + "SHZH_JCSJ.IA_RV_INFO"// 替换为实际的表名 + }; + + public static void main(String[] args) { + String excelFilePath = "D:\\333.xlsx"; + + try { + // 1. 读取Excel文件 + Map wscdMapping = readExcelFile(excelFilePath); + + // 2. 连接数据库并更新数据 + updateDatabase(wscdMapping); + + System.out.println("更新完成!"); + + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * 读取Excel文件,构建编码映射关系 + */ + private static Map readExcelFile(String filePath) throws IOException { + Map mapping = new HashMap<>(); + + try (FileInputStream fis = new FileInputStream(filePath); + Workbook workbook = new XSSFWorkbook(fis)) { + + Sheet sheet = workbook.getSheetAt(0); // 第一个sheet + + // 跳过表头,从第二行开始读取 + for (int i = 1; i <= sheet.getLastRowNum(); i++) { + Row row = sheet.getRow(i); + if (row == null) continue; + + // 获取系统小流域编码(A列) + Cell oldCodeCell = row.getCell(0); + // 获取新编码(B列) + Cell newCodeCell = row.getCell(1); + + if (oldCodeCell != null && newCodeCell != null) { + String oldCode = getCellValue(oldCodeCell); + String newCode = getCellValue(newCodeCell); + + // 只有当新编码不为空时才添加到映射中 + if (oldCode != null && !oldCode.trim().isEmpty() && + newCode != null && !newCode.trim().isEmpty()) { + mapping.put(oldCode.trim(), newCode.trim()); + } + } + } + } + + System.out.println("成功读取 " + mapping.size() + " 条编码映射关系"); + return mapping; + } + + /** + * 获取单元格的值 + */ + private static String getCellValue(Cell cell) { + if (cell == null) { + return null; + } + + switch (cell.getCellType()) { + case STRING: + return cell.getStringCellValue(); + case NUMERIC: + if (DateUtil.isCellDateFormatted(cell)) { + return cell.getDateCellValue().toString(); + } else { + // 防止科学计数法,转为字符串 + return String.valueOf((long) cell.getNumericCellValue()); + } + case BOOLEAN: + return String.valueOf(cell.getBooleanCellValue()); + case FORMULA: + return cell.getCellFormula(); + default: + return ""; + } + } + + /** + * 更新数据库 + */ + private static void updateDatabase(Map wscdMapping) { + Connection conn = null; + PreparedStatement pstmt = null; + + try { + // 加载DM数据库驱动 + Class.forName("dm.jdbc.driver.DmDriver"); + + // 建立数据库连接 + conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD); + conn.setAutoCommit(false); // 开启事务 + + int totalUpdates = 0; + + // 遍历所有目标表进行更新 + for (String tableName : TARGET_TABLES) { + int tableUpdates = updateTable(conn, tableName, wscdMapping); + totalUpdates += tableUpdates; + System.out.println("表 " + tableName + " 更新了 " + tableUpdates + " 条记录"); + } + + // 提交事务 + conn.commit(); + System.out.println("总共更新了 " + totalUpdates + " 条记录"); + + } catch (Exception e) { + // 回滚事务 + if (conn != null) { + try { + conn.rollback(); + } catch (SQLException ex) { + ex.printStackTrace(); + } + } + e.printStackTrace(); + } finally { + // 关闭资源 + try { + if (pstmt != null) pstmt.close(); + if (conn != null) conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + /** + * 更新单个表 + */ + private static int updateTable(Connection conn, String tableName, Map wscdMapping) throws SQLException { + String sql = "UPDATE " + tableName + " SET WSCD = ? WHERE WSCD = ?"; + PreparedStatement pstmt = null; + int updateCount = 0; + + try { + pstmt = conn.prepareStatement(sql); + + // 遍历映射关系,执行更新 + for (Map.Entry entry : wscdMapping.entrySet()) { + String oldCode = entry.getKey(); + String newCode = entry.getValue(); + + pstmt.setString(1, newCode); + pstmt.setString(2, oldCode); + pstmt.addBatch(); + } + + // 执行批量更新 + int[] results = pstmt.executeBatch(); + for (int result : results) { + if (result >= 0) { // 成功更新的记录数 + updateCount += result; + } + } + + } finally { + if (pstmt != null) { + pstmt.close(); + } + } + + return updateCount; + } +} \ No newline at end of file