update:下发数采

This commit is contained in:
2025-12-04 12:46:13 +08:00
parent a9399f5497
commit 65f6b635d8
13 changed files with 801 additions and 149 deletions

View File

@@ -88,9 +88,9 @@ public class SnowMachineController {
*/
@GetMapping("/")
@Operation(summary = "获取所有造雪机设备列表")
public HttpResponseData<List<SnowMachineDevice>> getAllSnowMachines() {
public HttpResponseData<List<SnowMachineDevice>> getAllSnowMachines(@RequestParam(required = false) String keyword) {
// 调用服务层获取所有设备
List<SnowMachineDevice> result = snowMachineDeviceService.getAllSnowMachineDevices();
List<SnowMachineDevice> result = snowMachineDeviceService.getAllSnowMachineDevices(keyword);
return HttpResponseData.ok(result);
}
}

View File

@@ -0,0 +1,40 @@
package com.ski.lichuan.admin.controller.monitor;
import com.ski.lichuan.model.common.HttpResponseData;
import com.ski.lichuan.model.dashboard.SnowMachineWorkingInfo;
import com.ski.lichuan.model.device.Impl.SnowMachineDevice;
import com.ski.lichuan.services.DeviceMonitorService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Slf4j
@RestController
@RequestMapping("/api/monitor")
@CrossOrigin(origins = "*") // 根据实际需要调整CORS策略
@Tag(name = "设备监控", description = "设备监控信息展示")
public class DeviceMonitorController {
@Autowired
private DeviceMonitorService deviceMonitorService;
/**
* 获取设备监控信息列表,支持按名称,雪道,优先级
* @return 设备监控信息
*/
@GetMapping("/list")
@Operation(summary = "获取设备监控信息列表", description = "根据名称,雪道,运营线查询设备监控信息")
public HttpResponseData<List<SnowMachineWorkingInfo>> getDeviceMonitorList(
@RequestParam(required = false) String name,
@RequestParam(required = false) Integer trailId,
@RequestParam(required = false) Integer priority) {
HttpResponseData<List<SnowMachineWorkingInfo>> responseData = new HttpResponseData<>();
List<SnowMachineWorkingInfo> snowDevices = deviceMonitorService.getDeviceMonitorList(name, trailId, priority);
return responseData.success(snowDevices);
}
}

View File

@@ -1,11 +1,14 @@
package com.ski.lichuan.admin.controller.monitor;
import com.ski.lichuan.common.exception.BusinessException;
import com.ski.lichuan.model.common.DeviceEnum;
import com.ski.lichuan.model.common.HttpResponseData;
import com.ski.lichuan.model.dashboard.*;
import com.ski.lichuan.model.device.Impl.SnowMachineDevice;
import com.ski.lichuan.model.device.config.SnowMachineDeviceParams;
import com.ski.lichuan.model.device.config.SnowMachineDevicePitchHorizontalParams;
import com.ski.lichuan.services.DeviceDataPollingService;
import com.ski.lichuan.services.SnowMachineDeviceService;
import com.ski.lichuan.services.TrailPositionService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -28,6 +31,12 @@ public class SkiResortController {
@Autowired
private TrailPositionService trailPositionService;
@Autowired
private SnowMachineDeviceService snowMachineDeviceService;
@Autowired
private DeviceDataPollingService deviceDataPollingService;
@GetMapping("/")
@Operation(summary = "首页-获取滑雪场雪道和造雪机关联信息")
public HttpResponseData<List<List<TrailPosition>>> getDashboardInfo() {
@@ -40,84 +49,27 @@ public class SkiResortController {
@Operation(summary = "获取雪道坑位的详细信息(造雪机)")
public HttpResponseData<TrailPositionInfo> getPositionInfo(Integer trailPositionId) {
HttpResponseData<TrailPositionInfo> responseData = new HttpResponseData<>();
TrailPositionInfo result = new TrailPositionInfo();
Integer trailId = trailPositionId / 10;
Integer position = trailPositionId % 10;
// 雪机设备
SnowMachineDevice snowMachineDevice = new SnowMachineDevice();
snowMachineDevice.setLora("1234567890123456");
snowMachineDevice.setId(1000000000 + trailPositionId);
snowMachineDevice.setName("造雪机-" + trailPositionId);
snowMachineDevice.setType(DeviceEnum.SNOW_MAKER.getValue());
// 雪道位置信息
TrailPosition trailPosition = new TrailPosition();
trailPosition.setId(trailPositionId);
trailPosition.setTrailId(trailId);
trailPosition.setPosition(position);
trailPosition.setName(trailId + "-" + position);
trailPosition.setSnowMachineStatus(1);
trailPosition.setSnowMachineId(snowMachineDevice.getId());
// 雪道位置状态信息
TrailPositionMonitorInfo trailPositionMonitorInfo = new TrailPositionMonitorInfo();
trailPositionMonitorInfo.setTrailPosition(trailPosition);
trailPositionMonitorInfo.setSnowMakerName(snowMachineDevice.getName());
trailPositionMonitorInfo.setPriority(1);
trailPositionMonitorInfo.setEnvironmentTemperature(-3.5);
trailPositionMonitorInfo.setEnvironmentHumidity(50.0);
trailPositionMonitorInfo.setWetBulbTemperature(0.5);
trailPositionMonitorInfo.setCommunicationStatus(true);
trailPositionMonitorInfo.setIsNormal(true);
trailPositionMonitorInfo.setIsRunning(true);
trailPositionMonitorInfo.setTemperatureConditionSatisfied(true);
trailPositionMonitorInfo.setWindSpeed(5.0);
trailPositionMonitorInfo.setWindDirection(180.0);
// 造雪机设备状态
SnowMachineDeviceInfo snowMachineDeviceInfo = new SnowMachineDeviceInfo();
snowMachineDeviceInfo.setSnowMachineDevice(snowMachineDevice);
snowMachineDeviceInfo.setFrontWaterPressure(0.5 + Math.random() * 0.3); // 前端水压 0.5-0.8 MPa
snowMachineDeviceInfo.setBackWaterPressure(0.4 + Math.random() * 0.2); // 后端水压 0.4-0.6 MPa
snowMachineDeviceInfo.setPressure(0.8 + Math.random() * 0.2); // 气压 0.8-1.0 MPa
snowMachineDeviceInfo.setTemperature(2.5 + Math.random() * 2.0); // 水温 2.5-4.5 ℃
snowMachineDeviceInfo.setGivenAngle(45.0 + Math.random() * 10.0); // 给定开度 45-55°
snowMachineDeviceInfo.setActualAngle(44.0 + Math.random() * 12.0); // 实际开度 44-56°
snowMachineDeviceInfo.setIsNormal(Math.random() > 0.1); // 是否正常 90%概率正常
snowMachineDeviceInfo.setMode((int)(Math.random() * 3) + 1); // 模式 1-3随机
snowMachineDeviceInfo.setCompressorStatus((int)(Math.random() * 2) + 1); // 空压机状态 1-2随机
snowMachineDeviceInfo.setFanStatus((int)(Math.random() * 2) + 1); // 风机状态 1-2随机
snowMachineDeviceInfo.setHeatingRingStatus((int)(Math.random() * 2) + 1); // 加热环状态 1-2随机
snowMachineDeviceInfo.setValveStatus((int)(Math.random() * 2) + 1); // 电磁阀状态1 1-2随机
snowMachineDeviceInfo.setValveStatus2((int)(Math.random() * 2) + 1); // 电磁阀状态2 1-2随机
snowMachineDeviceInfo.setValveStatus3((int)(Math.random() * 2) + 1); // 电磁阀状态3 1-2随机
snowMachineDeviceInfo.setPitchMode((int)(Math.random() * 3) + 1); // 俯仰模式 1-3随机
snowMachineDeviceInfo.setPitchAngle(15.0 + Math.random() * 20.0); // 俯仰角度 15-35°
snowMachineDeviceInfo.setPitchStatus((int)(Math.random() * 2) + 1); // 俯仰状态 1-2随机
snowMachineDeviceInfo.setYawMode((int)(Math.random() * 3) + 1); // 摆头模式 1-3随机
snowMachineDeviceInfo.setYawAngle(30.0 + Math.random() * 40.0); // 摆头角度 30-70°
snowMachineDeviceInfo.setYawStatus((int)(Math.random() * 2) + 1); // 摆头状态 1-2随机
// 造雪机配置
SnowMachineDeviceParams snowMakerDeviceParams = new SnowMachineDeviceParams();
snowMakerDeviceParams.setWorkMode((int)(Math.random() * 3) + 1); // 工作模式 1-3随机
snowMakerDeviceParams.setPriority((int)(Math.random() * 5) + 1); // 优先级 1-5随机
snowMakerDeviceParams.setSnowQuality((int)(Math.random() * 5) + 1); // 雪质 1-5随机
snowMakerDeviceParams.setStartTemperature(-5.0 + Math.random() * 10.0); // 启动温度 -5.0 ~ 5.0
snowMakerDeviceParams.setStopTemperature(-5.0 + Math.random() * 10.0); // 停止温度 -5.0 ~ 5.0
snowMakerDeviceParams.setFlowAdjustment((int)(Math.random() * 50)); // 流量调节 0 ~ 50
// 数据统计
TrailPositionStatisticsInfo trailPositionStatisticsInfo = new TrailPositionStatisticsInfo();
trailPositionStatisticsInfo.setRunningDuration(120.5 + Math.random() * 100.0); // 运行时长 120.5-220.5分钟
trailPositionStatisticsInfo.setFlowStatistics(1000.0 + Math.random() * 500.0); // 流量统计 1000-1500 L/H
trailPositionStatisticsInfo.setSnowArea(500.0 + Math.random() * 300.0); // 造雪面积 500-800 平方米
result.setTrailPositionMonitorInfo(trailPositionMonitorInfo);
result.setSnowMakerInfo(snowMachineDeviceInfo);
result.setSnowMakerDeviceParams(snowMakerDeviceParams);
result.setTrailPositionStatisticsInfo(trailPositionStatisticsInfo);
return responseData.success(result);
TrailPosition trailPosition = trailPositionService.getTrailPosition(trailPositionId);
if (trailPosition == null) {
throw new BusinessException("雪道坑位不存在");
}
if (trailPosition.getSnowMachineId() == null) {
throw new BusinessException("雪道坑位未绑定造雪机");
}
SnowMachineDevice snowMachineDevice = snowMachineDeviceService.getSnowMachineDeviceById(trailPosition.getSnowMachineId());
if (snowMachineDevice == null) {
throw new BusinessException("造雪机不存在");
}
if (snowMachineDevice.getLora() == null) {
throw new BusinessException("造雪机未绑定Lora");
}
TrailPositionInfo trailPositionInfo = deviceDataPollingService.getTrailPositionInfo(snowMachineDevice.getLora());
if (trailPositionInfo == null) {
throw new BusinessException("没有造雪机数据");
}
// 加入造雪机优先级列表
deviceDataPollingService.updateSnowmakersDevicePriorityIds(trailPosition.getSnowMachineId());
return responseData.success(trailPositionInfo);
}
@PostMapping("/connectDevice")