package cn.gistack.sm.hk.controller; import cn.gistack.sm.hk.constant.HkConstant; import cn.gistack.sm.hk.constant.ProtocolConstant; import cn.gistack.sm.hk.service.HkService; import cn.gistack.sm.hk.vo.HkVO; import com.alibaba.fastjson.JSONObject; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import org.springframework.web.bind.annotation.*; import java.util.Map; import static cn.gistack.sm.hk.util.GetCameraUtils.*; /** * @author zhongrj * @Description: 海康设备控制层 * @date 2023-03-30 */ @Slf4j @Api(tags = "海康设备") @RestController @RequestMapping("/hk/hk") @AllArgsConstructor public class HkController { private final HkService hkService; /** * 分页列表查询 * @param query 查询参数 * @return */ @ApiOperation(value = "海康设备-分页列表查询", notes = "海康设备-分页列表查询") @GetMapping(value = "/queryHkList") public R queryHkList(Query query) { String result = GetCameraResourcePage(query.getCurrent(), query.getSize(), HkConstant.cameras); JSONObject jsonObject1 = JSONObject.parseObject(result); // 查询海康设备列表并返回 return R.data(jsonObject1); } /** * 海康播放url查询(ws) * @param hk 查询参数 * @return */ @ApiOperation(value = "海康设备-海康播放url查询(ws)", notes = "海康设备-海康播放url查询(ws)") @GetMapping(value = "/queryHkPreviewUrl") public R queryHkPreviewUrl(HkVO hk) { String url = ""; // 获取海康播放url String result = GetCameraPreviewURL(HkConstant.previewURLs, hk.getCameraIndexCode(), ProtocolConstant.WS); if (null!=result) { JSONObject jsonObject = JSONObject.parseObject(result); Map map = (Map) jsonObject.get("data"); url = map.get("url").toString(); } // 查询海康设备列表并返回 return R.data(url); } /** * 海康播放url查询-可以传协议 * @param hk 查询参数 * @return */ @ApiOperation(value = "海康设备-海康播放url查询", notes = "海康设备-海康播放url查询") @GetMapping(value = "/queryHkPreviewUrlCommon") public R queryHkPreviewUrlCommon(HkVO hk) { String url = ""; // 获取海康播放url String result = GetCameraPreviewURL(HkConstant.previewURLs, hk.getCameraIndexCode(), hk.getProtocol()); if (null!=result) { JSONObject jsonObject = JSONObject.parseObject(result); Map map = (Map) jsonObject.get("data"); url = map.get("url").toString(); } // 查询海康设备列表并返回 return R.data(url); } /** * 海康播放url查询(Hls) * @param hk 查询参数 * @return */ @ApiOperation(value = "海康设备-海康播放url查询(Hls)", notes = "海康设备-海康播放url查询(Hls)") @GetMapping(value = "/queryHkPreviewUrlByHls") public R queryHkPreviewUrlByHls(HkVO hk) { String url = ""; // 获取海康播放url String result = GetCameraPreviewURL(HkConstant.previewURLs, hk.getCameraIndexCode(), ProtocolConstant.HLS); if (null!=result) { JSONObject jsonObject = JSONObject.parseObject(result); Map map = (Map) jsonObject.get("data"); url = map.get("url").toString(); } // 查询海康设备列表并返回 return R.data(url); } /** * 海康摄像头云台的控制(摄像头左右旋转画面) * @param hk 查询参数 * @return */ @ApiOperation(value = "海康设备-海康摄像头云台的控制", notes = "海康设备-海康摄像头云台的控制") @GetMapping(value = "/handleCameraPosition") public R handleCameraPosition(HkVO hk) { // 获取海康播放url String result = controlling(HkConstant.controllingURLs, hk.getCameraIndexCode(),hk.getAction(),hk.getCommand(),hk.getSpeed(),hk.getPresetIndex()); // 返回 return R.data(result); } /** * 海康摄像头电子放大 * @param hk 查询参数 * @return */ @ApiOperation(value = "海康设备-海康摄像头电子放大", notes = "海康设备-海康摄像头电子放大") @GetMapping(value = "/selZoom") public R selZoom(HkVO hk) { // 获取海康播放url String result = selZoomURLs(HkConstant.selZoomURLs, hk.getCameraIndexCode(),hk.getStartX(),hk.getStartY(),hk.getEndX(),hk.getEndY()); // 返回 return R.data(result); } /** * 查询监控点的预置点信息 * @param hk 查询参数 * @return */ @ApiOperation(value = "海康设备-查询监控点的预置点信息", notes = "海康设备-查询监控点的预置点信息") @GetMapping(value = "/presetsSearchesUrls") public R presetsSearchesUrls(HkVO hk) { // 获取海康播放url String result = presetsSearches(HkConstant.presetsSearchesUrls,hk.getCameraIndexCode()); // 返回 return R.data(result); } /** * 抓图 * @param hk 查询参数 * @return */ @ApiOperation(value = "海康设备-抓图", notes = "海康设备-抓图") @GetMapping(value = "/manualCapture") public R manualCapture(HkVO hk) { // 获取海康播放url String result = manualCaptureUrls(HkConstant.manualCaptureUrls, hk.getCameraIndexCode()); // 返回 return R.data(result); } /** * 懒加载树 * @param hk 查询参数 * @return */ @ApiOperation(value = "海康设备-懒加载树", notes = "海康设备-懒加载树") @GetMapping(value = "/lazy-tree") public R lazyTree(HkVO hk) { // 查询海康设备懒加载树并返回 return R.data(hkService.lazyTree(hk)); } /** * 查询监控统计数量 * @param hk 查询参数 * @return */ @ApiOperation(value = "海康设备-查询监控统计数量", notes = "海康设备-查询监控统计数量") @GetMapping(value = "/getHkStatisticData") public R getHkStatisticData(HkVO hk,Query query) { // 查询海康设备懒加载树并返回 return R.data(hkService.getHkStatisticData(hk,query)); } /** * 获取海康摄像头回放url * @param hk 查询参数 * @return */ @ApiOperation(value = "海康设备-获取海康摄像头回放url", notes = "海康设备-获取海康摄像头回放url") @GetMapping(value = "/playbackURLs") public R playbackURLs(HkVO hk) { /** * 组装请求参数 */ JSONObject jsonBody = new JSONObject(); jsonBody.put("cameraIndexCode", hk.getCameraIndexCode()); jsonBody.put("protocol", hk.getProtocol()); jsonBody.put("recordLocation", "1"); jsonBody.put("beginTime", hk.getBeginTime()); jsonBody.put("endTime", hk.getEndTime()); String body = jsonBody.toJSONString(); /** * 调用接口并返回数据 * post请求application/json类型参数; */ return R.data(common(HkConstant.playbackURLs, body)); } }