package com.mes.device.controller; import com.mes.device.request.DevicePlcBatchRequest; import com.mes.device.service.DevicePlcOperationService; import com.mes.device.vo.DevicePlcVO; import com.mes.vo.Result; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; /** * 设备 PLC 操作控制器 * * @author mes * @since 2025-11-17 */ @Slf4j @Validated @RestController @RequiredArgsConstructor @RequestMapping("device/plc") @Api(tags = "设备PLC操作") public class DevicePlcController { private final DevicePlcOperationService devicePlcOperationService; @PostMapping("/requests") @ApiOperation("批量触发PLC请求") public Result> triggerRequests( @Valid @RequestBody DevicePlcBatchRequest request) { return Result.success(devicePlcOperationService.triggerRequest(request.getDeviceIds())); } @PostMapping("/reports") @ApiOperation("批量模拟PLC汇报") public Result> triggerReports( @Valid @RequestBody DevicePlcBatchRequest request) { return Result.success(devicePlcOperationService.triggerReport(request.getDeviceIds())); } @PostMapping("/resets") @ApiOperation("批量重置PLC状态") public Result> resetPlc( @Valid @RequestBody DevicePlcBatchRequest request) { return Result.success(devicePlcOperationService.resetDevices(request.getDeviceIds())); } @PostMapping("/groups/{groupId}/request") @ApiOperation("设备组触发PLC请求") public Result> triggerGroupRequest( @PathVariable Long groupId) { return Result.success(devicePlcOperationService.triggerRequestByGroup(groupId)); } @PostMapping("/groups/{groupId}/report") @ApiOperation("设备组模拟PLC汇报") public Result> triggerGroupReport( @PathVariable Long groupId) { return Result.success(devicePlcOperationService.triggerReportByGroup(groupId)); } @GetMapping("/status/{deviceId}") @ApiOperation("查询设备PLC状态") public Result readStatus(@PathVariable Long deviceId) { return Result.success(devicePlcOperationService.readStatus(deviceId)); } @GetMapping("/groups/{groupId}/status") @ApiOperation("查询设备组PLC状态") public Result> readGroupStatus(@PathVariable Long groupId) { return Result.success(devicePlcOperationService.readStatusByGroup(groupId)); } }