From 9f1dab940da5cef62e90333ec978d2fe48635273 Mon Sep 17 00:00:00 2001
From: whycxzp <perryhsu@163.com>
Date: 星期五, 27 八月 2021 17:15:12 +0800
Subject: [PATCH] 更新单体统计接口,增加统计层

---
 src/main/java/com/whyc/service/BatteryDataService.java |  162 ++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 139 insertions(+), 23 deletions(-)

diff --git a/src/main/java/com/whyc/service/BatteryDataService.java b/src/main/java/com/whyc/service/BatteryDataService.java
index a4fc048..bb1fadd 100644
--- a/src/main/java/com/whyc/service/BatteryDataService.java
+++ b/src/main/java/com/whyc/service/BatteryDataService.java
@@ -1,13 +1,13 @@
 package com.whyc.service;
 
+import com.whyc.dto.AnalysisMonCapDTO;
 import com.whyc.dto.BatteryInfo;
-import com.whyc.dto.DataAnalysisFloatDTO;
 import com.whyc.dto.Response;
-import com.whyc.mapper.BatteryDataMapper;
-import com.whyc.mapper.BatteryResDataMapper;
-import com.whyc.mapper.BatteryTestDataMapper;
+import com.whyc.mapper.*;
+import com.whyc.dto.AnalysisMonFieldDTO;
 import com.whyc.pojo.BatteryEndurance;
 import com.whyc.pojo.BatteryRTState;
+import com.whyc.pojo.Tables;
 import com.whyc.util.BattCapFactory;
 import com.whyc.util.MathUtil;
 import org.springframework.stereotype.Service;
