yeg
2026-09-02 4eaa4be4d2cbd2aa49d36a313ce71ad3e743db4a
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TTestController.java
@@ -20,7 +20,12 @@
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
@@ -29,6 +34,12 @@
{
    @Autowired
    private ITTestService testService;
    @Autowired
    private ITestConsoleDataService consoleDataService;
    @Autowired
    private ITestDataQueryService testDataQueryService;
    @PreAuthorize("@ss.hasAnyPermi('system:test:add,system:test:edit')")
    @GetMapping("/options")
@@ -135,6 +146,71 @@
        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}")
@@ -151,4 +227,5 @@
        startPage();
        return getDataTable(testService.selectTestResults(result));
    }
}