whycxzp
2025-02-28 78bdbf03741d03e047d034a1418a240e10b75c9f
苏州地铁大屏提交
5个文件已修改
195 ■■■■■ 已修改文件
src/main/java/com/whyc/service/BattalarmDataService.java 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/webSocket/ScreenForSZSocket.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/BattalarmDataMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/DevalarmDataMapper.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/PwrdevAlarmMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
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() {
@@ -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);
    }
src/main/java/com/whyc/webSocket/ScreenForSZSocket.java
@@ -104,9 +104,9 @@
    public void onOpen(Session session, EndpointConfig config){
        this.session = session;
        HttpSession httpSession = (HttpSession) config.getUserProperties().get("httpSession");
        UserInf user = (UserInf) httpSession.getAttribute("user");
        final int userId = user.getUId().intValue();
        //final int userId = 1001;
        //UserInf user = (UserInf) httpSession.getAttribute("user");
        //final int userId = user.getUId().intValue();
        final int userId = 1001;
        Thread thread = new Thread() {
            @Override
            public void run() {
@@ -114,7 +114,7 @@
                    Map<String, Object> res = new HashMap<>();
                    while (!currentThread().isInterrupted()) {
                        ThreadPoolExecutor poolExecutor = ThreadPoolExecutorFactory.getPoolExecutor();
                        CountDownLatch latch = new CountDownLatch(8);
                        CountDownLatch latch = new CountDownLatch(5);
                        /*poolExecutor.execute(()->{
                            //1.统计:电池统计 分为品牌和标称电压
                            Response res_battGroupInfo = new Response();
@@ -205,17 +205,16 @@
                            latch.countDown();
                        });*/
                        poolExecutor.execute(()->{
                            //9-1.统计:区县(StationName5)的 告警统计 级别及类型统计 TODO
                            //9-1.统计:区县(StationName5)的 告警统计 级别及类型统计
                            //查询出所有的区县,并按照区县来进行告警的分类统计
                            Response res_alarmLevel = new Response();
                            Map<String, Integer> devAlarmNumMap = new HashMap<>();
                            try {
                                Response alarmsCountByLevel = battAlarmDataService.getByLevel(userId);
                                Response alarmsCountByLevel = battAlarmDataService.getByLevelAndStationName5(userId);
                                res_alarmLevel.setII(1,true,alarmsCountByLevel,null);
                            }catch (Exception e){
                                res_alarmLevel.set(1,false,"发生异常:"+e.getCause());
                            }
                            res.put("alarmsLevel", res_alarmLevel);
                            res.put("alarmsLevelWithStationName5", res_alarmLevel);
                            latch.countDown();
                        });
                        poolExecutor.execute(()->{
src/main/resources/mapper/BattalarmDataMapper.xml
@@ -591,10 +591,11 @@
    </select>
    <select id="getLevelListByUserId" resultType="com.whyc.pojo.BattalarmData">
        SELECT alm_level
        from db_alarm.tb_battalarm_data
        SELECT alm_level,StationName5 as stationName5
        from db_alarm.tb_battalarm_data,db_battinf.tb_battinf
        where
        BattGroupId
        db_alarm.tb_battalarm_data.battgroupid=db_battinf.tb_battinf.battgroupid
        and db_alarm.tb_battalarm_data.BattGroupId
        in (select distinct db_battinf.tb_battinf.battgroupid
        from db_battinf.tb_battinf,db_user.tb_user_battgroup_baojigroup_battgroup,db_user.tb_user_battgroup_baojigroup_usr,db_user.tb_user_inf
        where db_user.tb_user_battgroup_baojigroup_battgroup.BattGroupId=db_battinf.tb_battinf.BattGroupId
src/main/resources/mapper/DevalarmDataMapper.xml
@@ -383,9 +383,9 @@
        ORDER by GroupIndexInFBSDevice limit 1
    </select>
    <select id="getLevelListByUserId" resultType="com.whyc.pojo.DevalarmData">
        select alm_level
        from db_alarm.tb_devalarm_data
        where dev_id in (select distinct db_battinf.tb_battinf.FbsDeviceId
        select alm_level,StationName5 as stationName5
        from db_alarm.tb_devalarm_data,db_battinf.tb_battinf where db_alarm.tb_devalarm_data.dev_id=db_battinf.tb_battinf.FbsDeviceId
        and db_alarm.tb_devalarm_data.dev_id in (select distinct db_battinf.tb_battinf.FbsDeviceId
        from db_battinf.tb_battinf,db_user.tb_user_battgroup_baojigroup_battgroup,db_user.tb_user_battgroup_baojigroup_usr,db_user.tb_user_inf
        where db_user.tb_user_battgroup_baojigroup_battgroup.BattGroupId=db_battinf.tb_battinf.BattGroupId
        and db_user.tb_user_battgroup_baojigroup_usr.baoji_group_id=db_user.tb_user_battgroup_baojigroup_battgroup.baoji_group_id
src/main/resources/mapper/PwrdevAlarmMapper.xml
@@ -413,7 +413,7 @@
        </foreach>
    </select>
    <select id="getLevelListByUserId" resultType="com.whyc.pojo.PwrdevAlarm">
        select alm_level from db_pwrdev_alarm.tb_pwrdev_alarm alarm,db_pwrdev_inf.tb_pwrdev_inf inf
        select alm_level,StationName5 as stationName5 from db_pwrdev_alarm.tb_pwrdev_alarm alarm,db_pwrdev_inf.tb_pwrdev_inf inf
        where alarm.PowerDeviceId = inf.PowerDeviceId
        and inf.StationId in ( select distinct inf.StationId from
        (select StationId from db_battinf.tb_battinf union select StationId from db_pwrdev_inf.tb_pwrdev_inf ) inf,