From 48e498136c8784ee79a698da2c852ca3aa0549ab Mon Sep 17 00:00:00 2001 From: jinpengyong <jpy123456> Date: Wed, 29 Dec 2021 15:10:41 +0800 Subject: [PATCH] 行业贡献率,区域贡献率 --- screen-api/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java | 65 +++++++++++++++++++++++++++----- 1 files changed, 55 insertions(+), 10 deletions(-) diff --git a/screen-api/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java index d6fe2f6..c976a62 100644 --- a/screen-api/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java +++ b/screen-api/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java @@ -1,7 +1,27 @@ package com.moral.api.service.impl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collections; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.OptionalDouble; +import java.util.function.Supplier; +import java.util.stream.Collectors; +import java.util.stream.DoubleStream; +import java.util.stream.Stream; + import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.moral.api.entity.Device; import com.moral.api.entity.GeoCoordinate; import com.moral.api.entity.HistoryDaily; @@ -9,21 +29,11 @@ import com.moral.api.mapper.DeviceMapper; import com.moral.api.mapper.HistoryDailyMapper; import com.moral.api.service.HistoryDailyService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.moral.api.service.OrganizationService; import com.moral.api.utils.GetCenterPointFromListOfCoordinates; import com.moral.constant.Constants; import com.moral.util.DateUtils; import com.moral.util.PollutantUtils; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.util.ObjectUtils; - -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.*; -import java.util.stream.Collectors; /** * <p> @@ -337,5 +347,40 @@ return historyDailyMapper.selectList(queryWrapper); } + @Override + public Double calculatedValue(List<HistoryDaily> list, String sensorCode, String type) { + Supplier<Stream<HistoryDaily>> supplier = list::stream; + DoubleStream doubleStream = supplier.get() + .flatMapToDouble(v -> { + Map<String, Object> dataValue = JSONObject.parseObject(v.getValue(), Map.class); + Object sensorValue = dataValue.get(sensorCode); + if (ObjectUtils.isEmpty(sensorValue)) { + return null; + } + double aDouble = Double.parseDouble(sensorValue.toString()); + return DoubleStream.of(aDouble); + }); + Double result = null; + OptionalDouble optionalDouble = null; + if ("sum".equals(type)) { + result = doubleStream.sum(); + } else { + if ("min".equals(type)) { + optionalDouble = doubleStream.average(); + + } else if ("max".equals(type)) { + optionalDouble = doubleStream.min(); + + } else if ("avg".equals(type)) { + optionalDouble = doubleStream.max(); + } + + if (optionalDouble.isPresent()) { + result = optionalDouble.getAsDouble(); + } + } + return result; + } + } -- Gitblit v1.8.0