|  |  | 
 |  |  | package com.genersoft.iot.vmp.vmanager.gb28181.device; | 
 |  |  |  | 
 |  |  | import com.alibaba.fastjson.JSONObject; | 
 |  |  | import com.genersoft.iot.vmp.conf.DynamicTask; | 
 |  |  | 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.service.IDeviceService; | 
 |  |  | import com.genersoft.iot.vmp.storager.IRedisCatchStorage; | 
 |  |  | import com.genersoft.iot.vmp.storager.IVideoManagerStorager; | 
 |  |  | import com.genersoft.iot.vmp.vmanager.bean.DeviceChannelTree; | 
 |  |  | import com.genersoft.iot.vmp.vmanager.bean.WVPResult; | 
 |  |  | import com.github.pagehelper.PageInfo; | 
 |  |  | import io.swagger.annotations.Api; | 
 |  |  | 
 |  |  | import org.springframework.web.bind.annotation.*; | 
 |  |  | import org.springframework.web.context.request.async.DeferredResult; | 
 |  |  |  | 
 |  |  | import java.util.List; | 
 |  |  | import java.util.UUID; | 
 |  |  |  | 
 |  |  | @Api(tags = "国标设备查询", value = "国标设备查询") | 
 |  |  | 
 |  |  |  | 
 |  |  |    @Autowired | 
 |  |  |    private IDeviceService deviceService; | 
 |  |  |  | 
 |  |  |    @Autowired | 
 |  |  |    private DynamicTask dynamicTask; | 
 |  |  |  | 
 |  |  |    /** | 
 |  |  |     * 使用ID查询国标设备 | 
 |  |  | 
 |  |  |       if (logger.isDebugEnabled()) { | 
 |  |  |          logger.debug("设备信息删除API调用,deviceId:" + deviceId); | 
 |  |  |       } | 
 |  |  | 		 | 
 |  |  |       if (offLineDetector.isOnline(deviceId)) { | 
 |  |  |          return new ResponseEntity<String>("不允许删除在线设备!", HttpStatus.NOT_ACCEPTABLE); | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       // 清除redis记录 | 
 |  |  |       boolean isSuccess = storager.delete(deviceId); | 
 |  |  |       if (isSuccess) { | 
 |  |  |          redisCatchStorage.clearCatchByDeviceId(deviceId); | 
 |  |  |          // 停止此设备的订阅更新 | 
 |  |  |          dynamicTask.stop(deviceId); | 
 |  |  |          JSONObject json = new JSONObject(); | 
 |  |  |          json.put("deviceId", deviceId); | 
 |  |  |          return new ResponseEntity<>(json.toString(),HttpStatus.OK); | 
 |  |  | 
 |  |  |          if (!StringUtils.isEmpty(device.getCharset())) deviceInStore.setCharset(device.getCharset()); | 
 |  |  |          if (!StringUtils.isEmpty(device.getMediaServerId())) deviceInStore.setMediaServerId(device.getMediaServerId()); | 
 |  |  |  | 
 |  |  |          if ((deviceInStore.getSubscribeCycleForCatalog() <=0 && device.getSubscribeCycleForCatalog() > 0) | 
 |  |  |                || deviceInStore.getSubscribeCycleForCatalog() != device.getSubscribeCycleForCatalog()) { | 
 |  |  |             deviceInStore.setSubscribeCycleForCatalog(device.getSubscribeCycleForCatalog()); | 
 |  |  |             // 开启订阅 | 
 |  |  |             deviceService.addCatalogSubscribe(deviceInStore); | 
 |  |  |          } | 
 |  |  |          if (deviceInStore.getSubscribeCycleForCatalog() > 0 && device.getSubscribeCycleForCatalog() <= 0) { | 
 |  |  |             deviceInStore.setSubscribeCycleForCatalog(device.getSubscribeCycleForCatalog()); | 
 |  |  |             // 取消订阅 | 
 |  |  |             deviceService.removeCatalogSubscribe(deviceInStore); | 
 |  |  |          if (device.getSubscribeCycleForCatalog() > 0) { | 
 |  |  |             if (deviceInStore.getSubscribeCycleForCatalog() == 0 || deviceInStore.getSubscribeCycleForCatalog() != device.getSubscribeCycleForCatalog()) { | 
 |  |  |                // 开启订阅 | 
 |  |  |                deviceService.addCatalogSubscribe(deviceInStore); | 
 |  |  |             } | 
 |  |  |          }else if (device.getSubscribeCycleForCatalog() == 0) { | 
 |  |  |             if (deviceInStore.getSubscribeCycleForCatalog() != 0) { | 
 |  |  |                // 取消订阅 | 
 |  |  |                deviceService.removeCatalogSubscribe(deviceInStore); | 
 |  |  |             } | 
 |  |  |          } | 
 |  |  |  | 
 |  |  |          storager.updateDevice(deviceInStore); | 
 |  |  |          cmder.deviceInfoQuery(deviceInStore); | 
 |  |  |          storager.updateDevice(device); | 
 |  |  |          cmder.deviceInfoQuery(device); | 
 |  |  |       } | 
 |  |  |       WVPResult<String> result = new WVPResult<>(); | 
 |  |  |       result.setCode(0); | 
 |  |  | 
 |  |  |       return result; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |    @GetMapping("/{deviceId}/tree") | 
 |  |  |    @ApiOperation(value = "通道树形结构", notes = "通道树形结构") | 
 |  |  |    public WVPResult<List<DeviceChannelTree>> tree(@PathVariable String deviceId) { | 
 |  |  |       return WVPResult.Data(storager.tree(deviceId)); | 
 |  |  |    } | 
 |  |  | } |