package com.ruoyi.web.controller.system; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.system.domain.TTest; import com.ruoyi.system.domain.TTestResult; import com.ruoyi.system.service.ITTestService; /** 测试管理 Controller。 */ @RestController @RequestMapping("/system/test") public class TTestController extends BaseController { @Autowired private ITTestService testService; @PreAuthorize("@ss.hasAnyPermi('system:test:add,system:test:edit')") @GetMapping("/options") public AjaxResult options() { return success(testService.selectConfigurationOptions()); } @PreAuthorize("@ss.hasPermi('system:test:list')") @GetMapping("/list") public TableDataInfo list(TTest test) { startPage(); List list = testService.selectTestList(test); return getDataTable(list); } @PreAuthorize("@ss.hasPermi('system:test:query')") @GetMapping("/{testId}") public AjaxResult getInfo(@PathVariable Long testId) { return success(testService.selectTestById(testId)); } @PreAuthorize("@ss.hasPermi('system:test:add')") @Log(title = "测试管理", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@Validated @RequestBody TTest test) { test.setOperatorId(getUserId()); test.setCreatorId(getUserId()); test.setCreateBy(getUsername()); Long testId = testService.createTest(test); return success(testService.selectTestById(testId)); } @PreAuthorize("@ss.hasPermi('system:test:edit')") @Log(title = "测试管理", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@Validated @RequestBody TTest test) { test.setOperatorId(getUserId()); test.setUpdateBy(getUsername()); testService.updateTest(test); return success(testService.selectTestById(test.getTestId())); } @PreAuthorize("@ss.hasPermi('system:test:start')") @Log(title = "测试管理", businessType = BusinessType.UPDATE) @PutMapping("/start") public AjaxResult start(@RequestParam Long testId) { testService.startReception(testId, getUserId(), getUsername()); return success(testService.selectTestById(testId)); } /** 独立的开始接收动作;只改变系统数据归属,不向设备发送控制命令。 */ @PreAuthorize("@ss.hasPermi('system:test:start')") @Log(title = "测试数据接收", businessType = BusinessType.UPDATE) @PostMapping("/{testId}/reception/start") public AjaxResult startReception(@PathVariable Long testId) { testService.startReception(testId, getUserId(), getUsername()); return success(testService.selectTestById(testId)); } /** 独立暂停接收动作;停止该测试数据请求,不向设备发送控制命令。 */ @PreAuthorize("@ss.hasPermi('system:test:pause')") @Log(title = "测试数据接收", businessType = BusinessType.UPDATE) @PostMapping("/{testId}/reception/pause") public AjaxResult pauseReception(@PathVariable Long testId) { testService.pauseReception(testId, getUserId(), getUsername()); return success(testService.selectTestById(testId)); } /** 独立继续接收动作;恢复该测试数据请求,不向设备发送控制命令。 */ @PreAuthorize("@ss.hasPermi('system:test:resume')") @Log(title = "测试数据接收", businessType = BusinessType.UPDATE) @PostMapping("/{testId}/reception/resume") public AjaxResult resumeReception(@PathVariable Long testId) { testService.resumeReception(testId, getUserId(), getUsername()); return success(testService.selectTestById(testId)); } /** 独立停止测试动作;进入不可恢复终态且不向设备发送控制命令。 */ @PreAuthorize("@ss.hasPermi('system:test:stop')") @Log(title = "停止测试", businessType = BusinessType.UPDATE) @PostMapping("/{testId}/stop") public AjaxResult stopTest(@PathVariable Long testId) { testService.stopTest(testId, getUserId(), getUsername()); return success(testService.selectTestById(testId)); } /** 人工结束接收动作别名;与停止测试共用原子关闭区间和释放租约事务。 */ @PreAuthorize("@ss.hasPermi('system:test:stop')") @Log(title = "人工结束接收", businessType = BusinessType.UPDATE) @PostMapping("/{testId}/reception/end") public AjaxResult endReception(@PathVariable Long testId) { testService.stopTest(testId, getUserId(), getUsername()); return success(testService.selectTestById(testId)); } @PreAuthorize("@ss.hasPermi('system:test:remove')") @Log(title = "测试管理", businessType = BusinessType.DELETE) @DeleteMapping("/{testIds}") public AjaxResult remove(@PathVariable Long[] testIds) { return toAjax(testService.deleteTestByIds(testIds, getUserId(), getUsername())); } @PreAuthorize("@ss.hasPermi('system:test:query')") @GetMapping("/{testId}/results") public TableDataInfo results(@PathVariable Long testId, TTestResult result) { result.setTestId(testId); startPage(); return getDataTable(testService.selectTestResults(result)); } }