Parcourir la source

1.修改了筛选时,筛选列跟目标列相同的bug

heqinwei il y a 7 ans
Parent
commit
02073cb935

+ 10 - 5
pom.xml

@@ -7,7 +7,7 @@
   <groupId>BI</groupId>
   <artifactId>BI</artifactId>
   <version>1.0-SNAPSHOT</version>
-  <packaging>jar</packaging>
+  <packaging>war</packaging>
 
   <name>BI Maven Webapp</name>
   <!-- FIXME change it to the project's website -->
@@ -116,11 +116,18 @@
       <artifactId>spring-boot-starter-aop</artifactId>
     </dependency>
 
-    <dependency>
+      <dependency>
       <groupId>com.alibaba</groupId>
       <artifactId>druid</artifactId>
       <version>0.2.26</version>
-    </dependency>
+      </dependency>
+
+      <dependency>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-tomcat</artifactId>
+        <scope>provided</scope>
+      </dependency>
+
 
     <!-- springboot分页插件 -->
     <!--<dependency>-->
@@ -128,8 +135,6 @@
       <!--<artifactId>pagehelper-spring-boot-starter</artifactId>-->
       <!--<version>5.0.2</version>-->
     <!--</dependency>-->
-
-
   </dependencies>
 
   <build>

+ 13 - 0
src/main/java/com/SpringbootStartApplication.java

@@ -0,0 +1,13 @@
+package com;
+
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
+
+public class SpringbootStartApplication extends SpringBootServletInitializer {
+
+    @Override
+    protected SpringApplicationBuilder configure(SpringApplicationBuilder applicationBuilder){
+        return applicationBuilder.sources(Application.class);
+
+    }
+}

+ 5 - 5
src/main/java/com/dao/ShowChartsMapper.java

