| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 | 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.SubscribeHolder;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 SubscribeHolder subscribeHolder;    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, SubscribeHolder subscribeInfo) {        this.redisCatchStorage = redisCatchStorage;        this.storager = storager;        this.platformId = platformId;        this.sn = sn;        this.key = key;        this.sipCommanderForPlatform = sipCommanderForPlatform;        this.subscribeHolder = subscribeInfo;    }    @Override    public void run() {        SubscribeInfo subscribe = subscribeHolder.getMobilePositionSubscribe(platformId);        if (subscribe != null) {            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.sendNotifyMobilePosition(parentPlatform, gpsMsgInfo, subscribe);                            }else {                                // 没有在redis找到新的消息就使用数据库的消息                                gpsMsgInfo = new GPSMsgInfo();                                gpsMsgInfo.setId(gbId);                                gpsMsgInfo.setLat(gbStream.getLongitude());                                gpsMsgInfo.setLng(gbStream.getLongitude());                                // 发送GPS消息                                sipCommanderForPlatform.sendNotifyMobilePosition(parentPlatform, gpsMsgInfo, subscribe);                            }                        }                    }                }            }        }    }}
 |