package com.genersoft.iot.vmp.vmanager.device; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.context.request.async.DeferredResult; import com.genersoft.iot.vmp.gb28181.bean.Device; import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder; import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander; import com.genersoft.iot.vmp.storager.IVideoManagerStorager; @RestController @RequestMapping("/api") public class DeviceController { private final static Logger logger = LoggerFactory.getLogger(DeviceController.class); @Autowired private IVideoManagerStorager storager; @Autowired private SIPCommander cmder; @Autowired private DeferredResultHolder resultHolder; @GetMapping("/devices/{deviceId}") public ResponseEntity devices(@PathVariable String deviceId){ if (logger.isDebugEnabled()) { logger.debug("查询视频设备API调用,deviceId:" + deviceId); } Device device = storager.queryVideoDevice(deviceId); return new ResponseEntity<>(device,HttpStatus.OK); } @GetMapping("/devices") public ResponseEntity> devices(){ if (logger.isDebugEnabled()) { logger.debug("查询所有视频设备API调用"); } List deviceList = storager.queryVideoDeviceList(null); return new ResponseEntity<>(deviceList,HttpStatus.OK); } @PostMapping("/devices/{deviceId}/sync") public DeferredResult> devicesSync(@PathVariable String deviceId){ if (logger.isDebugEnabled()) { logger.debug("设备信息同步API调用,deviceId:" + deviceId); } Device device = storager.queryVideoDevice(deviceId); cmder.catalogQuery(device); DeferredResult> result = new DeferredResult>(); resultHolder.put(DeferredResultHolder.CALLBACK_CMD_CATALOG+deviceId, result); return result; } }