| | |
| | | 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; |
| | |
| | | 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(); |
| | |
| | | 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) |