diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/listener/NoConvertConverter.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/listener/NoConvertConverter.java new file mode 100644 index 000000000..dc4ebe15c --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/listener/NoConvertConverter.java @@ -0,0 +1,55 @@ +package com.mhd.wms.domain.stockOutOrder.repository.listener; + +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.GlobalConfiguration; +import com.alibaba.excel.metadata.data.ReadCellData; +import com.alibaba.excel.metadata.property.ExcelContentProperty; + +/** + * 自定义转换器,不进行任何类型转换,直接返回原始值 + * 覆盖EasyExcel默认的StringNumberConverter,避免数字格式化错误 + */ +public class NoConvertConverter implements Converter { + + @Override + public Class supportJavaTypeKey() { + return String.class; + } + + @Override + public CellDataTypeEnum supportExcelTypeKey() { + // 关键:返回NUMBER类型,覆盖StringNumberConverter + return CellDataTypeEnum.NUMBER; + } + + @Override + public String convertToJavaData(ReadCellData cellData, ExcelContentProperty contentProperty, + GlobalConfiguration globalConfiguration) { + // 不进行任何格式化,直接返回原始值的字符串表示 + if (cellData == null) { + return ""; + } + + // 根据单元格类型获取原始值 + try { + CellDataTypeEnum type = cellData.getType(); + if (type == CellDataTypeEnum.STRING) { + return cellData.getStringValue() != null ? cellData.getStringValue() : ""; + } else if (type == CellDataTypeEnum.NUMBER) { + // 直接转换数字为字符串,不进行格式化 + return cellData.getNumberValue() != null ? cellData.getNumberValue().toString() : ""; + } else if (type == CellDataTypeEnum.BOOLEAN) { + return cellData.getBooleanValue() != null ? cellData.getBooleanValue().toString() : ""; + } else if (type == CellDataTypeEnum.EMPTY) { + return ""; + } else { + // 其他类型尝试获取字符串值 + return cellData.getStringValue() != null ? cellData.getStringValue() : ""; + } + } catch (Exception e) { + // 如果获取失败,返回空字符串 + return ""; + } + } +}