package com.mes.device.controller;
|
|
import com.mes.device.entity.DeviceStatus;
|
import com.mes.device.service.DeviceStatusService;
|
import com.mes.vo.Result;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiParam;
|
import lombok.Data;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.validation.annotation.Validated;
|
import org.springframework.web.bind.annotation.*;
|
|
import javax.validation.Valid;
|
import javax.validation.constraints.NotEmpty;
|
import javax.validation.constraints.NotNull;
|
import java.util.List;
|
|
/**
|
* 设备状态管理控制器
|
*/
|
@RestController
|
@RequestMapping("device/status")
|
@Api(tags = "设备状态管理")
|
@Validated
|
@RequiredArgsConstructor
|
public class DeviceStatusController {
|
|
private final DeviceStatusService deviceStatusService;
|
|
@PostMapping("/update")
|
@ApiOperation("更新设备在线状态")
|
public Result<Boolean> updateDeviceOnlineStatus(
|
@Valid @RequestBody DeviceStatusUpdateRequest request) {
|
try {
|
boolean success = deviceStatusService.updateDeviceOnlineStatus(
|
request.getDeviceId(),
|
request.getStatus()
|
);
|
if (success) {
|
return Result.success(true);
|
} else {
|
return Result.error("更新设备在线状态失败");
|
}
|
} catch (Exception e) {
|
return Result.error("更新设备在线状态失败: " + e.getMessage());
|
}
|
}
|
|
@PostMapping("/batch-update")
|
@ApiOperation("批量更新设备在线状态")
|
public Result<Boolean> batchUpdateDeviceOnlineStatus(
|
@Valid @RequestBody DeviceStatusBatchUpdateRequest request) {
|
try {
|
boolean success = deviceStatusService.batchUpdateDeviceOnlineStatus(
|
request.getDeviceIds(),
|
request.getStatus()
|
);
|
if (success) {
|
return Result.success(true);
|
} else {
|
return Result.error("批量更新设备在线状态失败");
|
}
|
} catch (Exception e) {
|
return Result.error("批量更新设备在线状态失败: " + e.getMessage());
|
}
|
}
|
|
@GetMapping("/latest/{deviceId}")
|
@ApiOperation("获取设备最新状态")
|
public Result<DeviceStatus> getLatestStatus(
|
@ApiParam(value = "设备配置ID", required = true) @PathVariable Long deviceId) {
|
try {
|
DeviceStatus status = deviceStatusService.getLatestByDeviceConfigId(deviceId);
|
return Result.success(status);
|
} catch (Exception e) {
|
return Result.error("获取设备状态失败: " + e.getMessage());
|
}
|
}
|
|
@PostMapping("/heartbeat")
|
@ApiOperation("记录设备心跳")
|
public Result<Boolean> recordHeartbeat(
|
@Valid @RequestBody DeviceHeartbeatRequest request) {
|
try {
|
boolean success = deviceStatusService.recordHeartbeat(
|
request.getDeviceId(),
|
request.getStatus()
|
);
|
if (success) {
|
return Result.success(true);
|
} else {
|
return Result.error("记录设备心跳失败");
|
}
|
} catch (Exception e) {
|
return Result.error("记录设备心跳失败: " + e.getMessage());
|
}
|
}
|
|
/**
|
* 设备状态更新请求
|
*/
|
@Data
|
public static class DeviceStatusUpdateRequest {
|
@NotNull(message = "设备ID不能为空")
|
@ApiParam(value = "设备配置ID", required = true)
|
private Long deviceId;
|
|
@NotEmpty(message = "设备状态不能为空")
|
@ApiParam(value = "设备状态(ONLINE/OFFLINE/BUSY/ERROR/MAINTENANCE)", required = true)
|
private String status;
|
}
|
|
/**
|
* 批量设备状态更新请求
|
*/
|
@Data
|
public static class DeviceStatusBatchUpdateRequest {
|
@NotEmpty(message = "设备ID列表不能为空")
|
@ApiParam(value = "设备配置ID列表", required = true)
|
private List<Long> deviceIds;
|
|
@NotEmpty(message = "设备状态不能为空")
|
@ApiParam(value = "设备状态(ONLINE/OFFLINE/BUSY/ERROR/MAINTENANCE)", required = true)
|
private String status;
|
}
|
|
/**
|
* 设备心跳请求
|
*/
|
@Data
|
public static class DeviceHeartbeatRequest {
|
@NotEmpty(message = "设备ID不能为空")
|
@ApiParam(value = "设备ID(device_config.device_id)", required = true)
|
private String deviceId;
|
|
@ApiParam(value = "设备状态(可选,默认为ONLINE)")
|
private String status;
|
}
|
}
|