whyclxw
2025-05-07 b22e8e7a2d6f6a2998913c381af5ceba9542d79e
苏州地铁推送修改
13个文件已修改
1个文件已添加
422 ■■■■■ 已修改文件
src/main/java/com/whyc/constant/AlarmConstant.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/dto/BattTestData.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/BattInfMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/BattRtstateMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/BattalarmDataMapper.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/pojo/BattRtstate.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/pojo/BattalarmData.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/BattInfService.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/BattRtstateService.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/BattalarmDataService.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/webSocket/ScreenForSZ2Socket.java 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/BattInfMapper.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/BattRtstateMapper.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/BattalarmDataMapper.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/constant/AlarmConstant.java
@@ -178,7 +178,23 @@
    public static final int smoke_CommErr1        = 110134;
    public static final int smoke_CommErr2        = 110135;
    public static final int smoke_CommErr3        = 110136;
    //苏州地铁使用
    public static String getSzBattAlmName(int almId)
    {
        String Alarm_name = "未知";
        switch(almId)                       //告警名称
        {
            case 119001 :  Alarm_name = "在线电压告警";break;
            case 119002 :  Alarm_name = "组端电压告警"; break;
            case 119003 :  Alarm_name = "充电电流告警";break;
            case 119004 :  Alarm_name = "放电电流告警"; break;
            case 119005 :  Alarm_name = "单体电压告警";break;
            case 119006 :  Alarm_name = "单体温度告警"; break;
            case 119007 :  Alarm_name = "单体内阻告警";break;
        }
        return Alarm_name;
    }
    public static String getAlarmName(int type)
    {
        String Alarm_name = "未知";
src/main/java/com/whyc/dto/BattTestData.java
@@ -1956,4 +1956,18 @@
        }
        return controlFailTypeName;
    }
    //苏州地铁使用电池状态对应
    public static String getBattState(int battState) {
        String stateName = "未知";
        switch(battState) {
            case 0:stateName = "未知"; break;
            case 1:stateName = "浮充"; break;
            case 2:stateName = "充电"; break;
            case 3:stateName = "放电"; break;
            case 4:stateName = "均充"; break;
            case 5:stateName = "内阻测试"; break;
        }
        return stateName;
    }
}
src/main/java/com/whyc/mapper/BattInfMapper.java
@@ -135,4 +135,6 @@
    //获取所有的电池组
    List<Battinf> getInfInStation(String stationId);
    //1统计机房个数,设备个数,电池组个数(苏州地铁)
    List<Battinf> getAllInfInSz2(Integer userId);
}
src/main/java/com/whyc/mapper/BattRtstateMapper.java
@@ -54,4 +54,6 @@
    List<BattRtstate> getDischargingList(int userId);
   //查询电池组端信息
    List<BattRtstate> serchPowerHr6159(int devId);
    //查询电池状态
    List<BattRtstate> getAllBattStateInSz2(Integer userId);
}
src/main/java/com/whyc/mapper/BattalarmDataMapper.java
@@ -6,6 +6,7 @@
import com.whyc.dto.result.AlarmStaticRes;
import com.whyc.pojo.BattMapInformation;
import com.whyc.pojo.BattalarmData;
import com.whyc.pojo.Battinf;
import com.whyc.pojo.WorkflowAlarm;
import org.apache.ibatis.annotations.Param;
@@ -98,5 +99,6 @@
    List<BattalarmData> getAlm2(Integer battGroupId);
    List<BattalarmData> getLevelListByUserId(int userId);
    //查询b所有实时电池告警信息
    List<BattalarmData> getAllBattAlarmInSz2(Integer userId);
}
src/main/java/com/whyc/pojo/BattRtstate.java
@@ -124,6 +124,8 @@
    private String stationName5;
    @TableField(exist = false)
    private Float loadCurr;
    @TableField(exist = false)
    private String stationName9;
}
src/main/java/com/whyc/pojo/BattalarmData.java
@@ -119,6 +119,8 @@
    @TableField(exist = false)
    private String stationName5;
    @TableField(exist = false)
    private String stationName9;
    @TableField(exist = false)
    @ApiModelProperty("用户记录时间")
    private Date recordTime;
