From 0f58218badea86a5209ae7f1ccd60b7cb4b26eee Mon Sep 17 00:00:00 2001 From: panlinlin <648540858@qq.com> Date: 星期四, 25 二月 2021 18:10:02 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' into wvp-28181-2.0 --- src/main/java/com/genersoft/iot/vmp/vmanager/device/DeviceQuery.java | 87 +++++++++++++++++++++++++++++++++++++++---- 1 files changed, 78 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/device/DeviceController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/device/DeviceQuery.java similarity index 65% rename from src/main/java/com/genersoft/iot/vmp/vmanager/device/DeviceController.java rename to src/main/java/com/genersoft/iot/vmp/vmanager/device/DeviceQuery.java index 17d1e7d..997a43b 100644 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/device/DeviceController.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/device/DeviceQuery.java @@ -21,12 +21,13 @@ import javax.sip.message.Response; +@SuppressWarnings("rawtypes") @CrossOrigin @RestController @RequestMapping("/api") -public class DeviceController { +public class DeviceQuery { - private final static Logger logger = LoggerFactory.getLogger(DeviceController.class); + private final static Logger logger = LoggerFactory.getLogger(DeviceQuery.class); @Autowired private IVideoManagerStorager storager; @@ -77,11 +78,9 @@ int page, int count, @RequestParam(required = false) String query, @RequestParam(required = false) Boolean online, - @RequestParam(required = false) Boolean channelType - ){ - + @RequestParam(required = false) Boolean channelType) { if (logger.isDebugEnabled()) { - logger.debug("鏌ヨ鎵�鏈夎棰戣澶嘇PI璋冪敤"); + logger.debug("鏌ヨ瑙嗛璁惧閫氶亾API璋冪敤"); } if (StringUtils.isEmpty(query)) { query = null; @@ -135,8 +134,8 @@ json.put("deviceId", deviceId); return new ResponseEntity<>(json.toString(),HttpStatus.OK); } else { - logger.warn("璁惧棰勮API璋冪敤澶辫触锛�"); - return new ResponseEntity<String>("璁惧棰勮API璋冪敤澶辫触锛�", HttpStatus.INTERNAL_SERVER_ERROR); + logger.warn("璁惧淇℃伅鍒犻櫎API璋冪敤澶辫触锛�"); + return new ResponseEntity<String>("璁惧淇℃伅鍒犻櫎API璋冪敤澶辫触锛�", HttpStatus.INTERNAL_SERVER_ERROR); } } @@ -157,7 +156,7 @@ @RequestParam(required = false) Boolean channelType){ if (logger.isDebugEnabled()) { - logger.debug("鏌ヨ鎵�鏈夎棰戣澶嘇PI璋冪敤"); + logger.debug("鏌ヨ鎵�鏈夎棰戦�氶亾API璋冪敤"); } DeviceChannel deviceChannel = storager.queryChannel(deviceId,channelId); if (deviceChannel == null) { @@ -183,4 +182,74 @@ storager.updateDevice(device); return new ResponseEntity<>(null,HttpStatus.OK); } + + /** + * 璁惧鐘舵�佹煡璇㈣姹侫PI鎺ュ彛 + * + * @param deviceId + */ + @GetMapping("/devices/{deviceId}/status") + public DeferredResult<ResponseEntity<String>> deviceStatusApi(@PathVariable String deviceId) { + if (logger.isDebugEnabled()) { + logger.debug("璁惧鐘舵�佹煡璇PI璋冪敤"); + } + Device device = storager.queryVideoDevice(deviceId); + cmder.deviceStatusQuery(device, event -> { + Response response = event.getResponse(); + RequestMessage msg = new RequestMessage(); + msg.setId(DeferredResultHolder.CALLBACK_CMD_DEVICESTATUS + deviceId); + msg.setData(String.format("鑾峰彇璁惧鐘舵�佸け璐ワ紝閿欒鐮侊細 %s, %s", response.getStatusCode(), response.getReasonPhrase())); + resultHolder.invokeResult(msg); + }); + DeferredResult<ResponseEntity<String>> result = new DeferredResult<ResponseEntity<String>>(2*1000L); + result.onTimeout(()->{ + logger.warn(String.format("鑾峰彇璁惧鐘舵�佽秴鏃�")); + // 閲婃斁rtpserver + RequestMessage msg = new RequestMessage(); + msg.setId(DeferredResultHolder.CALLBACK_CMD_DEVICESTATUS + deviceId); + msg.setData("Timeout. Device did not response to this command."); + resultHolder.invokeResult(msg); + }); + resultHolder.put(DeferredResultHolder.CALLBACK_CMD_DEVICESTATUS + deviceId, result); + return result; + } + + /** + * 璁惧鎶ヨ鏌ヨ璇锋眰API鎺ュ彛 + * + * @param deviceId + */ + @GetMapping("/alarm/{deviceId}") + public DeferredResult<ResponseEntity<String>> alarmApi(@PathVariable String deviceId, + @RequestParam(required = false) String startPriority, + @RequestParam(required = false) String endPriority, + @RequestParam(required = false) String alarmMethod, + @RequestParam(required = false) String alarmType, + @RequestParam(required = false) String startTime, + @RequestParam(required = false) String endTime) { + if (logger.isDebugEnabled()) { + logger.debug("璁惧鎶ヨ鏌ヨAPI璋冪敤"); + } + Device device = storager.queryVideoDevice(deviceId); + cmder.alarmInfoQuery(device, startPriority, endPriority, alarmMethod, alarmType, startTime, endTime, event -> { + Response response = event.getResponse(); + RequestMessage msg = new RequestMessage(); + msg.setId(DeferredResultHolder.CALLBACK_CMD_ALARM + deviceId); + msg.setData(String.format("璁惧鎶ヨ鏌ヨ澶辫触锛岄敊璇爜锛� %s, %s", response.getStatusCode(), response.getReasonPhrase())); + resultHolder.invokeResult(msg); + }); + DeferredResult<ResponseEntity<String>> result = new DeferredResult<ResponseEntity<String >> (3 * 1000L); + result.onTimeout(()->{ + logger.warn(String.format("璁惧鎶ヨ鏌ヨ瓒呮椂")); + // 閲婃斁rtpserver + RequestMessage msg = new RequestMessage(); + msg.setId(DeferredResultHolder.CALLBACK_CMD_ALARM + deviceId); + msg.setData("璁惧鎶ヨ鏌ヨ瓒呮椂"); + resultHolder.invokeResult(msg); + }); + resultHolder.put(DeferredResultHolder.CALLBACK_CMD_ALARM + deviceId, result); + return result; + } + + } -- Gitblit v1.8.0