@@ -15,6 +15,7 @@
 import javax.annotation.Resource;
 import java.text.DecimalFormat;
 import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 public class BatteryDataService {
@@ -27,6 +28,12 @@
 
     @Resource
     private BatteryTestDataMapper testDataMapper;
+
+    @Resource
+    private AnalysisMonFieldMapper monFieldMapper;
+
+    @Resource
+    private DBMapper dbMapper;
 
     public Response getEndurance(Integer userId) {
         List<BatteryEndurance> enduranceList = mapper.endurance(userId);
@@ -109,9 +116,95 @@
         return maps;
     }
 
+    /**鍗曚綋淇℃伅缁熻*/
+    public List<AnalysisMonFieldDTO> monFieldStatistics(String filedName, String fieldName2) {
+            //鏌ヨ鎵�鏈夌殑鐢垫睜缁�
+            List<Tables> tables = dbMapper.getTableNames("db_batt_testdata", "tb_batttestdata\\_[1-9]+");
+            List<String> tableNames = new LinkedList<>();
+            tables.forEach(tableName -> {
+                tableNames.add(tableName.getTableName());
+            });
+            //鏌ヨ姣忎釜鐢垫睜缁勭殑鍗曚綋瀛楁鏁版嵁
+            List<AnalysisMonFieldDTO> list = testDataMapper.getStatisticsByTableNames(tableNames,filedName,fieldName2);
+
+        return list;
+    }
+
+    /**鍗曚綋鍐呴樆缁熻*/
+    public List<AnalysisMonFieldDTO> monResStatistics() {
+        //鏌ヨ鎵�鏈夌殑鐢垫睜缁�
+        List<Tables> tables = dbMapper.getTableNames("db_batt_testdata", "tb_battresdata\\_[1-9]+");
+        List<String> tableNames = new LinkedList<>();
+        tables.forEach(tableName -> {
+            tableNames.add(tableName.getTableName());
+        });
+        //鏌ヨ姣忎釜鐢垫睜缁勭殑鍗曚綋瀛楁鏁版嵁
+        List<AnalysisMonFieldDTO> list = resMapper.getResStatisticsByTableNames(tableNames);
+
+        return list;
+    }
+
+    /**鍗曚綋瀹归噺缁熻*/
+    public List<AnalysisMonFieldDTO> monCapStatistics() {
+        List<AnalysisMonFieldDTO> analysisMonFieldList = new LinkedList<>();
+        //鏌ヨ鎵�鏈夌殑stop琛�
+        List<Tables> tables = dbMapper.getTableNames("db_batt_testdata","tb_batttestdatastop*");
+        List<String> groupIds = new LinkedList<>();
+        tables.forEach(tableName -> {
+            groupIds.add(tableName.getTableName().split("_")[2]);
+        });
+        //鏌ヨ姣忎釜鐢垫睜缁勭殑鍗曚綋瀛楁鏁版嵁,鍚屾椂瑕佹煡璇㈠嚭鏉ユ爣鍑嗗瓧娈�,浠ユ鏉ヨ绠楁瘡涓崟浣撶殑瀹归噺
+        List<AnalysisMonCapDTO> analysisMonCapDTOs = testDataMapper.getCapStatisticsByGroupIds(groupIds);
+        Map<Integer, List<AnalysisMonCapDTO>> analysisCapMap = analysisMonCapDTOs.stream().collect(Collectors.groupingBy(AnalysisMonCapDTO::getBattGroupId));
+        //閬嶅巻姣忎釜鐢垫睜缁�,鑾峰彇缁熻鏁版嵁
+        for(Map.Entry<Integer,List<AnalysisMonCapDTO>> entry : analysisCapMap.entrySet()){
+            AnalysisMonFieldDTO analysisMonField = new AnalysisMonFieldDTO();
+            double minCap = 0d;
+            double maxCap = 0d;
+            double avgCap = 0d;
+            double realCap = 0d;
+            double capSum = 0d;
+            int size =0;
+
+            Integer battGroupId = entry.getKey();
+            List<AnalysisMonCapDTO> capDTOList = entry.getValue();
+            //鎵ц瀹归噺缁熻
+            for (AnalysisMonCapDTO monCapDTO : capDTOList){
+                if(monCapDTO.getMonVol()>monCapDTO.getMonVolStd()*0.9f){
+                    int hourRate=BattCapFactory.GetHourRate(monCapDTO.getMonCapStd(),monCapDTO.getTestCurr());
+                    realCap = BattCapFactory.GetMonomerCap(monCapDTO.getMonCapStd(),hourRate,monCapDTO.getTestCap(),monCapDTO.getMaxMonVol(),
+                            monCapDTO.getMonVol(),monCapDTO.getMonVolStd(),BattCapFactory.CapType_Real);
+                }else{
+                    //鏌ヨ鐢垫睜娴嬭瘯琛ㄤ腑瀵瑰簲鐨勬祴璇曟壒娆$殑鍗曚綋鍓╀綑瀹归噺
+                    realCap = testDataMapper.getRestCapByCondition(monCapDTO);
+                }
+                if(realCap<minCap){
+                    minCap = realCap;
+                }
+                if(realCap>maxCap){
+                    maxCap=realCap;
+                }
+                capSum+=realCap;
+                size++;
+            }
+
+            avgCap = capSum/size;
+
+            analysisMonField.setBattGroupId(battGroupId);
+            analysisMonField.setBattGroupName(capDTOList.get(0).getBattGroupName());
+            analysisMonField.setStationName(capDTOList.get(0).getStationName());
+            analysisMonField.setMinMonCap(minCap);
+            analysisMonField.setMaxMonCap(maxCap);
+            analysisMonField.setAvgMonCap(avgCap);
+            //灏嗙粺璁℃暟鎹斁鍒版暟缁勪腑
+            analysisMonFieldList.add(analysisMonField);
+        }
+
+        return analysisMonFieldList;
+    }
+
     public Response getMonVol(Integer userId) {
-        HashMap<String, Object> resMap = new HashMap<>();
-        List<BatteryInfo> batteryInfos =  testDataMapper.getStationAndBatteryGroupIds(userId);
+        /*List<BatteryInfo> batteryInfos =  testDataMapper.getStationAndBatteryGroupIds(userId);
         for (BatteryInfo temp:batteryInfos) {
             //鏍规嵁BattGroupIds鏌ヨ鍒板搴旂殑鏁板��
             String[] batteryGroupIds = temp.getBatteryGroupIds().split(",");
@@ -121,13 +214,17 @@
             }
             DataAnalysisFloatDTO dataStatistics = testDataMapper.getStatisticsByBattGroupIds(ids,"mon_vol");
             resMap.put(temp.getStationName(),dataStatistics);
-        }
-        return new Response<>().set(1,resMap);
+        }*/
+
+        //鏌ヨ鍗曚綋鐢靛帇鏁版嵁
+        List<AnalysisMonFieldDTO> monFields = monFieldMapper.getMonField("tb_mon_vol",userId);
+
+        return new Response<>().set(1,monFields);
     }
 
     public Response getMonTemp(Integer userId) {
         HashMap<String, Object> resMap = new HashMap<>();
-        List<BatteryInfo> batteryInfos =  testDataMapper.getStationAndBatteryGroupIds(userId);
+        /*List<BatteryInfo> batteryInfos =  testDataMapper.getStationAndBatteryGroupIds(userId);
         for (BatteryInfo temp:batteryInfos) {
             //鏍规嵁BattGroupIds鏌ヨ鍒板搴旂殑鏁板��
             String[] batteryGroupIds = temp.getBatteryGroupIds().split(",");
@@ -137,13 +234,18 @@
             }
             DataAnalysisFloatDTO dataStatistics = testDataMapper.getStatisticsByBattGroupIds(ids,"mon_tmp");
             resMap.put(temp.getStationName(),dataStatistics);
-        }
-        return new Response<>().set(1,resMap);
+        }*/
+
+        //鏌ヨ鍗曚綋娓╁害鏁版嵁
+        List<AnalysisMonFieldDTO> monFields = monFieldMapper.getMonField("tb_mon_tmp",userId);
+
+
+        return new Response<>().set(1,monFields);
     }
 
     public Response getMonRes(Integer userId) {
         HashMap<String, Object> resMap = new HashMap<>();
-        List<BatteryInfo> batteryInfos =  resMapper.getResStationAndBatteryGroupIds(userId);
+        /*List<BatteryInfo> batteryInfos =  resMapper.getResStationAndBatteryGroupIds(userId);
         for (BatteryInfo temp:batteryInfos) {
             //鏍规嵁BattGroupIds鏌ヨ鍒板搴旂殑鏁板��
             String[] batteryGroupIds = temp.getBatteryGroupIds().split(",");
@@ -153,12 +255,16 @@
             }
             DataAnalysisFloatDTO dataStatistics = resMapper.getResStatisticsByBattGroupIds(ids);
             resMap.put(temp.getStationName(),dataStatistics);
-        }
-        return new Response<>().set(1,resMap);
+        }*/
+
+        //鏌ヨ鍗曚綋鍐呴樆鏁版嵁
+        List<AnalysisMonFieldDTO> monFields = monFieldMapper.getMonField("tb_mon_res",userId);
+
+        return new Response<>().set(1,monFields);
     }
 
     public Response getMonCap(Integer userId) {
-        HashMap<String, Object> resMap = new HashMap<>();
+        /*HashMap<String, Object> resMap = new HashMap<>();
         List<BatteryInfo> batteryInfos =  testDataMapper.getStationAndBatteryGroupIds(userId);
         for (BatteryInfo temp:batteryInfos) {
             String[] batteryGroupIds = temp.getBatteryGroupIds().split(",");
@@ -181,12 +287,13 @@
 
             List<Double> minMonCapList =new LinkedList<>();
             List<Double> maxMonCapList =new LinkedList<>();
+            List<Double> avgMonCapList =new LinkedList<>();
 
             for(BatteryInfo monData:batteryStatisticList){
                 //姹傛瘡涓崟浣撳閲忕殑鏈�鍊�
                 //鑾峰彇鏈�灏忓崟浣撳疄闄呭閲�
                 for (int i = 0; i < batteryStdList.size(); i++) {
-                    if(batteryStdList.get(i).getBatteryGroupId()==monData.getBatteryGroupId()){
+                    if(batteryStdList.get(i).getBatteryGroupId().intValue()==monData.getBatteryGroupId()){
 
                         int hourRateMin = BattCapFactory.GetHourRate(batteryStdList.get(i).getMonCapStd(), monData.getMinTestCurr());
                         double monRealCapMin = BattCapFactory.GetMonomerCap(batteryStdList.get(i).getMonCapStd(), hourRateMin, monData.getMinTestCap(), monData.getMaxMonVol(), monData.getMinMonVol(), batteryStdList.get(i).getMonVolStd(), BattCapFactory.CapType_Real);
@@ -213,13 +320,23 @@
             avgMonCap=Double.parseDouble(decimalFormat.format(avgMonCap));
 
             //鍗曚綋瀹归噺
-            /*minCapList.add(minMonCap);
-            maxCapList.add(maxMonCap);
-            averageCapList.add(avgMonCap);*/
+            minMonCapList.add(minMonCap);
+            maxMonCapList.add(maxMonCap);
+            avgMonCapList.add(avgMonCap);
+
+            List<List> capList = new LinkedList<>();
+            capList.add(minMonCapList);
+            capList.add(maxMonCapList);
+            capList.add(avgMonCapList);
             
-            resMap.put(temp.getStationName(),null);
-        }
-        return new Response<>().set(1,resMap);
+            resMap.put(temp.getStationName(),capList);
+        }*/
+        //return new Response<>().set(1,resMap);
+
+        //鏌ヨ鍗曚綋鐢靛帇鏁版嵁
+        List<AnalysisMonFieldDTO> monFields = monFieldMapper.getMonField("tb_mon_cap",userId);
+
+        return new Response<>().set(1,monFields);
 
     }
 
@@ -273,5 +390,4 @@
         Map map = enduranceAnalysis(batteryEnduranceList, timeList);
 
     }
-
 }

--
Gitblit v1.9.1