| | |
| | | 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 = "未知"; |
| | |
| | | } |
| | | 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; |
| | | } |
| | | } |
| | |
| | | |
| | | //获取所有的电池组 |
| | | List<Battinf> getInfInStation(String stationId); |
| | | //1统计机房个数,设备个数,电池组个数(苏州地铁) |
| | | List<Battinf> getAllInfInSz2(Integer userId); |
| | | } |
| | |
| | | List<BattRtstate> getDischargingList(int userId); |
| | | //查询电池组端信息 |
| | | List<BattRtstate> serchPowerHr6159(int devId); |
| | | //查询电池状态 |
| | | List<BattRtstate> getAllBattStateInSz2(Integer userId); |
| | | } |
| | |
| | | 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; |
| | | |
| | |
| | | List<BattalarmData> getAlm2(Integer battGroupId); |
| | | |
| | | List<BattalarmData> getLevelListByUserId(int userId); |
| | | |
| | | //查询b所有实时电池告警信息 |
| | | List<BattalarmData> getAllBattAlarmInSz2(Integer userId); |
| | | } |
| | |
| | | private String stationName5; |
| | | @TableField(exist = false) |
| | | private Float loadCurr; |
| | | @TableField(exist = false) |
| | | private String stationName9; |
| | | |
| | | |
| | | } |
| | |
| | | @TableField(exist = false) |
| | | private String stationName5; |
| | | @TableField(exist = false) |
| | | private String stationName9; |
| | | @TableField(exist = false) |
| | | @ApiModelProperty("用户记录时间") |
| | | private Date recordTime; |
| | | |
| | |
| | | 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); |
| | |
| | | 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,""); |
| | | } |
| | | |
| | | } |
| | | } |
| | |
| | | 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; |
| | |
| | | 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 |
| | |
| | | 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,""); |
| | | } |
| | | } |
| | | } |
| | |
| | | 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,""); |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | 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(); |
| | | } |
| | | } |
| | | |
| | | } |
| | |
| | | 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> |
| | |
| | | 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> |
| | |
| | | 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> |