@@ -14,8 +14,8 @@ import java.util.List;
 public interface ShowChartsMapper {
 
     //x轴
-    @Select("select ${xAxisName} from ${tableName} group by ${xAxisName}")
-    List<String> getXAxis(@Param("xAxisName") String xAxisName, @Param("tableName") String tableName);
+    @Select("select ${xAxisName} from ${tableName} ${screenToColumn} group by ${xAxisName}")
+    List<String> getXAxis(@Param("xAxisName") String xAxisName, @Param("tableName") String tableName, @Param("screenToColumn") String screenToColumn);
 
 
     //x轴数据
@@ -96,16 +96,16 @@ public interface ShowChartsMapper {
     /*
     获取其他类数据
      */
-    @Select("select ${columnList} from (select ${columnList} from ${tableName} order by ${columnName} ${sort}) where rownum<${line} ${screen}")
+    @Select("select ${columnList} from (select ${columnList} from ${tableName} ${screen} order by ${columnName} ${sort}) where rownum<${line}")
     List<LinkedHashMap<String, Object>> getOtherData(@Param("columnList") String columnList, @Param("tableName") String tableName, @Param("columnName") String columnName,
                                                      @Param("sort") String sort, @Param("line") String line, @Param("screen") String screen);
 
     /*
     总体统计求值
      */
-    @Select("select ${operation}(${columnName}) from ${tableName} where ${columnName} between #{first} and #{last} ${screen}")
+    @Select("select ${operation}(${columnName}) from ${tableName} where ${columnName} between #{first} and #{last}")
     Double getValue(@Param("tableName") String tableName, @Param("columnName") String columnName, @Param("operation") String operation, @Param("first") Double first,
-                    @Param("last") Double last, @Param("screen") String screen);
+                    @Param("last") Double last);
 
     /*
     总体分组的值

+ 22 - 0
src/main/java/com/model/bo/ScreenStr.java

@@ -0,0 +1,22 @@
+package com.model.bo;
+
+public class ScreenStr {
+    private String ret;
+    private String withColumnRet;
+
+    public String getRet() {
+        return ret;
+    }
+
+    public void setRet(String ret) {
+        this.ret = ret;
+    }
+
+    public String getWithColumnRet() {
+        return withColumnRet;
+    }
+
+    public void setWithColumnRet(String withColumnRet) {
+        this.withColumnRet = withColumnRet;
+    }
+}

+ 1 - 0
src/main/java/com/server/DataBasesService.java

@@ -41,6 +41,7 @@ public class DataBasesService {
         String note = databases.getNote();
         if (note == null || "".equals(note)){
             note = "";
+            databases.setNote(note);
         }
         dataConnectorMapper.inputDataBases(databases);
         int id = databases.getId();

+ 17 - 11
src/main/java/com/server/ShowHistogramService.java

@@ -4,6 +4,7 @@ import com.dao.ChartsConfigMapper;
 import com.dao.ShowChartsMapper;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.model.bo.Screen;
+import com.model.bo.ScreenStr;
 import com.model.bo.Series;
 import com.model.pojo.RepCode;
 import com.model.pojo.RepEntity;
@@ -87,6 +88,21 @@ public class ShowHistogramService {
             List<String> xAxisData = new ArrayList<String>();  //X轴自己用
             List<String> xData = new ArrayList<String>();      //X轴前端用
 
+            //取筛选列表
+            List<Screen> screens = histogramConfigInfo.getFilters();
+            ScreenStr scr = new ScreenStr();
+            String screen = "";
+            String screenToColumn = "";
+            if ("".equals(screens) || screens == null){
+                screen = "";
+            }else {
+                scr = screenUtil.screensUtil(screens, xColumn);
+                screen = scr.getRet();
+                screenToColumn = scr.getWithColumnRet();
+                StringBuilder sb = new StringBuilder(screenToColumn);
+                screenToColumn = String.valueOf(sb .replace(1, 5, "where "));
+            }
+
             //X轴
             //判断是否为日期类型
             if ("time".equals(xColumnType)){
@@ -94,7 +110,7 @@ public class ShowHistogramService {
                 xData = timeConverterUtil.toRespons(xAxisData,xAxisType );
                 System.out.println("data:"+xAxisData);
             }else {
-                xAxisData = showChartsMapper.getXAxis(xColumn, tableName);
+                xAxisData = showChartsMapper.getXAxis(xColumn, tableName, screenToColumn);
 
             }
             if ("".equals(xAxisData) || xAxisData == null || xAxisData.size() == 0){
@@ -106,16 +122,6 @@ public class ShowHistogramService {
                 chartsDataInfo.setxAxis(xAxisData);
             }
 
-
-            //取筛选列表
-            List<Screen> screens = histogramConfigInfo.getFilters();
-            String screen = "";
-            if ("".equals(screens) || screens == null){
-                screen = "";
-            }else {
-                screen = screenUtil.screensUtil(screens);
-            }
-
             //无分组时Y值
             Iterator itX = xAxisData.iterator();
             while (itX.hasNext()){

+ 11 - 3
src/main/java/com/server/ShowIndividualService.java

@@ -3,6 +3,7 @@ package com.server;
 import com.dao.ChartsConfigMapper;
 import com.dao.ShowChartsMapper;
 import com.model.bo.Screen;
+import com.model.bo.ScreenStr;
 import com.model.pojo.RepCode;
 import com.model.pojo.RepEntity;
 import com.model.vo.configVo.IndividualConfigInfo;
@@ -61,12 +62,19 @@ public class ShowIndividualService {
 //
             //取筛选列表
             List<Screen> screens = individualConfigInfo.getFilters();
+            ScreenStr scr = new ScreenStr();
             String screen = "";
-            if ("".equals(screens) || screens == null){
+            String screenStr = "";
+            if ("".equals(screens) || screens == null || screens.size() == 0){
                 screen = "";
+                screenStr = "";
             }else {
-                screen = screenUtil.screensUtil(screens);
+                scr = screenUtil.screensUtil(screens, "");
+                screen = scr.getRet();
+                StringBuilder sb = new StringBuilder(screen);
+                screenStr = String.valueOf(sb .replace(1, 5, "where "));
             }
+
         String columnName = individualConfigInfo.getSortColumn();
         System.out.println("columnName:"+columnName);
         //查询其他列
@@ -76,7 +84,7 @@ public class ShowIndividualService {
 
         String tableListName = this.getString(columnListName);
 
-        targetValue = showChartsMapper.getOtherData(tableListName, tableName, columnName, sort, line, screen);
+        targetValue = showChartsMapper.getOtherData(tableListName, tableName, columnName, sort, line, screenStr);
     }catch (Exception e){
         e.printStackTrace();
         System.out.println("异常");

+ 22 - 8
src/main/java/com/server/ShowLineService.java

@@ -5,6 +5,7 @@ import com.dao.ShowChartsMapper;
 import com.model.bo.LineSeries;
 import com.model.bo.LineSeriesMap;
 import com.model.bo.Screen;
+import com.model.bo.ScreenStr;
 import com.model.pojo.RepCode;
 import com.model.pojo.RepEntity;
 import com.model.vo.configVo.LineConfigInfo;
@@ -77,6 +78,21 @@ public class ShowLineService {
         List<String> xAxisData = new ArrayList<String>();  //X轴自己用
 //        List<String> xData = new ArrayList<String>();      //X轴前端用
 
+            //取筛选列表
+            List<Screen> screens = lineConfigInfo.getFilters();
+            ScreenStr scr = new ScreenStr();
+            String screen = "";
+            String screenToColumn = "";
+            if ("".equals(screens) || screens == null){
+                screen = "";
+            }else {
+                scr = screenUtil.screensUtil(screens, xColumn);
+                screen = scr.getRet();
+                screenToColumn = scr.getWithColumnRet();
+                StringBuilder sb = new StringBuilder(screenToColumn);
+                screenToColumn = String.valueOf(sb .replace(1, 5, "where "));
+            }
+
         //X轴
         //判断是否为日期类型
             xAxisData = timeConverterUtil.timeConverter(xColumn, tableName, xAxisType);
@@ -87,18 +103,13 @@ public class ShowLineService {
             return new RepEntity(RepCode.Null);
         }
 
-        //筛选
-            List<Screen> screens = lineConfigInfo.getFilters();
-            String screen = "";
-            if ("".equals(screens) || screens == null){
-                screen = "";
-            }else {
-                screen = screenUtil.screensUtil(screens);
-            }
         //无分组时Y值
         Iterator itX = xAxisData.iterator();
         while (itX.hasNext()){
             String xdata = (String)itX.next();
+            if (xdata == null || "".equals(xdata)){
+                continue;
+            }
             double valueOne = 0;
             String valueOnes = null;
 //                System.out.println("Y:"+ yColumn + "........x:" + xColumn + "........yAxistype:" + yAxisType + "...xtpye:+"+yAxisType+ "   xdata:"+xdata);
@@ -143,6 +154,9 @@ public class ShowLineService {
                     //每个系列对应X轴上的值
                     while (itXAxisData.hasNext()){
                         String xAxisDataOne = (String) itXAxisData.next();
+                        if ("".equals(xAxisDataOne) || xAxisDataOne == null){
+                            continue;
+                        }
                         double groupsValueOne = 0;
                         String groupsValueOnes = null;
                         groupsValueOnes = timeConverterUtil.getGroupTimeConverter(yAxisType, yColumn, tableName, groupByName, xAxisType,

+ 24 - 8
src/main/java/com/server/ShowPieService.java

@@ -5,6 +5,7 @@ import com.dao.ShowChartsMapper;
 import com.model.bo.PieSeries;
 import com.model.bo.PieSeriesMap;
 import com.model.bo.Screen;
+import com.model.bo.ScreenStr;
 import com.model.pojo.RepCode;
 import com.model.pojo.RepEntity;
 import com.model.vo.configVo.PieConfigInfo;
@@ -61,6 +62,21 @@ 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 = "";
+        if ("".equals(screens) || screens == null){
+            screen = "";
+        }else {
+            scr = screenUtil.screensUtil(screens, xColumn);
+            screen = scr.getRet();
+            screenToColumn = scr.getWithColumnRet();
+            StringBuilder sb = new StringBuilder(screenToColumn);
+            screenToColumn = String.valueOf(sb .replace(1, 5, "where "));
+        }
+
         //X轴
         //判断是否为日期类型
         if ("time".equals(xColumnType)){
@@ -68,7 +84,7 @@ public class ShowPieService {
             xData = timeConverterUtil.toRespons(xAxisData,xAxisType );
             System.out.println("data:"+xAxisData);
         }else {
-            xAxisData = showChartsMapper.getXAxis(xColumn, tableName);
+            xAxisData = showChartsMapper.getXAxis(xColumn, tableName, screenToColumn);
 
         }
         if ("".equals(xAxisData) || xAxisData == null || xAxisData.size() == 0){
@@ -81,13 +97,13 @@ public class ShowPieService {
         }
 
         //取筛选列表
-        List<Screen> screens = pieConfigInfo.getFilters();
-        String screen = "";
-        if ("".equals(screens) || screens == null){
-            screen = "";
-        }else {
-            screen = screenUtil.screensUtil(screens);
-        }
+//        List<Screen> screens = pieConfigInfo.getFilters();
+//        String screen = "";
+//        if ("".equals(screens) || screens == null){
+//            screen = "";
+//        }else {
+//            screen = screenUtil.screensUtil(screens);
+//        }
 
         //无分组时Y值
         Iterator itX = xAxisData.iterator();

+ 6 - 4
src/main/java/com/server/ShowPopulationService.java

@@ -3,6 +3,7 @@ package com.server;
 import com.dao.ChartsConfigMapper;
 import com.dao.ShowChartsMapper;
 import com.model.bo.Screen;
+import com.model.bo.ScreenStr;
 import com.model.pojo.RepCode;
 import com.model.pojo.RepEntity;
 import com.model.vo.configVo.PopulationInfo;
@@ -60,12 +61,13 @@ public class ShowPopulationService {
             List<Screen> screens = populationInfo.getFilters();
             String screen = "";
             String screenStr = "";
+            ScreenStr str = new ScreenStr();
             if ("".equals(screens) || screens == null || screens.size() == 0){
                 screen = "";
                 screenStr = "";
             }else {
-                screen = screenUtil.screensUtil(screens);
-//                screenStr = screen.replace("and", "where");
+                str = screenUtil.screensUtil(screens, "");
+                screen = str.getRet();
                 StringBuilder sb = new StringBuilder(screen);
                 screenStr = String.valueOf(sb .replace(1, 5, "where "));
             }
@@ -80,13 +82,13 @@ public class ShowPopulationService {
                     Double median = showChartsMapper.getColumnDev(tableName, columnName, calculation, screenStr);
                     calculation = "MAX";
                     Double max = showChartsMapper.getColumnDev(tableName, columnName, calculation, screenStr);
-                    value = showChartsMapper.getValue(tableName, columnName, calculation, median, max, screenStr);
+                    value = showChartsMapper.getValue(tableName, columnName, calculation, median, max);
                 } else if ("25th".equals(operator)) {
                     String calculation = "MEDIAN";
                     Double median = showChartsMapper.getColumnDev(tableName, columnName, calculation, screen);
                     calculation = "MIN";
                     Double min = showChartsMapper.getColumnDev(tableName, columnName, calculation, screenStr);
-                    value = showChartsMapper.getValue(tableName, columnName, calculation, min, median, screen);
+                    value = showChartsMapper.getValue(tableName, columnName, calculation, min, median);
                 } else if ("percentage".equals(operator)) {
                     value = 1.00;
                 } else {

+ 18 - 12
src/main/java/com/server/ShowScatterService.java

@@ -5,6 +5,7 @@ import com.dao.ShowChartsMapper;
 import com.model.bo.LineSeries;
 import com.model.bo.LineSeriesMap;
 import com.model.bo.Screen;
+import com.model.bo.ScreenStr;
 import com.model.pojo.RepCode;
 import com.model.pojo.RepEntity;
 import com.model.vo.configVo.ScatterConfigInfo;
@@ -78,6 +79,21 @@ public class ShowScatterService {
         List<String> xAxisData = new ArrayList<String>();  //X轴自己用
         List<String> xData = new ArrayList<String>();      //X轴前端用
 
+            //取筛选列表
+            List<Screen> screens = scatterConfigInfo.getFilters();
+            ScreenStr scr = new ScreenStr();
+            String screen = "";
+            String screenToColumn = "";
+            if ("".equals(screens) || screens == null){
+                screen = "";
+            }else {
+                scr = screenUtil.screensUtil(screens, xColumn);
+                screen = scr.getRet();
+                screenToColumn = scr.getWithColumnRet();
+                StringBuilder sb = new StringBuilder(screenToColumn);
+                screenToColumn = String.valueOf(sb .replace(1, 5, "where "));
+            }
+
         //X轴
         //判断是否为日期类型
         if ("time".equals(xColumnType)){
@@ -85,7 +101,7 @@ public class ShowScatterService {
             xData = timeConverterUtil.toRespons(xAxisData,xAxisType );
             System.out.println("data:"+xAxisData);
         }else {
-            xAxisData = showChartsMapper.getXAxis(xColumn, tableName);
+            xAxisData = showChartsMapper.getXAxis(xColumn, tableName, screenToColumn);
 
         }
 
@@ -93,16 +109,6 @@ public class ShowScatterService {
             return new RepEntity(RepCode.Null);
         }
 
-
-            //取筛选列表
-            List<Screen> screens = scatterConfigInfo.getFilters();
-            String screen = "";
-            if ("".equals(screens) || screens == null){
-                screen = "";
-            }else {
-                screen = screenUtil.screensUtil(screens);
-            }
-
         //无分组时Y值
         Iterator itX = xAxisData.iterator();
         while (itX.hasNext()){
@@ -112,7 +118,7 @@ public class ShowScatterService {
             if ("time".equals(xColumnType)){
                 valueOnes = timeConverterUtil.getTimeValueConverter(yColumn, xColumn, tableName, yAxisType, xAxisType, xdata, screen);
             }else {
-                valueOnes = showChartsMapper.getValues(yColumn, xColumn, tableName, yAxisType, xdata,"");
+                valueOnes = showChartsMapper.getValues(yColumn, xColumn, tableName, yAxisType, xdata, screen);
             }
             if (valueOnes == null || "".equals(valueOnes)){
                 valueOne = 0;

+ 29 - 8
src/main/java/com/util/ScreenUtil.java

@@ -1,6 +1,7 @@
 package com.util;
 
 import com.model.bo.Screen;
+import com.model.bo.ScreenStr;
 import org.springframework.stereotype.Component;
 
 import java.util.Iterator;
@@ -11,12 +12,16 @@ import java.util.List;
  */
 @Component
 public class ScreenUtil {
-    public String screensUtil(List<Screen> screenList){
+    public ScreenStr screensUtil(List<Screen> screenList, String xColumn){
         //返回值
+        ScreenStr screenStr = new ScreenStr();
         if (screenList.size() == 0){
-            return "";
+            screenStr.setRet("");
+            screenStr.setWithColumnRet("");
+            return screenStr;
         }
-        String ret = "";
+        String ret = "";            //筛选条件
+        String withColumnRet = "";   //与目标列相同的筛选条件
         Iterator isList = screenList.iterator();
         while (isList.hasNext()){
             Screen screen = (Screen) isList.next();
@@ -27,15 +32,25 @@ public class ScreenUtil {
 
             if (columnType != "time" && !("time".equals(columnType))){
                 String symbVal = getSymbAndVal(symbol, value);
-                ret = ret + " and " + columnName + " " + symbVal;
+                if (xColumn.equals(columnName)){
+                    withColumnRet = ret + " and " + columnName + " " + symbVal;
+                }else {
+                    ret = ret + " and " + columnName + " " + symbVal;
+                }
                 System.out.println("ret:" + ret);
             }if(columnType == "time" || "time".equals(columnType)){
                 String symbVal = getTimeSymbAndVal(symbol, value);
                 String column = getTimeColumn(columnName);
-                ret = ret + " and " + column + " " + symbVal;
+                if (xColumn.equals(columnName)){
+                    withColumnRet = ret + " and " + column + " " + symbVal;
+                }else {
+                    ret = ret + " and " + column + " " + symbVal;
+                }
             }
         }
-        return ret;
+        screenStr.setRet(ret);
+        screenStr.setWithColumnRet(withColumnRet);
+        return screenStr;
     }
     public String getSymbAndVal(String symbol, String value){
         String values = "" + value;
@@ -52,7 +67,13 @@ public class ScreenUtil {
             tar = "is null";
         }else if ("notNull".equals(symbol)){
             tar = "is not null";
-        }else {
+        }else if ("between".equals(symbol)){
+            tar = "";
+            String[] str = value.split(",");
+            String str1 = str[0];
+            String str2 = str[1];
+            tar = "between '" + str1 + "' and '" + str2 + "'";
+        } else {
             tar = symbol + " " + values + "'";
         }
         return tar;
@@ -74,7 +95,7 @@ public class ScreenUtil {
             String[] str = value.split(",");
             String str1 = str[0];
             String str2 = str[1];
-            tar = "between str1";
+            tar = "between '" + str1 + "' and '" + str2 + "'";
         }
         else {
             tar = symbol + " '" + values + "'";