whyclxw
2025-05-28 e16302f9d475c7cc4dd18c5abf1a23cb5502e362
src/main/java/com/whyc/service/BattalarmDataService.java
@@ -22,6 +22,7 @@
import com.whyc.util.ActionUtil;
import com.whyc.util.MessageUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -43,6 +44,9 @@
    @Autowired
    private SubTablePageInfoService subService;
    @Autowired
    @Lazy
    private StationInfService stationInfService;
    //查询所有的告警
    public Response getAll() {
@@ -375,7 +379,7 @@
            wrapper.eq("num",num);
            flag=mapper.update((BattalarmData) ActionUtil.objeNull,wrapper);
        }
        return  new Response().set(flag);
        return  new Response().set(1,true,"批量确认告警");
    }
    //电池告警实时查询(删除告警)
    public Response delete(int num) {
@@ -916,6 +920,167 @@
    }
    /**
     * 这里面的层级比getByLevel的层级要多一个层级,StationnName5,通过Map<String,levelMap>
     * @param userId
     * @return 返回的结构示例为:
     * {
     *     "1号线": {
     *         "level1":{
     *             battAlarmCount: 0,
     *             deviceAlarmCount: 0,
     *             powerAlarmCount: 0
     *         },
     *         "level2":{
     *             battAlarmCount: 0,
     *             deviceAlarmCount: 0,
     *             powerAlarmCount: 0
     *         },
     *         "level3":{
     *             battAlarmCount: 0,
     *             deviceAlarmCount: 0,
     *             powerAlarmCount: 0
     *         },
     *         "level4":{
     *             battAlarmCount: 0,
     *             deviceAlarmCount: 0,
     *             powerAlarmCount: 0
     *         }
     *     },
     *     "2号线": {
     *         "level1":{
     *             battAlarmCount: 0,
     *             deviceAlarmCount: 0,
     *             powerAlarmCount: 0
     *         },
     *         "level2":{
     *             battAlarmCount: 0,
     *             deviceAlarmCount: 0,
     *             powerAlarmCount: 0
     *         },
     *         "level3":{
     *             battAlarmCount: 0,
     *             deviceAlarmCount: 0,
     *             powerAlarmCount: 0
     *         },
     *         "level4":{
     *             battAlarmCount: 0,
     *             deviceAlarmCount: 0,
     *             powerAlarmCount: 0
     *         }
     *     }
     *
     * 步骤:
     * 1) 查询所有的区县
     * 2) 获取包含告警级别,区县的电池列表
     * 3) 根据区县分组
     *
     * }
     */
    public Response getByLevelAndStationName5(int userId) {
        //返回的结果结构初始化
        Map<String,Map<String,AlarmCountDTO>> subwayLineLevelMap = new LinkedHashMap<>();
        //查询所有的区县
        List<String> stationName5List = (List<String>) stationInfService.searchAllStationName5(userId,null,null).getData();
        List<BattalarmData> battAlarmListAll = getLevelListByUserId(userId);
        List<DevalarmData> deviceAlarmListAll = devalarmDataMapper.getLevelListByUserId(userId);
        List<PwrdevAlarm> powerAlarmListAll = pwrdevAlarmMapper.getLevelListByUserId(userId);
        for (String stationName5 : stationName5List) {
            Map<String,AlarmCountDTO> levelMap = new HashMap<>();
            AlarmCountDTO alarmCount1 = new AlarmCountDTO();
            AlarmCountDTO alarmCount2 = new AlarmCountDTO();
            AlarmCountDTO alarmCount3 = new AlarmCountDTO();
            AlarmCountDTO alarmCount4 = new AlarmCountDTO();
            //电池
            List<BattalarmData> battAlarmList = battAlarmListAll.stream().filter(battalarmData -> battalarmData.getStationName5().equals(stationName5)).collect(Collectors.toList());
            int battAlarmCountLevel1 = 0;
            int battAlarmCountLevel2 = 0;
            int battAlarmCountLevel3 = 0;
            int battAlarmCountLevel4 = 0;
            for (BattalarmData battalarmData : battAlarmList) {
                Integer almLevel = battalarmData.getAlmLevel();
                if(almLevel == 1){
                    battAlarmCountLevel1++;
                }
                else if(almLevel == 2){
                    battAlarmCountLevel2++;
                }
                else if(almLevel == 3){
                    battAlarmCountLevel3++;
                }
                else if(almLevel == 4){
                    battAlarmCountLevel4++;
                }
            }
            alarmCount1.setBattAlarmCount(battAlarmCountLevel1);
            alarmCount2.setBattAlarmCount(battAlarmCountLevel2);
            alarmCount3.setBattAlarmCount(battAlarmCountLevel3);
            alarmCount4.setBattAlarmCount(battAlarmCountLevel4);
            //设备
            List<DevalarmData> deviceAlarmList = deviceAlarmListAll.stream().filter(devalarmData -> devalarmData.getStationName5().equals(stationName5)).collect(Collectors.toList());
            int deviceAlarmCountLevel1 = 0;
            int deviceAlarmCountLevel2 = 0;
            int deviceAlarmCountLevel3 = 0;
            int deviceAlarmCountLevel4 = 0;
            for (DevalarmData deviceAlarmData : deviceAlarmList) {
                Integer almLevel = deviceAlarmData.getAlmLevel();
                if(almLevel == 1){
                    deviceAlarmCountLevel1++;
                }
                else if(almLevel == 2){
                    deviceAlarmCountLevel2++;
                }
                else if(almLevel == 3){
                    deviceAlarmCountLevel3++;
                }
                else if(almLevel == 4){
                    deviceAlarmCountLevel4++;
                }
            }
            alarmCount1.setDeviceAlarmCount(deviceAlarmCountLevel1);
            alarmCount2.setDeviceAlarmCount(deviceAlarmCountLevel2);
            alarmCount3.setDeviceAlarmCount(deviceAlarmCountLevel3);
            alarmCount4.setDeviceAlarmCount(deviceAlarmCountLevel4);
            //电源
            List<PwrdevAlarm> powerAlarmList = powerAlarmListAll.stream().filter(pwrdevAlarm -> pwrdevAlarm.getStationName5().equals(stationName5)).collect(Collectors.toList());
            int powerAlarmCountLevel1 = 0;
            int powerAlarmCountLevel2 = 0;
            int powerAlarmCountLevel3 = 0;
            int powerAlarmCountLevel4 = 0;
            for (PwrdevAlarm powerAlarmData : powerAlarmList) {
                Integer almLevel = powerAlarmData.getAlmLevel();
                if(almLevel == 1){
                    powerAlarmCountLevel1++;
                }
                else if(almLevel == 2){
                    powerAlarmCountLevel2++;
                }
                else if(almLevel == 3){
                    powerAlarmCountLevel3++;
                }
                else if(almLevel == 4){
                    powerAlarmCountLevel4++;
                }
            }
            alarmCount1.setPowerAlarmCount(powerAlarmCountLevel1);
            alarmCount2.setPowerAlarmCount(powerAlarmCountLevel2);
            alarmCount3.setPowerAlarmCount(powerAlarmCountLevel3);
            alarmCount4.setPowerAlarmCount(powerAlarmCountLevel4);
            levelMap.put("level1",alarmCount1);
            levelMap.put("level2",alarmCount2);
            levelMap.put("level3",alarmCount3);
            levelMap.put("level4",alarmCount4);
            subwayLineLevelMap.put(stationName5,levelMap);
        }
        return new Response().set(1,subwayLineLevelMap);
    }
    private List<BattalarmData> getLevelListByUserId(int userId) {
        return mapper.getLevelListByUserId(userId);
    }
