99 lines
4.4 KiB
Java
99 lines
4.4 KiB
Java
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);
|
|
}
|
|
|
|
}
|