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<Object> {
|
|
@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());
|
}
|
|
}
|