Просмотр исходного кода

【BI商业智能】【饼图钻取】

zhaoy 6 лет назад
Родитель
Сommit
15e77a605e

+ 66 - 3
bi-server/src/main/java/com/usoftchina/bi/server/utils/ScreenUtil.java

@@ -25,6 +25,56 @@ public class ScreenUtil {
     @Autowired
     ObjectMapper objectMapper;
 
+    public String getNotInItems(String columnType, String type, String value){
+        String[] values = value.split(",");
+        String itemsStr = "(";
+        if ("time".equals(columnType)) {
+            if("halfYear".equals(type)) {
+                for(int i = 0; i< values.length; i++){
+                    String [][] arr = new String [1][6];
+                    String halfYear = values[i].substring(0,values[i].indexOf("-"));
+                    if(values[i].contains("H1")) {
+                        for (int j = 0; j < 6; j++) {
+                            arr[0][j] = "'"+halfYear+"-0"+ (j+1) +"'";
+                        }
+                    }else if(values[i].contains("H2")){
+                        for (int j = 7; j <= 12; j++) {
+                            arr[0][j-7] = "'"+halfYear+ "-"+(j<10?"0"+j:j) +"'";
+                        }
+                    }
+                    for(int x=0; x<arr.length; x++) {
+                        for(int y=0; y<arr[x].length; y++) {
+                            itemsStr += arr[x][y]+",";
+                        }
+                    }
+                }
+            } else if("quarter".equals(type)) {
+                // 2009-2,2009-3,2009-4,2010-1,2010-2
+                for (int i = 0; i < values.length; i++) {
+                    itemsStr+="'"+values[i]+"',";
+                }
+            } else if("month".equals(type)){
+                for (int i = 0; i < values.length; i++) {
+                    itemsStr+="'"+values[i]+"',";
+                }
+            } else if("week".equals(type)){
+                for (int i = 0; i < values.length; i++) {
+                    itemsStr+="'"+values[i]+"',";
+                }
+            } else if("year".equals(type)){
+                for (int i = 0; i < values.length; i++) {
+                    itemsStr+="'"+values[i]+"',";
+                }
+            }
+        } else {
+            for (int i = 0; i < values.length; i++) {
+                itemsStr+="'"+values[i]+"',";
+            }
+        }
+        itemsStr = itemsStr.substring(0, itemsStr.length() - 1)+ ")";
+        return itemsStr;
+    }
+
     public ScreenStr screensUtil(List<Screen> screenList, String xColumn, String xColumnType) {
         //返回值
         ScreenStr screenStr = new ScreenStr();
@@ -49,10 +99,17 @@ public class ScreenUtil {
                 ret = ret + " and (" + columnName + " is null or " + columnName + " = '' )";
             }else if( "isNotNull".equals(symbol) ){//字段值不为null
                 ret = ret + " and (" + columnName + " is not null or " + columnName + " = '' )";
-            }else if (columnType != "time" && !("time".equals(columnType))) {
+            }else if("notIn".equals(symbol) || "in".equals(symbol)){
+                symbol = "notIn".equals(symbol) ? "not in" : "in";
+                value = getNotInItems(columnType, type, value);
+                String symbVal = getTimeSymbAndVal(symbol, value);
+                String column = getTimeColumn(columnName, nowType);
+                ret = ret + " and " + column + " " + symbVal;
+
+            }else if (!("time".equals(columnType))) {
                 String symbVal = getSymbAndVal(symbol, value, columnType);
                 ret = ret + " and " + columnName + " " + symbVal;
-            }else if (columnType == "time" || "time".equals(columnType)) {
+            }else if ("time".equals(columnType)) {
                 String symbVal = getTimeSymbAndVal(symbol, value);
                 String column = getTimeColumn(columnName, nowType);
                 ret = ret + " and " + column + " " + symbVal;
@@ -117,6 +174,8 @@ public class ScreenUtil {
             return "to_char(" + columnName + ", 'yyyy-Q')";
         } else if ("week".equals(xColumnType)) {
             return "to_char(" + columnName + ", 'yyyy-ww')";
+        } else if("halfYear".equals(xColumnType)) {
+            return "to_char(" + columnName + ", 'yyyy-mm')";
         } else {
             return "to_char(" + columnName + ", 'yyyy-mm-dd')";
         }
@@ -142,7 +201,11 @@ public class ScreenUtil {
                 tar = symbol + " '" + values + "'";
             }
         } else {
-            tar = symbol + " '" + values + "'";
+            if("not in".equals(symbol) || "in".equals(symbol)){
+                tar = symbol + " " + values;
+            }else {
+                tar = symbol + " '" + values + "'";
+            }
         }
         return tar;
     }