|  |  | 
 |  |  | package com.genersoft.iot.vmp.web; | 
 |  |  |  | 
 |  |  | import com.alibaba.fastjson.JSON; | 
 |  |  | import com.alibaba.fastjson.JSONArray; | 
 |  |  | import com.alibaba.fastjson.JSONObject; | 
 |  |  | import com.genersoft.iot.vmp.common.PageResult; | 
 |  |  | import com.genersoft.iot.vmp.gb28181.bean.Device; | 
 |  |  | import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; | 
 |  |  | import com.genersoft.iot.vmp.gb28181.event.DeviceOffLineDetector; | 
 |  |  | 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; | 
 |  |  | import com.genersoft.iot.vmp.vmanager.device.DeviceController; | 
 |  |  | import com.github.pagehelper.PageInfo; | 
 |  |  | 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.stereotype.Controller; | 
 |  |  | import org.springframework.web.bind.annotation.*; | 
 |  |  |  | 
 |  |  | import java.util.List; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * 兼容LiveGBS的API:设备信息 | 
 |  |  |  * API兼容:设备信息 | 
 |  |  |  */ | 
 |  |  | @SuppressWarnings("unchecked") | 
 |  |  | @CrossOrigin | 
 |  |  | @RestController | 
 |  |  | @RequestMapping(value = "/api/v1/device") | 
 |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private IVideoManagerStorager storager; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private SIPCommander cmder; | 
 |  |  |     // @Autowired | 
 |  |  |     // private SIPCommander cmder; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private DeferredResultHolder resultHolder; | 
 |  |  |     // @Autowired | 
 |  |  |     // private DeferredResultHolder resultHolder; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private DeviceOffLineDetector offLineDetector; | 
 |  |  |     // @Autowired | 
 |  |  |     // private DeviceOffLineDetector offLineDetector; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 分页获取设备列表 TODO 现在直接返回,尚未实现分页 | 
 |  |  | 
 |  |  |                             @RequestParam(required = false)String q, | 
 |  |  |                             @RequestParam(required = false)Boolean online ){ | 
 |  |  |  | 
 |  |  |         if (logger.isDebugEnabled()) { | 
 |  |  |             logger.debug("查询所有视频设备API调用"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         logger.debug("查询所有视频设备API调用"); | 
 |  |  | //        if (logger.isDebugEnabled()) { | 
 |  |  | //            logger.debug("查询所有视频设备API调用"); | 
 |  |  | //        } | 
 |  |  |         JSONObject result = new JSONObject(); | 
 |  |  |         List<Device> devices; | 
 |  |  |         if (start == null || limit ==null) { | 
 |  |  |             devices = storager.queryVideoDeviceList(); | 
 |  |  |             result.put("DeviceCount", devices.size()); | 
 |  |  |         }else { | 
 |  |  |             PageResult<Device> deviceList = storager.queryVideoDeviceList(null, start/limit, limit); | 
 |  |  |             PageInfo<Device> deviceList = storager.queryVideoDeviceList(start/limit, limit); | 
 |  |  |             result.put("DeviceCount", deviceList.getTotal()); | 
 |  |  |             devices = deviceList.getData(); | 
 |  |  |             devices = deviceList.getList(); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         JSONArray deviceJSONList = new JSONArray(); | 
 |  |  | 
 |  |  |             deviceJsonObject.put("Online", device.getOnline() == 1); | 
 |  |  |             deviceJsonObject.put("Password", ""); | 
 |  |  |             deviceJsonObject.put("MediaTransport", device.getTransport()); | 
 |  |  |             deviceJsonObject.put("RemoteIP", device.getHost().getIp()); | 
 |  |  |             deviceJsonObject.put("RemotePort", device.getHost().getPort()); | 
 |  |  |             deviceJsonObject.put("RemoteIP", device.getIp()); | 
 |  |  |             deviceJsonObject.put("RemotePort", device.getPort()); | 
 |  |  |             deviceJsonObject.put("LastRegisterAt", ""); | 
 |  |  |             deviceJsonObject.put("LastKeepaliveAt", ""); | 
 |  |  |             deviceJsonObject.put("UpdatedAt", ""); | 
 |  |  | 
 |  |  |                                    @RequestParam(required = false)String q, | 
 |  |  |                                    @RequestParam(required = false)Boolean online ){ | 
 |  |  |  | 
 |  |  |         if (logger.isDebugEnabled()) { | 
 |  |  |             logger.debug("查询所有视频设备API调用"); | 
 |  |  |         } | 
 |  |  | //        if (logger.isDebugEnabled()) { | 
 |  |  | //            logger.debug("查询所有视频设备API调用"); | 
 |  |  | //        } | 
 |  |  |         JSONObject result = new JSONObject(); | 
 |  |  |         // 查询设备是否存在 | 
 |  |  |         Device device = storager.queryVideoDevice(serial); | 
 |  |  | 
 |  |  |             deviceChannels = storager.queryChannelsByDeviceId(serial); | 
 |  |  |             result.put("ChannelCount", deviceChannels.size()); | 
 |  |  |         }else { | 
 |  |  |             PageResult<DeviceChannel> pageResult = storager.queryChannelsByDeviceId(serial, null, null, null,start/limit, limit); | 
 |  |  |             PageInfo<DeviceChannel> pageResult = storager.queryChannelsByDeviceId(serial, null, null, null,start/limit, limit); | 
 |  |  |             result.put("ChannelCount", pageResult.getTotal()); | 
 |  |  |             deviceChannels = pageResult.getData(); | 
 |  |  |             deviceChannels = pageResult.getList(); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         JSONArray channleJSONList = new JSONArray(); |