Commit a030d00c8819612de2c280b75abdc90573eb52ce

Authored by 648540858
1 parent 3cd1378d

修复代码

src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/DeviceInfoResponseMessageHandler.java
@@ -10,6 +10,7 @@ import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage; @@ -10,6 +10,7 @@ import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage;
10 import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent; 10 import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent;
11 import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessageHandler; 11 import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessageHandler;
12 import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.response.ResponseMessageHandler; 12 import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.response.ResponseMessageHandler;
  13 +import com.genersoft.iot.vmp.service.IDeviceService;
13 import com.genersoft.iot.vmp.storager.IRedisCatchStorage; 14 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
14 import com.genersoft.iot.vmp.storager.IVideoManagerStorage; 15 import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
15 import org.dom4j.DocumentException; 16 import org.dom4j.DocumentException;
@@ -56,6 +57,9 @@ public class DeviceInfoResponseMessageHandler extends SIPRequestProcessorParent @@ -56,6 +57,9 @@ public class DeviceInfoResponseMessageHandler extends SIPRequestProcessorParent
56 @Autowired 57 @Autowired
57 private EventPublisher publisher; 58 private EventPublisher publisher;
58 59
  60 + @Autowired
  61 + private IDeviceService deviceService;
  62 +
59 @Override 63 @Override
60 public void afterPropertiesSet() throws Exception { 64 public void afterPropertiesSet() throws Exception {
61 responseMessageHandler.addHandler(cmdType, this); 65 responseMessageHandler.addHandler(cmdType, this);
@@ -82,7 +86,8 @@ public class DeviceInfoResponseMessageHandler extends SIPRequestProcessorParent @@ -82,7 +86,8 @@ public class DeviceInfoResponseMessageHandler extends SIPRequestProcessorParent
82 if (StringUtils.isEmpty(device.getStreamMode())) { 86 if (StringUtils.isEmpty(device.getStreamMode())) {
83 device.setStreamMode("UDP"); 87 device.setStreamMode("UDP");
84 } 88 }
85 - storager.updateDevice(device); 89 + deviceService.updateDevice(device);
  90 +// storager.updateDevice(device);
86 91
87 RequestMessage msg = new RequestMessage(); 92 RequestMessage msg = new RequestMessage();
88 msg.setKey(key); 93 msg.setKey(key);
src/main/java/com/genersoft/iot/vmp/service/IDeviceService.java
@@ -104,4 +104,10 @@ public interface IDeviceService { @@ -104,4 +104,10 @@ public interface IDeviceService {
104 * @return 设备信息 104 * @return 设备信息
105 */ 105 */
106 Device getDeviceByHostAndPort(String host, int port); 106 Device getDeviceByHostAndPort(String host, int port);
  107 +
  108 + /**
  109 + * 更新设备
  110 + * @param device 设备信息
  111 + */
  112 + void updateDevice(Device device);
107 } 113 }
src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java
@@ -21,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired; @@ -21,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
21 import org.springframework.beans.factory.annotation.Qualifier; 21 import org.springframework.beans.factory.annotation.Qualifier;
22 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; 22 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
23 import org.springframework.stereotype.Service; 23 import org.springframework.stereotype.Service;
  24 +import org.springframework.util.StringUtils;
24 25
25 import javax.sip.DialogState; 26 import javax.sip.DialogState;
26 import javax.sip.TimeoutEvent; 27 import javax.sip.TimeoutEvent;
@@ -248,4 +249,61 @@ public class DeviceServiceImpl implements IDeviceService { @@ -248,4 +249,61 @@ public class DeviceServiceImpl implements IDeviceService {
248 public Device getDeviceByHostAndPort(String host, int port) { 249 public Device getDeviceByHostAndPort(String host, int port) {
249 return deviceMapper.getDeviceByHostAndPort(host, port); 250 return deviceMapper.getDeviceByHostAndPort(host, port);
250 } 251 }
  252 +
  253 + @Override
  254 + public void updateDevice(Device device) {
  255 +
  256 + Device deviceInStore = deviceMapper.getDeviceByDeviceId(device.getDeviceId());
  257 + if (deviceInStore == null) {
  258 + logger.warn("更新设备时未找到设备信息");
  259 + return;
  260 + }
  261 + if (!StringUtils.isEmpty(device.getName())) {
  262 + deviceInStore.setName(device.getName());
  263 + }
  264 + if (!StringUtils.isEmpty(device.getCharset())) {
  265 + deviceInStore.setCharset(device.getCharset());
  266 + }
  267 + if (!StringUtils.isEmpty(device.getMediaServerId())) {
  268 + deviceInStore.setMediaServerId(device.getMediaServerId());
  269 + }
  270 +
  271 + // 目录订阅相关的信息
  272 + if (device.getSubscribeCycleForCatalog() > 0) {
  273 + if (deviceInStore.getSubscribeCycleForCatalog() == 0 || deviceInStore.getSubscribeCycleForCatalog() != device.getSubscribeCycleForCatalog()) {
  274 + deviceInStore.setSubscribeCycleForCatalog(device.getSubscribeCycleForCatalog());
  275 + // 开启订阅
  276 + addCatalogSubscribe(deviceInStore);
  277 + }
  278 + }else if (device.getSubscribeCycleForCatalog() == 0) {
  279 + if (deviceInStore.getSubscribeCycleForCatalog() != 0) {
  280 + deviceInStore.setSubscribeCycleForCatalog(device.getSubscribeCycleForCatalog());
  281 + // 取消订阅
  282 + removeCatalogSubscribe(deviceInStore);
  283 + }
  284 + }
  285 +
  286 + // 移动位置订阅相关的信息
  287 + if (device.getSubscribeCycleForMobilePosition() > 0) {
  288 + if (deviceInStore.getSubscribeCycleForMobilePosition() == 0 || deviceInStore.getSubscribeCycleForMobilePosition() != device.getSubscribeCycleForMobilePosition()) {
  289 + deviceInStore.setMobilePositionSubmissionInterval(device.getMobilePositionSubmissionInterval());
  290 + deviceInStore.setSubscribeCycleForMobilePosition(device.getSubscribeCycleForMobilePosition());
  291 + // 开启订阅
  292 + addMobilePositionSubscribe(deviceInStore);
  293 + }
  294 + }else if (device.getSubscribeCycleForMobilePosition() == 0) {
  295 + if (deviceInStore.getSubscribeCycleForMobilePosition() != 0) {
  296 + // 取消订阅
  297 + removeMobilePositionSubscribe(deviceInStore);
  298 + }
  299 + }
  300 +
  301 + String now = DateUtil.getNow();
  302 + device.setUpdateTime(now);
  303 + device.setCharset(device.getCharset().toUpperCase());
  304 + device.setUpdateTime(DateUtil.getNow());
  305 + if (deviceMapper.update(device) > 0) {
  306 + redisCatchStorage.updateDevice(device);
  307 + }
  308 + }
251 } 309 }
src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorage.java
@@ -25,22 +25,6 @@ public interface IVideoManagerStorage { @@ -25,22 +25,6 @@ public interface IVideoManagerStorage {
25 * @return true:存在 false:不存在 25 * @return true:存在 false:不存在
26 */ 26 */
27 public boolean exists(String deviceId); 27 public boolean exists(String deviceId);
28 -  
29 - /**  
30 - * 视频设备创建  
31 - *  
32 - * @param device 设备对象  
33 - * @return true:创建成功 false:创建失败  
34 - */  
35 - public boolean create(Device device);  
36 -  
37 - /**  
38 - * 视频设备更新  
39 - *  
40 - * @param device 设备对象  
41 - * @return true:创建成功 false:创建失败  
42 - */  
43 - public boolean updateDevice(Device device);  
44 28
45 /** 29 /**
46 * 添加设备通道 30 * 添加设备通道
src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java
@@ -102,43 +102,6 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage { @@ -102,43 +102,6 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage {
102 return deviceMapper.getDeviceByDeviceId(deviceId) != null; 102 return deviceMapper.getDeviceByDeviceId(deviceId) != null;
103 } 103 }
104 104
105 - /**  
106 - * 视频设备创建  
107 - *  
108 - * @param device 设备对象  
109 - * @return true:创建成功 false:创建失败  
110 - */  
111 - @Override  
112 - public synchronized boolean create(Device device) {  
113 - redisCatchStorage.updateDevice(device);  
114 - return deviceMapper.add(device) > 0;  
115 - }  
116 -  
117 -  
118 -  
119 - /**  
120 - * 视频设备更新  
121 - *  
122 - * @param device 设备对象  
123 - * @return true:更新成功 false:更新失败  
124 - */  
125 - @Override  
126 - public synchronized boolean updateDevice(Device device) {  
127 - String now = DateUtil.getNow();  
128 - device.setUpdateTime(now);  
129 - Device deviceByDeviceId = deviceMapper.getDeviceByDeviceId(device.getDeviceId());  
130 - device.setCharset(device.getCharset().toUpperCase());  
131 - if (deviceByDeviceId == null) {  
132 - device.setCreateTime(now);  
133 - redisCatchStorage.updateDevice(device);  
134 - return deviceMapper.add(device) > 0;  
135 - }else {  
136 - redisCatchStorage.updateDevice(device);  
137 -  
138 - return deviceMapper.update(device) > 0;  
139 - }  
140 - }  
141 -  
142 @Override 105 @Override
143 public synchronized void updateChannel(String deviceId, DeviceChannel channel) { 106 public synchronized void updateChannel(String deviceId, DeviceChannel channel) {
144 String channelId = channel.getChannelId(); 107 String channelId = channel.getChannelId();
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/MobilePosition/MobilePositionController.java
@@ -169,7 +169,7 @@ public class MobilePositionController { @@ -169,7 +169,7 @@ public class MobilePositionController {
169 Device device = storager.queryVideoDevice(deviceId); 169 Device device = storager.queryVideoDevice(deviceId);
170 device.setSubscribeCycleForMobilePosition(Integer.parseInt(expires)); 170 device.setSubscribeCycleForMobilePosition(Integer.parseInt(expires));
171 device.setMobilePositionSubmissionInterval(Integer.parseInt(interval)); 171 device.setMobilePositionSubmissionInterval(Integer.parseInt(interval));
172 - storager.updateDevice(device); 172 + deviceService.updateDevice(device);
173 String result = msg; 173 String result = msg;
174 if (deviceService.removeMobilePositionSubscribe(device)) { 174 if (deviceService.removeMobilePositionSubscribe(device)) {
175 result += ",成功"; 175 result += ",成功";
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java
@@ -288,7 +288,8 @@ public class DeviceQuery { @@ -288,7 +288,8 @@ public class DeviceQuery {
288 public ResponseEntity<PageInfo> updateTransport(@PathVariable String deviceId, @PathVariable String streamMode){ 288 public ResponseEntity<PageInfo> updateTransport(@PathVariable String deviceId, @PathVariable String streamMode){
289 Device device = storager.queryVideoDevice(deviceId); 289 Device device = storager.queryVideoDevice(deviceId);
290 device.setStreamMode(streamMode); 290 device.setStreamMode(streamMode);
291 - storager.updateDevice(device); 291 +// storager.updateDevice(device);
  292 + deviceService.updateDevice(device);
292 return new ResponseEntity<>(null,HttpStatus.OK); 293 return new ResponseEntity<>(null,HttpStatus.OK);
293 } 294 }
294 295
@@ -305,51 +306,12 @@ public class DeviceQuery { @@ -305,51 +306,12 @@ public class DeviceQuery {
305 public ResponseEntity<WVPResult<String>> updateDevice(Device device){ 306 public ResponseEntity<WVPResult<String>> updateDevice(Device device){
306 307
307 if (device != null && device.getDeviceId() != null) { 308 if (device != null && device.getDeviceId() != null) {
308 - Device deviceInStore = storager.queryVideoDevice(device.getDeviceId());  
309 - if (!StringUtils.isEmpty(device.getName())) {  
310 - deviceInStore.setName(device.getName());  
311 - }  
312 - if (!StringUtils.isEmpty(device.getCharset())) {  
313 - deviceInStore.setCharset(device.getCharset());  
314 - }  
315 - if (!StringUtils.isEmpty(device.getMediaServerId())) {  
316 - deviceInStore.setMediaServerId(device.getMediaServerId());  
317 - }  
318 -  
319 - // 目录订阅相关的信息  
320 - if (device.getSubscribeCycleForCatalog() > 0) {  
321 - if (deviceInStore.getSubscribeCycleForCatalog() == 0 || deviceInStore.getSubscribeCycleForCatalog() != device.getSubscribeCycleForCatalog()) {  
322 - deviceInStore.setSubscribeCycleForCatalog(device.getSubscribeCycleForCatalog());  
323 - // 开启订阅  
324 - deviceService.addCatalogSubscribe(deviceInStore);  
325 - }  
326 - }else if (device.getSubscribeCycleForCatalog() == 0) {  
327 - if (deviceInStore.getSubscribeCycleForCatalog() != 0) {  
328 - deviceInStore.setSubscribeCycleForCatalog(device.getSubscribeCycleForCatalog());  
329 - // 取消订阅  
330 - deviceService.removeCatalogSubscribe(deviceInStore);  
331 - }  
332 - }  
333 309
334 - // 移动位置订阅相关的信息  
335 - if (device.getSubscribeCycleForMobilePosition() > 0) {  
336 - if (deviceInStore.getSubscribeCycleForMobilePosition() == 0 || deviceInStore.getSubscribeCycleForMobilePosition() != device.getSubscribeCycleForMobilePosition()) {  
337 - deviceInStore.setMobilePositionSubmissionInterval(device.getMobilePositionSubmissionInterval());  
338 - deviceInStore.setSubscribeCycleForMobilePosition(device.getSubscribeCycleForMobilePosition());  
339 - // 开启订阅  
340 - deviceService.addMobilePositionSubscribe(deviceInStore);  
341 - }  
342 - }else if (device.getSubscribeCycleForMobilePosition() == 0) {  
343 - if (deviceInStore.getSubscribeCycleForMobilePosition() != 0) {  
344 - // 取消订阅  
345 - deviceService.removeMobilePositionSubscribe(deviceInStore);  
346 - }  
347 - }  
348 310
349 // TODO 报警订阅相关的信息 311 // TODO 报警订阅相关的信息
350 312
351 - storager.updateDevice(device);  
352 - cmder.deviceInfoQuery(device); 313 + deviceService.updateDevice(device);
  314 +// cmder.deviceInfoQuery(device);
353 } 315 }
354 WVPResult<String> result = new WVPResult<>(); 316 WVPResult<String> result = new WVPResult<>();
355 result.setCode(0); 317 result.setCode(0);