EventController.java 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. package com.xjrsoft.module.hikvision.util;
  2. import cn.hutool.db.Db;
  3. import com.google.gson.JsonArray;
  4. import com.google.gson.JsonObject;
  5. import com.xjrsoft.common.constant.GlobalConstant;
  6. import com.xjrsoft.common.model.result.RT;
  7. import com.xjrsoft.common.utils.DatasourceUtil;
  8. import com.xjrsoft.config.HikvisionConfig;
  9. import com.xjrsoft.module.teacher.mapper.FaceImportMapper;
  10. import io.swagger.annotations.Api;
  11. import io.swagger.annotations.ApiOperation;
  12. import lombok.AllArgsConstructor;
  13. import lombok.extern.slf4j.Slf4j;
  14. import org.springframework.http.ResponseEntity;
  15. import org.springframework.web.bind.annotation.PostMapping;
  16. import org.springframework.web.bind.annotation.RequestBody;
  17. import org.springframework.web.bind.annotation.RequestMapping;
  18. import org.springframework.web.bind.annotation.RestController;
  19. import javax.sql.DataSource;
  20. import java.sql.SQLException;
  21. import java.text.ParseException;
  22. @RestController
  23. @RequestMapping("/event")
  24. @Api(value = "/event", tags = "订阅事件接收")
  25. @AllArgsConstructor
  26. @Slf4j
  27. public class EventController {
  28. private final Out_In_RecordUtil outInRecordUtil = new Out_In_RecordUtil();
  29. DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
  30. private final Db use = Db.use(datasource);
  31. private final FaceImportMapper faceImportMapper;
  32. private final HikvisionConfig hikvisionConfig;
  33. @PostMapping("/receiveCar")
  34. @ApiOperation(value = "接收车辆事件")
  35. public ResponseEntity<Void> receiveCarEvent(@RequestBody(required = false) String eventData) {
  36. log.info("Received event data: {}", eventData);
  37. new Thread(() -> {
  38. try {
  39. outInRecordUtil.GetVehicleRecordTest(use, faceImportMapper, eventData);
  40. } catch (SQLException | ParseException e) {
  41. log.error("Error processing event data", e);
  42. }
  43. }).start();
  44. // 立即返回HTTP 200 OK响应
  45. return ResponseEntity.ok().build();
  46. }
  47. @PostMapping("/receivePeople")
  48. @ApiOperation(value = "接收人员事件")
  49. public ResponseEntity<Void> receivePeopleEvent(@RequestBody(required = false) String eventData) {
  50. log.info("Received event data: {}", eventData);
  51. new Thread(() -> {
  52. try {
  53. outInRecordUtil.GetTeacherAndStudentRecordsTest(use, faceImportMapper, eventData);
  54. } catch (SQLException | ParseException e) {
  55. log.error("Error processing event data", e);
  56. }
  57. }).start();
  58. return ResponseEntity.ok().build();
  59. }
  60. @PostMapping("/subscribe")
  61. @ApiOperation(value = "订阅事件")
  62. public RT<Boolean> subscribeEvent() {
  63. ApiUtil apiUtil = new ApiUtil();
  64. JsonArray eventList = new JsonArray();
  65. String apiPath = "/api/eventService/v1/eventSubscriptionByEventTypes";
  66. JsonObject paramJson = new JsonObject();
  67. //*******手动更改****************************************************
  68. // eventList.add(196893); //人脸匹配成功
  69. eventList.add(771760131); //入场放行事件
  70. eventList.add(771760134); //出场放行事件
  71. paramJson.addProperty("eventDest", hikvisionConfig.getCarUrl()); //要修改第二个参数
  72. //******************************************************************
  73. paramJson.add("eventTypes", eventList);
  74. String response = apiUtil.doPost(apiPath, paramJson.toString(), null);
  75. log.info("Subscribe response: {}", response);
  76. return RT.ok(true);
  77. }
  78. @PostMapping("/query")
  79. @ApiOperation(value = "查询已订阅事件")
  80. public String queryEvent() {
  81. ApiUtil apiUtil = new ApiUtil();
  82. String apiPath = "/api/eventService/v1/eventSubscriptionView";
  83. String response = apiUtil.doPost(apiPath, null, null);
  84. System.out.println("output: " + response);
  85. // Gson gson = new GsonBuilder().setPrettyPrinting().create();
  86. //
  87. // JsonElement jsonElement = JsonParser.parseString(response);
  88. //
  89. // String prettyJson = gson.toJson(jsonElement);
  90. return response;
  91. }
  92. @PostMapping("/cancel")
  93. @ApiOperation(value = "取消已订阅事件")
  94. public String cancelEvent() {
  95. ApiUtil apiUtil = new ApiUtil();
  96. JsonArray eventList = new JsonArray();
  97. //*******手动更改****************************************************
  98. eventList.add(196893);
  99. eventList.add(771760131); //正常过车
  100. eventList.add(771760134);
  101. //******************************************************************
  102. JsonObject paramJson = new JsonObject();
  103. paramJson.add("eventTypes", eventList);
  104. String apiPath = "/api/eventService/v1/eventUnSubscriptionByEventTypes";
  105. String response = apiUtil.doPost(apiPath, paramJson.toString(), null);
  106. System.out.println("output: " + response);
  107. return response;
  108. }
  109. }