src/main/java/com/whyc/service/BattInfService.java
@@ -204,6 +204,8 @@
            station.setStationName4(battinf.getStationName4());
            station.setStationName5(battinf.getStationName5());
            station.setTogetherFlag(sinfMapper.getMaxTogetherFlag());
            if(battinf.getStationName9()!=null){//苏州地铁标注为几号线地铁线路(3.5.6.7.8)
            }
            stationInfService.insertStation(station);
            battinf.setStationId(stationId);
            battinf.setFBSDeviceId((long) dev_id);
@@ -966,4 +968,55 @@
            return new Response().set(1,false,"改ukey已绑定");
        }
    }
    //插入初始数据
    public void setDefalut( Map<String,Object> map){
        Map<String,Object> mapNum=new HashMap<>();
        mapNum.put("stionNum",0);
        mapNum.put("devNum",0);
        mapNum.put("battNum",0);
        map.put("3",mapNum);
        map.put("5",mapNum);
        map.put("6",mapNum);
        map.put("7",mapNum);
        map.put("8",mapNum);
    }
    //1统计机房个数,设备个数,电池组个数(苏州地铁)
    public Response getAllInfInSz2(Integer userId) {
        Map<String,Object> map=new HashMap<>();
        //setDefalut(map);
        Map<String,Object> allmap=new HashMap<>();
        int stionNum=0;
        int devNum=0;
        int battNum=0;
        try {
            //查询battinf表中所有机房信息
            List<Battinf> list=battInfMapper.getAllInfInSz2(userId);
            Map<String, List<Battinf>> ListMap = list.stream().collect(Collectors.groupingBy(Battinf::getStationName9));
            for (String stationName9 : ListMap.keySet()) {
                Map<String, Object> battInfoMap = new HashMap<>();
                battInfoMap.put("stionNum",0);
                battInfoMap.put("devNum",0);
                battInfoMap.put("battNum",0);
                List<Battinf> name9List=ListMap.get(stationName9);
                Map<String, List<Battinf>> stationMap = name9List.stream().collect(Collectors.groupingBy(Battinf::getStationId));
                battInfoMap.put("stionNum",stationMap.size());
                stionNum+=stationMap.size();
                Map<Long, List<Battinf>> devMap = name9List.stream().collect(Collectors.groupingBy(Battinf::getFBSDeviceId));
                battInfoMap.put("devNum",devMap.size());
                devNum+=devMap.size();
                Map<Integer, List<Battinf>> battMap = name9List.stream().collect(Collectors.groupingBy(Battinf::getBattGroupId));
                battInfoMap.put("battNum",battMap.size());
                map.put(stationName9,battInfoMap);
                battNum+=battMap.size();
            }
            allmap.put("stionNum",stionNum);
            allmap.put("devNum",devNum);
            allmap.put("battNum",battNum);
            map.put("allmap",allmap);
            return new Response<>().setII(1,true,map,"");
        } catch (Exception e) {
            return new Response<>().set(1,false,"");
        }
    }
}
src/main/java/com/whyc/service/BattRtstateService.java
@@ -5,6 +5,7 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.whyc.constant.AlarmConstant;
import com.whyc.dto.BattState;
import com.whyc.dto.BattTestData;
import com.whyc.dto.Response;
@@ -20,10 +21,7 @@
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
@Service
@@ -128,4 +126,56 @@
        List<BattRtstate> list= battRtstateMapper.serchPowerHr6159(devId);
        return new Response().setII(1,list!=null,list,"查询电池组端信息");
    }
    //插入初始数据
    public void setDefalut( Map<String,Object> map){
        Map<String,Object> mapNum=new HashMap<>();
        mapNum.put("未知",0);
        mapNum.put("浮充",0);
        mapNum.put("充电",0);
        mapNum.put("放电",0);
        mapNum.put("均充",0);
        mapNum.put("内阻测试",0);
        map.put("3",mapNum);
        map.put("5",mapNum);
        map.put("6",mapNum);
        map.put("7",mapNum);
        map.put("8",mapNum);
    }
    //3.统计:电池状态
    public Response getAllBattStateInSz2(Integer userId) {
        Map<String,Object> map=new HashMap<>();
        Map<String,Integer> allTypemap=new HashMap<>();
        //setDefalut(map);
        try {
            //查询电池状态
            List<BattRtstate> list=battRtstateMapper.getAllBattStateInSz2(userId);
            Map<String, List<BattRtstate>> ListMap = list.stream().collect(Collectors.groupingBy(BattRtstate::getStationName9));
            for (String stationName9 : ListMap.keySet()) {
                Map<String, Object> battInfoMap = new HashMap<>();
                battInfoMap.put("未知",0);
                battInfoMap.put("浮充",0);
                battInfoMap.put("充电",0);
                battInfoMap.put("放电",0);
                battInfoMap.put("均充",0);
                battInfoMap.put("内阻测试",0);
                List<BattRtstate> name9List=ListMap.get(stationName9);
                Map<Integer, List<BattRtstate>> battStateMap = name9List.stream().collect(Collectors.groupingBy(BattRtstate::getBattState));
                for (Integer battState:battStateMap.keySet()) {
                    battInfoMap.put(BattTestData.getBattState(battState),battStateMap.get(battState).size());
                    int typenum=0;
                    if(allTypemap.get(BattTestData.getBattState(battState))==null){
                        typenum=battStateMap.get(battState).size();
                    }else{
                        typenum=allTypemap.get(BattTestData.getBattState(battState))+battStateMap.get(battState).size();
                    }
                    allTypemap.put(BattTestData.getBattState(battState),typenum);
                }
                map.put(stationName9,battInfoMap);
            }
            map.put("allmap",allTypemap);
            return new Response<>().setII(1,true,map,"");
        } catch (Exception e) {
            return new Response<>().set(1,false,"");
        }
    }
}
src/main/java/com/whyc/service/BattalarmDataService.java
@@ -1143,4 +1143,101 @@
        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<>();
        Map<String,List<BattalarmData>> allListmap=new HashMap<>();
        //setDefalut(map);
        try {
            //查询b所有实时电池告警信息
            List<BattalarmData> list=mapper.getAllBattAlarmInSz2(userId);
            allListmap.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,"");
        }
    }
}
src/main/java/com/whyc/webSocket/ScreenForSZ2Socket.java
New file
@@ -0,0 +1,132 @@
package com.whyc.webSocket;
import com.whyc.config.WebSocketConfig;
import com.whyc.dto.Response;
import com.whyc.factory.ThreadPoolExecutorFactory;
import com.whyc.pojo.Battinf;
import com.whyc.pojo.UserInf;
import com.whyc.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpSession;
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
 * 苏州地铁更新版
 * 首页大屏展示 Socket
 */
