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

Merge branch 'feature-refactor' of ssh://10.10.100.21/source/platform-bi-server into feature-refactor

chenw 6 лет назад
Родитель
Сommit
874530b58a

+ 4 - 0
bi-server/src/main/java/com/usoftchina/bi/server/aspect/JwtTokenAspect.java

@@ -15,6 +15,7 @@ import org.aspectj.lang.annotation.Before;
 import org.aspectj.lang.annotation.Pointcut;
 import org.springframework.core.annotation.Order;
 import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
 
 import java.io.UnsupportedEncodingException;
 import java.util.Calendar;
@@ -82,6 +83,9 @@ public class JwtTokenAspect {
 
         Object[] arg = joinPoint.getArgs();
         String token = (String) arg[0];
+        if( StringUtils.isEmpty(token) || "null".equals(token) ){
+            return null;
+        }
 
         JWTVerifier verifier = null;
         try {

+ 3 - 3
bi-server/src/main/java/com/usoftchina/bi/server/controller/chart/ShowChartsController.java

@@ -44,7 +44,7 @@ public class ShowChartsController {
     @ApiOperation(value = "展示柱状图", notes = "展示柱状图", response = RepEntity.class)
     @CheckToken
     @PostMapping("/showHistogram")
-    public RepEntity showHistogram(@RequestHeader String token,@RequestBody HistogramConfigInfo body){
+    public RepEntity showHistogram(@RequestHeader(required = false) String token,@RequestBody HistogramConfigInfo body){
         return showHistogramService.showHistogram(body, token, 0);
     }
 
@@ -54,7 +54,7 @@ public class ShowChartsController {
     @ApiOperation(value = "展示饼图", notes = "展示图表", response = RepEntity.class)
     @CheckToken
     @PostMapping("/showPie")
-    public RepEntity showPie(@RequestHeader String token,@RequestBody PieConfigInfo body){
+    public RepEntity showPie(@RequestHeader(required = false) String token,@RequestBody PieConfigInfo body){
         return showPieService.showPie(body, token, 0, null);
     }
 
@@ -64,7 +64,7 @@ public class ShowChartsController {
     @ApiOperation(value = "展示line", notes = "展示line", response = RepEntity.class)
     @CheckToken
     @PostMapping("/showLine")
-    public RepEntity showLine(@RequestHeader String token,@RequestBody LineConfigInfo body){
+    public RepEntity showLine(@RequestHeader(required = false) String token,@RequestBody LineConfigInfo body){
         return showLineService.showLine(body, token, 0, null);
     }
 

+ 5 - 0
bi-server/src/main/java/com/usoftchina/bi/server/model/bo/Screen.java

@@ -7,6 +7,11 @@ public class Screen {
     private String symbolLabel;
     private String symbol;
     private String value;
+    private String type; //如果是钻取的过滤条件 会把钻取类型加入到type 过滤栏的条件则这个属性为空
+
+    public String getType() { return type; }
+
+    public void setType(String type) { this.type = type; }
 
     public String getColumnLabel() {
         return columnLabel;

+ 18 - 1
bi-server/src/main/java/com/usoftchina/bi/server/service/chart/ShowHistogramService.java

@@ -4,13 +4,18 @@ import com.usoftchina.bi.core.base.RepCode;
 import com.usoftchina.bi.core.base.RepEntity;
 import com.usoftchina.bi.core.utils.CalculationJudgeUtil;
 import com.usoftchina.bi.core.utils.CollectionUtils;
+import com.usoftchina.bi.core.utils.EncryUtil;
 import com.usoftchina.bi.server.dao.chart.ChartsConfigMapper;
 import com.usoftchina.bi.server.dao.chart.ShowChartsMapper;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.usoftchina.bi.server.dao.dashboard.DashboardsMapper;
 import com.usoftchina.bi.server.model.bo.*;
+import com.usoftchina.bi.server.model.po.User;
 import com.usoftchina.bi.server.model.vo.configVo.HistogramConfigInfo;
+import com.usoftchina.bi.server.model.vo.configVo.LoginInfo;
 import com.usoftchina.bi.server.model.vo.dataVo.ChartsDataInfo;
 import com.usoftchina.bi.core.jdbc.DynamicDataSourceContextHolder;
+import com.usoftchina.bi.server.service.user.UserService;
 import com.usoftchina.bi.server.utils.ScreenUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.Cacheable;
@@ -36,12 +41,19 @@ public class ShowHistogramService {
     ScreenUtil screenUtil;
     @Autowired
     ChartsUtilService chartsUtilService;
+    @Autowired
+    UserService userService;
 
     /*
     柱状图数据展示
      */
     @Cacheable(value = "Histogram", key = "#histogramConfigInfo.toString()+#dashId")
     public RepEntity<ChartsDataInfo> showHistogram(HistogramConfigInfo histogramConfigInfo, String token, int dashId){
+        if (StringUtils.isEmpty(token) || "null".equals(token)) {
+            User user = userService.getUserById(chartsConfigMapper.getCreateId(histogramConfigInfo.getId())).getData();
+            LoginInfo loginInfo = new LoginInfo(user.getUserName(), EncryUtil.decryptPassword(user.getPassWord()));
+            token = userService.login(loginInfo).getData().getToken();
+        }
         Assert.notNull(histogramConfigInfo, "请求参数不能为空");
         /* 变量定义 */
         ChartsDataInfo chartsDataInfo = new ChartsDataInfo();
@@ -155,7 +167,7 @@ public class ShowHistogramService {
                 chartsDataInfo.setxAxis(xAxisData);
                 /* 数据处理 */
                 List<String> groupList = histogramGroupList.stream().map(HistogramGroupData::getGroupName).distinct().limit(5).collect(Collectors.toList());
-                Map<String, List<HistogramGroupData>> histogramNameMap = histogramGroupList.stream().collect(Collectors.groupingBy(HistogramGroupData::getName));
+                Map<String, List<HistogramGroupData>> histogramNameMap = histogramGroupList.stream().collect(Collectors.groupingBy( histogramGroupData ->  StringUtils.isEmpty(histogramGroupData.getName())?"空":histogramGroupData.getName() ));
                 Set<String> keyset = histogramNameMap.keySet();
                 Iterator<String> keyIt= keyset.iterator();
                 List<HistogramGroupData> histogramGroupListAfterHandle = new ArrayList<>();
@@ -168,6 +180,11 @@ public class ShowHistogramService {
                             histogramGroupDataList.add(new HistogramGroupData(key, null, groupName));
                         }
                     });
+                    histogramGroupDataList.forEach(histogramGroupData -> {
+                        if(StringUtils.isEmpty(histogramGroupData.getName()) ){
+                            histogramGroupData.setName("空");
+                        }
+                    });
                     histogramGroupListAfterHandle.addAll(histogramGroupDataList);
                 }
                 /* 返回数据对象组装 */

+ 20 - 3
bi-server/src/main/java/com/usoftchina/bi/server/service/chart/ShowLineService.java

@@ -4,12 +4,17 @@ import com.usoftchina.bi.core.base.RepCode;
 import com.usoftchina.bi.core.base.RepEntity;
 import com.usoftchina.bi.core.utils.CalculationJudgeUtil;
 import com.usoftchina.bi.core.utils.CollectionUtils;
+import com.usoftchina.bi.core.utils.EncryUtil;
 import com.usoftchina.bi.server.dao.chart.ChartsConfigMapper;
 import com.usoftchina.bi.server.dao.chart.ShowChartsMapper;
+import com.usoftchina.bi.server.dao.dashboard.DashboardsMapper;
 import com.usoftchina.bi.server.model.bo.*;
+import com.usoftchina.bi.server.model.po.User;
 import com.usoftchina.bi.server.model.vo.configVo.LineConfigInfo;
+import com.usoftchina.bi.server.model.vo.configVo.LoginInfo;
 import com.usoftchina.bi.server.model.vo.dataVo.ChartsDataInfo;
 import com.usoftchina.bi.core.jdbc.DynamicDataSourceContextHolder;
+import com.usoftchina.bi.server.service.user.UserService;
 import com.usoftchina.bi.server.utils.ScreenUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -32,11 +37,17 @@ public class ShowLineService {
     ScreenUtil screenUtil;
     @Autowired
     ChartsUtilService chartsUtilService;
-
+    @Autowired
+    UserService userService;
     /*
     Line数据展示
      */
     public RepEntity showLine(LineConfigInfo lineConfigInfo, String token, int dashId, String styleConfig){
+        if (StringUtils.isEmpty(token) || "null".equals(token)) {
+            User user = userService.getUserById(chartsConfigMapper.getCreateId(lineConfigInfo.getId())).getData();
+            LoginInfo loginInfo = new LoginInfo(user.getUserName(), EncryUtil.decryptPassword(user.getPassWord()));
+            token = userService.login(loginInfo).getData().getToken();
+        }
         Assert.notNull(lineConfigInfo, "请求参数不能为空");
          /* 变量定义 */
         ChartsDataInfo chartsDataInfo = new ChartsDataInfo();
@@ -151,8 +162,9 @@ public class ShowLineService {
                 }
                 chartsDataInfo.setxAxis(xAxisData);
                 /* 数据处理 */
+                //limit(5) 是分组显示数 现在是最大是5
                 List<String> groupList = histogramGroupList.stream().map(HistogramGroupData::getGroupName).distinct().limit(5).collect(Collectors.toList());
-                Map<String, List<HistogramGroupData>> histogramNameMap = histogramGroupList.stream().collect(Collectors.groupingBy(HistogramGroupData::getName));
+                Map<String, List<HistogramGroupData>> histogramNameMap = histogramGroupList.stream().collect(Collectors.groupingBy( histogramGroupData -> StringUtils.isEmpty(histogramGroupData.getName())?"空":histogramGroupData.getName() ));
                 Set<String> keyset = histogramNameMap.keySet();
                 Iterator<String> keyIt= keyset.iterator();
                 List<HistogramGroupData> histogramGroupListAfterHandle = new ArrayList<>();
@@ -165,6 +177,11 @@ public class ShowLineService {
                             histogramGroupDataList.add(new HistogramGroupData(key, null, groupName));
                         }
                     });
+                    histogramGroupDataList.forEach( histogramGroupData -> {
+                        if( StringUtils.isEmpty(histogramGroupData.getName()) ){
+                            histogramGroupData.setName("空");
+                        }
+                    });
                     histogramGroupListAfterHandle.addAll(histogramGroupDataList);
                 }
                 /* 返回数据对象组装 */
@@ -179,7 +196,7 @@ public class ShowLineService {
                     value = histogramGroupDataList.stream().map(HistogramGroupData::getValue).collect(Collectors.toList()).subList(0, xAxisData.size());
                     Series series = new Series(key, value, groupBy.get(0));
                     serieses.add(series);
-                }while (it.hasNext() && i <= 20);
+                }while (it.hasNext() && i <= xAxisData.size());
             }
             chartsDataInfo.setStyleConfig(styleConfig);
             chartsDataInfo.setChartsColumnConfig(chartsColumn);

+ 14 - 0
bi-server/src/main/java/com/usoftchina/bi/server/service/chart/ShowPieService.java

@@ -4,12 +4,17 @@ import com.usoftchina.bi.core.base.RepCode;
 import com.usoftchina.bi.core.base.RepEntity;
 import com.usoftchina.bi.core.utils.CalculationJudgeUtil;
 import com.usoftchina.bi.core.utils.CollectionUtils;
+import com.usoftchina.bi.core.utils.EncryUtil;
 import com.usoftchina.bi.server.dao.chart.ChartsConfigMapper;
 import com.usoftchina.bi.server.dao.chart.ShowChartsMapper;
+import com.usoftchina.bi.server.dao.dashboard.DashboardsMapper;
 import com.usoftchina.bi.server.model.bo.*;
+import com.usoftchina.bi.server.model.po.User;
+import com.usoftchina.bi.server.model.vo.configVo.LoginInfo;
 import com.usoftchina.bi.server.model.vo.configVo.PieConfigInfo;
 import com.usoftchina.bi.server.model.vo.dataVo.ChartsDataInfo;
 import com.usoftchina.bi.core.jdbc.DynamicDataSourceContextHolder;
+import com.usoftchina.bi.server.service.user.UserService;
 import com.usoftchina.bi.server.utils.ScreenUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -32,11 +37,18 @@ public class ShowPieService {
     GetChartsDataUtilService getChartsDataUtilService;
     @Autowired
     ChartsUtilService chartsUtilService;
+    @Autowired
+    UserService userService;
 
     /*
     Pie数据展示
      */
     public RepEntity showPie(PieConfigInfo pieConfigInfo, String token, int dashId, String styleConfig){
+        if (StringUtils.isEmpty(token) || "null".equals(token)) {
+            User user = userService.getUserById(chartsConfigMapper.getCreateId(pieConfigInfo.getId())).getData();
+            LoginInfo loginInfo = new LoginInfo(user.getUserName(), EncryUtil.decryptPassword(user.getPassWord()));
+            token = userService.login(loginInfo).getData().getToken();
+        }
         Assert.notNull(pieConfigInfo, "请求参数不能为空");
         /* 变量定义 */
         ChartsDataInfo<PieSeries> chartsDataInfo = new ChartsDataInfo();
@@ -119,6 +131,8 @@ public class ShowPieService {
             if (xAxisData.size() > pieConfigInfo.getMaxCount()) {
                 xAxisData = new ArrayList<>(xAxisData.subList(0, pieConfigInfo.getMaxCount()));
                 xAxisData.add("其它");
+                //有其他的时候 tooMany 为 true
+                chartsDataInfo.setTooMany(true);
                 value = new ArrayList<>(value.stream().sorted((p1, p2) -> p2.getValue().compareTo(p1.getValue())).collect(Collectors.toList()).subList(0, pieConfigInfo.getMaxCount()));
                 Optional<Double> part = value.stream().map(PieSeriesMap::getValue).reduce(Double::sum);
                 if (total.isPresent() && part.isPresent()) {

+ 1 - 1
bi-server/src/main/java/com/usoftchina/bi/server/service/chart/TimeConverterUtil.java

@@ -27,7 +27,7 @@ public class TimeConverterUtil {
         } else if ("week".equals(timeType)) {
             return "TO_CHAR(" + xColumn + ", 'YYYY-WW')";
         } else if ("halfYear".equals(timeType)){
-            return "case when to_char(" + xColumn + ",'MM')<=6 then to_char(" + xColumn + ",'YYYY')|| '-H1' else to_char(" + xColumn + ",'YYYY')||'-H2' end ";
+            return "case when to_char(" + xColumn + ",'MM')<=6 then to_char(" + xColumn + ",'YYYY')|| '-H1' when to_char(" + xColumn + ",'MM')>6 then to_char(" + xColumn + ",'YYYY')||'-H2' else "+ xColumn +"||'' end ";
         } else {
             return "TO_CHAR(" + xColumn + ", 'YYYY-MM-DD')";
         }

+ 12 - 14
bi-server/src/main/java/com/usoftchina/bi/server/utils/ScreenUtil.java

@@ -6,6 +6,7 @@ import com.usoftchina.bi.server.model.bo.Screen;
 import com.usoftchina.bi.server.model.bo.ScreenStr;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
 
 import java.io.IOException;
 import java.time.DayOfWeek;
@@ -41,23 +42,20 @@ public class ScreenUtil {
             String columnType = screen.getColumnType();
             String symbol = screen.getSymbol();
             String value = screen.getValue();
+            String type = screen.getType();//钻取过滤条件的类型 可能和x轴的类型不同
+            String nowType = StringUtils.hasText(type)?type:xColumnType;//钻取的类型优先 没有则使用x轴的类型
 
-            if (columnType != "time" && !("time".equals(columnType))) {
+            if( "isNull".equals(symbol) ){//字段值为null
+                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))) {
                 String symbVal = getSymbAndVal(symbol, value, columnType);
-                if (xColumn.equals(columnName)) {
-                    withColumnRet = ret + " and " + columnName + " " + symbVal;
-                } else {
-                    ret = ret + " and " + columnName + " " + symbVal;
-                }
-            }
-            if (columnType == "time" || "time".equals(columnType)) {
+                ret = ret + " and " + columnName + " " + symbVal;
+            }else if (columnType == "time" || "time".equals(columnType)) {
                 String symbVal = getTimeSymbAndVal(symbol, value);
-                String column = getTimeColumn(columnName, xColumnType);
-                if (xColumn.equals(columnName)) {
-                    withColumnRet = ret + " and " + column + " " + symbVal;
-                } else {
-                    ret = ret + " and " + column + " " + symbVal;
-                }
+                String column = getTimeColumn(columnName, nowType);
+                ret = ret + " and " + column + " " + symbVal;
             }
         }
         screenStr.setRet(ret);

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
bi-server/src/main/resources/static/index.2d92d9a7.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
bi-server/src/main/resources/static/index.35831ed9.css


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
bi-server/src/main/resources/static/index.3f27247c.css


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
bi-server/src/main/resources/static/index.64d8c27b.js


+ 2 - 2
bi-server/src/main/resources/static/index.html

@@ -4,8 +4,8 @@
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1">
   <title>BI 商业智能平台</title>
-<link rel="shortcut icon" href="favicon.png"><link href="index.3f27247c.css" rel="stylesheet"></head>
+<link rel="shortcut icon" href="favicon.png"><link href="index.35831ed9.css" rel="stylesheet"></head>
 <body>
   <div id="root"></div>
-<script type="text/javascript" src="index.64d8c27b.js"></script></body>
+<script type="text/javascript" src="index.2d92d9a7.js"></script></body>
 </html>

Некоторые файлы не были показаны из-за большого количества измененных файлов