diff --git a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/YoyChartHandler.java b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/YoyChartHandler.java
index 72a7da1c02..bafa7e64d8 100644
--- a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/YoyChartHandler.java
+++ b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/YoyChartHandler.java
@@ -115,7 +115,7 @@ public class YoyChartHandler extends DefaultChartHandler {
             yoyData.addAll(resultData);
             var result = this.buildNormalResult(view, formatResult, filterResult, yoyData);
             expandedResult.setData(result);
-            expandedResult.setOriginData(originData);
+            expandedResult.setOriginData(resultData);
             expandedResult.setQuerySql(originSql);
         }
         return expandedResult;
diff --git a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/numeric/IndicatorHandler.java b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/numeric/IndicatorHandler.java
index 9bb6ed89f4..e39125fcb5 100644
--- a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/numeric/IndicatorHandler.java
+++ b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/numeric/IndicatorHandler.java
@@ -1,42 +1,38 @@
 package io.dataease.chart.charts.impl.numeric;
 
+import io.dataease.chart.charts.impl.YoyChartHandler;
 import io.dataease.chart.utils.ChartDataBuild;
-import io.dataease.engine.sql.SQLProvider;
-import io.dataease.engine.trans.Dimension2SQLObj;
-import io.dataease.engine.trans.Quota2SQLObj;
-import io.dataease.engine.utils.Utils;
-import io.dataease.extensions.datasource.dto.DatasourceRequest;
-import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO;
 import io.dataease.extensions.datasource.model.SQLMeta;
 import io.dataease.extensions.datasource.provider.Provider;
 import io.dataease.extensions.view.dto.*;
-import io.dataease.extensions.view.util.FieldUtil;
 import lombok.Getter;
 import org.springframework.stereotype.Component;
-import org.springframework.util.StringUtils;
 
-import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
 @Component
-public class IndicatorHandler extends NumericalChartHandler {
+public class IndicatorHandler extends YoyChartHandler {
     @Getter
     private String render = "custom";
     @Getter
     private String type = "indicator";
 
+    @Override
+    public Map<String, Object> buildNormalResult(ChartViewDTO view, AxisFormatResult formatResult, CustomFilterResult filterResult, List<String[]> data) {
+        boolean isDrill = filterResult.getFilterList().stream().anyMatch(ele -> ele.getFilterType() == 1);
+        var xAxis = formatResult.getAxisMap().get(ChartAxis.xAxis);
+        var yAxis = formatResult.getAxisMap().get(ChartAxis.yAxis);
+        return ChartDataBuild.transNormalChartData(xAxis, yAxis, view, data, isDrill);
+    }
+
     @Override
     public <T extends ChartCalcDataResult> T calcChartResult(ChartViewDTO view, AxisFormatResult formatResult, CustomFilterResult filterResult, Map<String, Object> sqlMap, SQLMeta sqlMeta, Provider provider) {
-        var dsMap = (Map<Long, DatasourceSchemaDTO>) sqlMap.get("dsMap");
-        List<String> dsList = new ArrayList<>();
-        for (Map.Entry<Long, DatasourceSchemaDTO> next : dsMap.entrySet()) {
-            dsList.add(next.getValue().getType());
-        }
-        boolean needOrder = Utils.isNeedOrder(dsList);
-        boolean crossDs = Utils.isCrossDs(dsMap);
-        DatasourceRequest datasourceRequest = new DatasourceRequest();
-        datasourceRequest.setDsList(dsMap);
+        this.setIndicatorHandlerXAxis(formatResult, filterResult);
+        return (T) super.calcChartResult(view, formatResult, filterResult, sqlMap, sqlMeta, provider);
+    }
+
+    private void setIndicatorHandlerXAxis(AxisFormatResult formatResult, CustomFilterResult filterResult) {
         var xAxis = formatResult.getAxisMap().get(ChartAxis.xAxis);
         var yAxis = formatResult.getAxisMap().get(ChartAxis.yAxis);
         var allFields = (List<ChartViewFieldDTO>) filterResult.getContext().get("allFields");
@@ -47,36 +43,18 @@ public class IndicatorHandler extends NumericalChartHandler {
         if (isYoy) {
             xAxis.clear();
             // 设置维度字段,从同环比中获取用户选择的字段
-            xAxis.addAll(allFields.stream().filter(i-> StringUtils.endsWithIgnoreCase(i.getId().toString(),yAxis.get(0).getCompareCalc().getField().toString())).toList());
+            xAxis.addAll(allFields.stream().filter(i -> org.springframework.util.StringUtils.endsWithIgnoreCase(i.getId().toString(), yAxis.get(0).getCompareCalc().getField().toString())).toList());
             xAxis.get(0).setSort("desc");
-            if(StringUtils.endsWithIgnoreCase("month_mom",compareCalc.getType())){
+            if (org.springframework.util.StringUtils.endsWithIgnoreCase("month_mom", compareCalc.getType())) {
                 xAxis.get(0).setDateStyle("y_M");
             }
-            if(StringUtils.endsWithIgnoreCase("day_mom",compareCalc.getType())){
+            if (org.springframework.util.StringUtils.endsWithIgnoreCase("day_mom", compareCalc.getType())) {
                 xAxis.get(0).setDateStyle("y_M_d");
             }
-            if(StringUtils.endsWithIgnoreCase("year_mom",compareCalc.getType())){
+            if (org.springframework.util.StringUtils.endsWithIgnoreCase("year_mom", compareCalc.getType())) {
                 xAxis.get(0).setDateStyle("y");
             }
         }
-        Dimension2SQLObj.dimension2sqlObj(sqlMeta, xAxis, FieldUtil.transFields(allFields), crossDs, dsMap, Utils.getParams(FieldUtil.transFields(allFields)), view.getCalParams());
-        Quota2SQLObj.quota2sqlObj(sqlMeta, yAxis, FieldUtil.transFields(allFields), crossDs, dsMap, Utils.getParams(FieldUtil.transFields(allFields)), view.getCalParams());
-        String querySql = SQLProvider.createQuerySQL(sqlMeta, true, needOrder, view);
-        querySql = provider.rebuildSQL(querySql, sqlMeta, crossDs, dsMap);
-        datasourceRequest.setQuery(querySql);
-        logger.debug("indicator chart sql: " + querySql);
-        List<String[]> data = (List<String[]>) provider.fetchResultField(datasourceRequest).get("data");
-        boolean isdrill = filterResult
-                .getFilterList()
-                .stream()
-                .anyMatch(ele -> ele.getFilterType() == 1);
-        quickCalc(xAxis, yAxis, data);
-        Map<String, Object> result = ChartDataBuild.transNormalChartData(xAxis, yAxis, view, data, isdrill);
-        T calcResult = (T) new ChartCalcDataResult();
-        calcResult.setData(result);
-        calcResult.setContext(filterResult.getContext());
-        calcResult.setQuerySql(querySql);
-        calcResult.setOriginData(data);
-        return calcResult;
+        formatResult.getAxisMap().put(ChartAxis.xAxis, xAxis);
     }
 }