| package com.ruoyi.device.camera.controller; | 
|   | 
| import javax.annotation.Resource; | 
| import javax.servlet.http.HttpServletResponse; | 
|   | 
| import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; | 
| import com.ruoyi.device.camera.domain.ArdCameras; | 
| import com.ruoyi.device.camera.domain.CameraCmd; | 
| import com.ruoyi.device.camera.service.IArdCamerasService; | 
| import com.ruoyi.device.hiksdk.service.impl.HikClientServiceImpl; | 
| import com.ruoyi.common.utils.poi.ExcelUtil; | 
| import com.ruoyi.inspect.service.IArdVideoInspectTaskService; | 
| import io.swagger.annotations.Api; | 
| import io.swagger.annotations.ApiOperation; | 
| import lombok.extern.slf4j.Slf4j; | 
| import org.springframework.security.access.prepost.PreAuthorize; | 
| import org.springframework.web.bind.annotation.GetMapping; | 
| import org.springframework.web.bind.annotation.PostMapping; | 
| import org.springframework.web.bind.annotation.PutMapping; | 
| import org.springframework.web.bind.annotation.DeleteMapping; | 
| import org.springframework.web.bind.annotation.PathVariable; | 
| import org.springframework.web.bind.annotation.RequestBody; | 
| import org.springframework.web.bind.annotation.RequestMapping; | 
| import org.springframework.web.bind.annotation.RestController; | 
| import com.ruoyi.common.annotation.Log; | 
| import com.ruoyi.common.core.controller.BaseController; | 
| import com.ruoyi.common.core.domain.AjaxResult; | 
| import com.ruoyi.common.enums.BusinessType; | 
| import com.ruoyi.common.core.page.TableDataInfo; | 
| import java.util.*; | 
|   | 
| /** | 
|  * 相机设备Controller | 
|  * | 
|  * @author ruoyi | 
|  * @date 2023-01-31 | 
|  */ | 
| @Slf4j(topic = "hikSdk") | 
| @RestController | 
| @RequestMapping("/device/cameras") | 
| @Api(tags = "相机管理接口") | 
| public class ArdCamerasController extends BaseController { | 
|     @Resource | 
|     private HikClientServiceImpl sdk; | 
|     @Resource | 
|     private IArdCamerasService ardCamerasService; | 
|     @Resource | 
|     private IArdVideoInspectTaskService ardVideoInspectTaskService; | 
|   | 
|     /** | 
|      * 查询相机设备列表 | 
|      */ | 
|     @PreAuthorize("@ss.hasPermi('device:cameras:list')") | 
|     @GetMapping("/list") | 
|     @ApiOperation("查询相机设备列表") | 
|     public TableDataInfo list(ArdCameras ardCamera) { | 
|         startPage(); | 
|         List<ArdCameras> list = ardCamerasService.selectArdCamerasList(ardCamera); | 
|         return getDataTable(list); | 
|     } | 
|   | 
|     /** | 
|      * 导出相机设备列表 | 
|      */ | 
|     @ApiOperation("导出相机设备列表") | 
|     @PreAuthorize("@ss.hasPermi('device:cameras:export')") | 
|     @Log(title = "相机设备", businessType = BusinessType.EXPORT) | 
|     @PostMapping("/export") | 
|     public void export(HttpServletResponse response, ArdCameras ardCamera) { | 
|         List<ArdCameras> list = ardCamerasService.selectArdCamerasList(ardCamera); | 
|         ExcelUtil<ArdCameras> util = new ExcelUtil<>(ArdCameras.class); | 
|         util.exportExcel(response, list, "相机设备数据"); | 
|     } | 
|   | 
|     /** | 
|      * 获取相机设备详细信息 | 
|      */ | 
|     @ApiOperation("获取相机设备详细信息") | 
|     @PreAuthorize("@ss.hasPermi('device:cameras:query')") | 
|     @GetMapping(value = "/{id}") | 
|     public AjaxResult getInfo(@PathVariable("id") String id) { | 
|         return success(ardCamerasService.selectArdCamerasById(id)); | 
|     } | 
|   | 
|     /** | 
|      * 新增相机设备 | 
|      */ | 
|     @ApiOperation("新增相机设备") | 
|     @PreAuthorize("@ss.hasPermi('device:cameras:add')") | 
|     @Log(title = "相机设备", businessType = BusinessType.INSERT) | 
|     @PostMapping | 
|     public AjaxResult add(@RequestBody ArdCameras camera) { | 
|         //注销 | 
|         sdk.loginOut(camera.getId()); | 
|         //登录 | 
|         sdk.login(camera); | 
|         return toAjax(ardCamerasService.insertArdCameras(camera)); | 
|     } | 
|   | 
|     /** | 
|      * 修改相机设备 | 
|      */ | 
|     @ApiOperation("修改相机设备") | 
|     @PreAuthorize("@ss.hasPermi('device:cameras:edit')") | 
|     @Log(title = "相机设备", businessType = BusinessType.UPDATE) | 
|     @PutMapping | 
|     public AjaxResult edit(@RequestBody ArdCameras camera) { | 
|         int i = ardCamerasService.updateArdCameras(camera); | 
|         if (i > 0) { | 
|             ArdCameras cameras = ardCamerasService.selectArdCamerasById(camera.getId()); | 
|             sdk.loginOut(cameras.getId()); | 
|             sdk.login(cameras); | 
|         } | 
|         return toAjax(i); | 
|     } | 
|   | 
|     /** | 
|      * 删除相机设备 | 
|      */ | 
|     @ApiOperation("删除相机设备") | 
|     @PreAuthorize("@ss.hasPermi('device:cameras:remove')") | 
|     @Log(title = "相机设备", businessType = BusinessType.DELETE) | 
|     @DeleteMapping("/{ids}") | 
|     public AjaxResult remove(@PathVariable String[] ids) { | 
|         for (String id : ids) { | 
|             sdk.loginOut(id); | 
|         } | 
|         return toAjax(ardCamerasService.deleteArdCamerasByIds(ids)); | 
|     } | 
|   | 
|     @GetMapping("/options") | 
|     @ApiOperation("选择相机数据") | 
|     public List options(ArdCameras ardCameras) { | 
|         List<ArdCameras> list = ardCamerasService.findOptions(ardCameras); | 
|         List options = new ArrayList(); | 
|         for (ArdCameras item : list) { | 
|             Map option = new HashMap(); | 
|             option.put("value", item.getId()); | 
|             option.put("label", item.getName()); | 
|             option.put("channel", item.getChannel()); | 
|             List timeList = ardVideoInspectTaskService.getCameraIdleTimeList(item.getId()); | 
|             option.put("idleTimeList", timeList);//空闲时间段 | 
|             options.add(option); | 
|         } | 
|         return options; | 
|     } | 
|     @GetMapping("/getDeptAndCamera") | 
|     @ApiOperation("获取部门和相机") | 
|     public AjaxResult getDeptAndCamera() | 
|     { | 
|         Map deptAndCamera = ardCamerasService.getChildDeptAndCamera(true); | 
|         return AjaxResult.success(deptAndCamera); | 
|     } | 
|     @GetMapping("/getDeptAndCameraWithCheckBox") | 
|     @ApiOperation("获取部门和相机(开启复选框)") | 
|     public AjaxResult getDeptAndCameraWithCheckBox() | 
|     { | 
|         Map deptAndCamera = ardCamerasService.getChildDeptAndCamera(false); | 
|         return AjaxResult.success(deptAndCamera); | 
|     } | 
|     @PostMapping("/getNearCamerasBycoordinate") | 
|     @ApiOperation("获取附近的相机") | 
|     @ApiOperationSupport(includeParameters = {"targetPosition"}) | 
|     public AjaxResult getNearCamerasBycoordinate(@RequestBody CameraCmd cmd) | 
|     { | 
|         TreeMap nearCamerasBycoordinate = ardCamerasService.getNearCamerasBycoordinate(cmd); | 
|         return AjaxResult.success(nearCamerasBycoordinate); | 
|     } | 
| } |