Преглед изворни кода

feat:加入easyexcel依赖用于读取excel文件的输出的输出excel文件

yang yi пре 11 месеци
родитељ
комит
1d3220b380

+ 4 - 8
pom.xml

@@ -8,15 +8,11 @@
     <artifactId>amount-verification</artifactId>
     <version>0.0.1</version>
     <dependencies>
+        <!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel -->
         <dependency>
-            <groupId>org.openjfx</groupId>
-            <artifactId>javafx-controls</artifactId>
-            <version>17.0.2</version>
-        </dependency>
-        <dependency>
-            <groupId>org.openjfx</groupId>
-            <artifactId>javafx-fxml</artifactId>
-            <version>17.0.2</version>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel</artifactId>
+            <version>4.0.3</version>
         </dependency>
     </dependencies>
 

+ 46 - 1
src/main/java/space/anyi/amountVerification/App.java

@@ -1,5 +1,7 @@
 package space.anyi.amountVerification;
 
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.read.listener.PageReadListener;
 import javafx.application.Application;
 import javafx.geometry.Insets;
 import javafx.geometry.Pos;
@@ -18,7 +20,12 @@ import javafx.scene.layout.VBox;
 import javafx.stage.DirectoryChooser;
 import javafx.stage.FileChooser;
 import javafx.stage.Stage;
+import space.anyi.amountVerification.model.InputModel;
+import space.anyi.amountVerification.model.OutputModel;
+
 import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Optional;
 
 /**
@@ -29,8 +36,25 @@ import java.util.Optional;
  * @Description:
  */
 public class App extends Application {
+    /**
+     * 文件
+     * @see TextField
+     */
     private TextField fileField;
+    /**文件夹
+     * @see TextField
+     */
     private TextField folderField;
+    /**
+     * excel输入数据
+     * @see List<InputModel>
+     */
+    private List<InputModel> inputModelList;
+    /**
+     * excel输出数据
+     * @see List<OutputModel>
+     */
+    private List<OutputModel> outputModelList;
 
     public static void main(String[] args) {
         Application.launch(App.class, args);
@@ -150,6 +174,12 @@ public class App extends Application {
     private void chooseFile() {
         FileChooser fileChooser = new FileChooser();
         fileChooser.setTitle("选择文件");
+
+        // 添加文件过滤器,只允许选择xlsx文件
+        FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter(
+            "Excel文件 (*.xlsx)", "*.xlsx");
+        fileChooser.getExtensionFilters().add(extFilter);
+
         File selectedFile = fileChooser.showOpenDialog(null);
         if (selectedFile != null) {
             fileField.setText(selectedFile.getAbsolutePath());
@@ -173,7 +203,22 @@ public class App extends Application {
             System.out.println("请至少选择文件或文件夹");
             return;
         }
-
+        inputModelList = new ArrayList<>();
+        outputModelList = new ArrayList<>();
+        //读取excel
+        String fileName = fileField.getText();
+        EasyExcel.read(fileName, InputModel.class, new PageReadListener<InputModel>(dataList -> {
+            for (InputModel inputModel : dataList) {
+                //todo:日志
+                inputModelList.add(inputModel);
+                System.out.println("inputModel = " + inputModel);
+                //log.info("读取到一条数据{}", JSON.toJSONString(demoData));
+            }
+        })).sheet().doRead();
+        //todo:进度条
+        for (InputModel inputModel : inputModelList) {
+            //todo:读取pdf金额
+        }
         System.out.println("开始验证...");
         System.out.println("文件路径: " + filePath);
         System.out.println("文件夹路径: " + folderPath);

+ 50 - 0
src/main/java/space/anyi/amountVerification/model/InputModel.java

@@ -0,0 +1,50 @@
+package space.anyi.amountVerification.model;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+
+/**
+ * @ProjectName: amount-verification
+ * @FileName: InputModel
+ * @Author: 杨逸
+ * @Data:2025/11/27 19:19
+ * @Description:
+ */
+
+public class InputModel {
+    @ExcelProperty("IMEI码")
+    private String imei;
+    @ExcelProperty("赔付金额")
+    private Double amount;
+
+    public InputModel() {
+    }
+
+    public InputModel(String imei, Double amount) {
+        this.imei = imei;
+        this.amount = amount;
+    }
+
+    public String getImei() {
+        return imei;
+    }
+
+    public void setImei(String imei) {
+        this.imei = imei;
+    }
+
+    public Double getAmount() {
+        return amount;
+    }
+
+    public void setAmount(Double amount) {
+        this.amount = amount;
+    }
+
+    @Override
+    public String toString() {
+        return "InputModel{" +
+                "input='" + imei + '\'' +
+                ", amount=" + amount +
+                '}';
+    }
+}

+ 63 - 0
src/main/java/space/anyi/amountVerification/model/OutputModel.java

@@ -0,0 +1,63 @@
+package space.anyi.amountVerification.model;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+
+/**
+ * @ProjectName: amount-verification
+ * @FileName: OutputModel
+ * @Author: 杨逸
+ * @Data:2025/11/27 19:23
+ * @Description:
+ */
+public class OutputModel {
+    @ExcelProperty(value = "IMEI码",order = 1)
+    private String imei;
+    @ExcelProperty(value = "赔付金额",order = 2)
+    private Double amount;
+    @ExcelProperty(value = "金额核对情况",order = 3)
+    private Double pdfAmount;
+    @ExcelProperty(value = "差额",order = 4)
+    private Double margin;
+
+    public String getImei() {
+        return imei;
+    }
+
+    public void setImei(String imei) {
+        this.imei = imei;
+    }
+
+    public Double getAmount() {
+        return amount;
+    }
+
+    public void setAmount(Double amount) {
+        this.amount = amount;
+    }
+
+    public Double getPdfAmount() {
+        return pdfAmount;
+    }
+
+    public void setPdfAmount(Double pdfAmount) {
+        this.pdfAmount = pdfAmount;
+    }
+
+    public Double getMargin() {
+        return margin;
+    }
+
+    public void setMargin(Double margin) {
+        this.margin = margin;
+    }
+
+    @Override
+    public String toString() {
+        return "OutputModel{" +
+                "imei='" + imei + '\'' +
+                ", amount=" + amount +
+                ", pdfAmount=" + pdfAmount +
+                ", margin=" + margin +
+                '}';
+    }
+}