package com.iailab.framework.excel.core.convert; import cn.hutool.core.convert.Convert; import com.iailab.framework.ip.core.Area; import com.iailab.framework.ip.core.utils.AreaUtils; 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; import lombok.extern.slf4j.Slf4j; /** * Excel 数据地区转换器 * * @author HUIHUI */ @Slf4j public class AreaConvert implements Converter { @Override public Class supportJavaTypeKey() { throw new UnsupportedOperationException("暂不支持,也不需要"); } @Override public CellDataTypeEnum supportExcelTypeKey() { throw new UnsupportedOperationException("暂不支持,也不需要"); } @Override public Object convertToJavaData(ReadCellData readCellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) { // 解析地区编号 String label = readCellData.getStringValue(); Area area = AreaUtils.parseArea(label); if (area == null) { log.error("[convertToJavaData][label({}) 解析不掉]", label); return null; } // 将 value 转换成对应的属性 Class fieldClazz = contentProperty.getField().getType(); return Convert.convert(fieldClazz, area.getId()); } }