| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- package com.genersoft.iot.vmp.gb28181.task;
- import com.genersoft.iot.vmp.gb28181.bean.GbStream;
- import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
- import com.genersoft.iot.vmp.gb28181.bean.SubscribeInfo;
- import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform;
- import com.genersoft.iot.vmp.service.bean.GPSMsgInfo;
- import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
- import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
- import java.text.SimpleDateFormat;
- import java.util.List;
- public class GPSSubscribeTask implements Runnable{
- private IRedisCatchStorage redisCatchStorage;
- private IVideoManagerStorager storager;
- private ISIPCommanderForPlatform sipCommanderForPlatform;
- private String platformId;
- private String sn;
- private String key;
- private final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- public GPSSubscribeTask(IRedisCatchStorage redisCatchStorage, ISIPCommanderForPlatform sipCommanderForPlatform, IVideoManagerStorager storager, String platformId, String sn, String key) {
- this.redisCatchStorage = redisCatchStorage;
- this.storager = storager;
- this.platformId = platformId;
- this.sn = sn;
- this.key = key;
- this.sipCommanderForPlatform = sipCommanderForPlatform;
- }
- @Override
- public void run() {
- SubscribeInfo subscribe = redisCatchStorage.getSubscribe(key);
- if (subscribe != null) {
- System.out.println("发送GPS消息");
- ParentPlatform parentPlatform = storager.queryParentPlatByServerGBId(platformId);
- if (parentPlatform == null || parentPlatform.isStatus()) {
- // TODO 暂时只处理视频流的回复,后续增加对国标设备的支持
- List<GbStream> gbStreams = storager.queryGbStreamListInPlatform(platformId);
- if (gbStreams.size() > 0) {
- for (GbStream gbStream : gbStreams) {
- String gbId = gbStream.getGbId();
- GPSMsgInfo gpsMsgInfo = redisCatchStorage.getGpsMsgInfo(gbId);
- if (gbStream.isStatus()) {
- if (gpsMsgInfo != null) {
- // 发送GPS消息
- sipCommanderForPlatform.sendMobilePosition(parentPlatform, gpsMsgInfo, subscribe);
- }else {
- // 没有在redis找到新的消息就使用数据库的消息
- gpsMsgInfo = new GPSMsgInfo();
- gpsMsgInfo.setId(gbId);
- gpsMsgInfo.setLat(gbStream.getLongitude());
- gpsMsgInfo.setLng(gbStream.getLongitude());
- // 发送GPS消息
- sipCommanderForPlatform.sendMobilePosition(parentPlatform, gpsMsgInfo, subscribe);
- }
- }
- }
- }
- }
- }
- }
- }
|