@Component
@ServerEndpoint(value = "/screen_sz2",encoders = WebSocketEncoder.class,configurator = WebSocketConfig.class)
public class ScreenForSZ2Socket {
    private Session session;
    private Thread thread;
    private static BattalarmDataService battAlarmDataService;
    private static BattInfService battInfService;
    private static BattRtstateService battRtStateService;
    @Autowired
    public void setBattAlarmDataService(BattalarmDataService battAlarmDataService) {
        ScreenForSZ2Socket.battAlarmDataService = battAlarmDataService;
    }
    @Autowired
    public void setBattInfService(BattInfService battInfService) {
        ScreenForSZ2Socket.battInfService = battInfService;
    }
    @Autowired
    public void setBattRtStateService(BattRtstateService battRtStateService) {
        ScreenForSZ2Socket.battRtStateService = battRtStateService;
    }
    @OnOpen
    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;
        Thread thread = new Thread() {
            @Override
            public void run() {
                try {
                    while (!currentThread().isInterrupted()) {
                        Map<String, Object> res =getStatic(userId);
                        session.getBasicRemote().sendObject(new Response().set(1, res));
                        sleep(4000);
                    }
                } catch (Exception e) {
                    this.interrupt();
                }
            }
        };
        thread.start();
        this.thread = thread;
    }
    public Map<String, Object> getStatic(Integer userId) throws InterruptedException {
        Map<String, Object> res = new HashMap<>();
        ThreadPoolExecutor poolExecutor = ThreadPoolExecutorFactory.getPoolExecutor();
        CountDownLatch latch = new CountDownLatch(3);
        poolExecutor.execute(()->{
            //1统计机房个数,设备个数,电池组个数
            Response<Map> res_inf = battInfService.getAllInfInSz2(userId);
            res.put("res_inf", res_inf);
            latch.countDown();
        });
        poolExecutor.execute(()->{
            //2.统计电池告警(119001,119002,119003,119004,119005,119006,119007)
            Response res_battAlarm = battAlarmDataService.getAllBattAlarmInSz2(userId);
            res.put("res_battAlarm", res_battAlarm);
            latch.countDown();
        });
        poolExecutor.execute(()->{
            //3.统计:电池状态
            Response<Map> res_battState = battRtStateService.getAllBattStateInSz2(userId);
            res.put("res_battState", res_battState);
            latch.countDown();
        });
        latch.await(10, TimeUnit.MINUTES);
        return res;
    }
    @OnClose
    public void onClose(CloseReason closeReason) throws IOException {
        //System.err.println("closeReason = " + closeReason);
        if(session.isOpen()){
            session.close();
        }
    }
    @OnError
    public void onError(Throwable error) throws IOException {
        //error.printStackTrace();
        thread.isInterrupted();
        if(session.isOpen()){
            session.close();
        }
    }
}
src/main/resources/mapper/BattInfMapper.xml
@@ -760,4 +760,18 @@
        select DISTINCT *  FROM db_battinf.tb_battinf
        where StationId=#{stationId}
    </select>
    <select id="getAllInfInSz2" resultType="com.whyc.pojo.Battinf">
        select distinct * from db_battinf.tb_battinf
        where StationId in  (select distinct db_battinf.tb_battinf.StationId
                           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
                             and db_user.tb_user_inf.uid = db_user.tb_user_battgroup_baojigroup_usr.uid
                             and db_user.tb_user_inf.uid = #{userId})
    </select>
</mapper>
src/main/resources/mapper/BattRtstateMapper.xml
@@ -467,6 +467,17 @@
      db_ram_db.tb_batt_rtstate.BattGroupId
      where db_battinf.tb_battinf.FBSDeviceId = #{devId}
    </select>
    <select id="getAllBattStateInSz2" resultType="com.whyc.pojo.BattRtstate">
      select tb_batt_rtstate.*,StationName9 as stationName9
      from db_ram_db.tb_batt_rtstate,db_battinf.tb_battinf
      where tb_batt_rtstate.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
                  and db_user.tb_user_battgroup_baojigroup_usr.baoji_group_id=db_user.tb_user_battgroup_baojigroup_battgroup.baoji_group_id
                  and db_user.tb_user_inf.uid=db_user.tb_user_battgroup_baojigroup_usr.uid
                  and db_user.tb_user_inf.uid=#{userId}  )
    </select>
</mapper>
src/main/resources/mapper/BattalarmDataMapper.xml
@@ -604,4 +604,19 @@
        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="getAllBattAlarmInSz2" resultType="com.whyc.pojo.BattalarmData">
        SELECT tb_battalarm_data.*,StationName9 as stationName9,StationName5 as stationName5
        from db_alarm.tb_battalarm_data,db_battinf.tb_battinf
        where
          db_alarm.tb_battalarm_data.battgroupid=db_battinf.tb_battinf.battgroupid
          and alm_id in(119001,119002,119003,119004,119005,119006,119007)
          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
                  and db_user.tb_user_battgroup_baojigroup_usr.baoji_group_id=db_user.tb_user_battgroup_baojigroup_battgroup.baoji_group_id
                  and db_user.tb_user_inf.uid=db_user.tb_user_battgroup_baojigroup_usr.uid
                  and db_user.tb_user_inf.uid=#{userId}  )
        order by alm_start_time desc
    </select>
</mapper>