From ab74acc84aa3b7ef6a8a09e5faf40e91c55084c1 Mon Sep 17 00:00:00 2001 From: czeeland <43428442+czeeland@users.noreply.github.com> Date: Wed, 8 Jan 2025 16:25:58 +0800 Subject: [PATCH] [improvement][headless]Update the model without updating the names of metrics and dimensions. (#1999) --- .../service/impl/DimensionServiceImpl.java | 3 +- .../service/impl/MetricServiceImpl.java | 29 +++++++++++++++---- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DimensionServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DimensionServiceImpl.java index 083e21079..20589cfc2 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DimensionServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DimensionServiceImpl.java @@ -465,10 +465,11 @@ public class DimensionServiceImpl extends ServiceImpl .collect(Collectors.toMap(MetricResp::getBizName, a -> a, (k1, k2) -> k1)); Map nameMap = metricResps.stream() .collect(Collectors.toMap(MetricResp::getName, a -> a, (k1, k2) -> k1)); - List metricToInsert = - metricReqs.stream() - .filter(metric -> !bizNameMap.containsKey(metric.getBizName()) - && !nameMap.containsKey(metric.getName())) - .collect(Collectors.toList()); + List metricToInsert = Lists.newArrayList(); + metricReqs.stream().forEach(metric -> { + if (!bizNameMap.containsKey(metric.getBizName()) + && !nameMap.containsKey(metric.getName())) { + metricToInsert.add(metric); + } else { + MetricResp metricRespByBizName = bizNameMap.get(metric.getBizName()); + MetricResp metricRespByName = nameMap.get(metric.getName()); + if (null != metricRespByBizName && isChange(metric, metricRespByBizName)) { + metric.setId(metricRespByBizName.getId()); + this.updateMetric(metric, user); + } else { + if (null != metricRespByName && isChange(metric, metricRespByName)) { + metric.setId(metricRespByName.getId()); + this.updateMetric(metric, user); + } + } + } + }); if (CollectionUtils.isEmpty(metricToInsert)) { return; } @@ -804,4 +818,9 @@ public class MetricServiceImpl extends ServiceImpl .getAllModelByDomainIds(Collections.singletonList(queryMetricReq.getDomainId())); return modelResps.stream().map(ModelResp::getId).collect(Collectors.toSet()); } + + private boolean isChange(MetricReq metricReq, MetricResp metricResp) { + boolean isNameChange = !metricReq.getName().equals(metricResp.getName()); + return isNameChange; + } }