package com.ruoyi.device.camera.controller; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import com.ruoyi.device.camera.domain.ArdCameras; import com.ruoyi.device.camera.service.IArdCamerasService; import com.ruoyi.device.hiksdk.service.impl.HikClientServiceImpl; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.system.service.ISysDeptService; 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.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 相机设备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; /** * 查询相机设备列表 */ @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()); //登录 camera = sdk.login(camera); if (camera.getLoginId() >= 0) { log.info("相机" + camera.getIp() + ":" + camera.getPort() + "登录成功:" + camera.getLoginId()); camera.setUpdateBy(SecurityUtils.getUsername()); ardCamerasService.updateArdCameras(camera); } else { log.info("相机" + camera.getIp() + ":" + camera.getPort() + "登录失败:" + camera.getLoginId()); } 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()); camera = sdk.login(cameras); if (camera.getLoginId() >= 0) { log.info("相机" + camera.getIp() + ":" + camera.getPort() + "登录成功:" + camera.getLoginId()); ardCamerasService.updateArdCameras(camera); } else { log.info("相机" + camera.getIp() + ":" + camera.getPort() + "登录失败:" + camera.getLoginId()); } } 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()); // option.put("description", item.getOilProduction()); options.add(option); } return options; } @GetMapping("/getDeptAndCamera") @ApiOperation("获取部门和相机") public AjaxResult getDeptAndCamera() { Map deptAndCamera = ardCamerasService.getChildDeptAndCamera(); return AjaxResult.success(deptAndCamera); } }