| | |
| | | } |
| | | |
| | | private BigDecimal calculate(String calculate, List<ApiPointValueDTO> valueList) { |
| | | valueList = valueList.stream().filter(e -> !Double.valueOf(e.getV()).equals(-2.0) ).collect(Collectors.toList()); |
| | | List<ApiPointValueDTO> valueFilterList = valueList.stream().filter(e -> !Double.valueOf(e.getV()).equals(-2.0) ).collect(Collectors.toList()); |
| | | log.debug("开始计算"); |
| | | if (valueList == null || valueList.isEmpty()) { |
| | | if ( valueList.isEmpty() || valueFilterList.isEmpty()) { |
| | | throw new IllegalArgumentException("valueList 为空"); |
| | | } |
| | | |
| | |
| | | value = BigDecimal.valueOf(valueList.get(valueList.size() - 1).getV()); |
| | | break; |
| | | case SUM: |
| | | value = BigDecimal.valueOf(valueList.stream().mapToDouble(ApiPointValueDTO::getV).sum()); |
| | | value = BigDecimal.valueOf(valueFilterList.stream().mapToDouble(ApiPointValueDTO::getV).sum()); |
| | | break; |
| | | case DIFF: |
| | | if (valueList.size() < 2) { |
| | | throw new IllegalArgumentException("valueList size小于2"); |
| | | if (valueFilterList.size() < 2) { |
| | | throw new IllegalArgumentException("valueFilterList size小于2"); |
| | | } |
| | | BigDecimal prev = BigDecimal.valueOf(valueList.get(0).getV()); |
| | | for (int i = 1; i < valueList.size(); i++) { |
| | | BigDecimal curr = BigDecimal.valueOf(valueList.get(i).getV()); |
| | | BigDecimal prev = BigDecimal.valueOf(valueFilterList.get(0).getV()); |
| | | for (int i = 1; i < valueFilterList.size(); i++) { |
| | | BigDecimal curr = BigDecimal.valueOf(valueFilterList.get(i).getV()); |
| | | if(curr.compareTo(prev) > 0 ) { |
| | | value = value.add(curr.subtract(prev)); |
| | | } |
| | |
| | | } |
| | | break; |
| | | case AVG: |
| | | value = BigDecimal.valueOf(valueList.stream().mapToDouble(ApiPointValueDTO::getV).sum()); |
| | | value = value.divide(BigDecimal.valueOf(valueList.size()), 2, BigDecimal.ROUND_HALF_UP); |
| | | value = BigDecimal.valueOf(valueFilterList.stream().mapToDouble(ApiPointValueDTO::getV).sum()); |
| | | value = value.divide(BigDecimal.valueOf(valueFilterList.size()), 2, BigDecimal.ROUND_HALF_UP); |
| | | break; |
| | | default: |
| | | throw new IllegalArgumentException("没有对应计算方法"); |