Commit eefe6f4c8db294e1374e9c2e257dd736dc320343

Authored by 648540858
Committed by GitHub
2 parents a51b4111 f66bf823

Merge pull request #549 from TristingChen/fix-channel_status

优化----设备下线,通道状态也切换至离线状态
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java
... ... @@ -143,6 +143,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen
143 143 device.setGeoCoordSys("WGS84");
144 144 device.setTreeType("CivilCode");
145 145 device.setDeviceId(deviceId);
  146 + device.setOnline(0);
146 147 }
147 148 device.setIp(received);
148 149 device.setPort(rPort);
... ...
src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java
... ... @@ -86,10 +86,10 @@ public class DeviceServiceImpl implements IDeviceService {
86 86 redisCatchStorage.clearCatchByDeviceId(device.getDeviceId());
87 87 }
88 88 device.setUpdateTime(now);
89   - device.setOnline(1);
90 89  
91   - // 第一次上线
  90 + // 第一次上线 或则设备之前是离线状态--进行通道同步和设备信息查询
92 91 if (device.getCreateTime() == null) {
  92 + device.setOnline(1);
93 93 device.setCreateTime(now);
94 94 logger.info("[设备上线,首次注册]: {},查询设备信息以及通道信息", device.getDeviceId());
95 95 deviceMapper.add(device);
... ... @@ -97,8 +97,19 @@ public class DeviceServiceImpl implements IDeviceService {
97 97 commander.deviceInfoQuery(device);
98 98 sync(device);
99 99 }else {
100   - deviceMapper.update(device);
101   - redisCatchStorage.updateDevice(device);
  100 + if(device.getOnline() == 0){
  101 + device.setOnline(1);
  102 + device.setCreateTime(now);
  103 + logger.info("[设备上线,离线状态下重新注册]: {},查询设备信息以及通道信息", device.getDeviceId());
  104 + deviceMapper.update(device);
  105 + redisCatchStorage.updateDevice(device);
  106 + commander.deviceInfoQuery(device);
  107 + sync(device);
  108 + }else {
  109 + deviceMapper.update(device);
  110 + redisCatchStorage.updateDevice(device);
  111 + }
  112 +
102 113 }
103 114  
104 115 // 上线添加订阅
... ... @@ -125,6 +136,8 @@ public class DeviceServiceImpl implements IDeviceService {
125 136 device.setOnline(0);
126 137 redisCatchStorage.updateDevice(device);
127 138 deviceMapper.update(device);
  139 + //进行通道离线
  140 + deviceChannelMapper.offlineByDeviceId(deviceId);
128 141 // 离线释放所有ssrc
129 142 List<SsrcTransaction> ssrcTransactions = streamSession.getSsrcTransactionForAll(deviceId, null, null, null);
130 143 if (ssrcTransactions != null && ssrcTransactions.size() > 0) {
... ...
src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java
... ... @@ -140,6 +140,9 @@ public interface DeviceChannelMapper {
140 140 @Update(value = {"UPDATE device_channel SET status=0 WHERE deviceId=#{deviceId} AND channelId=#{channelId}"})
141 141 void offline(String deviceId, String channelId);
142 142  
  143 + @Update(value = {"UPDATE device_channel SET status=0 WHERE deviceId=#{deviceId}"})
  144 + void offlineByDeviceId(String deviceId);
  145 +
143 146 @Update(value = {"UPDATE device_channel SET status=1 WHERE deviceId=#{deviceId} AND channelId=#{channelId}"})
144 147 void online(String deviceId, String channelId);
145 148  
... ...