多个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;
    }

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