From 0c5a75a17c7d2c1be26001acda935706348a9e27 Mon Sep 17 00:00:00 2001 From: CXT-maker <19235211755@163.com> Date: Wed, 27 Aug 2025 17:54:47 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=99=E4=B8=AA=E6=98=AF=E5=8F=91=E7=BB=99?= =?UTF-8?q?=E4=BB=96=E4=BB=AC=E7=9A=84=E6=B5=8B=E8=AF=95=E7=89=88=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../docchecktoolrefactored/System.java | 2 +- .../core/HashFileGenerator.java | 2 +- .../io/reader/ExcelFileReader.java | 12 ++++++---- .../ui/MainStageController.java | 16 ++++++++++--- .../DuplicateDocumentPaneController.java | 2 +- .../ui/module/PathCheckPaneController.java | 16 ++++++++++--- .../module/StorageCarrierPaneController.java | 2 ++ .../ui/task/HashFileGenerationTask.java | 2 +- .../resources/fxml/module/step-1-pane.fxml | 10 ++++++-- .../resources/fxml/module/step-2-pane.fxml | 2 +- .../resources/fxml/module/step-7-pane.fxml | 24 ++++++++++--------- src/main/resources/logback.xml | 17 +++++++++---- 12 files changed, 74 insertions(+), 33 deletions(-) diff --git a/src/main/java/top/r3944realms/docchecktoolrefactored/System.java b/src/main/java/top/r3944realms/docchecktoolrefactored/System.java index e09ca8e..0d19c30 100644 --- a/src/main/java/top/r3944realms/docchecktoolrefactored/System.java +++ b/src/main/java/top/r3944realms/docchecktoolrefactored/System.java @@ -27,7 +27,7 @@ public enum System { private static final ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); // 默认值 private static final long DEFAULT_SINGLE_TIMEOUT = 30; - private static final long DEFAULT_TOTAL_TIMEOUT = 300; + private static final long DEFAULT_TOTAL_TIMEOUT = 12600; private static final boolean DEFAULT_ENABLE_STEP = false; public static void init() { diff --git a/src/main/java/top/r3944realms/docchecktoolrefactored/core/HashFileGenerator.java b/src/main/java/top/r3944realms/docchecktoolrefactored/core/HashFileGenerator.java index 2901ed3..233db99 100644 --- a/src/main/java/top/r3944realms/docchecktoolrefactored/core/HashFileGenerator.java +++ b/src/main/java/top/r3944realms/docchecktoolrefactored/core/HashFileGenerator.java @@ -136,7 +136,7 @@ public class HashFileGenerator { return; } - String hash = hashCalculator.calculatePartialHash(file); + String hash = hashCalculator.calculateHash(file); String[] result = {file.getFileName().toString(), hash}; synchronized (results) { diff --git a/src/main/java/top/r3944realms/docchecktoolrefactored/io/reader/ExcelFileReader.java b/src/main/java/top/r3944realms/docchecktoolrefactored/io/reader/ExcelFileReader.java index 1a4cc85..32503fa 100644 --- a/src/main/java/top/r3944realms/docchecktoolrefactored/io/reader/ExcelFileReader.java +++ b/src/main/java/top/r3944realms/docchecktoolrefactored/io/reader/ExcelFileReader.java @@ -5,6 +5,7 @@ import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import top.r3944realms.docchecktoolrefactored.core.LogicalAddressFileGenerator; +import top.r3944realms.docchecktoolrefactored.ui.utils.DialogUtil; import top.r3944realms.docchecktoolrefactored.util.FileUtil; import top.r3944realms.docchecktoolrefactored.util.LoggerMarker; @@ -34,11 +35,11 @@ public class ExcelFileReader implements CatalogFileReader { Sheet sheet = workbook.getSheetAt(0); log.debug(LoggerMarker.DEBUG_MARKER, "读取工作表: {}", sheet.getSheetName()); - // 获取标题行 + // 获取列标题行 Row headerRow = sheet.getRow(0); if (headerRow == null) { - log.error(LoggerMarker.RELEASE_MARKER, "Excel文件缺少标题行"); - throw new IllegalArgumentException("Excel文件缺少标题行"); + log.error(LoggerMarker.RELEASE_MARKER, "Excel文件缺少列标题行"); + throw new IllegalArgumentException("Excel文件缺少列标题行"); } // 查找"档号"和"页数"列的索引 int archiveCodeIndex = -1; @@ -79,7 +80,7 @@ public class ExcelFileReader implements CatalogFileReader { ) ); } - // 从第二行开始读取数据(跳过标题行) + // 从第二行开始读取数据(跳过列标题行,只取数据部分内容) int totalRows = sheet.getLastRowNum(); int validRecords = 0; int skippedRecords = 0; @@ -107,9 +108,12 @@ public class ExcelFileReader implements CatalogFileReader { // 验证数据有效性 if (archiveCode.isEmpty()) { + DialogUtil.showWarningDialog("警告", "操作有误", "第" + ( i + 1 ) + "行档号为空,停止处理"); throw new IllegalArgumentException("第" + ( i + 1 ) + "行档号为空,停止处理"); + } if (page <= 0) { + DialogUtil.showWarningDialog("警告", "操作有误", "第" + ( i + 1 ) + "第" + ( i + 1 ) + "行页数无效: " + page + ",停止处理"); throw new IllegalArgumentException("第" + ( i + 1 ) + "行页数无效: " + page + ",停止处理"); } diff --git a/src/main/java/top/r3944realms/docchecktoolrefactored/ui/MainStageController.java b/src/main/java/top/r3944realms/docchecktoolrefactored/ui/MainStageController.java index b4e424e..4480534 100644 --- a/src/main/java/top/r3944realms/docchecktoolrefactored/ui/MainStageController.java +++ b/src/main/java/top/r3944realms/docchecktoolrefactored/ui/MainStageController.java @@ -7,15 +7,20 @@ import javafx.scene.input.KeyCode; import javafx.scene.input.KeyCodeCombination; import javafx.scene.input.KeyCombination; import javafx.scene.input.KeyEvent; + import lombok.extern.slf4j.Slf4j; import top.r3944realms.docchecktoolrefactored.System; import top.r3944realms.docchecktoolrefactored.core.Setting; import top.r3944realms.docchecktoolrefactored.ui.utils.DialogUtil; import top.r3944realms.docchecktoolrefactored.util.LoggerMarker; + + import java.util.ArrayList; import java.util.List; + + /** * The type Main stage controller. */ @@ -153,12 +158,17 @@ public class MainStageController { SceneManager.openSettingView(); } - @FXML void onOpenHelpDoc(ActionEvent actionEvent) { - DialogUtil.showDetailedInformationDialog("未实现", "敬请期待","待完善文档后内置"); + + @FXML + void onOpenHelpDoc(ActionEvent actionEvent) { + DialogUtil.showDetailedInformationDialog("帮助文档", "操作手册","见.exe程序同文件夹下的“操作手册。docx”文件。"); } + + + @FXML void onAbout(ActionEvent actionEvent) { - DialogUtil.showDetailedInformationDialog("版本", "版本信息","这里写些信息"); + DialogUtil.showDetailedInformationDialog("版本", "版本信息","1.0.0-beta"); } public void updateStepButtonsVisibility() { Setting setting = System.getSetting(); diff --git a/src/main/java/top/r3944realms/docchecktoolrefactored/ui/module/DuplicateDocumentPaneController.java b/src/main/java/top/r3944realms/docchecktoolrefactored/ui/module/DuplicateDocumentPaneController.java index 7a4f13c..b2250f1 100644 --- a/src/main/java/top/r3944realms/docchecktoolrefactored/ui/module/DuplicateDocumentPaneController.java +++ b/src/main/java/top/r3944realms/docchecktoolrefactored/ui/module/DuplicateDocumentPaneController.java @@ -101,7 +101,7 @@ public class DuplicateDocumentPaneController { result1TA.setText(task.getValue()); start1B.setDisable(false); cancel1B.setDisable(true); - log.info(LoggerMarker.RELEASE_MARKER, "查重任务完成,结果如下:{}", task.getValue()); + log.info(LoggerMarker.RELEASE_MARKER, "查重任务完成.\n本次检查文件夹:{}\n结果如下:{}",folderPath,task.getValue()); }); // 处理任务失败情况 diff --git a/src/main/java/top/r3944realms/docchecktoolrefactored/ui/module/PathCheckPaneController.java b/src/main/java/top/r3944realms/docchecktoolrefactored/ui/module/PathCheckPaneController.java index 20d533e..f2f8d8d 100644 --- a/src/main/java/top/r3944realms/docchecktoolrefactored/ui/module/PathCheckPaneController.java +++ b/src/main/java/top/r3944realms/docchecktoolrefactored/ui/module/PathCheckPaneController.java @@ -140,7 +140,7 @@ public class PathCheckPaneController implements Initializable { result2TA.setText("未选择保存位置"); log.warn(LoggerMarker.DEBUG_MARKER, "用户未选择任何文件"); DialogUtil.showWarningDialog("警告", "操作有误", "未选择保存位置"); - generateLogicalAddress2B.setDisable(true); + generateLogicalAddress2B.setDisable(false); return; } System.setLastModifiedFile(outputFile); @@ -159,6 +159,8 @@ public class PathCheckPaneController implements Initializable { // 创建后台任务 AddressFileGenerationTask task = new AddressFileGenerationTask(filePath, outputFile, selectedMode.number, true); + // 保存到字段 + currentTask = task; // 绑定任务属性到UI ChangeListener progressChangeListener = (obs, oldVal, newVal) -> { if (newVal != null) { @@ -361,9 +363,17 @@ public class PathCheckPaneController implements Initializable { task.setOnSucceeded(event -> { cancelableProgressBar.closeProgress(); start2B.setDisable(false); - result2TA.setText(AddressFileComparator.ComparisonResult.generateComparisonResults(task.getValue(), loadFolderType2CB.getValue().compareMode)); - result2TA.setText(AddressFileComparator.ComparisonResult.generateComparisonResults(task.getValue(), loadFolderType2CB.getValue().compareMode)); + // 获取格式化后的结果文本 + String resultText = AddressFileComparator.ComparisonResult.generateComparisonResults( + task.getValue(), + loadFolderType2CB.getValue().compareMode + ); + + // 设置结果到文本区域 + result2TA.setText(resultText); //内部比较器已有,此处忽略日志打印 + // 记录格式化后的结果到日志 + log.info(LoggerMarker.RELEASE_MARKER, "文件查漏、存储路径和命名规范结果如下:\n{}", resultText); }); task.setOnFailed(event -> { diff --git a/src/main/java/top/r3944realms/docchecktoolrefactored/ui/module/StorageCarrierPaneController.java b/src/main/java/top/r3944realms/docchecktoolrefactored/ui/module/StorageCarrierPaneController.java index 29e4c75..80f1e75 100644 --- a/src/main/java/top/r3944realms/docchecktoolrefactored/ui/module/StorageCarrierPaneController.java +++ b/src/main/java/top/r3944realms/docchecktoolrefactored/ui/module/StorageCarrierPaneController.java @@ -142,6 +142,7 @@ public class StorageCarrierPaneController { result7TA.setText("计算结果:\n" + hashResult); generateHashFile7B.setDisable(false); log.info(LoggerMarker.DEBUG_MARKER, "文件哈希值计算完成: {}", hashResult); + log.info(LoggerMarker.RELEASE_MARKER, "文件哈希值计算完成.\t{}文件的哈希值: {}", filePath,hashResult); } catch (IOException e) { log.error(LoggerMarker.DEBUG_MARKER, "计算文件哈希值时出错: {}", filePath, e); DialogUtil.showDetailedErrorDialog("错误", "生成哈希文件时出错:", e.getMessage()); @@ -230,6 +231,7 @@ public class StorageCarrierPaneController { log.info(LoggerMarker.DEBUG_MARKER, "哈希文件生成任务成功完成"); caculateHash7B.setDisable(false); result7TA.setText(task.getValue()); + log.info(LoggerMarker.RELEASE_MARKER, task.getValue()); }); // 任务失败处理 diff --git a/src/main/java/top/r3944realms/docchecktoolrefactored/ui/task/HashFileGenerationTask.java b/src/main/java/top/r3944realms/docchecktoolrefactored/ui/task/HashFileGenerationTask.java index 94a7f2a..db2958d 100644 --- a/src/main/java/top/r3944realms/docchecktoolrefactored/ui/task/HashFileGenerationTask.java +++ b/src/main/java/top/r3944realms/docchecktoolrefactored/ui/task/HashFileGenerationTask.java @@ -41,7 +41,7 @@ public class HashFileGenerationTask extends Task { generator.setCallback((current, total) -> { updateProgress(current, total); updateMessage("处理文件: " + current + "/" + total); - if (current % 500 == 0 || current == total) { + if (current % 5000 == 0 || current == total) { log.info(LoggerMarker.DEBUG_MARKER, "处理进度: {}/{}", current, total); } }); diff --git a/src/main/resources/fxml/module/step-1-pane.fxml b/src/main/resources/fxml/module/step-1-pane.fxml index d68287e..7217e43 100644 --- a/src/main/resources/fxml/module/step-1-pane.fxml +++ b/src/main/resources/fxml/module/step-1-pane.fxml @@ -50,6 +50,9 @@ + + + - diff --git a/src/main/resources/fxml/module/step-2-pane.fxml b/src/main/resources/fxml/module/step-2-pane.fxml index 29c0c86..d8c7f6b 100644 --- a/src/main/resources/fxml/module/step-2-pane.fxml +++ b/src/main/resources/fxml/module/step-2-pane.fxml @@ -67,7 +67,7 @@ - + diff --git a/src/main/resources/fxml/module/step-7-pane.fxml b/src/main/resources/fxml/module/step-7-pane.fxml index 33b218d..7f42dc6 100644 --- a/src/main/resources/fxml/module/step-7-pane.fxml +++ b/src/main/resources/fxml/module/step-7-pane.fxml @@ -17,10 +17,12 @@ + - - + + + @@ -33,7 +35,7 @@ - - + @@ -73,7 +75,7 @@ - -