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 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 list = ardCamerasService.selectArdCamerasList(ardCamera); ExcelUtil 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 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); } }