Loading...
墨滴

远方聂努达

2021/11/28  阅读:45  主题:极简黑

使用 EasyExcel 转换器自定义支付类型转换

使用 EasyExcel 导出时自定义支付类型转换

夜坐听风

书接上文说到,我们通过 操作 EasyExcel 转换器对导出时的时间类型做了处理;本文将通过自定义类型转换器对导出时的支付类型进行相关操作。

昼眠听雨

支付类型枚举类:

@AllArgsConstructor
@Getter
public enum PayTypeEnum {

    WX_WITHOUT_PWD_PAY(1, "微信无感支付"),
    WX_JSAPI(2, "微信小程序支付"),
    WX_NATIVE(3, "微信正扫"),
    WX_PAY_CODE(4, "微信反扫"),
    ALIPAY_H5(5, "支付宝h5支付"),
    ALIPAY_MP(6, "支付宝小程序支付"),
    UNION_AUTO_PAY(7, "银联无感支付"),
    ALIPAY_NATIVE(8, "支付宝正扫"),
    ALIPAY_PAY_CODE(9, "支付宝反扫"),
    POS(10, "pos机支付"),
    CASH(11, "现金支付"),
    CARD(12, "加油卡支付"),
    ARREARAGE(13,"欠款"),
    Recharge(14,"回罐"),
    Own_Oil(15,"自用油"),
    Accident_Write_Off(16,"事故核销"),

    BANK_CARD(17, "刷卡"),
    WX_H5(20, "微信公众号支付"),

    ;

    private int value;
    private String desc;
}

自定义支付类型转换器:

import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
import com.shufei.gasstation.enums.PayTypeEnum;

/**
 * 自定义支付方式转换器
 *
 * @author Greenarrow
 */
public class PayTypeConverter implements Converter<Integer> {

    @Override
    public Class supportJavaTypeKey() {
        return Integer.class;
    }

    @Override
    public CellDataTypeEnum supportExcelTypeKey() {
        return CellDataTypeEnum.STRING;
    }

