| | |
| | | import com.ruoyi.common.enums.BusinessType; |
| | | import com.ruoyi.system.domain.TTest; |
| | | import com.ruoyi.system.domain.TTestResult; |
| | | import com.ruoyi.system.domain.TTestLogicStepMapping; |
| | | import com.ruoyi.system.domain.TTestDataRevisionAction; |
| | | import com.ruoyi.system.domain.TTestDataOverride; |
| | | import com.ruoyi.system.service.ITTestService; |
| | | import com.ruoyi.system.service.ITestConsoleDataService; |
| | | import com.ruoyi.system.service.ITestDataQueryService; |
| | | |
| | | /** 测试管理 Controller。 */ |
| | | @RestController |
| | |
| | | { |
| | | @Autowired |
| | | private ITTestService testService; |
| | | |
| | | @Autowired |
| | | private ITestConsoleDataService consoleDataService; |
| | | |
| | | @Autowired |
| | | private ITestDataQueryService testDataQueryService; |
| | | |
| | | @PreAuthorize("@ss.hasAnyPermi('system:test:add,system:test:edit')") |
| | | @GetMapping("/options") |
| | |
| | | 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:edit')") |
| | | @Log(title = "测试工步设置", businessType = BusinessType.UPDATE) |
| | | @PutMapping("/{testId}/logic-step-mappings") |
| | | public AjaxResult saveLogicStepMappings(@PathVariable Long testId, |
| | | @RequestBody List<TTestLogicStepMapping> mappings) |
| | | { |
| | | testService.saveLogicStepMappings(testId, mappings, getUserId(), getUsername()); |
| | | return success(testService.selectTestById(testId)); |
| | | } |
| | | |
| | | /** 返回当前测试某类数据的人工覆盖和删除状态,供刷新后恢复展示。 */ |
| | | @PreAuthorize("@ss.hasPermi('system:test:query')") |
| | | @GetMapping("/{testId}/console-data/{dataType}/overrides") |
| | | public AjaxResult dataOverrides(@PathVariable Long testId, @PathVariable String dataType) |
| | | { |
| | | return success(consoleDataService.selectOverrides(testId, dataType)); |
| | | } |
| | | |
| | | /** 只查询已归属并持久化到当前测试的检测柜 record。 */ |
| | | @PreAuthorize("@ss.hasPermi('system:test:query')") |
| | | @GetMapping("/{testId}/data/records") |
| | | public AjaxResult persistedRecords(@PathVariable Long testId) |
| | | { |
| | | return success(testDataQueryService.records(testId)); |
| | | } |
| | | |
| | | /** 只查询当前测试持久化采样汇总出的工步事实。 */ |
| | | @PreAuthorize("@ss.hasPermi('system:test:query')") |
| | | @GetMapping("/{testId}/data/steps") |
| | | public AjaxResult persistedSteps(@PathVariable Long testId) |
| | | { |
| | | return success(testDataQueryService.steps(testId)); |
| | | } |
| | | |
| | | /** 只查询当前测试持久化采样汇总出的循环事实。 */ |
| | | @PreAuthorize("@ss.hasPermi('system:test:query')") |
| | | @GetMapping("/{testId}/data/cycles") |
| | | public AjaxResult persistedCycles(@PathVariable Long testId) |
| | | { |
| | | return success(testDataQueryService.cycles(testId)); |
| | | } |
| | | |
| | | /** 一次提交编辑、导入或删除;服务端只追加一条修订行为。 */ |
| | | @PreAuthorize("@ss.hasPermi('system:test:edit')") |
| | | @Log(title = "测试控制台数据修订", businessType = BusinessType.UPDATE) |
| | | @PostMapping("/{testId}/console-data/actions") |
| | | public AjaxResult dataAction(@PathVariable Long testId, @RequestBody ConsoleDataActionRequest request) |
| | | { |
| | | if (request == null) return error("数据操作不能为空"); |
| | | TTestDataRevisionAction action = new TTestDataRevisionAction(); |
| | | action.setTestId(testId); action.setDataType(request.dataType()); action.setOperationType(request.operationType()); |
| | | action.setScopeSummary(request.scopeSummary()); action.setIdentitySummary(request.identitySummary()); |
| | | action.setChangesSummary(request.changesSummary()); action.setReason(request.reason()); |
| | | action.setOperatorId(getUserId()); action.setOperatorName(getUsername()); |
| | | Long actionId = consoleDataService.submitAction(action, |
| | | request.overrides() == null ? java.util.Collections.emptyList() : request.overrides(), |
| | | request.btsSampleIds(), request.collectorSampleIds()); |
| | | return success().put("actionId", actionId); |
| | | } |
| | | |
| | | public record ConsoleDataActionRequest(String dataType, String operationType, String scopeSummary, |
| | | String identitySummary, String changesSummary, String reason, List<TTestDataOverride> overrides, |
| | | List<Long> btsSampleIds, List<Long> collectorSampleIds) { } |
| | | |
| | | @PreAuthorize("@ss.hasPermi('system:test:remove')") |
| | | @Log(title = "测试管理", businessType = BusinessType.DELETE) |
| | | @DeleteMapping("/{testIds}") |
| | |
| | | startPage(); |
| | | return getDataTable(testService.selectTestResults(result)); |
| | | } |
| | | |
| | | } |