白日梦想家Zzzzz 2022-10-14 18:40 采纳率: 60%
浏览 20
已结题

多个IF Else如何精简

多个 if else如何精简,麻烦给个精简思路或模板

    /**
     * .
     * 五险差异比较保险缴纳金额是否超过上限金额
     *
     * @param templateName 保险类型名称
     * @param value        上报的缴纳基数
     * @return 计算结果
     */
    public static String compareTheNum(final String templateName, final String value) {
            //获取保险名称是否一致(每种保险上下限基数不同因此判断)
        if (StringUtils.equals(templateName, LnsuranceTypeEnum.ENDOWMENT_PERSON.getName())) {
            //传入的基数
            BigDecimal lnsuranceNum = new BigDecimal(value);
            //设置最高基数
            BigDecimal endownment = new BigDecimal(LnsuranceTypeEnum.ENDOWMENT_PERSON.getUpperLimit());
            //比较传入基数是否大于最高基数,如大于选择最高基数,否选传入基数
            return lnsuranceNum.compareTo(endownment) >= 0
                    //calculate方法只是用基数做计算
                    ? calculate(LnsuranceTypeEnum.ENDOWMENT_PERSON.getUpperLimit(),
                    LnsuranceTypeEnum.ENDOWMENT_PERSON.getPercent())
                    : calculate(value, LnsuranceTypeEnum.ENDOWMENT_PERSON.getPercent());
        } else if (StringUtils.equals(templateName, LnsuranceTypeEnum.UNEMPLOYMENT_PERSON.getName())) {
            BigDecimal unemploymentNum = new BigDecimal(value);
            BigDecimal unemployment = new BigDecimal(LnsuranceTypeEnum.UNEMPLOYMENT_PERSON.getUpperLimit());
            return unemploymentNum.compareTo(unemployment) >= 0
                    ? calculate(LnsuranceTypeEnum.UNEMPLOYMENT_PERSON.getUpperLimit(),
                    LnsuranceTypeEnum.UNEMPLOYMENT_PERSON.getPercent())
                    : calculate(value, LnsuranceTypeEnum.UNEMPLOYMENT_PERSON.getPercent());
        } else if (StringUtils.equals(templateName, LnsuranceTypeEnum.ACCUMULATION_PERSON.getName())) {
            BigDecimal accumulationNum = new BigDecimal(value);
            BigDecimal accumulation = new BigDecimal(LnsuranceTypeEnum.ACCUMULATION_PERSON.getUpperLimit());
            return accumulationNum.compareTo(accumulation) >= 0
                    ? calculate(LnsuranceTypeEnum.ACCUMULATION_PERSON.getUpperLimit(),
                    LnsuranceTypeEnum.ACCUMULATION_PERSON.getPercent())
                    : calculate(value, LnsuranceTypeEnum.ACCUMULATION_PERSON.getPercent());
        } else if (StringUtils.equals(templateName, LnsuranceTypeEnum.MEDICAL_PERSON.getName())) {
            BigDecimal medIcalNum = new BigDecimal(value);
            BigDecimal medIcal = new BigDecimal(LnsuranceTypeEnum.MEDICAL_PERSON.getUpperLimit());
            return medIcalNum.compareTo(medIcal) >= 0
                    ? calculate(LnsuranceTypeEnum.MEDICAL_PERSON.getUpperLimit(),
                    LnsuranceTypeEnum.MEDICAL_PERSON.getPercent())
                    : calculate(value, LnsuranceTypeEnum.MEDICAL_PERSON.getPercent());
        } else if (StringUtils.equals(templateName, LnsuranceTypeEnum.LARGE_PERSON.getName())) {
            BigDecimal largeNum = new BigDecimal(value);
            BigDecimal large = new BigDecimal(LnsuranceTypeEnum.LARGE_PERSON.getUpperLimit());
            return largeNum.compareTo(large) >= 0
                    ? calculate(LnsuranceTypeEnum.LARGE_PERSON.getUpperLimit(),
                    LnsuranceTypeEnum.LARGE_PERSON.getPercent())
                    : calculate(value, LnsuranceTypeEnum.LARGE_PERSON.getPercent());
        }
        return null;
    }
  • 写回答

1条回答 默认 最新

  • 趣享先生 优质创作者: 编程框架技术领域 2022-10-14 19:33
    关注

    你这个可以用switch改写的,看起来更清晰些

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月26日
  • 已采纳回答 10月18日
  • 创建了问题 10月14日