CameraController.java 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. package com.ruoyi.web.controller.camera;
  2. import com.alibaba.fastjson2.JSONObject;
  3. import com.ruoyi.alarm.Alarm;
  4. import com.ruoyi.common.annotation.Log;
  5. import com.ruoyi.common.core.controller.BaseController;
  6. import com.ruoyi.common.core.domain.AjaxResult;
  7. import com.ruoyi.common.core.page.TableDataInfo;
  8. import com.ruoyi.common.enums.BusinessType;
  9. import com.ruoyi.common.utils.StringUtils;
  10. import com.ruoyi.common.utils.poi.ExcelUtil;
  11. import com.ruoyi.hksdk.HCNetSDK;
  12. import com.ruoyi.system.domain.EquipmentConfiguration;
  13. import com.ruoyi.system.domain.OpeningDoorRecord;
  14. import com.ruoyi.system.domain.PersonnelManagement;
  15. import com.ruoyi.system.domain.vo.CameraInfoVo;
  16. import com.ruoyi.system.service.CameraService;
  17. import com.ruoyi.system.service.IEquipmentConfigurationService;
  18. import com.ruoyi.system.service.IOpeningDoorRecordService;
  19. import com.ruoyi.system.service.IPersonnelManagementService;
  20. import com.sun.jna.Pointer;
  21. import org.apache.commons.lang3.ObjectUtils;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.security.access.prepost.PreAuthorize;
  24. import org.springframework.web.bind.annotation.*;
  25. import javax.servlet.http.HttpServletResponse;
  26. import java.util.List;
  27. /**
  28. * 安防管理Controller
  29. *
  30. * @author ruoyi
  31. * @date 2024-02-28
  32. */
  33. @RestController
  34. @RequestMapping("/camera")
  35. public class CameraController extends BaseController {
  36. @Autowired
  37. private CameraService cameraService;
  38. @Autowired
  39. private IEquipmentConfigurationService equipmentConfigurationService;
  40. @Autowired
  41. private IOpeningDoorRecordService openingDoorRecordService;
  42. /**
  43. * 查询安防设备列表
  44. */
  45. @PreAuthorize("@ss.hasPermi('system:camera:list')")
  46. @GetMapping("/list")
  47. public AjaxResult list(CameraInfoVo cameraInfoVo) {
  48. return cameraService.selectCameraList(cameraInfoVo);
  49. }
  50. /**
  51. * 获取设备视频地址
  52. */
  53. @PreAuthorize("@ss.hasPermi('system:camera:video')")
  54. @GetMapping("/video/{cameraIndexCode}")
  55. public AjaxResult video(@PathVariable String cameraIndexCode) {
  56. return cameraService.video(cameraIndexCode);
  57. }
  58. /**
  59. * 设备关闭
  60. */
  61. @GetMapping("/video/closeDz")
  62. @PreAuthorize("@ss.hasPermi('system:camera:closeDz')")
  63. public AjaxResult closeDz(EquipmentConfiguration equipmentConfiguration) {
  64. equipmentConfiguration = equipmentConfigurationService.selectEquipmentConfigurationByEquipmentName(equipmentConfiguration.getEquipmentName());
  65. if(StringUtils.isEmpty(equipmentConfiguration.getEquipmentName())){
  66. return AjaxResult.error("设备列表暂无当前设备");
  67. }
  68. String ip = equipmentConfiguration.getEquipmentIp();
  69. short prot = (short) Short.parseShort(equipmentConfiguration.getEquipmentPort());
  70. String login = equipmentConfiguration.getLoginName();
  71. String pwd = equipmentConfiguration.getLoginPwd();
  72. int tdh = Alarm.login_V40( ip, prot, login, pwd);; //登录设备
  73. String ret="落竿失败!";
  74. try {
  75. HCNetSDK.NET_DVR_BARRIERGATE_CFG cfg = new HCNetSDK.NET_DVR_BARRIERGATE_CFG();
  76. // cfg.read();
  77. cfg.dwChannel=tdh; //通道号
  78. cfg.dwSize=cfg.size(); //结构体大小
  79. cfg.byLaneNo=1; //道闸号:0-表示无效值(设备需要做有效值判断),1-道闸1
  80. cfg.byBarrierGateCtrl=0; // 控制参数:0-关闭道闸,1-开启道闸,2-停止道闸,3-锁定道闸
  81. cfg.byRes[0]=0; //保留,置为0
  82. //起竿操作
  83. Pointer name = cfg.getPointer();
  84. cfg.write();
  85. boolean a=Alarm.controlsDz(tdh, 3128, name, cfg.size());
  86. if(a) {
  87. ret="落竿成功!";
  88. }else {
  89. ret="落竿失败!"+Alarm.controlsDzError();
  90. //失败重新布防, 可以不布防
  91. //new HikVisionService().run();
  92. }
  93. System.out.println("关闸结果--"+a+"-- 提示内容:"+ret);
  94. //保存记录
  95. OpeningDoorRecord openingDoorRecord = new OpeningDoorRecord();
  96. openingDoorRecord.setEntranceGuardName(equipmentConfiguration.getEquipmentName());
  97. openingDoorRecord.setType("2");
  98. openingDoorRecordService.insertOpeningDoorRecord(openingDoorRecord);
  99. //注销用户
  100. boolean b=Alarm.logout(tdh);
  101. } catch (Exception e) {
  102. e.printStackTrace();
  103. }
  104. return AjaxResult.success(ret);
  105. }
  106. /**
  107. * 设备打开
  108. */
  109. @GetMapping("/video/openDz")
  110. @PreAuthorize("@ss.hasPermi('system:camera:openDz')")
  111. public AjaxResult openDz(EquipmentConfiguration equipmentConfiguration) {
  112. equipmentConfiguration = equipmentConfigurationService.selectEquipmentConfigurationByEquipmentName(equipmentConfiguration.getEquipmentName());
  113. if(StringUtils.isEmpty(equipmentConfiguration.getEquipmentName())){
  114. return AjaxResult.error("设备列表暂无当前设备");
  115. }
  116. String ip = equipmentConfiguration.getEquipmentIp();
  117. short prot = (short) Short.parseShort(equipmentConfiguration.getEquipmentPort());
  118. String login = equipmentConfiguration.getLoginName();
  119. String pwd = equipmentConfiguration.getLoginPwd();
  120. int tdh = Alarm.login_V40( ip, prot, login, pwd);; //登录设备
  121. //Alarm.setAlarm();
  122. String ret="起竿失败!";
  123. try {
  124. HCNetSDK.NET_DVR_BARRIERGATE_CFG cfg = new HCNetSDK.NET_DVR_BARRIERGATE_CFG();
  125. // cfg.read();
  126. cfg.dwChannel=tdh; //通道号
  127. cfg.dwSize=cfg.size(); //结构体大小
  128. cfg.byLaneNo=1; //道闸号:0-表示无效值(设备需要做有效值判断),1-道闸1
  129. cfg.byBarrierGateCtrl=1; // 控制参数:0-关闭道闸,1-开启道闸,2-停止道闸,3-锁定道闸
  130. cfg.byRes[0]=0; //保留,置为0
  131. //起竿操作
  132. Pointer name = cfg.getPointer();
  133. cfg.write();
  134. boolean a=Alarm.controlsDz(tdh, 3128, name, cfg.size());
  135. if(a) {
  136. ret="起竿成功!";
  137. }else {
  138. ret="起竿失败!"+Alarm.controlsDzError();
  139. //失败重新布防, 可以不布防
  140. //new HikVisionService().run();
  141. }
  142. System.out.println("开闸结果--"+a+"-- 提示内容:"+ret);
  143. //保存记录
  144. OpeningDoorRecord openingDoorRecord = new OpeningDoorRecord();
  145. openingDoorRecord.setEntranceGuardName(equipmentConfiguration.getEquipmentName());
  146. openingDoorRecord.setType("1");
  147. openingDoorRecordService.insertOpeningDoorRecord(openingDoorRecord);
  148. //注销用户
  149. boolean b=Alarm.logout(tdh);
  150. } catch (Exception e) {
  151. e.printStackTrace();
  152. }
  153. return AjaxResult.success(ret);
  154. }
  155. }