whycxzp
2023-03-01 cb4a5cec6bad3e6273aa41cf6f4d798e058b523c
大屏socket更新
8个文件已修改
1个文件已添加
516 ■■■■■ 已修改文件
src/main/java/com/whyc/dto/BatteryRTState.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/BattInfMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/BattInfService.java 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/BattalarmDataService.java 157 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/Fbs9100StateService.java 72 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/PwrdevAlarmService.java 104 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/util/MathUtil.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/webSocket/ScreenSocket.java 59 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/BattInfMapper.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/dto/BatteryRTState.java
New file
@@ -0,0 +1,50 @@
package com.whyc.dto;
import java.beans.Transient;
/**
 * 电池状态
 */
public class BatteryRTState {
    private Integer batteryGroupId;
    /**电池状态*/
    private Integer batteryState;
    /**电池实际容量*/
    private Float batteryRealCap;
    /**单体电池容量标准*/
    private Float monCapStd;
    public Integer getBatteryGroupId() {
        return batteryGroupId;
    }
    public void setBatteryGroupId(Integer batteryGroupId) {
        this.batteryGroupId = batteryGroupId;
    }
    public Integer getBatteryState() {
        return batteryState;
    }
    public void setBatteryState(Integer batteryState) {
        this.batteryState = batteryState;
    }
    public Float getBatteryRealCap() {
        return batteryRealCap;
    }
    public void setBatteryRealCap(Float batteryRealCap) {
        this.batteryRealCap = batteryRealCap;
    }
    @Transient
    public Float getMonCapStd() {
        return monCapStd;
    }
    public void setMonCapStd(Float monCapStd) {
        this.monCapStd = monCapStd;
    }
}
src/main/java/com/whyc/mapper/BattInfMapper.java
@@ -2,6 +2,7 @@
import com.whyc.dto.BattInfAndEnduranceDTO;
import com.whyc.dto.BattInfDTO;
import com.whyc.dto.BatteryRTState;
import com.whyc.dto.ReportBattDTO;
import com.whyc.pojo.Battinf;
import org.apache.ibatis.annotations.Param;
@@ -90,4 +91,6 @@
    List<Battinf> getBattGroupList(int userId);
    List<BatteryRTState> getBatteryCap(int userId);
}
src/main/java/com/whyc/service/BattInfService.java
@@ -6,11 +6,13 @@
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.whyc.dto.BattInfAndEnduranceDTO;
import com.whyc.dto.BatteryRTState;
import com.whyc.dto.Response;
import com.whyc.mapper.BattInfMapper;
import com.whyc.pojo.Battinf;
import com.whyc.pojo.PowerInf;
import com.whyc.util.ActionUtil;
import com.whyc.util.MathUtil;
import org.springframework.boot.system.ApplicationHome;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Service;
@@ -533,18 +535,44 @@
     * @param userId
     * @return
     */
    public Response<Map> getDevCountMap(int userId) {
        Map<String,Integer> map = new HashMap<>();
        int battGroupCount = battInfMapper.getBattGroupNum(userId);
        int devCount = battInfMapper.getDevNum(userId);
        int powerNum = powerInfService.getNum(userId);
        map.put("battGroupCount",battGroupCount);
        map.put("devCount",devCount);
        map.put("powerNum",powerNum);
        return new Response<Map>().set(1,map);
    public Response getDevCountMap(int userId) {
        try {
            Map<String, Integer> map = new HashMap<>();
            int battGroupCount = battInfMapper.getBattGroupNum(userId);
            int devCount = battInfMapper.getDevNum(userId);
            int powerNum = powerInfService.getNum(userId);
            map.put("battGroupCount", battGroupCount);
            map.put("devCount", devCount);
            map.put("powerNum", powerNum);
            return new Response().setII(1,true, map,null);
        }catch (Exception e){
            return new Response<>().set(1,false,"发生异常:"+e.getCause());
        }
    }
    public List<Battinf> getBattGroupList(int userId) {
        return battInfMapper.getBattGroupList(userId);
    }
    /**
     * 获取电池组的实际容量
     */
    public List<BatteryRTState> getBatteryCap(int userId){
        return battInfMapper.getBatteryCap(userId);
    }
    public int getCapAlarmNum(int userId){
        int capAlarmNum=0;
        List<BatteryRTState> stateList = getBatteryCap(userId);
        //查询容量告警阈值,暂定为70% TODO 后续从数据库读取
        for (int i = 0; i < stateList.size(); i++) {
            BatteryRTState state = stateList.get(i);
            Float batteryRealCap = state.getBatteryRealCap();
            Float capStd = state.getMonCapStd();
            Float realCapDivide = (Float) MathUtil.divide(batteryRealCap, capStd, MathUtil.TYPE_FLOAT);
            if(realCapDivide<=0.7){
                capAlarmNum++;
            }
        }
        return capAlarmNum;
    }
}
src/main/java/com/whyc/service/BattalarmDataService.java
@@ -396,8 +396,8 @@
     * @param userId
     * @return
     */
    public Response<Map> getMonCapacityLowAnalysis(int userId) {
        Response<Map> response = new Response();
    public Response getMonCapacityLowAnalysis(int userId) {
        Response response = new Response();
        Map<String, Object> resultMap = new HashMap<>();
        try {
@@ -425,10 +425,9 @@
            //resultMap.put("告警机房数",alarmNum);
            //resultMap.put("告警机房占比",capLowStationRateStr);
            response.set(1, resultMap);
            response.setII(1,true, resultMap,null);
        } catch (Exception e) {
            e.printStackTrace();
            return response.set(0);
            return response.set(0,false,"发生异常:"+e.getCause());
        }
        return response;
    }
@@ -440,103 +439,105 @@
     * @param userId
     * @return
     */
    public Response<Map> getMonVRTAnalysis(int userId) {
    public Response getMonVRTAnalysis(int userId) {
        Response<Map> response = new Response();
        HashMap<String, Object> resultMap = new HashMap<>();
        Map<String, Object> monVolMap = new HashMap<>();//单体电压  Alarm_vol_Monomer =119005;
        Map<String, Object> monResMap = new HashMap<>();//单体内阻  Alarm_res_Monomer =119007
        Map<String, Object> monTemMap = new HashMap<>();//单体温度  Alarm_tmp_Monomer =119006
        Response response = new Response();
        try {
            HashMap<String, Object> resultMap = new HashMap<>();
            Map<String, Object> monVolMap = new HashMap<>();//单体电压  Alarm_vol_Monomer =119005;
            Map<String, Object> monResMap = new HashMap<>();//单体内阻  Alarm_res_Monomer =119007
            Map<String, Object> monTemMap = new HashMap<>();//单体温度  Alarm_tmp_Monomer =119006
        /*======单体电压======*/
            /*======单体电压======*/
        //高告警数量
        Integer volHighAlarmsNum = mapper.getAlarmHighLow(userId,AlarmConstant.ALM_SIGNAL_ID_MonVolHigh);
        //低告警数量
        Integer volLowAlarmsNum = mapper.getAlarmHighLow(userId,AlarmConstant.ALM_SIGNAL_ID_MonVolLow);
            //高告警数量
            Integer volHighAlarmsNum = mapper.getAlarmHighLow(userId, AlarmConstant.ALM_SIGNAL_ID_MonVolHigh);
            //低告警数量
            Integer volLowAlarmsNum = mapper.getAlarmHighLow(userId, AlarmConstant.ALM_SIGNAL_ID_MonVolLow);
        //单体电压总告警数
        //Integer volTotalAlarmNum = volHighAlarmsNum+volLowAlarmsNum;
            //单体电压总告警数
            //Integer volTotalAlarmNum = volHighAlarmsNum+volLowAlarmsNum;
        //告警总数
        //Integer totalStationAlarmNum =mapper.getTotalAlarms(userId);
            //告警总数
            //Integer totalStationAlarmNum =mapper.getTotalAlarms(userId);
        //电压告警机房数
        //int volTotalAlarmStations = mapper.getTotalAlarmStations(userId,AlarmConstant.Alarm_vol_Monomer);
            //电压告警机房数
            //int volTotalAlarmStations = mapper.getTotalAlarmStations(userId,AlarmConstant.Alarm_vol_Monomer);
        //总机房数
        //int totalStationNum = infoMapper.getStationCount(userId);
            //总机房数
            //int totalStationNum = infoMapper.getStationCount(userId);
        //电压告警占比
        //String volRateStr = (String) MathUtil.divide(volTotalAlarmNum,totalStationAlarmNum,3);
        //电压告警机房占比
        //String volStationRateStr = (String) MathUtil.divide(volTotalAlarmStations,totalStationNum,3);
            //电压告警占比
            //String volRateStr = (String) MathUtil.divide(volTotalAlarmNum,totalStationAlarmNum,3);
            //电压告警机房占比
            //String volStationRateStr = (String) MathUtil.divide(volTotalAlarmStations,totalStationNum,3);
        monVolMap.put("单体电压高告警", volHighAlarmsNum);     //高告警数量    alm_signal_id 9
        monVolMap.put("单体电压低告警", volLowAlarmsNum);     //低告警数量     alm_signal_id   10
        //monVolMap.put("告警总数", volTotalAlarmNum);        //告警总数
        //monVolMap.put("告警总数比例", volRateStr);      //告警总数比例
        //monVolMap.put("告警机房总数", volTotalAlarmStations);      //告警机房总数
        //monVolMap.put("告警机房数比例", volStationRateStr);    //告警机房数比例
        resultMap.put("单体电压", monVolMap);
            monVolMap.put("单体电压高告警", volHighAlarmsNum);     //高告警数量    alm_signal_id 9
            monVolMap.put("单体电压低告警", volLowAlarmsNum);     //低告警数量     alm_signal_id   10
            //monVolMap.put("告警总数", volTotalAlarmNum);        //告警总数
            //monVolMap.put("告警总数比例", volRateStr);      //告警总数比例
            //monVolMap.put("告警机房总数", volTotalAlarmStations);      //告警机房总数
            //monVolMap.put("告警机房数比例", volStationRateStr);    //告警机房数比例
            resultMap.put("单体电压", monVolMap);
        /*======单体内阻======*/
            /*======单体内阻======*/
        //高告警数量
        Integer resHighAlarmsNum = mapper.getAlarmHighLow(userId,AlarmConstant.ALM_SIGNAL_ID_MonResHigh);
        //低告警数量
        Integer resLowAlarmsNum = mapper.getAlarmHighLow(userId,AlarmConstant.ALM_SIGNAL_ID_MonResLow);
            //高告警数量
            Integer resHighAlarmsNum = mapper.getAlarmHighLow(userId, AlarmConstant.ALM_SIGNAL_ID_MonResHigh);
            //低告警数量
            Integer resLowAlarmsNum = mapper.getAlarmHighLow(userId, AlarmConstant.ALM_SIGNAL_ID_MonResLow);
        //单体内阻总告警数
        //Integer resTotalAlarmNum = resHighAlarmsNum+resLowAlarmsNum;
            //单体内阻总告警数
            //Integer resTotalAlarmNum = resHighAlarmsNum+resLowAlarmsNum;
        //内阻告警机房数
        //int resTotalAlarmStations = mapper.getTotalAlarmStations(userId,AlarmConstant.Alarm_res_Monomer);
            //内阻告警机房数
            //int resTotalAlarmStations = mapper.getTotalAlarmStations(userId,AlarmConstant.Alarm_res_Monomer);
        //内阻告警占比
        //String resRateStr = (String) MathUtil.divide(resTotalAlarmNum,totalStationAlarmNum,3);
        //内阻告警机房占比
        //String resStationRateStr = (String) MathUtil.divide(resTotalAlarmStations,totalStationNum,3);
            //内阻告警占比
            //String resRateStr = (String) MathUtil.divide(resTotalAlarmNum,totalStationAlarmNum,3);
            //内阻告警机房占比
            //String resStationRateStr = (String) MathUtil.divide(resTotalAlarmStations,totalStationNum,3);
        monResMap.put("单体内阻高告警", resHighAlarmsNum);     //高告警数量    alm_signal_id 13
        monResMap.put("单体内阻低告警", resLowAlarmsNum);     //低告警数量     alm_signal_id 14
        //monResMap.put("告警总数", resTotalAlarmNum);        //告警总数
        //monResMap.put("告警总数比例", resRateStr);      //告警总数比例
        //monResMap.put("告警机房总数", resTotalAlarmStations);      //告警机房总数
        //monResMap.put("告警机房数比例", resStationRateStr);    //告警机房数比例
        resultMap.put("单体内阻", monResMap);
            monResMap.put("单体内阻高告警", resHighAlarmsNum);     //高告警数量    alm_signal_id 13
            monResMap.put("单体内阻低告警", resLowAlarmsNum);     //低告警数量     alm_signal_id 14
            //monResMap.put("告警总数", resTotalAlarmNum);        //告警总数
            //monResMap.put("告警总数比例", resRateStr);      //告警总数比例
            //monResMap.put("告警机房总数", resTotalAlarmStations);      //告警机房总数
            //monResMap.put("告警机房数比例", resStationRateStr);    //告警机房数比例
            resultMap.put("单体内阻", monResMap);
        /*======单体温度======*/
            /*======单体温度======*/
        //高告警数量
        Integer tempHighAlarmsNum = mapper.getAlarmHighLow(userId,AlarmConstant.ALM_SIGNAL_ID_MonTmpHigh);
        //低告警数量
        Integer tempLowAlarmsNum = mapper.getAlarmHighLow(userId,AlarmConstant.ALM_SIGNAL_ID_MonTmpLow);
            //高告警数量
            Integer tempHighAlarmsNum = mapper.getAlarmHighLow(userId, AlarmConstant.ALM_SIGNAL_ID_MonTmpHigh);
            //低告警数量
            Integer tempLowAlarmsNum = mapper.getAlarmHighLow(userId, AlarmConstant.ALM_SIGNAL_ID_MonTmpLow);
        //单体温度总告警数
        //Integer tempTotalAlarmNum = tempHighAlarmsNum+tempLowAlarmsNum;
            //单体温度总告警数
            //Integer tempTotalAlarmNum = tempHighAlarmsNum+tempLowAlarmsNum;
        //温度告警机房数
        //int tempTotalAlarmStations = mapper.getTotalAlarmStations(userId,AlarmConstant.Alarm_tmp_Monomer);
            //温度告警机房数
            //int tempTotalAlarmStations = mapper.getTotalAlarmStations(userId,AlarmConstant.Alarm_tmp_Monomer);
        //温度告警占比
        //String tempRateStr = (String) MathUtil.divide(tempTotalAlarmNum,totalStationAlarmNum,3);
        //温度告警机房占比
        //String tempStationRateStr = (String) MathUtil.divide(tempTotalAlarmStations,totalStationNum,3);
            //温度告警占比
            //String tempRateStr = (String) MathUtil.divide(tempTotalAlarmNum,totalStationAlarmNum,3);
            //温度告警机房占比
            //String tempStationRateStr = (String) MathUtil.divide(tempTotalAlarmStations,totalStationNum,3);
        monTemMap.put("单体温度高告警", tempHighAlarmsNum);     //高告警数量    alm_signal_id 13
        monTemMap.put("单体温度低告警", tempLowAlarmsNum);     //低告警数量     alm_signal_id 14
        //monTemMap.put("告警总数", tempTotalAlarmNum);        //告警总数
        //monTemMap.put("告警总数比例", tempRateStr);      //告警总数比例
        //monTemMap.put("告警机房总数", tempTotalAlarmStations);      //告警机房总数
        //monTemMap.put("告警机房数比例", tempStationRateStr);    //告警机房数比例
        resultMap.put("单体温度", monTemMap);
            monTemMap.put("单体温度高告警", tempHighAlarmsNum);     //高告警数量    alm_signal_id 13
            monTemMap.put("单体温度低告警", tempLowAlarmsNum);     //低告警数量     alm_signal_id 14
            //monTemMap.put("告警总数", tempTotalAlarmNum);        //告警总数
            //monTemMap.put("告警总数比例", tempRateStr);      //告警总数比例
            //monTemMap.put("告警机房总数", tempTotalAlarmStations);      //告警机房总数
            //monTemMap.put("告警机房数比例", tempStationRateStr);    //告警机房数比例
            resultMap.put("单体温度", monTemMap);
        response.setCode(1);
        response.setData(resultMap);
        return response;
            return response.setII(1,true,resultMap,null);
        }catch (Exception e){
            return response.set(1,false,"发生异常:"+e.getCause());
        }
    }
}
src/main/java/com/whyc/service/Fbs9100StateService.java
@@ -122,15 +122,16 @@
        return list;
    }
    public Response<Map> getBTSEquipStatus(int userId) throws ParseException {
    public Response getBTSEquipStatus(int userId) throws ParseException {
        Response<Map> response = new Response();
        Map<String, Integer> resultMap = new HashMap<>();
        resultMap.put("在线浮充数量",0);
        resultMap.put("预充电数量",0);
        resultMap.put("核容测试数量",0);
        resultMap.put("内阻测试数量",0);
        resultMap.put("通讯故障数量",0);
        Response response = new Response();
        try {
            Map<String, Integer> resultMap = new HashMap<>();
            resultMap.put("在线浮充数量", 0);
            resultMap.put("预充电数量", 0);
            resultMap.put("核容测试数量", 0);
            resultMap.put("内阻测试数量", 0);
            resultMap.put("通讯故障数量", 0);
        /*try {
            List<FBS9100State> statusList = fbs9100StateMapper.getStatus(userId);
            for (int i = 0; i < statusList.size(); i++) {
@@ -156,34 +157,37 @@
            response.setCode(0);
            return response;
        }*/
        QueryWrapper<Fbs9100State> wrapper = Wrappers.query();
        wrapper.select("record_datetime","dev_workstate");
        List<Fbs9100State> fbs9100StateList = mapper.selectList(wrapper);
        //首先查看是否通讯故障,时间大于1分钟为通讯故障
        for (int i = 0; i < fbs9100StateList.size(); i++) {
            Calendar instance = Calendar.getInstance();
            instance.add(Calendar.MINUTE,-1);
            Date time = instance.getTime();
            if(time.compareTo(DateUtil.YYYY_MM_DD_HH_MM_SS.parse(fbs9100StateList.get(i).getRecordDatetime()))>0){
                resultMap.put("通讯故障数量",resultMap.get("通讯故障数量")+1);
            }else{
                switch (fbs9100StateList.get(i).getDevWorkstate()){
                    case DeviceConstant.DEV_ONLINE_CHARGE:
                        resultMap.put("在线浮充数量",resultMap.get("在线浮充数量")+1);
                        break;
                    case DeviceConstant.DEV_PRE_CHARGE:
                        resultMap.put("预充电数量",resultMap.get("预充电数量")+1);
                        break;
                    case DeviceConstant.DEV_NUCLEAR_CAP:
                        resultMap.put("核容数量",resultMap.get("核容测试数量")+1);
                        break;
                    case DeviceConstant.DEV_RES_TEST:
                        resultMap.put("内阻测试数量",resultMap.get("内阻测试数量")+1);
                        break;
            QueryWrapper<Fbs9100State> wrapper = Wrappers.query();
            wrapper.select("record_datetime", "dev_workstate");
            List<Fbs9100State> fbs9100StateList = mapper.selectList(wrapper);
            //首先查看是否通讯故障,时间大于1分钟为通讯故障
            for (int i = 0; i < fbs9100StateList.size(); i++) {
                Calendar instance = Calendar.getInstance();
                instance.add(Calendar.MINUTE, -1);
                Date time = instance.getTime();
                if (time.compareTo(DateUtil.YYYY_MM_DD_HH_MM_SS.parse(fbs9100StateList.get(i).getRecordDatetime())) > 0) {
                    resultMap.put("通讯故障数量", resultMap.get("通讯故障数量") + 1);
                } else {
                    switch (fbs9100StateList.get(i).getDevWorkstate()) {
                        case DeviceConstant.DEV_ONLINE_CHARGE:
                            resultMap.put("在线浮充数量", resultMap.get("在线浮充数量") + 1);
                            break;
                        case DeviceConstant.DEV_PRE_CHARGE:
                            resultMap.put("预充电数量", resultMap.get("预充电数量") + 1);
                            break;
                        case DeviceConstant.DEV_NUCLEAR_CAP:
                            resultMap.put("核容数量", resultMap.get("核容测试数量") + 1);
                            break;
                        case DeviceConstant.DEV_RES_TEST:
                            resultMap.put("内阻测试数量", resultMap.get("内阻测试数量") + 1);
                            break;
                    }
                }
            }
        }
        return new Response<Map>().set(1,resultMap);
            return response.setII(1,true,resultMap,null);
        }catch (Exception e){
            return response.set(1,false,"发生异常:"+e.getCause());
        }
    }
}
src/main/java/com/whyc/service/PwrdevAlarmService.java
@@ -218,7 +218,7 @@
     * @return
     * @param userId
     */
    public Response<List> getAcABCAnalysis(int userId){
    public Response getAcABCAnalysis(int userId){
        //交流A/B/C-过压,
        //交流A/B/C-欠压,
@@ -229,61 +229,63 @@
        resultMap.put("欠压",0);
        resultMap.put("缺相",0);
        resultMap.put("过流",0);
        try {
            List<Integer> types = Arrays.asList(
                    AlarmConstant.acIn1_over_volA,
                    AlarmConstant.acIn1_over_volB,
                    AlarmConstant.acIn1_over_volC,
                    AlarmConstant.acIn1_under_volA,
                    AlarmConstant.acIn1_under_volB,
                    AlarmConstant.acIn1_under_volC,
                    AlarmConstant.acIn1_less_A,
                    AlarmConstant.acIn1_less_B,
                    AlarmConstant.acIn1_less_C,
                    AlarmConstant.acb1_over_currA,
                    AlarmConstant.acb1_over_currB,
                    AlarmConstant.acb1_over_currC);
        List<Integer> types = Arrays.asList(
                AlarmConstant.acIn1_over_volA,
                AlarmConstant.acIn1_over_volB,
                AlarmConstant.acIn1_over_volC,
                AlarmConstant.acIn1_under_volA,
                AlarmConstant.acIn1_under_volB,
                AlarmConstant.acIn1_under_volC,
                AlarmConstant.acIn1_less_A,
                AlarmConstant.acIn1_less_B,
                AlarmConstant.acIn1_less_C,
                AlarmConstant.acb1_over_currA,
                AlarmConstant.acb1_over_currB,
                AlarmConstant.acb1_over_currC);
            List<PwrdevAlarm> data = mapper.getAnalysis(userId, types);
        List<PwrdevAlarm> data = mapper.getAnalysis(userId,types);
            for (int i = 0; i < data.size(); i++) {
                switch (data.get(i).getAlmType()) {
                    case AlarmConstant.acIn1_over_volA:
                    case AlarmConstant.acIn1_over_volB:
                    case AlarmConstant.acIn1_over_volC:
                        resultMap.put("过压", resultMap.get("过压") + data.get(i).getNum().intValue());
                        break;
                    case AlarmConstant.acIn1_under_volA:
                    case AlarmConstant.acIn1_under_volB:
                    case AlarmConstant.acIn1_under_volC:
                        resultMap.put("欠压", resultMap.get("欠压") + data.get(i).getNum().intValue());
                        break;
                    case AlarmConstant.acIn1_less_A:
                    case AlarmConstant.acIn1_less_B:
                    case AlarmConstant.acIn1_less_C:
                        resultMap.put("缺相", resultMap.get("缺相") + data.get(i).getNum().intValue());
                        break;
                    case AlarmConstant.acb1_over_currA:
                    case AlarmConstant.acb1_over_currB:
                    case AlarmConstant.acb1_over_currC:
                        resultMap.put("过流", resultMap.get("过流") + data.get(i).getNum().intValue());
                        break;
                    default:
                }
        for (int i = 0; i < data.size(); i++) {
            switch (data.get(i).getAlmType()){
                case AlarmConstant.acIn1_over_volA:
                case AlarmConstant.acIn1_over_volB:
                case AlarmConstant.acIn1_over_volC:
                    resultMap.put("过压",resultMap.get("过压")+data.get(i).getNum().intValue());
                    break;
                case AlarmConstant.acIn1_under_volA:
                case AlarmConstant.acIn1_under_volB:
                case AlarmConstant.acIn1_under_volC:
                    resultMap.put("欠压",resultMap.get("欠压")+data.get(i).getNum().intValue());
                    break;
                case AlarmConstant.acIn1_less_A:
                case AlarmConstant.acIn1_less_B:
                case AlarmConstant.acIn1_less_C:
                    resultMap.put("缺相",resultMap.get("缺相")+data.get(i).getNum().intValue());
                    break;
                case AlarmConstant.acb1_over_currA:
                case AlarmConstant.acb1_over_currB:
                case AlarmConstant.acb1_over_currC:
                    resultMap.put("过流",resultMap.get("过流")+data.get(i).getNum().intValue());
                    break;
                default:
                    throw new IllegalStateException("Unexpected value: " + data.get(i));
            }
            //告警机房总数和比例
            HashMap<String, Integer> map2 = new HashMap<>();
            //int alarmStationCount = mapper.getAlarmStationCountSpec(userId,types);
            //int stationCount = infoMapper.getStationCount(userId);
            //map2.put("告警机房总数",alarmStationCount);
            //map2.put("告警机房数比例",(int)MathUtil.divide(alarmStationCount,stationCount,2));
            List<Map<String, Integer>> mapList = Arrays.asList(resultMap, map2);
            return new Response<>().setII(1, true,mapList,null);
        }catch (Exception e){
            return new Response<>().set(0,false,"发生异常");
        }
        //告警机房总数和比例
        HashMap<String, Integer> map2 = new HashMap<>();
        //int alarmStationCount = mapper.getAlarmStationCountSpec(userId,types);
        //int stationCount = infoMapper.getStationCount(userId);
        //map2.put("告警机房总数",alarmStationCount);
        //map2.put("告警机房数比例",(int)MathUtil.divide(alarmStationCount,stationCount,2));
        List<Map<String, Integer>> mapList = Arrays.asList(resultMap, map2);
        return new Response<List>().set(1,mapList);
    }
}
src/main/java/com/whyc/util/MathUtil.java
@@ -8,6 +8,9 @@
 */
public class MathUtil {
    public static final Integer TYPE_FLOAT = 1;
    public static final Integer TYPE_FLOAT_100 = 2;
    public static final Integer TYPE_FLOAT_PERCENT = 3;
    /**
     * 提取公共方法,相除获取比例,返回可选String或者Float
     * @param type 1表示小数,2表示除去%的比例,3表示%的比例
src/main/java/com/whyc/webSocket/ScreenSocket.java
@@ -69,7 +69,7 @@
            @Override
            public void run() {
                try {
                    Map<String, Response> res = new HashMap<>();
                    Map<String, Object> res = new HashMap<>();
                    Response sessionRes = new Response().set(1, httpSession.getId());
                    while (!currentThread().isInterrupted()) {
                        //一体   告警:交流ABC
@@ -77,28 +77,61 @@
                        //一体   告警:单体容量
                        Response res_monCapacityLowAnalysis = battAlarmDataService.getMonCapacityLowAnalysis(userId);
                        //一体   告警:单体温度内阻温度
                        Response<Map> res_monVRTAnalysis = battAlarmDataService.getMonVRTAnalysis(userId);
                        Response res_monVRTAnalysis = battAlarmDataService.getMonVRTAnalysis(userId);
                        //一体   统计:三种设备类型 告警数统计
                        int battAlarmNum = battAlarmDataService.serchRealTime(userId).getCode();
                        int devAlarmNum = devAlarmDataService.getAlarmNum(userId);
                        int powerAlarmNum = (int) powerAlarmService.getAlarmNum().getData();
                        //一体   统计:电池统计 分为品牌和标称电压
                        List<Battinf> battinfList = battInfService.getBattGroupList(userId);
                        Map<String, List<Battinf>> battProducerMap = battinfList.stream().collect(Collectors.groupingBy(Battinf::getBattProducer));
                        Map<Float, List<Battinf>> battMonVolStdMap = battinfList.stream().collect(Collectors.groupingBy(Battinf::getMonVolStd));
                        Map<String,Object> battGroupInfoMap = new HashMap<>();
                        for(String producer : battGroupInfoMap.keySet()){
                        Response res_devAlarmNum = new Response();
                        Map<String, Integer> devAlarmNumMap = new HashMap<>();
                        try {
                            int battAlarmNum = battAlarmDataService.serchRealTime(userId).getCode();
                            int devAlarmNum = devAlarmDataService.getAlarmNum(userId);
                            int powerAlarmNum = (int) powerAlarmService.getAlarmNum().getData();
                            devAlarmNumMap.put("battAlarmNum",battAlarmNum);
                            devAlarmNumMap.put("devAlarmNum",devAlarmNum);
                            devAlarmNumMap.put("powerAlarmNum",powerAlarmNum);
                            res_devAlarmNum.setII(1,true,devAlarmNumMap,null);
                        }catch (Exception e){
                            res_devAlarmNum.set(1,false,"发生异常:"+e.getCause());
                        }
                        //一体   统计:电池统计 分为品牌和标称电压
                        Response res_battGroupInfo = new Response();
                        try {
                            List<Battinf> battinfList = battInfService.getBattGroupList(userId);
                            Map<String, List<Battinf>> battProducerMap = battinfList.stream().collect(Collectors.groupingBy(Battinf::getBattProducer));
                            Map<Float, List<Battinf>> battMonVolStdMap = battinfList.stream().collect(Collectors.groupingBy(Battinf::getMonVolStd));
                            Map<String, Object> battGroupInfoMap = new HashMap<>();
                            for (String producer : battProducerMap.keySet()) {
                                battGroupInfoMap.put(producer, battProducerMap.get(producer).size());
                            }
                            for (Float monVolStd : battMonVolStdMap.keySet()) {
                                battGroupInfoMap.put(Float.toString(monVolStd), battMonVolStdMap.get(monVolStd).size());
                            }
                            res_battGroupInfo.setII(1,true,battGroupInfoMap,null);
                        }catch (Exception e){
                            res_battGroupInfo.set(1,false,"发生异常:"+e.getCause());
                        }
                        //一体   统计:设备状态
                        Response<Map> res_devStates = fbs9100StateService.getBTSEquipStatus(userId);
                        //一体   统计:各种设备类型总数 电池 设备 电源 站点
                        Response<Map> res_devCountMap = battInfService.getDevCountMap(userId);
                        //续航检测??? TODO
                        //续航检测:按照电池组为单位进行检测,告警判定:实际容量/标称容量<=某个百分比 TODO 续航表中读取需要询问李军确认
                        Response res_capAlarmNum = new Response();
                        try {
                            int capAlarmNum = battInfService.getCapAlarmNum(userId);
                            res_capAlarmNum.setII(1,true,capAlarmNum,null);
                        }catch (Exception e){
                            res_capAlarmNum.set(1,false,"发生异常:"+e.getCause());
                        }
                        res.put("acABC", res_acABC);
                        res.put("monCapacityLowAnalysis", res_monCapacityLowAnalysis);
                        res.put("monVRTAnalysis", res_monVRTAnalysis);
                        res.put("devAlarmNum", res_devAlarmNum);
                        res.put("battGroupInfo", res_battGroupInfo);
                        res.put("devStates", res_devStates);
                        res.put("devCountMap", res_devCountMap);
                        res.put("capAlarmNum", res_capAlarmNum);
                        session.getBasicRemote().sendObject(new Response().set(1, res));
                        sleep(4000);
                    }
src/main/resources/mapper/BattInfMapper.xml
@@ -520,5 +520,27 @@
        and db_user.tb_user_inf.uid=db_user.tb_user_battgroup_baojigroup_usr.uid
        and db_user.tb_user_inf.uid=#{userId})
    </select>
    <select id="getBatteryCap" resultType="com.whyc.dto.BatteryRTState">
        SELECT
        state.batt_real_cap AS batteryRealCap,
        battInf.MonCapStd AS monCapStd
        FROM
        db_ram_db.tb_batt_rtstate state,
        db_battinf.tb_battinf battInf
        WHERE
        state.BattGroupId = battInf.BattGroupId
        AND batt_real_cap > 0
        AND state.BattGroupId IN (
        SELECT DISTINCT
        db_battinf.tb_battinf.BattGroupId
        FROM
        db_battinf.tb_battinf
        LEFT OUTER JOIN db_user.tb_user_battgroup_baojigroup_battgroup ON db_user.tb_user_battgroup_baojigroup_battgroup.stationid = db_battinf.tb_battinf.stationid
        LEFT OUTER JOIN db_user.tb_user_battgroup_baojigroup_usr ON db_user.tb_user_battgroup_baojigroup_usr.baoji_group_id = db_user.tb_user_battgroup_baojigroup_battgroup.baoji_group_id
        LEFT OUTER JOIN db_user.tb_user_inf ON tb_user_inf.uid = db_user.tb_user_battgroup_baojigroup_usr.uid
        WHERE
        db_user.tb_user_inf.uid = #{userId}
        )
    </select>
</mapper>