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