| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- package com.xjrsoft.module.hikvision.controller;
- import cn.hutool.db.Db;
- import com.alibaba.fastjson.JSONObject;
- import com.github.yulichang.wrapper.MPJLambdaWrapper;
- import com.google.gson.JsonArray;
- import com.google.gson.JsonElement;
- import com.google.gson.JsonObject;
- import com.google.gson.JsonParser;
- 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.base.entity.BaseClass;
- import com.xjrsoft.module.base.service.IBaseClassService;
- import com.xjrsoft.module.concat.service.IXjrUserService;
- import com.xjrsoft.module.hikvision.util.ApiUtil;
- import com.xjrsoft.module.hikvision.util.OutInRecordUtil;
- import com.xjrsoft.module.organization.dto.WeChatSendMessageDto;
- import com.xjrsoft.module.organization.entity.UserStudent;
- import com.xjrsoft.module.organization.service.IWeChatService;
- import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
- import com.xjrsoft.module.teacher.entity.XjrUser;
- 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;
- import java.util.List;
- import java.util.Objects;
- @RestController
- @RequestMapping("/event")
- @Api(value = "/event", tags = "订阅事件接收")
- @AllArgsConstructor
- @Slf4j
- public class EventController {
- private final OutInRecordUtil outInRecordUtil = new OutInRecordUtil();
- DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
- private final Db use = Db.use(datasource);
- private final FaceImportMapper faceImportMapper;
- private final HikvisionConfig hikvisionConfig;
- private final IBaseClassService classService;
- private final IWeChatService weChatService;
- private final IXjrUserService xjrUserService;
- @PostMapping("/receiveCar")
- @ApiOperation(value = "接收车辆事件")
- public ResponseEntity<Void> 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<Void> receivePeopleEvent(@RequestBody(required = false) String eventData) {
- log.info("Received event data: {}", eventData);
- new Thread(() -> {
- try {
- JsonObject data = new JsonParser().parse(eventData).getAsJsonObject();
- outInRecordUtil.GetTeacherAndStudentRecordsTest(use, faceImportMapper, data);
- JsonObject paramsObject = data.getAsJsonObject("params");
- JsonArray eventsArray = paramsObject.getAsJsonArray("events");
- for (JsonElement eventElement : eventsArray) {
- JsonObject eventObject = eventElement.getAsJsonObject();
- JsonObject dataObject = eventObject.getAsJsonObject("data");
- String idNum = null;
- if (dataObject.has("ExtEventPersonNo")) {
- idNum = dataObject.get("ExtEventPersonNo").getAsString();
- }
- String happenTime = eventObject.get("happenTime").getAsString();
- String recordTimeStr = outInRecordUtil.ChangeTime(happenTime);
- int status = eventObject.get("status").getAsInt();
- if (idNum == null) continue;
- if (!Objects.equals(faceImportMapper.IsStudentTypeByPersonId(Long.valueOf(idNum)), "学生")) {
- continue;
- }
- List<XjrUser> userList = xjrUserService.list(
- new MPJLambdaWrapper<XjrUser>()
- .select(XjrUser::getId)
- .leftJoin(UserStudent.class, UserStudent::getUserId, XjrUser::getId)
- .eq(UserStudent::getStudentId, idNum)
- );
- for (XjrUser member : userList) {
- XjrUser student = xjrUserService.getById(idNum);
- BaseClass baseClass = classService.getOne(
- new MPJLambdaWrapper<BaseClass>()
- .leftJoin(BaseStudentSchoolRoll.class, BaseStudentSchoolRoll::getClassId, BaseClass::getId)
- .eq(BaseStudentSchoolRoll::getUserId, student.getId())
- );
- WeChatSendMessageDto weChatSendMessageDto = new WeChatSendMessageDto();
- weChatSendMessageDto.setUserId(member.getOpenId());
- weChatSendMessageDto.setTemplateId("ERkMebHjsziZO6WBrlzsbENiEuRR4vrlhJw5LR4aDr8");
- weChatSendMessageDto.setMsgId(member.getId().toString());
- JSONObject paramJson = new JSONObject();
- paramJson.put("thing1", student.getName());
- paramJson.put("time3", recordTimeStr);
- paramJson.put("thing2", baseClass.getName());
- if(status == 1){
- paramJson.put("const4", "进校");
- }else{
- paramJson.put("const4", "出校");
- }
- weChatSendMessageDto.setContent(paramJson);
- weChatService.sendTemplateMessage(weChatSendMessageDto);
- }
- }
- } catch (SQLException | ParseException e) {
- log.error("Error processing event data", e);
- }
- }).start();
- return ResponseEntity.ok().build();
- }
- @PostMapping("/subscribe")
- @ApiOperation(value = "订阅事件")
- public RT<Boolean> subscribeEvent() {
- ApiUtil apiUtil = new ApiUtil();
- JsonArray eventList = new JsonArray();
- String apiPath = "/api/eventService/v1/eventSubscriptionByEventTypes";
- JsonObject paramJson = new JsonObject();
- //*******手动更改****************************************************
- // eventList.add(196893); //人脸匹配成功
- // eventList.add(197151); //人脸匹配失败
- eventList.add(771760130); //车辆入场压线事件
- eventList.add(771760133); //车辆出场压线事件
- 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;
- }
- }
|