| | |
| | | private List<Map<String, Object>> applyEffectiveData(Long testId, String dataType, |
| | | List<Map<String, Object>> source) |
| | | { |
| | | List<Map<String, Object>> effective = new java.util.ArrayList<>( |
| | | source == null ? List.<Map<String, Object>>of() : source); |
| | | List<Map<String, Object>> imports = mapper.selectConsoleImportRecords(testId, dataType); |
| | | for (Map<String, Object> imported : imports == null ? List.<Map<String, Object>>of() : imports) |
| | | { |
| | | try |
| | | { |
| | | @SuppressWarnings("unchecked") |
| | | Map<String, Object> row = (Map<String, Object>) (Map<?, ?>) JSON.parseObject( |
| | | String.valueOf(imported.get("rowValues")), Map.class); |
| | | row.put("stableIdentity", imported.get("stableIdentity")); |
| | | effective.add(row); |
| | | } |
| | | catch (RuntimeException ignored) { } |
| | | } |
| | | List<TTestDataOverride> overrides = mapper.selectDataOverrides(testId, dataType); |
| | | if (source == null || source.isEmpty() || overrides == null || overrides.isEmpty()) |
| | | return source == null ? List.of() : source; |
| | | if (effective.isEmpty() || overrides == null || overrides.isEmpty()) return effective; |
| | | Map<String, TTestDataOverride> byIdentity = new HashMap<>(); |
| | | for (TTestDataOverride override : overrides) |
| | | if (override != null && override.getStableIdentity() != null) |
| | | byIdentity.put(override.getStableIdentity(), override); |
| | | List<Map<String, Object>> effective = new java.util.ArrayList<>(source.size()); |
| | | for (Map<String, Object> row : source) |
| | | List<Map<String, Object>> filtered = new java.util.ArrayList<>(effective.size()); |
| | | for (Map<String, Object> row : effective) |
| | | { |
| | | String identity = stableIdentity(dataType, row); |
| | | String identity = row.get("stableIdentity") == null ? stableIdentity(dataType, row) |
| | | : String.valueOf(row.get("stableIdentity")); |
| | | TTestDataOverride override = byIdentity.get(identity); |
| | | if (override != null && Boolean.TRUE.equals(override.getDeleted())) continue; |
| | | Map<String, Object> copy = new LinkedHashMap<>(row); |
| | |
| | | // 覆盖已由修订服务校验;解析异常时保留原始事实,避免查询整体失败。 |
| | | } |
| | | } |
| | | effective.add(copy); |
| | | filtered.add(copy); |
| | | } |
| | | return effective; |
| | | return filtered; |
| | | } |
| | | |
| | | private String stableIdentity(String dataType, Map<String, Object> row) |