package com.xkrs.controller; import com.dahuatech.icc.event.model.v202011.EventSubscribeRequest; import com.dahuatech.icc.event.model.v202011.EventSubscribeResponse; import com.dahuatech.icc.oauth.http.DefaultClient; import com.dahuatech.icc.oauth.http.IClient; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.xkrs.common.encapsulation.PromptMessageEnum; import org.apache.http.util.TextUtils; import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import java.io.IOException; import java.util.Locale; import static com.xkrs.common.encapsulation.OutputEncapsulation.outputEncapsulationObject; /** * ./start.sh * sudo tail -f nohup.out * /home/sxy/server/SmartUrbanRural */ @RestController public class FireEventController { Locale locale = LocaleContextHolder.getLocale(); /** * 订阅火情事件 */ @GetMapping("/subscribeFireEvent") public String subscribeFireEvent() { try { String host = "111.53.13.180:4433"; String username = "system"; String password = "Admin@123"; String clientId = "xkrszhcx"; String clientSecret = "eac429df-950a-4cba-aa50-76e47b0a74d8"; System.out.println("----开始执行----{}------事件订阅"); IClient iClient = new DefaultClient(host, username, password, clientId, clientSecret); EventSubscribeRequest subscribeRequest = new EventSubscribeRequest(); // 接收事件地址 String receiveUrl = "http://118.24.27.47:6820/receiveFireEvent"; String mqinfo = "{\"param\":{\"monitors\":[{\"monitor\":\"" + receiveUrl + "\",\"monitorType\":\"url\",\"events\":[{\"category\":\"business\",\"subscribeAll\":1,\"domainSubscribe\":2,\"authorities\":[{}]},{\"category\":\"alarm\",\"subscribeAll\":1,\"domainSubscribe\":2,\"authorities\":[{}]},{\"category\":\"state\",\"subscribeAll\":1,\"domainSubscribe\":2,\"authorities\":[{}]}]}],\"subsystem\":{\"subsystemType\":0,\"name\":\"118.24.27.47_6820\",\"magic\":\"118.24.27.47_6820\"}}}"; subscribeRequest.body(mqinfo); EventSubscribeResponse subscribeResponse = iClient.doAction(subscribeRequest, subscribeRequest.getResponseClass()); System.out.println("----结束执行----{}------事件订阅" + subscribeResponse.toString()); return outputEncapsulationObject(PromptMessageEnum.SUCCESS, subscribeResponse, locale); } catch (Exception e) { e.printStackTrace(); } return outputEncapsulationObject(PromptMessageEnum.SUCCESS, "订阅火情事件失败", locale); } /** * 接收火情事件 */ @PostMapping("/receiveFireEvent") public void receiveFireEvent(@RequestBody String message) throws IOException { JsonNode jsonNode = new ObjectMapper().readTree(message); String category = jsonNode.get("category").asText(); String method = jsonNode.get("method").asText(); String subsystem = jsonNode.get("subsystem").asText(); String info = jsonNode.get("info").asText(); boolean fireEventForCategory = (!TextUtils.isEmpty(category)) && "alarm".equals(category); boolean fireEventForMethod = (!TextUtils.isEmpty(method)) && "alarm.msg".equals(method); boolean fireEventForSubsystem = (!TextUtils.isEmpty(subsystem)) && "admin".equals(subsystem); boolean hasInfo = true; //火情事件 if (fireEventForCategory && fireEventForMethod && fireEventForSubsystem && hasInfo) { return; } boolean firePictureForCategory = (!TextUtils.isEmpty(category)) && "business".equals(category); boolean firePictureForMethod = (!TextUtils.isEmpty(method)) && "vms.notifyAlarmPicture".equals(method); boolean firePictureForSubsystem = (!TextUtils.isEmpty(subsystem)) && "admin".equals(subsystem); //火情图片 if (firePictureForCategory && firePictureForMethod && firePictureForSubsystem && hasInfo) { return; } } /** * 查询火情事件 */ @GetMapping("/selectFireEvent") public String selectFireEvent() { return outputEncapsulationObject(PromptMessageEnum.SUCCESS, "selectFireEvent", locale); } }