    @Override
    public Integer convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
        if (cellData.getStringValue().equals(PayTypeEnum.WX_WITHOUT_PWD_PAY.getDesc())){
            return PayTypeEnum.WX_WITHOUT_PWD_PAY.getValue();
        }if (cellData.getStringValue().equals(PayTypeEnum.WX_JSAPI.getDesc())){
            return PayTypeEnum.WX_JSAPI.getValue();
        }if (cellData.getStringValue().equals(PayTypeEnum.WX_NATIVE.getDesc())){
            return PayTypeEnum.WX_NATIVE.getValue();
        }if (cellData.getStringValue().equals(PayTypeEnum.WX_PAY_CODE.getDesc())){
            return PayTypeEnum.WX_PAY_CODE.getValue();
        }if (cellData.getStringValue().equals(PayTypeEnum.ALIPAY_H5.getDesc())){
            return PayTypeEnum.ALIPAY_H5.getValue();
        }if (cellData.getStringValue().equals(PayTypeEnum.ALIPAY_MP.getDesc())){
            return PayTypeEnum.ALIPAY_MP.getValue();
        }if (cellData.getStringValue().equals(PayTypeEnum.UNION_AUTO_PAY.getDesc())){
            return PayTypeEnum.UNION_AUTO_PAY.getValue();
        }if (cellData.getStringValue().equals(PayTypeEnum.ALIPAY_NATIVE.getDesc())){
            return PayTypeEnum.ALIPAY_NATIVE.getValue();
        }if (cellData.getStringValue().equals(PayTypeEnum.ALIPAY_PAY_CODE.getDesc())){
            return PayTypeEnum.ALIPAY_PAY_CODE.getValue();
        }if (cellData.getStringValue().equals(PayTypeEnum.POS.getDesc())){
            return PayTypeEnum.POS.getValue();
        }if (cellData.getStringValue().equals(PayTypeEnum.CASH.getDesc())){
            return PayTypeEnum.CASH.getValue();
        }if (cellData.getStringValue().equals(PayTypeEnum.CARD.getDesc())){
            return PayTypeEnum.CARD.getValue();
        }if (cellData.getStringValue().equals(PayTypeEnum.ARREARAGE.getDesc())){
            return PayTypeEnum.ARREARAGE.getValue();
        }if (cellData.getStringValue().equals(PayTypeEnum.Recharge.getDesc())){
            return PayTypeEnum.Recharge.getValue();
        }if (cellData.getStringValue().equals(PayTypeEnum.Own_Oil.getDesc())){
            return PayTypeEnum.Own_Oil.getValue();
        }if (cellData.getStringValue().equals(PayTypeEnum.Accident_Write_Off.getDesc())){
            return PayTypeEnum.Accident_Write_Off.getValue();
        }if (cellData.getStringValue().equals(PayTypeEnum.BANK_CARD.getDesc())){
            return PayTypeEnum.BANK_CARD.getValue();
        }if (cellData.getStringValue().equals(PayTypeEnum.WX_H5.getDesc())){
            return PayTypeEnum.WX_H5.getValue();
        }
        return null;
    }

    @Override
    public CellData convertToExcelData(Integer value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
        if (value.equals(PayTypeEnum.WX_WITHOUT_PWD_PAY.getValue())){
            return new CellData(PayTypeEnum.WX_WITHOUT_PWD_PAY.getDesc());
        }if (value.equals(PayTypeEnum.WX_JSAPI.getValue())){
            return new CellData(PayTypeEnum.WX_JSAPI.getDesc());
        }if (value.equals(PayTypeEnum.WX_NATIVE.getValue())){
            return new CellData(PayTypeEnum.WX_NATIVE.getDesc());
        }if (value.equals(PayTypeEnum.WX_PAY_CODE.getValue())){
            return new CellData(PayTypeEnum.WX_PAY_CODE.getDesc());
        }if (value.equals(PayTypeEnum.ALIPAY_H5.getValue())){
            return new CellData(PayTypeEnum.ALIPAY_H5.getDesc());
        }if (value.equals(PayTypeEnum.ALIPAY_MP.getValue())){
            return new CellData(PayTypeEnum.ALIPAY_MP.getDesc());
        }if (value.equals(PayTypeEnum.UNION_AUTO_PAY.getValue())){
            return new CellData(PayTypeEnum.UNION_AUTO_PAY.getDesc());
        }if (value.equals(PayTypeEnum.ALIPAY_NATIVE.getValue())){
            return new CellData(PayTypeEnum.ALIPAY_NATIVE.getDesc());
        }if (value.equals(PayTypeEnum.ALIPAY_PAY_CODE.getValue())){
            return new CellData(PayTypeEnum.ALIPAY_PAY_CODE.getDesc());
        }if (value.equals(PayTypeEnum.POS.getValue())){
            return new CellData(PayTypeEnum.POS.getDesc());
        }if (value.equals(PayTypeEnum.CASH.getValue())){
            return new CellData(PayTypeEnum.CASH.getDesc());
        }if (value.equals(PayTypeEnum.CARD.getValue())){
            return new CellData(PayTypeEnum.CARD.getDesc());
        }if (value.equals(PayTypeEnum.ARREARAGE.getValue())){
            return new CellData(PayTypeEnum.ARREARAGE.getDesc());
        }if (value.equals(PayTypeEnum.Recharge.getValue())){
            return new CellData(PayTypeEnum.Recharge.getDesc());
        }if (value.equals(PayTypeEnum.Own_Oil.getValue())){
            return new CellData(PayTypeEnum.Own_Oil.getDesc());
        }if (value.equals(PayTypeEnum.Accident_Write_Off.getValue())){
            return new CellData(PayTypeEnum.Accident_Write_Off.getDesc());
        }if (value.equals(PayTypeEnum.BANK_CARD.getValue())){
            return new CellData(PayTypeEnum.BANK_CARD.getDesc());
        }if (value.equals(PayTypeEnum.WX_H5.getValue())){
            return new CellData(PayTypeEnum.WX_H5.getDesc());
        }
        return null;
    }
}

然后在相应的实体类上添加如下内容:

 @ExcelProperty(value = "支付方式",converter = PayTypeConverter.class)
 private Integer payType;

月如何缺,天如何老

EasyExcel 种这样的类型转换操作其实有很多种方式,这两篇文章只是介绍了一种方式。

- END -

远方聂努达

2021/11/28  阅读:45  主题:极简黑

作者介绍

远方聂努达