多个 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改写的,看起来更清晰些