From 43c8a44f5651c52edb1cc823bbb120881f732e36 Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期一, 31 八月 2026 23:36:02 +0800
Subject: [PATCH] 实现测试工步设置与工步汇总
---
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTestServiceImpl.java | 34 ++++++++++++++++++++++++++++++++++
1 files changed, 34 insertions(+), 0 deletions(-)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTestServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTestServiceImpl.java
index 046b8c3..7c2e5f4 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTestServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTestServiceImpl.java
@@ -25,6 +25,7 @@
import com.ruoyi.system.domain.TTestResult;
import com.ruoyi.system.domain.TTestFieldSnapshot;
import com.ruoyi.system.domain.TTestWarningThreshold;
+import com.ruoyi.system.domain.TTestLogicStepMapping;
import com.ruoyi.system.domain.TDetectionChannel;
import com.ruoyi.system.domain.vo.TestConfigurationOptionsVo;
import com.ruoyi.system.mapper.TTestMapper;
@@ -333,6 +334,35 @@
return testMapper.selectTestResults(result);
}
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public int saveLogicStepMappings(Long testId, List<TTestLogicStepMapping> mappings, Long operatorId, String updateBy)
+ {
+ if (testId == null || operatorId == null) throw new ServiceException("测试和操作人不能为空");
+ TTest current = testMapper.selectTestByIdForUpdate(testId);
+ if (current == null) throw new ServiceException("测试不存在");
+ List<TTestLogicStepMapping> normalized = mappings == null ? List.of() : mappings;
+ int previousEnd = 0;
+ int expectedNo = 1;
+ for (TTestLogicStepMapping mapping : normalized)
+ {
+ if (mapping == null || mapping.getLogicalNo() == null || mapping.getLogicalNo() != expectedNo
+ || mapping.getStartStepNo() == null || mapping.getEndStepNo() == null
+ || mapping.getStartStepNo() < 1 || mapping.getEndStepNo() < mapping.getStartStepNo()
+ || mapping.getStartStepNo() <= previousEnd || StringUtils.isEmpty(trimToNull(mapping.getLogicalName())))
+ throw new ServiceException("逻辑工步必须按连续实际工步升序且互不重叠");
+ mapping.setLogicalName(trimToNull(mapping.getLogicalName()));
+ previousEnd = mapping.getEndStepNo();
+ expectedNo++;
+ }
+ String oldJson = current.getLogicStepMappingsJson();
+ String newJson = JSON.toJSONString(normalized);
+ int rows = testMapper.updateLogicStepMappings(testId, newJson, updateBy, new Date());
+ if (rows != 1) throw new ServiceException("工步设置已变更,请刷新后重试");
+ testMapper.insertTestAudit(testId, "LOGIC_STEP_MAPPING_UPDATED", operatorId, updateBy, oldJson, newJson);
+ return rows;
+ }
+
private void loadConfiguration(TTest test)
{
Long testId = test.getTestId();
@@ -385,6 +415,10 @@
test.setReceptionIntervals(intervals == null ? List.of() : intervals);
List<TTestFieldSnapshot> loadedSnapshots = sharedFieldSnapshotService.selectByTestId(testId);
test.setFieldSnapshots(loadedSnapshots == null ? mutable(test.getFieldSnapshots()) : loadedSnapshots);
+ String mappingJson = test.getLogicStepMappingsJson();
+ try { test.setLogicStepMappings(mappingJson == null || mappingJson.isBlank()
+ ? new ArrayList<>() : JSON.parseArray(mappingJson, TTestLogicStepMapping.class)); }
+ catch (JSONException exception) { throw new ServiceException("逻辑工步设置无法解析"); }
}
private void validateBase(TTest test, boolean update)
--
Gitblit v1.7.1