Browse Source

饼图取数优化

chenw 6 years ago
parent
commit
c78f988990

+ 7 - 6
bi-server/src/main/java/com/usoftchina/bi/server/dao/chart/ShowChartsMapper.java

@@ -3,6 +3,7 @@ package com.usoftchina.bi.server.dao.chart;
 import com.usoftchina.bi.core.base.TestPage;
 import com.usoftchina.bi.server.model.bo.LineSeriesGroupMap;
 import com.usoftchina.bi.server.model.bo.LineSeriesMap;
+import com.usoftchina.bi.server.model.bo.PieSeriesMap;
 import com.usoftchina.bi.server.model.po.TargetData;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -11,7 +12,6 @@ import org.springframework.stereotype.Repository;
 
 import java.util.LinkedHashMap;
 import java.util.List;
-import java.util.Map;
 
 @Mapper
 @Repository
@@ -39,6 +39,12 @@ public interface ShowChartsMapper {
                     @Param("tableName") String tableName, @Param("dataType") String dataType,
                     @Param("screen") String screen);
 
+    //x轴数据 -> 饼图优化后
+    @Select("select ${dataType}(${yAxisName}) value, ${xColumn} name from ${tableName} where 1=1 ${screen} GROUP BY ${xColumn}")
+    List<PieSeriesMap> getPieXValues(@Param("yAxisName") String yAxisName, @Param("xColumn") String xColumn,
+                                    @Param("tableName") String tableName, @Param("dataType") String dataType,
+                                    @Param("screen") String screen);
+
     //x轴为空时的数据
     @Select("select ${dataType}(${yAxisName}) from ${tableName} where ${xColumn} is null ${screen}")
     String getValuesIsNull(@Param("yAxisName") String yAxisName, @Param("xColumn") String xColumn,
@@ -63,11 +69,6 @@ public interface ShowChartsMapper {
                           @Param("xColumn") String xColumn,
                           @Param("screen") String screen);
 
-    //查询分组的值(柱状图)->优化后
-    @Select("select ${dataType}(${yAxisName}) count,${groupsColumn}, ${xColumn} from ${tableName} GROUP BY  ${groupsColumn},${xColumn}")
-    List<Map<String, Object>> getGroupsValues(@Param("dataType") String dataType, @Param("yAxisName") String yAxisName, @Param("tableName") String tableName,
-                                 @Param("groupsColumn") String groupsColumn, @Param("xColumn") String xColumn, @Param("screen") String screen);
-
     //时间类型的X轴
     @Select("select distinct to_char(${xAxisName},${timeType})time from ${tableName} ${screen} ORDER by to_char(${xAxisName},${timeType}) ASC")
     List<String> getTimeDate(@Param("xAxisName") String xAxisName, @Param("tableName") String tableName,

+ 23 - 49
bi-server/src/main/java/com/usoftchina/bi/server/service/chart/ShowPieService.java

@@ -81,29 +81,29 @@ public class ShowPieService {
         List<String> xAxisData = new ArrayList<String>();  //X轴自己用
         List<String> xData = new ArrayList<String>();      //X轴前端用
 
-            //取筛选列表
-            List<Screen> screens = pieConfigInfo.getFilters();
-            ScreenStr scr = new ScreenStr();
-            String screen = "";               //正常筛选条件
-            String screenToColumn = "";       //跟目标列相同的筛选条件
-            String screenToColumnS = "";       //跟目标列相同的筛选条件
-            if ("".equals(screens) || screens == null || screens.size() == 0){
-                screen = "";
-            }else {
-                scr = screenUtil.screensUtil(screens, xColumn, xColumnType);
-                screen = scr.getRet();
-                screenToColumn = scr.getWithColumnRet();
-                StringBuilder sb = new StringBuilder(screenToColumn);
-                if (screenToColumn != null && !("".equals(screenToColumn))){
-                    screenToColumnS = screenToColumn + " " + screen;               //and
-                    screenToColumn = String.valueOf(sb .replace(1, 5, "where "));
-                    screen = screenToColumn + " " + screen;         //where
-                } else {
-                    StringBuilder sb1 = new StringBuilder(screen);
-                    screenToColumnS = screen;
-                    screen = String.valueOf(sb1 .replace(1, 5, "where "));
-                }
+        //取筛选列表
+        List<Screen> screens = pieConfigInfo.getFilters();
+        ScreenStr scr = new ScreenStr();
+        String screen = "";               //正常筛选条件
+        String screenToColumn = "";       //跟目标列相同的筛选条件
+        String screenToColumnS = "";       //跟目标列相同的筛选条件
+        if ("".equals(screens) || screens == null || screens.size() == 0){
+            screen = "";
+        }else {
+            scr = screenUtil.screensUtil(screens, xColumn, xColumnType);
+            screen = scr.getRet();
+            screenToColumn = scr.getWithColumnRet();
+            StringBuilder sb = new StringBuilder(screenToColumn);
+            if (screenToColumn != null && !("".equals(screenToColumn))){
+                screenToColumnS = screenToColumn + " " + screen;               //and
+                screenToColumn = String.valueOf(sb .replace(1, 5, "where "));
+                screen = screenToColumn + " " + screen;         //where
+            } else {
+                StringBuilder sb1 = new StringBuilder(screen);
+                screenToColumnS = screen;
+                screen = String.valueOf(sb1 .replace(1, 5, "where "));
             }
+        }
 
         //X轴
         //判断是否为日期类型
@@ -130,33 +130,7 @@ public class ShowPieService {
         }
 
         //无分组时Y值
-        Iterator itX = xAxisData.iterator();
-        while (itX.hasNext()){
-            String xdata = (String)itX.next();
-            if ("".equals(xdata) || xdata == null){
-                //continue;
-            }
-            double valueOne = 0;
-            String valueOnes = null;
-            PieSeriesMap pieSeriesMap = new PieSeriesMap();
-            if ("time".equals(xColumnType)){
-                valueOnes = timeConverterUtil.getTimeValueConverter(yColumn, xColumn, tableName, yAxisType, xAxisType, xdata, screenToColumnS);
-            }else {
-                if (xdata == null || "".equals(xdata)){
-                    valueOnes = showChartsMapper.getValuesIsNull(yColumn, xColumn, tableName, yAxisType, screenToColumnS);
-                }else {
-                    valueOnes = showChartsMapper.getXValue(yColumn, xColumn, tableName, yAxisType, xdata, screenToColumnS);
-                }
-            }
-            if (valueOnes == null || "".equals(valueOnes)){
-                valueOne = 0;
-            }else {
-                valueOne = Double.parseDouble(valueOnes);
-            }
-            pieSeriesMap.setName(xdata);
-            pieSeriesMap.setValue(valueOne);
-            value.add(pieSeriesMap);
-        }
+        value  = showChartsMapper.getPieXValues(yColumn, xColumn, tableName, yAxisType, screenToColumnS);
 
         series.setName(pieConfigInfo.getSeries().getColumnName());
         series.setValue(value);