参考文档

代码如下

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import static java.math.RoundingMode.HALF_UP;

/**
 * @author: shaoshuaui.zheng
 * @description: 处理null类
 * @date: 2019/1/28 14:40
 */
@Service
@Slf4j
public class BigDecimalUtil {

    private static final BigDecimal ZERO = BigDecimal.ZERO;

    public boolean isNull(BigDecimal bigDecimal) {
        return bigDecimal == null;
    }

    public boolean isNullOrEqZero(BigDecimal bigDecimal) {
        return bigDecimal == null || bigDecimal.compareTo(ZERO) == 0;
    }

    public boolean isNullOrLessZero(BigDecimal bigDecimal) {
        return bigDecimal == null || bigDecimal.compareTo(ZERO) < 0;
    }

    public boolean isNullOrLessOrEqZero(BigDecimal bigDecimal) {
        return bigDecimal == null || bigDecimal.compareTo(ZERO) <= 0;
    }

    public boolean isGreaterThanZero(BigDecimal bigDecimal) {
        if (bigDecimal == null) {
            return false;
        }
        return bigDecimal.compareTo(ZERO) > 0;
    }

    public boolean isGreaterThanOrEqualToZero(BigDecimal bigDecimal) {
        if (bigDecimal == null) {
            return false;
        }
        return bigDecimal.compareTo(ZERO) >= 0;
    }

    /**
     * 将字符串转换成BigDecimal对象
     */
    public BigDecimal stringToBigDecimal(String stringBigdecimal) {
        if (StringUtils.isBlank(stringBigdecimal)) {
            return BigDecimal.ZERO;
        }
        try {
            return new BigDecimal(stringBigdecimal).setScale(2, 4);
        } catch (Exception e) {
            log.error("stringToBigDecimal is error");
        }
        return BigDecimal.ZERO;
    }

    /**
     * 将null转换为0
     */
    public BigDecimal bigDecimalNullToZero(BigDecimal bigDecimal) {
        if (bigDecimal == null) {
            return BigDecimal.ZERO;
        } else {
            return bigDecimal;
        }
    }

    /**
     * 加法
     */
    public BigDecimal bigDecimalAddList(List<BigDecimal> decimalList) {
        return decimalList
                .stream()
                .map(this::bigDecimalNullToZero)
                .reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, HALF_UP);
    }

    public static void main(String[] args) {
        BigDecimalUtil bigDecimalUtil = new BigDecimalUtil();
        ArrayList<BigDecimal> 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));
    }

}