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,6 +143,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen
143 device.setGeoCoordSys("WGS84"); 143 device.setGeoCoordSys("WGS84");
144 device.setTreeType("CivilCode"); 144 device.setTreeType("CivilCode");
145 device.setDeviceId(deviceId); 145 device.setDeviceId(deviceId);
  146 + device.setOnline(0);
146 } 147 }
147 device.setIp(received); 148 device.setIp(received);
148 device.setPort(rPort); 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,10 +86,10 @@ public class DeviceServiceImpl implements IDeviceService {
86 redisCatchStorage.clearCatchByDeviceId(device.getDeviceId()); 86 redisCatchStorage.clearCatchByDeviceId(device.getDeviceId());
87 } 87 }
88 device.setUpdateTime(now); 88 device.setUpdateTime(now);
89 - device.setOnline(1);  
90 89
91 - // 第一次上线 90 + // 第一次上线 或则设备之前是离线状态--进行通道同步和设备信息查询
92 if (device.getCreateTime() == null) { 91 if (device.getCreateTime() == null) {
  92 + device.setOnline(1);
93 device.setCreateTime(now); 93 device.setCreateTime(now);
94 logger.info("[设备上线,首次注册]: {},查询设备信息以及通道信息", device.getDeviceId()); 94 logger.info("[设备上线,首次注册]: {},查询设备信息以及通道信息", device.getDeviceId());
95 deviceMapper.add(device); 95 deviceMapper.add(device);
@@ -97,8 +97,19 @@ public class DeviceServiceImpl implements IDeviceService { @@ -97,8 +97,19 @@ public class DeviceServiceImpl implements IDeviceService {
97 commander.deviceInfoQuery(device); 97 commander.deviceInfoQuery(device);
98 sync(device); 98 sync(device);
99 }else { 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,6 +136,8 @@ public class DeviceServiceImpl implements IDeviceService {
125 device.setOnline(0); 136 device.setOnline(0);
126 redisCatchStorage.updateDevice(device); 137 redisCatchStorage.updateDevice(device);
127 deviceMapper.update(device); 138 deviceMapper.update(device);
  139 + //进行通道离线
  140 + deviceChannelMapper.offlineByDeviceId(deviceId);
128 // 离线释放所有ssrc 141 // 离线释放所有ssrc
129 List<SsrcTransaction> ssrcTransactions = streamSession.getSsrcTransactionForAll(deviceId, null, null, null); 142 List<SsrcTransaction> ssrcTransactions = streamSession.getSsrcTransactionForAll(deviceId, null, null, null);
130 if (ssrcTransactions != null && ssrcTransactions.size() > 0) { 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,6 +140,9 @@ public interface DeviceChannelMapper {
140 @Update(value = {"UPDATE device_channel SET status=0 WHERE deviceId=#{deviceId} AND channelId=#{channelId}"}) 140 @Update(value = {"UPDATE device_channel SET status=0 WHERE deviceId=#{deviceId} AND channelId=#{channelId}"})
141 void offline(String deviceId, String channelId); 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 @Update(value = {"UPDATE device_channel SET status=1 WHERE deviceId=#{deviceId} AND channelId=#{channelId}"}) 146 @Update(value = {"UPDATE device_channel SET status=1 WHERE deviceId=#{deviceId} AND channelId=#{channelId}"})
144 void online(String deviceId, String channelId); 147 void online(String deviceId, String channelId);
145 148