From 5d7b65670282a4fad015e37d567cfa171b162052 Mon Sep 17 00:00:00 2001
From: huliguo <2023611923@qq.com>
Date: 星期二, 20 五月 2025 12:25:19 +0800
Subject: [PATCH] 基础代码

---
 pt-common/src/main/java/com/ruoyi/common/easyExcel/BigDecimalConverter.java |   60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 60 insertions(+), 0 deletions(-)

diff --git a/pt-common/src/main/java/com/ruoyi/common/easyExcel/BigDecimalConverter.java b/pt-common/src/main/java/com/ruoyi/common/easyExcel/BigDecimalConverter.java
new file mode 100644
index 0000000..c34d958
--- /dev/null
+++ b/pt-common/src/main/java/com/ruoyi/common/easyExcel/BigDecimalConverter.java
@@ -0,0 +1,60 @@
+package com.ruoyi.common.easyExcel;
+
+import com.alibaba.excel.converters.Converter;
+import com.alibaba.excel.converters.ReadConverterContext;
+import com.alibaba.excel.converters.WriteConverterContext;
+import com.alibaba.excel.enums.CellDataTypeEnum;
+import com.alibaba.excel.metadata.data.WriteCellData;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+
+
+public class BigDecimalConverter implements Converter<BigDecimal> {
+
+    @Override
+    public Class<?> supportJavaTypeKey() {
+        return String.class;
+    }
+
+    @Override
+    public CellDataTypeEnum supportExcelTypeKey() {
+        return CellDataTypeEnum.STRING;
+    }
+
+    /**
+     * 这里读的时候会调用
+     *
+     * @param context
+     * @return
+     */
+    @Override
+    public BigDecimal convertToJavaData(ReadConverterContext<?> context) {
+        try {
+            // 检查是否是字符串类型的单元格
+            if (CellDataTypeEnum.STRING.equals(context.getReadCellData().getType())) {
+                return new BigDecimal(context.getReadCellData().getStringValue()).setScale(10, RoundingMode.DOWN);
+            }
+            // 检查是否是数字类型的单元格
+            else if (CellDataTypeEnum.NUMBER.equals(context.getReadCellData().getType())) {
+                // 获取数字值并转化为字符串
+                return new BigDecimal(String.valueOf(context.getReadCellData().getNumberValue())).setScale(10, RoundingMode.DOWN);
+            } else {
+                return null; // 返回null表示未能识别的单元格类型
+            }
+        }catch (Exception e){
+            return null;
+        }
+    }
+
+    /**
+     * 这里是写的时候会调用 不用管
+     *
+     * @return
+     */
+    @Override
+    public WriteCellData<?> convertToExcelData(WriteConverterContext<BigDecimal> context) {
+        return new WriteCellData<>(String.valueOf(context.getValue()));
+    }
+}
+

--
Gitblit v1.7.1