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