importlombok.extern.slf4j.Slf4j;importorg.apache.commons.lang3.StringUtils;importorg.springframework.stereotype.Service;importjava.math.BigDecimal;importjava.util.ArrayList;importjava.util.List;import staticjava.math.RoundingMode.HALF_UP;/***@author: shaoshuaui.zheng
* @description: 处理null类
* @date: 2019/1/28 14:40*/@Service
@Slf4jpublic classBigDecimalUtil {private static final BigDecimal ZERO =BigDecimal.ZERO;public booleanisNull(BigDecimal bigDecimal) {return bigDecimal == null;
}public booleanisNullOrEqZero(BigDecimal bigDecimal) {return bigDecimal == null || bigDecimal.compareTo(ZERO) == 0;
}public booleanisNullOrLessZero(BigDecimal bigDecimal) {return bigDecimal == null || bigDecimal.compareTo(ZERO) < 0;
}public booleanisNullOrLessOrEqZero(BigDecimal bigDecimal) {return bigDecimal == null || bigDecimal.compareTo(ZERO) <= 0;
}public booleanisGreaterThanZero(BigDecimal bigDecimal) {if (bigDecimal == null) {return false;
}return bigDecimal.compareTo(ZERO) > 0;
}public booleanisGreaterThanOrEqualToZero(BigDecimal bigDecimal) {if (bigDecimal == null) {return false;
}return bigDecimal.compareTo(ZERO) >= 0;
}/*** 将字符串转换成BigDecimal对象*/
publicBigDecimal stringToBigDecimal(String stringBigdecimal) {if(StringUtils.isBlank(stringBigdecimal)) {returnBigDecimal.ZERO;
}try{return new BigDecimal(stringBigdecimal).setScale(2, 4);
}catch(Exception e) {
log.error("stringToBigDecimal is error");
}returnBigDecimal.ZERO;
}/*** 将null转换为0*/
publicBigDecimal bigDecimalNullToZero(BigDecimal bigDecimal) {if (bigDecimal == null) {returnBigDecimal.ZERO;
}else{returnbigDecimal;
}
}/*** 加法*/
public BigDecimal bigDecimalAddList(ListdecimalList) {returndecimalList
.stream()
.map(this::bigDecimalNullToZero)
.reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, HALF_UP);
}public static voidmain(String[] args) {
BigDecimalUtil bigDecimalUtil= newBigDecimalUtil();
ArrayList list = new ArrayList<>();
list.add(new BigDecimal("10"));
list.add(new BigDecimal("20"));
list.add(new BigDecimal("30"));
list.add(null);
System.out.println(bigDecimalUtil.bigDecimalAddList(list));
}
}