From 3d781111a5289987fdda13ce45bcfcabad207644 Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期二, 01 九月 2026 00:48:33 +0800
Subject: [PATCH] 实现控制台数据修订导入删除
---
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TTestController.java | 89 ++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 89 insertions(+), 0 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TTestController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TTestController.java
index c1cd2e5..e111730 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TTestController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TTestController.java
@@ -20,7 +20,11 @@
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;
/** 测试管理 Controller。 */
@RestController
@@ -29,6 +33,9 @@
{
@Autowired
private ITTestService testService;
+
+ @Autowired
+ private ITestConsoleDataService consoleDataService;
@PreAuthorize("@ss.hasAnyPermi('system:test:add,system:test:edit')")
@GetMapping("/options")
@@ -95,6 +102,87 @@
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));
+ }
+
+ /** 一次提交编辑、导入或删除;服务端只追加一条修订行为。 */
+ @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}")
@@ -111,4 +199,5 @@
startPage();
return getDataTable(testService.selectTestResults(result));
}
+
}
--
Gitblit v1.7.1