| | |
| | | package com.whyc.service; |
| | | |
| | | import com.whyc.constant.BattSingalIdEnum; |
| | | import com.whyc.constant.Capperformance; |
| | | import com.whyc.constant.BattCapperformanceEnum; |
| | | import com.whyc.constant.DevAlarmEnum; |
| | | import com.whyc.constant.PowerAlarmEnum; |
| | | import com.whyc.dto.*; |
| | |
| | | |
| | | //本年优良劣化损坏数量 |
| | | List<BattCapInfoDto> battCapInfoList = getBattCapInfo(battInfList,yearStartTime,null); |
| | | long battGoodCount = battCapInfoList.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(Capperformance.BATTSTATE_1.getStateName())).count(); |
| | | long battBadCount = battCapInfoList.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(Capperformance.BATTSTATE_2.getStateName())).count(); |
| | | long battDamageCount = battCapInfoList.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(Capperformance.BATTSTATE_3.getStateName())).count(); |
| | | long battGoodCount = battCapInfoList.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(BattCapperformanceEnum.BATTSTATE_1.getStateName())).count(); |
| | | long battBadCount = battCapInfoList.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(BattCapperformanceEnum.BATTSTATE_2.getStateName())).count(); |
| | | long battDamageCount = battCapInfoList.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(BattCapperformanceEnum.BATTSTATE_3.getStateName())).count(); |
| | | //去年优良劣化损坏数量 |
| | | List<BattCapInfoDto> battCapInfoListLastYear = getBattCapInfo(battInfList,lastYearStartTime,lastYearEndTime); |
| | | long battGoodCountLastYear = battCapInfoListLastYear.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(Capperformance.BATTSTATE_1.getStateName())).count(); |
| | | long battBadCountLastYear = battCapInfoListLastYear.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(Capperformance.BATTSTATE_2.getStateName())).count(); |
| | | long battDamageCountLastYear = battCapInfoListLastYear.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(Capperformance.BATTSTATE_3.getStateName())).count(); |
| | | long battGoodCountLastYear = battCapInfoListLastYear.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(BattCapperformanceEnum.BATTSTATE_1.getStateName())).count(); |
| | | long battBadCountLastYear = battCapInfoListLastYear.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(BattCapperformanceEnum.BATTSTATE_2.getStateName())).count(); |
| | | long battDamageCountLastYear = battCapInfoListLastYear.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(BattCapperformanceEnum.BATTSTATE_3.getStateName())).count(); |
| | | map.put("battGoodCount", battGoodCount); |
| | | map.put("battBadCount", battBadCount); |
| | | map.put("battDamageCount", battDamageCount); |
| | |
| | | List<NameValueIntDto> data = new ArrayList<>(); |
| | | List<NameValueListDto> data2 = new ArrayList<>(); |
| | | //筛选出 站点优良,劣化,损坏 的电池组,并按照这个字段分组 |
| | | List<BattCapInfoDto> goodList = battCapInfoList.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(Capperformance.BATTSTATE_1.getStateName())) |
| | | List<BattCapInfoDto> goodList = battCapInfoList.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(BattCapperformanceEnum.BATTSTATE_1.getStateName())) |
| | | .sorted(Comparator.comparing(BattCapInfoDto::getRealCap).reversed()).collect(Collectors.toList()); |
| | | if(goodList.size()==0){ |
| | | data.add(new NameValueIntDto("优良",0)); |
| | |
| | | data.add(new NameValueIntDto("优良",goodList.size())); |
| | | data2.add(new NameValueListDto("优良",goodList.subList(0, Math.min(goodList.size(), 2)))); |
| | | } |
| | | List<BattCapInfoDto> badList = battCapInfoList.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(Capperformance.BATTSTATE_2.getStateName())) |
| | | List<BattCapInfoDto> badList = battCapInfoList.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(BattCapperformanceEnum.BATTSTATE_2.getStateName())) |
| | | .sorted(Comparator.comparing(BattCapInfoDto::getRealCap)).collect(Collectors.toList()); |
| | | if(badList.size()==0){ |
| | | data.add(new NameValueIntDto("劣化",0)); |
| | |
| | | data.add(new NameValueIntDto("劣化",badList.size())); |
| | | data2.add(new NameValueListDto("劣化",badList.subList(0, Math.min(badList.size(), 2)))); |
| | | } |
| | | List<BattCapInfoDto> damageList = battCapInfoList.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(Capperformance.BATTSTATE_3.getStateName())) |
| | | List<BattCapInfoDto> damageList = battCapInfoList.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(BattCapperformanceEnum.BATTSTATE_3.getStateName())) |
| | | .sorted(Comparator.comparing(BattCapInfoDto::getRealCap)).collect(Collectors.toList()); |
| | | if(damageList.size()==0){ |
| | | data.add(new NameValueIntDto("损坏",0)); |
| | |
| | | List<NameValueListDto<NameValueDto>> data = new ArrayList<>(); |
| | | brandMap.forEach((brand,battCapInfoListTemp)->{ |
| | | //k -品牌 |
| | | long goodCount = battCapInfoListTemp.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(Capperformance.BATTSTATE_1.getStateName())).count(); |
| | | long badCount = battCapInfoListTemp.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(Capperformance.BATTSTATE_2.getStateName())).count(); |
| | | long damageCount = battCapInfoListTemp.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(Capperformance.BATTSTATE_3.getStateName())).count(); |
| | | long goodCount = battCapInfoListTemp.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(BattCapperformanceEnum.BATTSTATE_1.getStateName())).count(); |
| | | long badCount = battCapInfoListTemp.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(BattCapperformanceEnum.BATTSTATE_2.getStateName())).count(); |
| | | long damageCount = battCapInfoListTemp.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(BattCapperformanceEnum.BATTSTATE_3.getStateName())).count(); |
| | | long total = goodCount + badCount + damageCount; |
| | | //良好,劣化,损坏的百分比.(保留0位小数) |
| | | int goodPercent = Math.round((float) goodCount / total * 100); |
| | |
| | | }); |
| | | //data2,优良里面最大的和最小的品牌 |
| | | List<NameValueListDto<NameValueDto>> data2 = new ArrayList<>(); |
| | | List<BattCapInfoDto> goodList = battCapInfoList.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(Capperformance.BATTSTATE_1.getStateName())) |
| | | List<BattCapInfoDto> goodList = battCapInfoList.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(BattCapperformanceEnum.BATTSTATE_1.getStateName())) |
| | | .sorted(Comparator.comparing(BattCapInfoDto::getRealCap)).collect(Collectors.toList()); |
| | | NameValueListDto<NameValueDto> goodListDto = new NameValueListDto<>(); |
| | | List<NameValueDto> goodListValue = new ArrayList<>(); |
| | |
| | | goodListDto.setValue(goodListValue); |
| | | data2.add(goodListDto); |
| | | //劣化里面最大的和最小的品牌 |
| | | List<BattCapInfoDto> badList = battCapInfoList.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(Capperformance.BATTSTATE_2.getStateName())) |
| | | List<BattCapInfoDto> badList = battCapInfoList.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(BattCapperformanceEnum.BATTSTATE_2.getStateName())) |
| | | .sorted(Comparator.comparing(BattCapInfoDto::getRealCap)).collect(Collectors.toList()); |
| | | NameValueListDto<NameValueDto> badListDto = new NameValueListDto<>(); |
| | | List<NameValueDto> badListValue = new ArrayList<>(); |
| | |
| | | data2.add(badListDto); |
| | | |
| | | //损坏里面最大的和最小的品牌 |
| | | List<BattCapInfoDto> damageList = battCapInfoList.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(Capperformance.BATTSTATE_3.getStateName())) |
| | | List<BattCapInfoDto> damageList = battCapInfoList.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(BattCapperformanceEnum.BATTSTATE_3.getStateName())) |
| | | .sorted(Comparator.comparing(BattCapInfoDto::getRealCap)).collect(Collectors.toList()); |
| | | |
| | | NameValueListDto<NameValueDto> damageListDto = new NameValueListDto<>(); |
| | |
| | | List<NameValueListDto<NameValueIntDto>> data = new ArrayList<>(); |
| | | NameValueListDto<NameValueIntDto> time1Dto = new NameValueListDto<>(); |
| | | time1Dto.setName(time1+"年内"); |
| | | List<BattCapInfoDto> badListOfTime1 = time1List.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(Capperformance.BATTSTATE_2.getStateName())) |
| | | List<BattCapInfoDto> badListOfTime1 = time1List.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(BattCapperformanceEnum.BATTSTATE_2.getStateName())) |
| | | .sorted(Comparator.comparing(BattCapInfoDto::getRealCap)).collect(Collectors.toList()); |
| | | List<BattCapInfoDto> damageListOfTime1 = time1List.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(Capperformance.BATTSTATE_3.getStateName())) |
| | | List<BattCapInfoDto> damageListOfTime1 = time1List.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(BattCapperformanceEnum.BATTSTATE_3.getStateName())) |
| | | .sorted(Comparator.comparing(BattCapInfoDto::getRealCap)).collect(Collectors.toList()); |
| | | NameValueIntDto time1BadDto = new NameValueIntDto(); |
| | | time1BadDto.setName("劣化"); |
| | |
| | | |
| | | NameValueListDto<NameValueIntDto> time12Dto = new NameValueListDto<>(); |
| | | time12Dto.setName(time1+"-"+time2+"年"); |
| | | List<BattCapInfoDto> badListOfTime12 = time12List.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(Capperformance.BATTSTATE_2.getStateName())) |
| | | List<BattCapInfoDto> badListOfTime12 = time12List.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(BattCapperformanceEnum.BATTSTATE_2.getStateName())) |
| | | .sorted(Comparator.comparing(BattCapInfoDto::getRealCap)).collect(Collectors.toList()); |
| | | List<BattCapInfoDto> damageListOfTime12 = time12List.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(Capperformance.BATTSTATE_3.getStateName())) |
| | | List<BattCapInfoDto> damageListOfTime12 = time12List.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(BattCapperformanceEnum.BATTSTATE_3.getStateName())) |
| | | .sorted(Comparator.comparing(BattCapInfoDto::getRealCap)).collect(Collectors.toList()); |
| | | NameValueIntDto time12BadDto = new NameValueIntDto(); |
| | | time12BadDto.setName("劣化"); |
| | |
| | | |
| | | NameValueListDto<NameValueIntDto> time2Dto = new NameValueListDto<>(); |
| | | time2Dto.setName(time2+"年以上"); |
| | | List<BattCapInfoDto> badListOfTime2 = time2List.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(Capperformance.BATTSTATE_2.getStateName())) |
| | | List<BattCapInfoDto> badListOfTime2 = time2List.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(BattCapperformanceEnum.BATTSTATE_2.getStateName())) |
| | | .sorted(Comparator.comparing(BattCapInfoDto::getRealCap)).collect(Collectors.toList()); |
| | | List<BattCapInfoDto> damageListOfTime2 = time2List.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(Capperformance.BATTSTATE_3.getStateName())) |
| | | List<BattCapInfoDto> damageListOfTime2 = time2List.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(BattCapperformanceEnum.BATTSTATE_3.getStateName())) |
| | | .sorted(Comparator.comparing(BattCapInfoDto::getRealCap)).collect(Collectors.toList()); |
| | | NameValueIntDto time2BadDto = new NameValueIntDto(); |
| | | time2BadDto.setName("劣化"); |
| | |
| | | if (testInf == null) { |
| | | capInfo.setRealCap(0f); |
| | | capInfo.setCapPercentage("0"); |
| | | capInfo.setPerformance(Capperformance.BATTSTATE_4.getStateName()); |
| | | capInfo.setPerformance(BattCapperformanceEnum.BATTSTATE_4.getStateName()); |
| | | continue; |
| | | } |
| | | //找这次放电的最后一笔数据 |
| | |
| | | if (idDataList == null || idDataList.size() == 0) { |
| | | capInfo.setRealCap(0f); |
| | | capInfo.setCapPercentage("0"); |
| | | capInfo.setPerformance(Capperformance.BATTSTATE_4.getStateName()); |
| | | capInfo.setPerformance(BattCapperformanceEnum.BATTSTATE_4.getStateName()); |
| | | continue; |
| | | } |
| | | Float moncapStd = battInf.getMoncapstd(); |
| | | int hourRate = BattCapFactory.GetHourRate(testInf.getTestCap(), testInf.getTestCurr()); |
| | | Float groupRealCap = (float) BattCapFactory.GetMonomerCap(testInf.getTestCap(), hourRate, testInf.getTestCap(), testInf.getMaxMonvol(), testInf.getMinMonvol(), testInf.getGroupVol(), BattCapFactory.CapType_Real); |
| | | Float groupRealCap = (float) BattCapFactory.GetMonomerCap(battInf.getMoncapstd(), hourRate, testInf.getTestCap(), testInf.getMaxMonvol(), testInf.getMinMonvol(), testInf.getGroupVol(), BattCapFactory.CapType_Real); |
| | | capInfo.setRealCap(groupRealCap); |
| | | if (groupRealCap >= moncapStd * badValue) { |
| | | capInfo.setPerformance(Capperformance.BATTSTATE_1.getStateName()); |
| | | capInfo.setPerformance(BattCapperformanceEnum.BATTSTATE_1.getStateName()); |
| | | } |
| | | if (groupRealCap <= moncapStd * damageValue) { |
| | | capInfo.setPerformance(Capperformance.BATTSTATE_3.getStateName()); |
| | | capInfo.setPerformance(BattCapperformanceEnum.BATTSTATE_3.getStateName()); |
| | | } |
| | | if ((groupRealCap > moncapStd * damageValue) && (groupRealCap < moncapStd * badValue)) { |
| | | capInfo.setPerformance(Capperformance.BATTSTATE_2.getStateName()); |
| | | capInfo.setPerformance(BattCapperformanceEnum.BATTSTATE_2.getStateName()); |
| | | } |
| | | //保留5位小数 |
| | | String capPercentage = String.format("%.5f", (groupRealCap / battInf.getMoncapstd() * 100)); |