panlinlin
2021-04-11 89244932c6185cd39e9a9f8aa8bf3acf99329335
src/main/java/com/genersoft/iot/vmp/vmanager/device/DeviceQuery.java
@@ -3,6 +3,7 @@
import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -21,10 +22,11 @@
import javax.sip.message.Response;
@Api(tags = "国标设备查询1", value = "国标设备查询")
@SuppressWarnings("rawtypes")
@CrossOrigin
@RestController
@RequestMapping("/api")
@RequestMapping("/api/device/query")
public class DeviceQuery {
   
   private final static Logger logger = LoggerFactory.getLogger(DeviceQuery.class);
@@ -40,7 +42,16 @@
   
   @Autowired
   private DeviceOffLineDetector offLineDetector;
   /**
    * 使用ID查询国标设备
    * @param deviceId 国标ID
    * @return 国标设备
    */
   @ApiOperation("使用ID查询国标设备")
   @ApiImplicitParams({
         @ApiImplicitParam(name = "deviceId", value = "设备ID", required = true),
   })
   @GetMapping("/devices/{deviceId}")
   public ResponseEntity<Device> devices(@PathVariable String deviceId){
      
@@ -51,7 +62,18 @@
      Device device = storager.queryVideoDevice(deviceId);
      return new ResponseEntity<>(device,HttpStatus.OK);
   }
   /**
    * 分页查询国标设备
    * @param page 当前页
    * @param count 每页查询数量
    * @return 分页国标列表
    */
   @ApiOperation("分页查询国标设备")
   @ApiImplicitParams({
         @ApiImplicitParam(name = "page", value = "当前页", required = true),
         @ApiImplicitParam(name = "count", value = "每页查询数量", required = true),
   })
   @GetMapping("/devices")
   public PageInfo<Device> devices(int page, int count){
      
@@ -73,7 +95,16 @@
    * @param channelType 设备 false/子目录 true
    * @return 通道列表
    */
   @ApiOperation("分页查询通道")
   @GetMapping("/devices/{deviceId}/channels")
   @ApiImplicitParams({
         @ApiImplicitParam(name="deviceId", value = "设备id", required = true),
         @ApiImplicitParam(name="page", value = "当前页", required = true),
         @ApiImplicitParam(name="count", value = "每页查询数量", required = true),
         @ApiImplicitParam(name="query", value = "查询内容"),
         @ApiImplicitParam(name="online", value = "是否在线"),
         @ApiImplicitParam(name="channelType", value = "设备/子目录-> false/true"),
   })
   public ResponseEntity<PageInfo> channels(@PathVariable String deviceId,
                                    int page, int count,
                                    @RequestParam(required = false) String query,
@@ -89,7 +120,16 @@
      PageInfo pageResult = storager.queryChannelsByDeviceId(deviceId, query, channelType, online, page, count);
      return new ResponseEntity<>(pageResult,HttpStatus.OK);
   }
   /**
    * 同步设备通道
    * @param deviceId 设备id
    * @return
    */
   @ApiOperation("同步设备通道")
   @ApiImplicitParams({
         @ApiImplicitParam(name="deviceId", value = "设备id", required = true),
   })
   @PostMapping("/devices/{deviceId}/sync")
   public DeferredResult<ResponseEntity<Device>> devicesSync(@PathVariable String deviceId){
      
@@ -117,8 +157,17 @@
        resultHolder.put(DeferredResultHolder.CALLBACK_CMD_CATALOG+deviceId, result);
        return result;
   }
   @PostMapping("/devices/{deviceId}/delete")
   /**
    * 移除设备
    * @param deviceId 设备id
    * @return
    */
   @ApiOperation("移除设备")
   @ApiImplicitParams({
         @ApiImplicitParam(name="deviceId", value = "设备id", required = true),
   })
   @DeleteMapping("/devices/{deviceId}/delete")
   public ResponseEntity<String> delete(@PathVariable String deviceId){
      
      if (logger.isDebugEnabled()) {
@@ -140,13 +189,27 @@
   }
   /**
    * 分页查询通道数
    * 分页查询子目录通道
    * @param deviceId 通道id
    * @param channelId 通道id
    * @param page 当前页
    * @param count 每页条数
    * @param query 查询内容
    * @param online 是否在线
    * @param channelType 通道类型
    * @return 子通道列表
    */
   @GetMapping("/subChannels/{deviceId}/{channelId}/channels")
   @ApiOperation("分页查询子目录通道")
   @ApiImplicitParams({
         @ApiImplicitParam(name="deviceId", value = "设备id", required = true),
         @ApiImplicitParam(name="channelId", value = "通道id", required = true),
         @ApiImplicitParam(name="page", value = "当前页", required = true),
         @ApiImplicitParam(name="count", value = "每页条数", required = true),
         @ApiImplicitParam(name="query", value = "查询内容"),
         @ApiImplicitParam(name="online", value = "是否在线"),
         @ApiImplicitParam(name="channelType", value = "通道类型, 子目录"),
   })
   @GetMapping("/sub_channels/{deviceId}/{channelId}/channels")
   public ResponseEntity<PageInfo> subChannels(@PathVariable String deviceId,
                                      @PathVariable String channelId,
                                      int page,
@@ -168,14 +231,36 @@
      return new ResponseEntity<>(pageResult,HttpStatus.OK);
   }
   /**
    * 更新通道信息
    * @param deviceId 设备id
    * @param channel 通道
    * @return
    */
   @ApiOperation("更新通道信息")
   @ApiImplicitParams({
         @ApiImplicitParam(name="deviceId", value = "设备id", required = true),
         @ApiImplicitParam(name="channel", value = "通道", required = true),
   })
   @PostMapping("/channel/update/{deviceId}")
   public ResponseEntity<PageInfo> updateChannel(@PathVariable String deviceId,DeviceChannel channel){
      storager.updateChannel(deviceId, channel);
      return new ResponseEntity<>(null,HttpStatus.OK);
   }
   @GetMapping("/devices/{deviceId}/transport/{streamMode}")
   @PostMapping("/devices/{deviceId}/transport/{streamMode}")
   /**
    * 修改数据流传输模式
    * @param deviceId 设备id
    * @param streamMode 数据流传输模式
    * @return
    */
   @ApiOperation("修改数据流传输模式")
   @ApiImplicitParams({
         @ApiImplicitParam(name = "deviceId", value = "设备id", required = true),
         @ApiImplicitParam(name = "streamMode", value = "数据流传输模式, 取值:" +
               "UDP(udp传输),TCP-ACTIVE(tcp主动模式,暂不支持),TCP-PASSIVE(tcp被动模式)"),
   })
   @PostMapping("/transport/{deviceId}/{streamMode}")
   public ResponseEntity<PageInfo> updateTransport(@PathVariable String deviceId, @PathVariable String streamMode){
      Device device = storager.queryVideoDevice(deviceId);
      device.setStreamMode(streamMode);
@@ -186,8 +271,12 @@
   /**
    * 设备状态查询请求API接口
    * 
    * @param deviceId
    * @param deviceId 设备id
    */
   @ApiOperation("设备状态查询")
   @ApiImplicitParams({
         @ApiImplicitParam(name = "deviceId", value = "设备id", required = true),
   })
   @GetMapping("/devices/{deviceId}/status")
   public DeferredResult<ResponseEntity<String>> deviceStatusApi(@PathVariable String deviceId) {
      if (logger.isDebugEnabled()) {
@@ -216,9 +305,25 @@
   /**
    * 设备报警查询请求API接口
    *
    * @param deviceId
    * @param deviceId 设备id
    * @param startPriority   报警起始级别(可选)
    * @param endPriority   报警终止级别(可选)
    * @param alarmMethod   报警方式条件(可选)
    * @param alarmType      报警类型
    * @param startTime      报警发生起始时间(可选)
    * @param endTime      报警发生终止时间(可选)
    * @return            true = 命令发送成功
    */
   @ApiOperation("设备报警查询")
   @ApiImplicitParams({
         @ApiImplicitParam(name = "deviceId", value = "设备id", required = true),
         @ApiImplicitParam(name = "startPriority", value = "报警起始级别"),
         @ApiImplicitParam(name = "endPriority", value = "报警终止级别"),
         @ApiImplicitParam(name = "alarmMethod", value = "报警方式条件"),
         @ApiImplicitParam(name = "alarmType", value = "报警类型"),
         @ApiImplicitParam(name = "startTime", value = "报警发生起始时间"),
         @ApiImplicitParam(name = "endTime", value = "报警发生终止时间"),
   })
   @GetMapping("/alarm/{deviceId}")
   public DeferredResult<ResponseEntity<String>> alarmApi(@PathVariable String deviceId,
                                          @RequestParam(required = false) String startPriority,