| | |
| | | package com.whyc.service; |
| | | |
| | | import com.whyc.dto.AnalysisMonCapDTO; |
| | | import com.whyc.dto.BatteryInfo; |
| | | import com.whyc.dto.Response; |
| | | import com.whyc.constant.AlarmConstant; |
| | | import com.whyc.dto.*; |
| | | import com.whyc.mapper.*; |
| | | import com.whyc.dto.AnalysisMonFieldDTO; |
| | | import com.whyc.pojo.BatteryEndurance; |
| | | import com.whyc.pojo.BatteryRTState; |
| | | import com.whyc.pojo.Tables; |
| | |
| | | |
| | | public Response getEndurance(Integer userId) { |
| | | List<BatteryEndurance> enduranceList = mapper.endurance(userId); |
| | | List<Integer> times = Arrays.asList(1, 2, 3); |
| | | List<Integer> times = Arrays.asList(1, 2, 3,5,8); |
| | | Map resultMap = enduranceAnalysis(enduranceList,times); |
| | | return new Response<Map>().set(1,resultMap); |
| | | } |
| | | |
| | | /**按时间阶段统计续航*/ |
| | | private static Map enduranceAnalysis(List<BatteryEndurance> enduranceList, List<Integer> times) { |
| | | Map<String,Integer> map = new HashMap<>(); |
| | | Map<String,Integer> map = new LinkedHashMap<>(); |
| | | |
| | | //初始化续航分类 |
| | | for (int i = 0; i < times.size(); i++) { |
| | | if(i ==0 ){ |
| | | map.put("续航"+times.get(0)+"小时内",0); |
| | | } |
| | | else if(i == times.size()-1){ |
| | | map.put("续航"+times.get(i-1)+"小时到"+times.get(i)+"小时",0); |
| | | map.put("续航"+times.get(times.size()-1)+"小时以上",0); |
| | | }else { |
| | | map.put("续航" + times.get(i-1) + "小时到" + times.get(i) + "小时", 0); |
| | | } |
| | | } |
| | | |
| | | for (int i = 0; i < enduranceList.size(); i++) { |
| | | //每一个具体的续航进行分组 |
| | | if(enduranceList.get(i).getEnduranceActualTime()<times.get(0)){ |
| | | if(enduranceList.get(i).getEnduranceActualTime()<times.get(0)*60){ |
| | | map.put("续航"+times.get(0)+"小时内",Optional.ofNullable(map.get("续航"+times.get(0)+"小时内")).orElse(0)+1); |
| | | } |
| | | else if(enduranceList.get(i).getEnduranceActualTime()>times.get(times.size()-1)){ |
| | | else if(enduranceList.get(i).getEnduranceActualTime()>times.get(times.size()-1)*60){ |
| | | map.put("续航"+times.get(times.size()-1)+"小时以上",Optional.ofNullable(map.get("续航"+times.get(times.size()-1)+"小时以上")).orElse(0)+1); |
| | | }else { |
| | | for (int j = 0; j < times.size(); j++) { |
| | | if (enduranceList.get(i).getEnduranceActualTime() <= times.get(j)) { |
| | | if (enduranceList.get(i).getEnduranceActualTime() <= times.get(j)*60) { |
| | | map.put("续航" + times.get(j - 1) + "小时到" + times.get(j) + "小时", Optional.ofNullable(map.get("续航" + times.get(j - 1) + "小时到" + times.get(j) + "小时")).orElse(0) + 1); |
| | | break; |
| | | } |
| | |
| | | return maps; |
| | | } |
| | | |
| | | /** |
| | | * 落后单体统计,统计各种类型所占比例: |
| | | * 容量告警:单体容量告警 |
| | | * 容量更换:单体容量更换 |
| | | * 总电池单体-上面两种:单体容量健康 |
| | | */ |
| | | public Response getMonCapStatus(Integer userId) { |
| | | //初始化 单体容量健康 单体容量告警 单体容量更换 和 map |
| | | Map<String,Integer> monCapMap = new HashMap(); |
| | | Integer monCapGood = 0; |
| | | Integer monCapAlarm = 0; |
| | | Integer monCapChange = 0; |
| | | |
| | | //查询用户管理的总单体数 |
| | | Integer totalMonNum = mapper.getTotalMonNum(userId); |
| | | //查询用户管理的落后单体数 |
| | | List<BadBattMonDTO> list = mapper.getBadMonOfCapAlarm(userId); |
| | | |
| | | if(!list.isEmpty()) { |
| | | for (int i = 0; i < list.size(); i++) { |
| | | //容量告警 |
| | | if (list.get(i).getNote() == AlarmConstant.Alarm_CapAlarm) { |
| | | monCapAlarm = list.get(i).getNum(); |
| | | } |
| | | //容量更换 |
| | | else { |
| | | monCapChange = list.get(i).getNum(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | monCapGood = totalMonNum - monCapAlarm -monCapChange ; |
| | | monCapMap.put("单体容量健康",monCapGood); |
| | | monCapMap.put("单体容量告警",monCapAlarm); |
| | | monCapMap.put("单体容量更换",monCapChange); |
| | | return new Response().set(1,monCapMap); |
| | | } |
| | | |
| | | /**单体信息统计*/ |
| | | public List<AnalysisMonFieldDTO> monFieldStatistics(String filedName, String fieldName2) { |
| | | //查询所有的电池组 |
| | |
| | | List<AnalysisMonCapDTO> capDTOList = entry.getValue(); |
| | | //执行容量统计 |
| | | for (AnalysisMonCapDTO monCapDTO : capDTOList){ |
| | | if(monCapDTO.getMonVol()>monCapDTO.getMonVolStd()*0.9f){ |
| | | //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{ |
| | | /*}else{ |
| | | //查询电池测试表中对应的测试批次的单体剩余容量 |
| | | realCap = Math.abs(testDataMapper.getRestCapByCondition(monCapDTO)); |
| | | } |
| | | }*/ |
| | | if(realCap<minCap){ |
| | | minCap = realCap; |
| | | } |