@@ -936,7 +1101,7 @@
            119007   13   单体内阻高告警   默认关闭
                14   单体内阻低告警   默认关闭
         */
        List battList=new ArrayList();
        /*List battList=new ArrayList();
        battList.add(119001);
        battList.add(119002);
        battList.add(119004);
@@ -947,7 +1112,7 @@
        QueryWrapper battWrapper=new QueryWrapper();
        battWrapper.eq("BattGroupId",battGroupId);
        battWrapper.in("alm_id",battList);
        List<BattalarmData> battAlm=mapper.selectList(battWrapper);
        List<BattalarmData> battAlm=mapper.selectList(battWrapper);*/
        //查询是否存在设备告警
        /*  119020
@@ -965,17 +1130,116 @@
         */
        List devList=new ArrayList();
        devList.add(119020);
        devList.add(618501);
        //devList.add(618501);
        devList.add(618502);
        devList.add(618503);
        devList.add(618504);
        devList.add(618505);
        //devList.add(618503);
        //devList.add(618504);
        //devList.add(618505);
        QueryWrapper devWrapper=new QueryWrapper();
        devWrapper.eq("dev_id",devId);
        devWrapper.in("alm_type",devList);
        List<DevalarmData> devAlm=devalarmDataMapper.selectList(devWrapper);
        map.put("battAlm",battAlm.size());
        map.put("battAlm",0);
        map.put("devAlm",devAlm.size());
        return new Response().set(1,map,"61853检测是否存在告警");
    }
    //插入初始数据
    public void setDefalut( Map<String,Object> map){
        Map<String,Object> levelMap=new HashMap<>();
        Map<Integer,Object> map1=new HashMap<>();
        map1.put(1,0);
        map1.put(2,0);
        map1.put(3,0);
        map1.put(4,0);
        levelMap.put("3",map1);
        levelMap.put("5",map1);
        levelMap.put("6",map1);
        levelMap.put("7",map1);
        levelMap.put("8",map1);
        map.put("level",levelMap);
        Map<String,Object> typelMap=new HashMap<>();
        Map<String,Object> map2=new HashMap<>();
        map2.put("在线电压告警",0);
        map2.put("组端电压告警",0);
        map2.put("充电电流告警",0);
        map2.put("放电电流告警",0);
        map2.put("单体电压告警",0);
        map2.put("单体温度告警",0);
        map2.put("单体内阻告警",0);
        typelMap.put("3",map2);
        typelMap.put("5",map2);
        typelMap.put("6",map2);
        typelMap.put("7",map2);
        typelMap.put("8",map2);
        map.put("type",typelMap);
    }
    //2.统计电池告警
    public Response getAllBattAlarmInSz2(Integer userId) {
        Map<String,Object> map=new HashMap<>();
        Map<Integer,Integer> allLevelmap=new HashMap<>();
        Map<String,Integer> allTypemap=new HashMap<>();
        Map<String,List<BattalarmData>> listmap=new HashMap<>();
        //setDefalut(map);
        try {
            //查询b所有实时电池告警信息
            List<BattalarmData> list=mapper.getAllBattAlarmInSz2(userId);
            for (BattalarmData adata : list) {
                adata.setAlmSignalIdName(MessageUtils.getMessageSocket(AlarmDaoFactory.getAlarmName(adata.getAlmSignalId()), "zh_CN"));
            }
            listmap.put("allList",list.stream().limit(10).collect(Collectors.toList()));
            Map<String, List<BattalarmData>> ListMap = list.stream().collect(Collectors.groupingBy(BattalarmData::getStationName9));
            Map<String,Object> levelMap=new HashMap<>();
            Map<String,Object> typelMap=new HashMap<>();
            for (String stationName9 : ListMap.keySet()) {
                List<BattalarmData> name9List=ListMap.get(stationName9);
                listmap.put(stationName9,name9List.stream().limit(10).collect(Collectors.toList()));
                Map<Integer, List<BattalarmData>> levelName9Map = name9List.stream().collect(Collectors.groupingBy(BattalarmData::getAlmLevel));
                Map<Integer, Integer> levelNumMap = new HashMap<>();
                levelNumMap.put(1,0);
                levelNumMap.put(2,0);
                levelNumMap.put(3,0);
                levelNumMap.put(4,0);
                for (Integer level : levelName9Map.keySet()) {
                    levelNumMap.put(level,levelName9Map.get(level).size());
                    int levelnum=0;
                    if(allLevelmap.get(level)==null){
                        levelnum=levelName9Map.get(level).size();
                    }else{
                        levelnum=allLevelmap.get(level)+levelName9Map.get(level).size();
                    }
                    allLevelmap.put(level,levelnum);
                }
                levelMap.put(stationName9,levelNumMap);
                Map<Integer, List<BattalarmData>> typeName9Map = name9List.stream().collect(Collectors.groupingBy(BattalarmData::getAlmId));
                Map<String, Object> typeNumMap = new HashMap<>();
                typeNumMap.put("在线电压告警",0);
                typeNumMap.put("组端电压告警",0);
                typeNumMap.put("充电电流告警",0);
                typeNumMap.put("放电电流告警",0);
                typeNumMap.put("单体电压告警",0);
                typeNumMap.put("单体温度告警",0);
                typeNumMap.put("单体内阻告警",0);
                for (Integer type : typeName9Map.keySet()) {
                    typeNumMap.put(AlarmConstant.getSzBattAlmName(type),typeName9Map.get(type).size());
                    int typenum=0;
                    if(allTypemap.get(AlarmConstant.getSzBattAlmName(type))==null){
                        typenum=typeName9Map.get(type).size();
                    }else{
                        typenum=allTypemap.get(AlarmConstant.getSzBattAlmName(type))+typeName9Map.get(type).size();
                    }
                    allTypemap.put(AlarmConstant.getSzBattAlmName(type),typenum);
                }
                typelMap.put(stationName9,typeNumMap);
            }
            map.put("level",levelMap);
            map.put("type",typelMap);
            map.put("allLevel",allLevelmap);
            map.put("allType",allTypemap);
            map.put("list",listmap);
            return new Response<>().setII(1,true,map,"");
        } catch (Exception e) {
            return new Response<>().set(1,false,"");
        }
    }
}