java使用Enum枚举做多字段匹配配置表

 根据运费名称、税率、币种匹配获取物料编码(税率null匹配所有)


import cn.hutool.core.util.EnumUtil;
import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Arrays;
import java.util.List;
import java.util.Objects;

@Getter
@AllArgsConstructor
public enum ProductCodeConvertEnum {
    InternalNoTaxRate(Arrays.asList("国内运费", "其他费用"), 0D, "CNY", "10356232"),
    InternalWithTaxRate(Arrays.asList("国内运费", "其他费用"), 0.09D, "CNY", "10356543"),
    Sea(Arrays.asList("海运费", "其他费用"), null, "USD", "10356876"),
    Insure(Arrays.asList("保险费"), null, "CNY", "10359064");
    //费用名称
    List<String> label;
    //税率
    Double TaxRate;
    //币种
    String currency;
    //物料编码
    String code;

    public String getValue() {
        return this.name();
    }

    /**
     * 根据运费名称、税率、币种匹配获取物料编码(税率null匹配所有)
     *
     * @param label
     * @param TaxRate
     * @param currency
     * @return
     */
    public static String getCode(String label, double TaxRate, String currency) {
        ProductCodeConvertEnum productCodeEnum = EnumUtil.getBy(ProductCodeConvertEnum.class, e -> e.getLabel().contains(label)
                && (Objects.isNull(e.getTaxRate()) || e.getTaxRate() == TaxRate)
                && e.getCurrency().equals(currency));
        return Objects.nonNull(productCodeEnum) ? productCodeEnum.getCode() : null;
    }

}

 根据外部编码获取对应默认工厂外部编码


import cn.hutool.core.util.EnumUtil;
import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.List;


@Getter
@AllArgsConstructor
public enum DefaultFactoryEnum {
    GUDY("测试1", "1200", "1201"),
    FGHJ("测试2", "1260", "1261"),
    YUIO("测试3", "3070", "3071");
    String label;
    //外部编码
    String referCode;
    //默认工厂外部编码
    String factoryReferCode;

    public String getValue() {
        return this.name();
    }

    /**
     * 根据外部编码获取对应默认工厂外部编码
     *
     * @param referCode
     * @return
     */
    public static String getDefaultFactoryReferCode(String referCode) {
        return EnumUtil.getFieldBy(DefaultFactoryEnum::getFactoryReferCode, DefaultFactoryEnum::getReferCode, referCode);
    }

    /**
     * 获取所有外部编码
     *
     * @return
     */
    public static List<Object> getReferCodes() {
        return EnumUtil.getFieldValues(DefaultFactoryEnum.class, "referCode");
    }

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值