BillGradeUtil.java 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. package com.winhc.repal.util;
  2. import cn.hutool.core.collection.CollUtil;
  3. import cn.hutool.core.util.StrUtil;
  4. import com.winhc.repal.model.vo.HomeGradeVO;
  5. import java.math.BigDecimal;
  6. import java.math.RoundingMode;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9. /**
  10. * @Description: BillGradeUtil
  11. * @Author: xda
  12. * @Date: 2022/5/7 18:31
  13. */
  14. public class BillGradeUtil {
  15. public static List<HomeGradeVO> getGradeList(List<String> gradeList) {
  16. if (CollUtil.isEmpty(gradeList)) {
  17. return new ArrayList<>();
  18. }
  19. int total = gradeList.size();
  20. long aCount = gradeList.stream().filter("A"::equals).count();;
  21. long bCount = gradeList.stream().filter("B"::equals).count();;
  22. long cCount = gradeList.stream().filter("C"::equals).count();;
  23. long dCount = gradeList.stream().filter("D"::equals).count();;
  24. long nCount = gradeList.stream().filter(StrUtil::isNotBlank).count();;
  25. return new ArrayList<HomeGradeVO>(){{
  26. add(new HomeGradeVO(Math.toIntExact(aCount), new BigDecimal(aCount).divide(new BigDecimal(total), 1, RoundingMode.HALF_UP).stripTrailingZeros().toPlainString()));
  27. add(new HomeGradeVO(Math.toIntExact(bCount), new BigDecimal(bCount).divide(new BigDecimal(total), 1, RoundingMode.HALF_UP).stripTrailingZeros().toPlainString()));
  28. add(new HomeGradeVO(Math.toIntExact(cCount), new BigDecimal(cCount).divide(new BigDecimal(total), 1, RoundingMode.HALF_UP).stripTrailingZeros().toPlainString()));
  29. add(new HomeGradeVO(Math.toIntExact(dCount), new BigDecimal(dCount).divide(new BigDecimal(total), 1, RoundingMode.HALF_UP).stripTrailingZeros().toPlainString()));
  30. add(new HomeGradeVO(Math.toIntExact(nCount), new BigDecimal(nCount).divide(new BigDecimal(total), 1, RoundingMode.HALF_UP).stripTrailingZeros().toPlainString()));
  31. }};
  32. }
  33. }