123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- package com.gyee.alarm.service;
- import com.gyee.alarm.init.CacheContext;
- import com.gyee.alarm.model.auto.ProBasicEquipment;
- import com.gyee.alarm.model.vo.AlarmTag;
- import com.gyee.alarm.service.auto.ISysUserService;
- import com.gyee.alarm.util.DateUtils;
- import com.gyee.alarm.websocket.PushParams;
- import com.gyee.alarm.websocket.WebSocket;
- import com.gyee.common.model.StringUtils;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.stereotype.Service;
- import javax.annotation.Resource;
- import javax.servlet.http.HttpServletRequest;
- import javax.websocket.EncodeException;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- import java.util.concurrent.ConcurrentHashMap;
- @Service
- public class PushDataSevice {
- @Resource
- private ISysUserService sysUserService;
- @Value("${pushinterval}")
- private Double pushinterval;
- @Resource
- private WebSocket webSocket;
- public void pushData(AlarmTag po) throws EncodeException, IOException {
- ConcurrentHashMap<String, WebSocket> webSocketPushMap = WebSocket.webSocketMap;
- ConcurrentHashMap<String, PushParams> webSocketPushParamsMap = WebSocket.webSocketParamsMap;
- if(!webSocketPushMap.isEmpty()){
- for(String key : webSocketPushMap.keySet()){
- // 根据ws连接用户ID获取推送参数
- PushParams pushParams = webSocketPushParamsMap.get(key);
- synchronized(po.getId())
- {
- if(webSocketPushParamsMap.contains(po.getId()))
- {
- PushParams pp=webSocketPushParamsMap.get(po.getId());
- double hours= DateUtils.hoursDiff(pp.getStartTime(),new Date());
- if(hours>pushinterval)
- {
- if(checkWtId(key,po.getDeviceId()))
- {
- webSocket.sendMessageByUserId(key,po);
- pp.setStartTime(new Date(po.getTs()));
- }
- }
- }else
- {
- if(checkWtId(key,po.getDeviceId()))
- {
- webSocket.sendMessageByUserId(key,po);
- PushParams pp=new PushParams();
- pp.setStartTime(new Date());
- webSocketPushParamsMap.put(po.getId(),pp);
- }
- }
- }
- }
- }
- }
- private boolean checkWtId(String userId,String wtId) {
- boolean result=false;
- List<String> depls = sysUserService.getUserByuserId(Long.valueOf(userId));
- if (!depls.isEmpty()) {
- String depId = depls.get(0);
- if (CacheContext.wpwtmap.containsKey(depId)) {
- List<ProBasicEquipment> wtls=CacheContext.wpwtmap.get(depId);
- for(ProBasicEquipment wt:wtls)
- {
- if(wt.getId().equals(wtId))
- {
- result=true;
- break;
- }
- }
- } else if (CacheContext.cmwtlsmap.containsKey(depId)) {
- List<ProBasicEquipment> wtls=CacheContext.cmwtlsmap.get(depId);
- for(ProBasicEquipment wt:wtls)
- {
- if( wt.getId().equals(wtId))
- {
- result=true;
- break;
- }
- }
- } else if (CacheContext.rgwtlsmap.containsKey(depId)) {
- List<ProBasicEquipment> wtls=CacheContext.rgwtlsmap.get(depId);
- for(ProBasicEquipment wt:wtls)
- {
- if( wt.getId().equals(wtId))
- {
- result=true;
- break;
- }
- }
- }else if(depId.equals("0"))
- {
- for(ProBasicEquipment wt:CacheContext.wtls)
- {
- if( wt.getId().equals(wtId))
- {
- result=true;
- break;
- }
- }
- }
- }
- return result;
- }
- }
|