From a867557192408a8ea7050b40b8dd157054146430 Mon Sep 17 00:00:00 2001
From: whycxzp <perryhsu@163.com>
Date: 星期五, 19 三月 2021 17:26:05 +0800
Subject: [PATCH] 更新 部分电池数据统计接口

---
 src/main/java/com/whyc/service/BatteryDataService.java |   58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 56 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/whyc/service/BatteryDataService.java b/src/main/java/com/whyc/service/BatteryDataService.java
index af43a28..af8f182 100644
--- a/src/main/java/com/whyc/service/BatteryDataService.java
+++ b/src/main/java/com/whyc/service/BatteryDataService.java
@@ -1,8 +1,11 @@
 package com.whyc.service;
 
+import com.whyc.dto.DataAnalysisFloatDTO;
 import com.whyc.dto.Response;
 import com.whyc.mapper.BatteryDataMapper;
 import com.whyc.pojo.BatteryEndurance;
+import com.whyc.pojo.BatteryRTState;
+import com.whyc.util.MathUtil;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -41,7 +44,6 @@
                 }
             }
         }
-
         //鎺掑簭
         TreeMap<String, Integer> maps = new TreeMap<>(new Comparator<String>() {
             @Override
@@ -57,9 +59,61 @@
     }
 
     public Response getBatteryCap(Integer userId) {
-        return null;
+        List<BatteryRTState> batteryRTStates = mapper.getBatteryCap(userId);
+        List<Float> percents = Arrays.asList(0.8f, 0.85f,0.9f,0.95f);
+        Map resultMap = batteryCapAnalysis(batteryRTStates,percents);
+        return new Response<Map>().set(1,resultMap);
     }
 
+    private Map batteryCapAnalysis(List<BatteryRTState> batteryRTStates, List<Float> percents) {
+        Map<String,Integer> map = new HashMap<>();
+
+        for (int i = 0; i < batteryRTStates.size(); i++) {
+            //姣忎竴涓叿浣撶殑缁埅杩涜鍒嗙粍
+            if((Float)MathUtil.divide(batteryRTStates.get(i).getBatteryRealCap(),batteryRTStates.get(i).getMonCapStd(),true)<percents.get(0)){
+                map.put(percents.get(0)+"浠ヤ笅",Optional.ofNullable(map.get(percents.get(0)+"浠ヤ笅")).orElse(0)+1);
+            }
+            else if((Float)MathUtil.divide(batteryRTStates.get(i).getBatteryRealCap(),batteryRTStates.get(i).getMonCapStd(),true)>percents.get(percents.size()-1)){
+                map.put(percents.get(percents.size()-1)+"浠ヤ笂",Optional.ofNullable(map.get(percents.get(percents.size()-1)+"浠ヤ笂")).orElse(0)+1);
+            }else {
+                for (int j = 0; j < percents.size(); j++) {
+                    if ((Float)MathUtil.divide(batteryRTStates.get(i).getBatteryRealCap(),batteryRTStates.get(i).getMonCapStd(),true) <= percents.get(j)) {
+                        map.put(percents.get(j - 1) + "鍒�" + percents.get(j), Optional.ofNullable(map.get(percents.get(j - 1) + "鍒�" + percents.get(j))).orElse(0) + 1);
+                        break;
+                    }
+                }
+            }
+        }
+        //鎺掑簭
+        TreeMap<String, Integer> maps = new TreeMap<>(new Comparator<String>() {
+            @Override
+            public int compare(String o1, String o2) {
+                return o1.compareTo(o2);
+            }
+        });
+
+        maps.putAll(map);
+        map.clear();
+
+        return maps;
+    }
+
+    public Response getMonVolAndTemp(Integer userId) {
+        List<DataAnalysisFloatDTO> dataList= mapper.getMonVolAndTemp(userId);
+        return new Response<>().set(1,dataList);
+    }
+
+    public Response getMonRes(Integer userId) {
+        DataAnalysisFloatDTO data= mapper.getMonRes(userId);
+        return new Response<>().set(1,data);
+    }
+
+    public Response getMonCap(Integer userId) {
+        DataAnalysisFloatDTO data= mapper.getMonCap(userId);
+        return new Response<>().set(1,data);
+    }
+
+
     public static void main(String[] args) {
         BatteryEndurance endurance = new BatteryEndurance();
         endurance.setEnduranceActualTime(1.5);

--
Gitblit v1.9.1