package com.xjrsoft.module.hikvision.util; import cn.hutool.db.Db; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.xjrsoft.common.constant.GlobalConstant; import com.xjrsoft.common.model.result.RT; import com.xjrsoft.common.utils.DatasourceUtil; import com.xjrsoft.config.HikvisionConfig; import com.xjrsoft.module.teacher.mapper.FaceImportMapper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.sql.DataSource; import java.sql.SQLException; import java.text.ParseException; @RestController @RequestMapping("/event") @Api(value = "/event", tags = "订阅事件接收") @AllArgsConstructor @Slf4j public class EventController { private final Out_In_RecordUtil outInRecordUtil = new Out_In_RecordUtil(); DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY); private final Db use = Db.use(datasource); private final FaceImportMapper faceImportMapper; private final HikvisionConfig hikvisionConfig; @PostMapping("/receiveCar") @ApiOperation(value = "接收车辆事件") public ResponseEntity receiveCarEvent(@RequestBody(required = false) String eventData) { log.info("Received event data: {}", eventData); new Thread(() -> { try { outInRecordUtil.GetVehicleRecordTest(use, faceImportMapper, eventData); } catch (SQLException | ParseException e) { log.error("Error processing event data", e); } }).start(); // 立即返回HTTP 200 OK响应 return ResponseEntity.ok().build(); } @PostMapping("/receivePeople") @ApiOperation(value = "接收人员事件") public ResponseEntity receivePeopleEvent(@RequestBody(required = false) String eventData) { log.info("Received event data: {}", eventData); new Thread(() -> { try { outInRecordUtil.GetTeacherAndStudentRecordsTest(use, faceImportMapper, eventData); } catch (SQLException | ParseException e) { log.error("Error processing event data", e); } }).start(); return ResponseEntity.ok().build(); } @PostMapping("/subscribe") @ApiOperation(value = "订阅事件") public RT subscribeEvent() { ApiUtil apiUtil = new ApiUtil(); JsonArray eventList = new JsonArray(); String apiPath = "/api/eventService/v1/eventSubscriptionByEventTypes"; JsonObject paramJson = new JsonObject(); //*******手动更改**************************************************** // eventList.add(196893); //人脸匹配成功 eventList.add(771760131); //入场放行事件 eventList.add(771760134); //出场放行事件 paramJson.addProperty("eventDest", hikvisionConfig.getCarUrl()); //要修改第二个参数 //****************************************************************** paramJson.add("eventTypes", eventList); String response = apiUtil.doPost(apiPath, paramJson.toString(), null); log.info("Subscribe response: {}", response); return RT.ok(true); } @PostMapping("/query") @ApiOperation(value = "查询已订阅事件") public String queryEvent() { ApiUtil apiUtil = new ApiUtil(); String apiPath = "/api/eventService/v1/eventSubscriptionView"; String response = apiUtil.doPost(apiPath, null, null); System.out.println("output: " + response); // Gson gson = new GsonBuilder().setPrettyPrinting().create(); // // JsonElement jsonElement = JsonParser.parseString(response); // // String prettyJson = gson.toJson(jsonElement); return response; } @PostMapping("/cancel") @ApiOperation(value = "取消已订阅事件") public String cancelEvent() { ApiUtil apiUtil = new ApiUtil(); JsonArray eventList = new JsonArray(); //*******手动更改**************************************************** eventList.add(196893); eventList.add(771760131); //正常过车 eventList.add(771760134); //****************************************************************** JsonObject paramJson = new JsonObject(); paramJson.add("eventTypes", eventList); String apiPath = "/api/eventService/v1/eventUnSubscriptionByEventTypes"; String response = apiUtil.doPost(apiPath, paramJson.toString(), null); System.out.println("output: " + response); return response; } }