|
|
@@ -0,0 +1,249 @@
|
|
|
+package com.zksy.web.controller.base.alarm;
|
|
|
+
|
|
|
+import com.zksy.base.alarm.domain.AlarmData;
|
|
|
+import com.zksy.base.alarm.service.AlarmDataService;
|
|
|
+import com.zksy.common.core.domain.AjaxResult;
|
|
|
+import io.swagger.annotations.Api;
|
|
|
+import io.swagger.annotations.ApiOperation;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Random;
|
|
|
+
|
|
|
+@RestController
|
|
|
+@RequestMapping("/alarmTest")
|
|
|
+@Api(tags = "报警测试", description = "模拟采集数据和报警测试")
|
|
|
+public class AlarmTestController {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private AlarmDataService alarmDataService;
|
|
|
+
|
|
|
+ private Random random = new Random();
|
|
|
+
|
|
|
+ @GetMapping("/simulateManhole")
|
|
|
+ @ApiOperation(value = "模拟井盖设备采集数据并报警")
|
|
|
+ public AjaxResult simulateManhole() {
|
|
|
+ String deviceCode = "TEST-MANHOLE-001";
|
|
|
+ String deviceName = "测试井盖设备";
|
|
|
+ String deviceType = "manhole";
|
|
|
+
|
|
|
+ double temperature = 30 + random.nextDouble() * 40;
|
|
|
+ double tiltAngle = 0 + random.nextDouble() * 90;
|
|
|
+ double threshold = 60.0;
|
|
|
+
|
|
|
+ Map<String, Object> result = new HashMap<>();
|
|
|
+ result.put("deviceCode", deviceCode);
|
|
|
+ result.put("deviceName", deviceName);
|
|
|
+ result.put("temperature", temperature);
|
|
|
+ result.put("tiltAngle", tiltAngle);
|
|
|
+ result.put("threshold", threshold);
|
|
|
+
|
|
|
+ if (temperature > 50) {
|
|
|
+ AlarmData alarmData = new AlarmData();
|
|
|
+ alarmData.setDeviceName(deviceName);
|
|
|
+ alarmData.setDeviceCode(deviceCode);
|
|
|
+ alarmData.setDeviceType(deviceType);
|
|
|
+ alarmData.setWarningType("温度预警");
|
|
|
+ alarmData.setWarningCode("WARN-TEMPERATURE");
|
|
|
+ alarmData.setWarningValue(BigDecimal.valueOf(50.0));
|
|
|
+ alarmData.setActualValue(BigDecimal.valueOf(temperature));
|
|
|
+ alarmData.setAlarmStatus(0);
|
|
|
+ alarmData.setAlarmTime(LocalDateTime.now());
|
|
|
+ alarmData.setRemark("模拟井盖温度报警");
|
|
|
+ alarmData.setCreateTime(LocalDateTime.now());
|
|
|
+ alarmDataService.saveAlarmData(alarmData);
|
|
|
+ result.put("temperatureAlarm", true);
|
|
|
+ } else {
|
|
|
+ result.put("temperatureAlarm", false);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (tiltAngle > threshold) {
|
|
|
+ AlarmData alarmData = new AlarmData();
|
|
|
+ alarmData.setDeviceName(deviceName);
|
|
|
+ alarmData.setDeviceCode(deviceCode);
|
|
|
+ alarmData.setDeviceType(deviceType);
|
|
|
+ alarmData.setWarningType("倾斜预警");
|
|
|
+ alarmData.setWarningCode("WARN-TILT");
|
|
|
+ alarmData.setWarningValue(BigDecimal.valueOf(threshold));
|
|
|
+ alarmData.setActualValue(BigDecimal.valueOf(tiltAngle));
|
|
|
+ alarmData.setAlarmStatus(0);
|
|
|
+ alarmData.setAlarmTime(LocalDateTime.now());
|
|
|
+ alarmData.setRemark("模拟井盖倾斜报警");
|
|
|
+ alarmData.setCreateTime(LocalDateTime.now());
|
|
|
+ alarmDataService.saveAlarmData(alarmData);
|
|
|
+ result.put("tiltAlarm", true);
|
|
|
+ } else {
|
|
|
+ result.put("tiltAlarm", false);
|
|
|
+ }
|
|
|
+
|
|
|
+ return AjaxResult.success(result);
|
|
|
+ }
|
|
|
+
|
|
|
+ @GetMapping("/simulateGas")
|
|
|
+ @ApiOperation(value = "模拟可燃气体设备采集数据并报警")
|
|
|
+ public AjaxResult simulateGas() {
|
|
|
+ String deviceCode = "TEST-GAS-001";
|
|
|
+ String deviceName = "测试可燃气体设备";
|
|
|
+ String deviceType = "flammable-gas";
|
|
|
+
|
|
|
+ float temperature = 20 + random.nextFloat() * 40;
|
|
|
+ float humidity = 40 + random.nextFloat() * 40;
|
|
|
+ BigDecimal gasConcentration = BigDecimal.valueOf(random.nextDouble() * 100);
|
|
|
+
|
|
|
+ Map<String, Object> result = new HashMap<>();
|
|
|
+ result.put("deviceCode", deviceCode);
|
|
|
+ result.put("deviceName", deviceName);
|
|
|
+ result.put("temperature", temperature);
|
|
|
+ result.put("humidity", humidity);
|
|
|
+ result.put("gasConcentration", gasConcentration);
|
|
|
+
|
|
|
+ if (temperature > 50) {
|
|
|
+ AlarmData alarmData = new AlarmData();
|
|
|
+ alarmData.setDeviceName(deviceName);
|
|
|
+ alarmData.setDeviceCode(deviceCode);
|
|
|
+ alarmData.setDeviceType(deviceType);
|
|
|
+ alarmData.setWarningType("温度预警");
|
|
|
+ alarmData.setWarningCode("WARN-TEMPERATURE");
|
|
|
+ alarmData.setWarningValue(BigDecimal.valueOf(50.0));
|
|
|
+ alarmData.setActualValue(BigDecimal.valueOf(temperature));
|
|
|
+ alarmData.setAlarmStatus(0);
|
|
|
+ alarmData.setAlarmTime(LocalDateTime.now());
|
|
|
+ alarmData.setRemark("模拟可燃气体温度报警");
|
|
|
+ alarmData.setCreateTime(LocalDateTime.now());
|
|
|
+ alarmDataService.saveAlarmData(alarmData);
|
|
|
+ result.put("temperatureAlarm", true);
|
|
|
+ } else {
|
|
|
+ result.put("temperatureAlarm", false);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (humidity > 80) {
|
|
|
+ AlarmData alarmData = new AlarmData();
|
|
|
+ alarmData.setDeviceName(deviceName);
|
|
|
+ alarmData.setDeviceCode(deviceCode);
|
|
|
+ alarmData.setDeviceType(deviceType);
|
|
|
+ alarmData.setWarningType("湿度预警");
|
|
|
+ alarmData.setWarningCode("WARN-HUMIDITY");
|
|
|
+ alarmData.setWarningValue(BigDecimal.valueOf(80.0));
|
|
|
+ alarmData.setActualValue(BigDecimal.valueOf(humidity));
|
|
|
+ alarmData.setAlarmStatus(0);
|
|
|
+ alarmData.setAlarmTime(LocalDateTime.now());
|
|
|
+ alarmData.setRemark("模拟可燃气体湿度报警");
|
|
|
+ alarmData.setCreateTime(LocalDateTime.now());
|
|
|
+ alarmDataService.saveAlarmData(alarmData);
|
|
|
+ result.put("humidityAlarm", true);
|
|
|
+ } else {
|
|
|
+ result.put("humidityAlarm", false);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (gasConcentration.doubleValue() > 50) {
|
|
|
+ AlarmData alarmData = new AlarmData();
|
|
|
+ alarmData.setDeviceName(deviceName);
|
|
|
+ alarmData.setDeviceCode(deviceCode);
|
|
|
+ alarmData.setDeviceType(deviceType);
|
|
|
+ alarmData.setWarningType("气体浓度预警");
|
|
|
+ alarmData.setWarningCode("WARN-GAS-CONCENTRATION");
|
|
|
+ alarmData.setWarningValue(BigDecimal.valueOf(50.0));
|
|
|
+ alarmData.setActualValue(gasConcentration);
|
|
|
+ alarmData.setAlarmStatus(0);
|
|
|
+ alarmData.setAlarmTime(LocalDateTime.now());
|
|
|
+ alarmData.setRemark("模拟可燃气体浓度报警");
|
|
|
+ alarmData.setCreateTime(LocalDateTime.now());
|
|
|
+ alarmDataService.saveAlarmData(alarmData);
|
|
|
+ result.put("gasConcentrationAlarm", true);
|
|
|
+ } else {
|
|
|
+ result.put("gasConcentrationAlarm", false);
|
|
|
+ }
|
|
|
+
|
|
|
+ return AjaxResult.success(result);
|
|
|
+ }
|
|
|
+
|
|
|
+ @GetMapping("/simulateEnvironment")
|
|
|
+ @ApiOperation(value = "模拟环境设备采集数据并报警")
|
|
|
+ public AjaxResult simulateEnvironment() {
|
|
|
+ String deviceCode = "TEST-ENV-001";
|
|
|
+ String deviceName = "测试环境设备";
|
|
|
+ String deviceType = "environment";
|
|
|
+
|
|
|
+ double temperature = 15 + random.nextDouble() * 50;
|
|
|
+ double humidity = 30 + random.nextDouble() * 60;
|
|
|
+
|
|
|
+ Map<String, Object> result = new HashMap<>();
|
|
|
+ result.put("deviceCode", deviceCode);
|
|
|
+ result.put("deviceName", deviceName);
|
|
|
+ result.put("temperature", temperature);
|
|
|
+ result.put("humidity", humidity);
|
|
|
+
|
|
|
+ if (temperature > 50) {
|
|
|
+ AlarmData alarmData = new AlarmData();
|
|
|
+ alarmData.setDeviceName(deviceName);
|
|
|
+ alarmData.setDeviceCode(deviceCode);
|
|
|
+ alarmData.setDeviceType(deviceType);
|
|
|
+ alarmData.setWarningType("温度预警");
|
|
|
+ alarmData.setWarningCode("WARN-TEMPERATURE");
|
|
|
+ alarmData.setWarningValue(BigDecimal.valueOf(50.0));
|
|
|
+ alarmData.setActualValue(BigDecimal.valueOf(temperature));
|
|
|
+ alarmData.setAlarmStatus(0);
|
|
|
+ alarmData.setAlarmTime(LocalDateTime.now());
|
|
|
+ alarmData.setRemark("模拟环境温度报警");
|
|
|
+ alarmData.setCreateTime(LocalDateTime.now());
|
|
|
+ alarmDataService.saveAlarmData(alarmData);
|
|
|
+ result.put("temperatureAlarm", true);
|
|
|
+ } else {
|
|
|
+ result.put("temperatureAlarm", false);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (humidity > 90) {
|
|
|
+ AlarmData alarmData = new AlarmData();
|
|
|
+ alarmData.setDeviceName(deviceName);
|
|
|
+ alarmData.setDeviceCode(deviceCode);
|
|
|
+ alarmData.setDeviceType(deviceType);
|
|
|
+ alarmData.setWarningType("湿度预警");
|
|
|
+ alarmData.setWarningCode("WARN-HUMIDITY");
|
|
|
+ alarmData.setWarningValue(BigDecimal.valueOf(90.0));
|
|
|
+ alarmData.setActualValue(BigDecimal.valueOf(humidity));
|
|
|
+ alarmData.setAlarmStatus(0);
|
|
|
+ alarmData.setAlarmTime(LocalDateTime.now());
|
|
|
+ alarmData.setRemark("模拟环境湿度报警");
|
|
|
+ alarmData.setCreateTime(LocalDateTime.now());
|
|
|
+ alarmDataService.saveAlarmData(alarmData);
|
|
|
+ result.put("humidityAlarm", true);
|
|
|
+ } else {
|
|
|
+ result.put("humidityAlarm", false);
|
|
|
+ }
|
|
|
+
|
|
|
+ return AjaxResult.success(result);
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("/customAlarm")
|
|
|
+ @ApiOperation(value = "自定义报警测试")
|
|
|
+ public AjaxResult customAlarm(@RequestBody Map<String, Object> params) {
|
|
|
+ AlarmData alarmData = new AlarmData();
|
|
|
+ alarmData.setDeviceName((String) params.get("deviceName"));
|
|
|
+ alarmData.setDeviceCode((String) params.get("deviceCode"));
|
|
|
+ alarmData.setDeviceType((String) params.get("deviceType"));
|
|
|
+ alarmData.setWarningType((String) params.get("warningType"));
|
|
|
+ alarmData.setWarningCode((String) params.get("warningCode"));
|
|
|
+
|
|
|
+ Object warningValueObj = params.get("warningValue");
|
|
|
+ if (warningValueObj != null) {
|
|
|
+ alarmData.setWarningValue(new BigDecimal(warningValueObj.toString()));
|
|
|
+ }
|
|
|
+
|
|
|
+ Object actualValueObj = params.get("actualValue");
|
|
|
+ if (actualValueObj != null) {
|
|
|
+ alarmData.setActualValue(new BigDecimal(actualValueObj.toString()));
|
|
|
+ }
|
|
|
+
|
|
|
+ alarmData.setAlarmStatus(0);
|
|
|
+ alarmData.setAlarmTime(LocalDateTime.now());
|
|
|
+ alarmData.setRemark((String) params.getOrDefault("remark", "自定义测试报警"));
|
|
|
+ alarmData.setCreateTime(LocalDateTime.now());
|
|
|
+
|
|
|
+ boolean success = alarmDataService.saveAlarmData(alarmData);
|
|
|
+ return success ? AjaxResult.success(alarmData) : AjaxResult.error("保存失败");
|
|
|
+ }
|
|
|
+}
|