src/main/java/com/whyc/controller/StatisticController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/dto/Real/TopDto.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/dto/Statistic/PerformanceStic.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/mapper/BattAlmparamMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/service/BattAlmparamService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/service/BatttestdataInfService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/webSocket/RealTimeSocket.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/BattAlmparamMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/whyc/controller/StatisticController.java
@@ -83,6 +83,14 @@ return battTinfService.getDischr6Statistic(stic); } @ApiOperation(value = "电池组电池性能统计(未放电,优秀,劣化,损坏)统计(1.2.8/9/10)") @PostMapping("getPerformanceStatistic") public Response getPerformanceStatistic(@RequestBody PerformanceStic stic){ User uinf= ActionUtil.getUser(); stic.setUid(uinf.getId()); return battTinfService.getPerformanceStatistic(stic); } @ApiOperation(value = "站点信息统计(1.2.11)") @PostMapping("getStationStatistic") src/main/java/com/whyc/dto/Real/TopDto.java
@@ -5,9 +5,13 @@ @Data public class TopDto { private Integer systemState; //系统状态 private String systemStateName; private Integer devState; //设备状态 private String devStateName; private Integer battState; //电池状态 private String battStateName; private Integer pwrState; //电源状态 private String pwrStateName; private Float vbusVol; //母线电压 private Float onlineVol; //在线电压 private Integer battALmNum;//电池组实时告警数 @@ -34,9 +38,13 @@ public TopDto() { this.systemState = 0; this.systemStateName = ""; this.devState = 0; this.devStateName = ""; this.battState = 0; this.battStateName = ""; this.pwrState = 0; this.pwrStateName=""; this.vbusVol = 0.0f; this.onlineVol = 0.0f; this.battALmNum = 0; src/main/java/com/whyc/dto/Statistic/PerformanceStic.java
New file @@ -0,0 +1,22 @@ package com.whyc.dto.Statistic; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.util.Date; @Data public class PerformanceStic { private String provice; private String city; private String country; private String stationName; private Integer performance;//电池性能:1优秀,2劣化,3损坏 4未放电 不传全部 private Integer uid; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date testStartTime;//开始时间 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date testEndTime;//结束时间 private Integer pageNum; private Integer pageSize; } src/main/java/com/whyc/mapper/BattAlmparamMapper.java
@@ -1,6 +1,12 @@ package com.whyc.mapper; import com.whyc.dto.Real.AlmDto; import com.whyc.pojo.db_param.BattAlmparam; import org.apache.ibatis.annotations.Param; import java.util.List; public interface BattAlmparamMapper extends CustomMapper<BattAlmparam>{ //获取电池告警参数 List<BattAlmparam> getBattAlmParam(@Param("almDto") AlmDto almDto); } src/main/java/com/whyc/service/BattAlmparamService.java
@@ -1,10 +1,16 @@ package com.whyc.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.whyc.dto.Real.AlmDto; import com.whyc.dto.Response; import com.whyc.mapper.BattAlmparamMapper; import com.whyc.pojo.db_param.BattAlmparam; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class BattAlmparamService { @@ -12,6 +18,9 @@ private BattAlmparamMapper mapper; //获取电池告警参数 public Response getBattAlmParam(AlmDto almDto) { return null; PageHelper.startPage(almDto.getPageNum(),almDto.getPageSize()); List<BattAlmparam> list = mapper.getBattAlmParam(almDto); PageInfo pageInfo=new PageInfo(list); return new Response().setII(1,list!=null,pageInfo,"获取电池告警参数"); } } src/main/java/com/whyc/service/BatttestdataInfService.java
@@ -791,4 +791,96 @@ Map<String,Map<Integer,String>> map= StopReasonEnum.getOpInfo(); return new Response().setII(1,true,map,"获取核容停止原因类型(下拉)"); } //电池组电池性能统计(未放电,优秀,劣化,损坏)统计(1.2.8/9/10) public Response getPerformanceStatistic(PerformanceStic stic) { /*//获取核容优劣,损坏参数 List<AppParam> paramList=appParamService.getHrParam(); Float badValue=0f; Float damageValue=0f; if(paramList!=null){ for (AppParam param:paramList) { if(param.getParamNamePsx().equals("batt_mon_deteriorate_val")){ badValue=param.getParamValue(); } if(param.getParamNamePsx().equals("batt_mon_damage_val")){ damageValue=param.getParamValue(); } } } //1查询符合条件的电池组 List<BattInf> binfList=battInfService.getBattCompare15Statistic(stic); if(binfList==null||binfList.size()==0){ return new Response().set(1,false,"当前用户未管理满足条件的电池组"); } List<SticCompare15Res> reslist=new ArrayList<>(); for (BattInf binf:binfList) { SticCompare15Res res=new SticCompare15Res(); res.setProvice(binf.getProvice()); res.setCity(binf.getCity()); res.setCountry(binf.getCountry()); res.setStationName(binf.getStationName()); res.setBattgroupName(binf.getBattgroupName()); res.setDevName(binf.getDevName()); res.setProduct(binf.getProduct()); res.setInuseTime(binf.getInuseTime()); res.setMonvolstd(binf.getMonvolstd()); res.setStationId(binf.getStationId()); res.setPowerId(binf.getPowerId()); res.setDevId(binf.getDevId()); res.setBattgroupId(binf.getBattgroupId()); //2.获取电池组在给定时间段的放电记录(指定时间段的标准核容放电) BatttestdataInf tinf =getLastStandardTestDataByTime(binf.getBattgroupId(),stic.getTestStartTime(),stic.getTestEndTime()); if(tinf==null){ res.setRealCap(0f); res.setPrecentCap("0"); res.setCapperformance(Capperformance.getValue(Capperformance.BATTSTATE_4.getStateId())); continue; } //找这次放电的最后一笔数据 List<BatttestdataId> idDataList=battTestdataIdService.getLastDataByBattgroupId(tinf.getBattgroupId(),tinf.getTestRecordCount(),tinf.getRecordNum()); if(idDataList==null||idDataList.size()==0){ res.setRealCap(0f); res.setPrecentCap("0"); res.setCapperformance(Capperformance.getValue(Capperformance.BATTSTATE_4.getStateId())); continue; } Float moncapStd=binf.getMoncapstd(); int hourRate = BattCapFactory.GetHourRate(tinf.getTestCap(), tinf.getTestCurr()); Float grouprealCap = (float) BattCapFactory.GetMonomerCap(tinf.getTestCap(), hourRate, tinf.getTestCap(), tinf.getMaxMonvol(), tinf.getMinMonvol(), tinf.getGroupVol(), BattCapFactory.CapType_Real); //Float restCap = (float) BattCapFactory.GetMonomerCap(tinf.getTestCap(), hourRate, tinf.getTestCap(), tinf.getMaxMonvol(), tinf.getMinMonvol(), tinf.getGroupVol(), BattCapFactory.CapType_Rest); res.setRealCap(grouprealCap); if(grouprealCap>=moncapStd*badValue){ res.setCapperformance(Capperformance.getValue(Capperformance.BATTSTATE_1.getStateId())); } if(grouprealCap<=moncapStd*damageValue){ res.setCapperformance(Capperformance.getValue(Capperformance.BATTSTATE_3.getStateId())); } if((grouprealCap>moncapStd*damageValue)&&(grouprealCap<moncapStd*badValue)){ res.setCapperformance(Capperformance.getValue(Capperformance.BATTSTATE_2.getStateId())); } //保留5位小数 String precentCap = String.format("%.5f",(grouprealCap/binf.getMoncapstd()*100)); res.setPrecentCap(precentCap); List<Integer> monNums=new ArrayList<>(); for (BatttestdataId data:idDataList) {//求单体的 实际容量,最小值就是单体的单体电压 Float monrealCap = (float) BattCapFactory.GetMonomerCap(tinf.getTestCap(), hourRate, tinf.getTestCap(), tinf.getMaxMonvol(), data.getMonVol(), tinf.getGroupVol(), BattCapFactory.CapType_Real); if (monrealCap <= moncapStd * damageValue) {//损坏的 monNums.add(data.getMonNum()); } } res.setMonNums(monNums); if(stic.getPerformance()==null){ reslist.add(res); }else{ if(res.getCapperformance().equals(Capperformance.getValue(stic.getPerformance()))){ reslist.add(res); } } } PageInfo pageInfo=PageInfoUtils.list2PageInfo(reslist, stic.getPageNum(), stic.getPageSize()); return new Response().setII(1,reslist.size()>0,pageInfo,"蓄电池组对比分析界面(同一品牌同一时间)");*/ return null; } } src/main/java/com/whyc/webSocket/RealTimeSocket.java
@@ -1,6 +1,7 @@ package com.whyc.webSocket; import com.whyc.config.WebSocketConfig; import com.whyc.constant.BattStateEnum; import com.whyc.constant.DevStateEnum; import com.whyc.constant.FailReasonEnum; import com.whyc.constant.StopReasonEnum; @@ -204,6 +205,7 @@ BattRtstate battRtstate = battRtstateService.getBattRealInfo(realDto.getBattgroupId()); if (battRtstate != null) { topDto.setBattState(battRtstate.getBattState()); topDto.setBattStateName(BattStateEnum.getValue(battRtstate.getBattState())); topDto.setVbusVol(battRtstate.getVbusVol()); topDto.setOnlineVol(battRtstate.getOnlineVol()); topDto.setRecordtime(ThreadLocalUtil.format(battRtstate.getRecDatetime(),1)); @@ -232,6 +234,7 @@ DeviceState deviceState = deviceStateService.getDevRealInfo(realDto.getDevId()); if (deviceState != null) { topDto.setDevState(deviceState.getDevWorkstate()); topDto.setDevStateName(DevStateEnum.getValue(deviceState.getDevWorkstate())); if (deviceState.getDevWorkstate() == DevStateEnum.DEVSTATE_2.getStateId()) {//核容放电 topDto.setCaptestGroupvol(deviceState.getDevCaptestGroupvol()); topDto.setCaptestCurr(deviceState.getDevCaptestCurr()); @@ -260,10 +263,12 @@ //实时获取电源信息(是否存在电源告警信息) //PwrdevAcdcdata pwrdevAcdcdata = pwrdevAcdcdataService.getPwrRealInfo(realDto.getPowerId()); topDto.setPwrState((pwrALmNum > 0 ? 1 : 0)); topDto.setPwrStateName((pwrALmNum > 0 ? "电源异常" : "电源正常")); Integer allALmNum = battALmNum + devALmNum + pwrALmNum; topDto.setAllALmNum(allALmNum); topDto.setSystemState((allALmNum > 0 ? 1 : 0)); topDto.setSystemStateName((allALmNum > 0 ? "系统异常" : "系统正常")); } return new Response().setII(1, true, topDto, "实时页面头部数据推送"); } catch (Exception e) { src/main/resources/mapper/BattAlmparamMapper.xml
New file @@ -0,0 +1,33 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.whyc.mapper.BattAlmparamMapper"> <select id="getBattAlmParam" resultType="com.whyc.pojo.db_param.BattAlmparam"> select distinct tb_batt_inf.* ,tb_station_inf.station_type,tb_station_inf.station_name,tb_station_inf.provice,tb_station_inf.city,tb_station_inf.country,tb_station_inf.full_name from db_station.tb_batt_inf,db_station.tb_station_inf <where> tb_batt_inf.station_id=tb_station_inf.station_id <if test="stic.provice!=null"> and tb_station_inf.provice=#{stic.provice} </if> <if test="stic.city!=null"> and tb_station_inf.city=#{stic.city} </if> <if test="stic.country!=null"> and tb_station_inf.country=#{stic.country} </if> <if test="stic.stationName!=null"> and tb_station_inf.station_name=#{stic.stationName} </if> <if test="stic.uid>100"> and tb_batt_inf.station_id in( select distinct station_id from db_user.tb_baojigroup_power,db_user.tb_baojigroup_usr where tb_baojigroup_power.baoji_group_id=tb_baojigroup_usr.baoji_group_id and tb_baojigroup_usr.uid=#{stic.uid} ) </if> order by tb_batt_inf.dev_id asc,battgroup_id asc </where> </select> </mapper>