Procházet zdrojové kódy

Merge branch 'feature-refactor' into feature-cache

# Conflicts:
#	bi-server/pom.xml
#	bi-server/src/main/java/com/usoftchina/bi/server/service/chart/ShowHistogramService.java
#	bi-server/src/main/java/com/usoftchina/bi/server/service/chart/ShowPopulationService.java
chenw před 6 roky
rodič
revize
739789d7e3
28 změnil soubory, kde provedl 453 přidání a 98 odebrání
  1. 0 1
      bi-auth/src/main/java/com/usoftchina/bi/auth/config/ConfigAdapter.java
  2. 4 9
      bi-server/pom.xml
  3. 4 4
      bi-server/src/main/java/com/usoftchina/bi/server/controller/chart/ShowChartsController.java
  4. 18 1
      bi-server/src/main/java/com/usoftchina/bi/server/controller/dashboard/DashboardsController.java
  5. 1 1
      bi-server/src/main/java/com/usoftchina/bi/server/controller/dashboard/DefaultDashboardController.java
  6. 2 2
      bi-server/src/main/java/com/usoftchina/bi/server/dao/chart/ChartsConfigMapper.java
  7. 7 1
      bi-server/src/main/java/com/usoftchina/bi/server/dao/chart/ShowChartsMapper.java
  8. 2 2
      bi-server/src/main/java/com/usoftchina/bi/server/dao/dashboard/DefaultDashboardMapper.java
  9. 3 0
      bi-server/src/main/java/com/usoftchina/bi/server/dao/dataSource/DataConnectorMapper.java
  10. 4 3
      bi-server/src/main/java/com/usoftchina/bi/server/dao/user/UserMapper.java
  11. 3 3
      bi-server/src/main/java/com/usoftchina/bi/server/dao/user/UserPowerMapper.java
  12. 9 0
      bi-server/src/main/java/com/usoftchina/bi/server/model/po/ChartsConfigToDash.java
  13. 9 0
      bi-server/src/main/java/com/usoftchina/bi/server/model/vo/dataVo/ChartsDataInfo.java
  14. 47 0
      bi-server/src/main/java/com/usoftchina/bi/server/model/vo/dataVo/DashboardExportInfo.java
  15. 33 0
      bi-server/src/main/java/com/usoftchina/bi/server/model/vo/dataVo/DataSourceExportInfo.java
  16. 9 0
      bi-server/src/main/java/com/usoftchina/bi/server/model/vo/dataVo/PopAndIndDataInfo.java
  17. 4 2
      bi-server/src/main/java/com/usoftchina/bi/server/service/chart/ShowLineService.java
  18. 2 1
      bi-server/src/main/java/com/usoftchina/bi/server/service/chart/ShowPieService.java
  19. 38 30
      bi-server/src/main/java/com/usoftchina/bi/server/service/chart/ShowScatterService.java
  20. 216 4
      bi-server/src/main/java/com/usoftchina/bi/server/service/dashboard/DashboardsService.java
  21. 28 30
      bi-server/src/main/java/com/usoftchina/bi/server/service/dashboard/DashboardsToChartsUtilService.java
  22. 2 2
      bi-server/src/main/java/com/usoftchina/bi/server/service/dashboard/DefaultDashboardService.java
  23. 0 0
      bi-server/src/main/resources/static/index.491cc5e0.js
  24. 0 0
      bi-server/src/main/resources/static/index.9804a75f.css
  25. 0 0
      bi-server/src/main/resources/static/index.b4415de2.js
  26. 0 0
      bi-server/src/main/resources/static/index.c3809205.css
  27. 2 2
      bi-server/src/main/resources/static/index.html
  28. 6 0
      pom.xml

+ 0 - 1
bi-auth/src/main/java/com/usoftchina/bi/auth/config/ConfigAdapter.java

@@ -31,6 +31,5 @@ public class ConfigAdapter implements WebMvcConfigurer {
         .excludePathPatterns("/getDashboardByCode")
         .excludePathPatterns("/getSharedDashboard")
         .excludePathPatterns("/Connector/getConnectorData");
-        logger.info("进入全局拦截器");
     }
 }

+ 4 - 9
bi-server/pom.xml

@@ -46,13 +46,8 @@
     </dependency>
 
     <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter-cache</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>net.sf.ehcache</groupId>
-      <artifactId>ehcache</artifactId>
+      <groupId>org.apache.poi</groupId>
+      <artifactId>poi</artifactId>
     </dependency>
 
     <!--<dependency>
@@ -79,13 +74,13 @@
     <repository>
       <id>platform-release</id>
       <name>platform-release</name>
-      <url>http://10.10.101.21:8081/artifactory/libs-release-local</url>
+      <url>http://10.10.100.21:8081/artifactory/libs-release-local</url>
     </repository>
     <!-- 发布快照版本 -->
     <snapshotRepository>
       <id>platform-snapshots</id>
       <name>platform-snapshots</name>
-      <url>http://10.10.101.21:8081/artifactory/libs-snapshot-local</url>
+      <url>http://10.10.100.21:8081/artifactory/libs-snapshot-local</url>
     </snapshotRepository>
   </distributionManagement>
 

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

@@ -43,7 +43,7 @@ public class ShowChartsController {
     @CheckToken
     @PostMapping("/showHistogram")
     public RepEntity showHistogram(@RequestHeader String token,@RequestBody HistogramConfigInfo body){
-        return showHistogramService.showHistogram(body, token, 0);
+        return showHistogramService.showHistogram(body, token, 0, null);
     }
 
     /*
@@ -53,7 +53,7 @@ public class ShowChartsController {
     @CheckToken
     @PostMapping("/showPie")
     public RepEntity showPie(@RequestHeader String token,@RequestBody PieConfigInfo body){
-        return showPieService.showPie(body, token, 0);
+        return showPieService.showPie(body, token, 0, null);
     }
 
     /*
@@ -63,7 +63,7 @@ public class ShowChartsController {
     @CheckToken
     @PostMapping("/showLine")
     public RepEntity showLine(@RequestHeader String token,@RequestBody LineConfigInfo body){
-        return showLineService.showLine(body, token, 0);
+        return showLineService.showLine(body, token, 0, null);
     }
 
     /*
@@ -73,7 +73,7 @@ public class ShowChartsController {
     @CheckToken
     @PostMapping("/showScatter")
     public RepEntity showScatter(@RequestHeader String token,@RequestBody ScatterConfigInfo body){
-        return showScatterService.showScatter(body, token, 0);
+        return showScatterService.showScatter(body, token, 0, null);
     }
 
     /*

+ 18 - 1
bi-server/src/main/java/com/usoftchina/bi/server/controller/dashboard/DashboardsController.java

@@ -7,6 +7,7 @@ import com.usoftchina.bi.core.utils.EncryUtil;
 import com.usoftchina.bi.server.model.bo.ShareReqBO;
 import com.usoftchina.bi.server.model.pojo.annotation.CheckToken;
 import com.usoftchina.bi.server.model.pojo.annotation.Log;
+import com.usoftchina.bi.server.model.vo.dataVo.DashboardExportInfo;
 import com.usoftchina.bi.server.model.vo.configVo.ChangeOrderInfo;
 import com.usoftchina.bi.server.model.vo.configVo.ChartsToDashInfo;
 import com.usoftchina.bi.server.model.vo.configVo.DashboardsInfo;
@@ -15,11 +16,15 @@ import com.usoftchina.bi.server.service.dashboard.DashboardsService;
 import com.usoftchina.bi.server.service.dashboard.DashboardsToChartsUtilService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.URLEncoder;
 import java.sql.SQLException;
-import java.util.List;
 
 @RestController
 @Api(description = "看板相关接口")
@@ -165,4 +170,16 @@ public class DashboardsController {
     public RepEntity copy(@RequestHeader String token, @RequestBody DashboardCopyInfo dashboardCopyInfo){
         return dashboardsService.copy(token, dashboardCopyInfo);
     }
+
+    @ApiOperation(value = "导出", notes = "导出")
+    @CheckToken
+    @PostMapping("/dashboard/export")
+    public void export(@RequestHeader String token, @RequestBody DashboardExportInfo dashboardExportInfo,  HttpServletResponse response) throws IOException {
+        HSSFWorkbook workbook = dashboardsService.export(dashboardExportInfo);
+        response.setContentType("application/vnd.ms-excel");
+        response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(dashboardExportInfo.getDashboardName() + ".xlsx", "UTF-8"));
+        OutputStream out = response.getOutputStream();
+        workbook.write(out);
+        out.close();
+    }
 }

+ 1 - 1
bi-server/src/main/java/com/usoftchina/bi/server/controller/dashboard/DefaultDashboardController.java

@@ -41,7 +41,7 @@ public class DefaultDashboardController {
     @CheckToken
     @ApiOperation(value = "取消首页默认报表", notes = "取消首页默认报表", response = RepEntity.class)
     public RepEntity delete(@RequestHeader String token, @PathVariable("userId") int userId, @PathVariable("dashboardId") int dashboardId){
-        defaultDashboardService.delete(userId, dashboardId);
+        defaultDashboardService.delete(dashboardId);
         return new RepEntity(RepCode.success, null);
     }
 

+ 2 - 2
bi-server/src/main/java/com/usoftchina/bi/server/dao/chart/ChartsConfigMapper.java

@@ -259,7 +259,7 @@ public interface ChartsConfigMapper {
      * @param groupInfoList
      */
     @Update("<script>"
-            + "UPDATE BI_CHARTS_GROUP SET BC_FATHER_ID = -1 WHERE BC_ID IN "
+            + "UPDATE BI_CHARTS SET BC_CHARTS_GROUP = -1 WHERE BC_CHARTS_GROUP IN "
             + "<foreach collection=\"list\" item=\"item\" index=\"index\" open=\"(\" close=\")\" separator=\",\">"
             +   "#{item.id, jdbcType=INTEGER}"
             + "</foreach>"
@@ -329,7 +329,7 @@ public interface ChartsConfigMapper {
     /*
     通过图表ID获取图表配置
      */
-    @Select("select id, chart_type as chartType, BC_FETCHCONFIG as fetchConfig from bi_charts where id = #{id}")
+    @Select("select id, chart_type as chartType, BC_FETCHCONFIG as fetchConfig,BC_CHART_STYLE as styleConfig from bi_charts where id = #{id}")
     ChartsConfigToDash getChartConfigToDash(int id);
 
     /*

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

@@ -27,6 +27,12 @@ public interface ShowChartsMapper {
     List<String> getXAxis(@Param("xAxisName") String xAxisName, @Param("tableName") String tableName, @Param("screenToColumn") String screenToColumn, @Param("num") int num);
 
 
+    //XY轴数据
+    @Select("select ${dataType}(${yAxisName}) as \"value\",${xColumn} as \"date\" from ${tableName} where 1=1 ${screen} group by ${xColumn}")
+    List<LineSeriesMap> getXAndYValues(@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} = #{xdata} ${screen}")
     String getXValue(@Param("yAxisName") String yAxisName, @Param("xColumn") String xColumn,
@@ -131,7 +137,7 @@ public interface ShowChartsMapper {
 
 
     //查询时间类型分组的值
-    @Select("select ${dataType}(${yAxisName}) from ${tableName} where ${groupsColumn}=#{groupsIndex} and TO_CHAR(${xColumn},${timeType})=#{xColumnIndex} ")
+    @Select("select ${dataType}(${yAxisName}) from ${tableName} where ${groupsColumn}=#{groupsIndex} and TO_CHAR(${xColumn},${timeType})=#{xColumnIndex, jdbcType=VARCHAR} ")
     String getGroupsValueTime(@Param("dataType") String dataType, @Param("yAxisName") String yAxisName, @Param("tableName") String tableName,
                           @Param("groupsColumn") String groupsColumn, @Param("groupsIndex") String groupsIndex,
                           @Param("xColumn") String xColumn, @Param("timeType") String timeType, @Param("xColumnIndex") String xColumnIndex

+ 2 - 2
bi-server/src/main/java/com/usoftchina/bi/server/dao/dashboard/DefaultDashboardMapper.java

@@ -19,8 +19,8 @@ public interface DefaultDashboardMapper {
     @Insert("INSERT INTO BI_DASHBOARDS_USER(USER_ID,DASHBOARD_ID) VALUES(#{userId,jdbcType=INTEGER},#{dashboardId,jdbcType=INTEGER})")
     void save(@Param("userId") int userId, @Param("dashboardId") int dashboardId);
 
-    @Delete("DELETE FROM BI_DASHBOARDS_USER WHERE USER_ID = #{userId,jdbcType=INTEGER} AND DASHBOARD_ID = #{dashboardId,jdbcType=INTEGER}")
-    void delete(@Param("userId") int userId, @Param("dashboardId") int dashboardId);
+    @Delete("DELETE FROM BI_DASHBOARDS_USER WHERE DASHBOARD_ID = #{dashboardId,jdbcType=INTEGER}")
+    void delete(@Param("dashboardId") int dashboardId);
 
     @Delete("DELETE FROM BI_DASHBOARDS_USER WHERE USER_ID = #{userId,jdbcType=INTEGER}")
     void deleteByUserId(@Param("userId") int userId);

+ 3 - 0
bi-server/src/main/java/com/usoftchina/bi/server/dao/dataSource/DataConnectorMapper.java

@@ -385,4 +385,7 @@ public interface DataConnectorMapper {
     @Select("select table_name from bi_data_connectors where id = #{id}")
     String getSqlByid(int id);
 
+    @Select("SELECT * FROM (${table}) ${condition}")
+    List<Map<String, Object>> getExportData(@Param("table") String table, @Param("condition") String condition);
+
 }

+ 4 - 3
bi-server/src/main/java/com/usoftchina/bi/server/dao/user/UserMapper.java

@@ -45,18 +45,19 @@ public interface UserMapper {
      * @param userList
      */
     @Insert("<script>"
-            + "INSERT INTO BI_USERS(BU_ID, BU_NAME, BU_POST,BU_ROLE, USER_NAME, PASS_WORD, BU_DEPARTMENT, CREATE_DATE) "
+            + "INSERT INTO BI_USERS(BU_ID, BU_NAME, BU_POST,BU_ROLE, USER_NAME, PASS_WORD, BU_DEPARTMENT, CREATE_DATE,BU_PHONE) "
             + "SELECT M.* FROM ("
             +   "<foreach collection=\"list\" item=\"item\" index=\"index\" separator=\"UNION ALL\">"
             +       "SELECT "
             +           "#{item.id, jdbcType=INTEGER},"
             +           "#{item.name, jdbcType=VARCHAR},"
             +           "#{item.post, jdbcType=VARCHAR},"
-            +           "#{item.role, jdbcType=VARCHAR},"
+            +           "case when #{item.role, jdbcType=VARCHAR} = 'admin' then 'superAdmin' else #{item.role, jdbcType=VARCHAR} end,"
             +           "#{item.userName, jdbcType=VARCHAR},"
             +           "#{item.passWord, jdbcType=VARCHAR},"
             +           "#{item.department, jdbcType=VARCHAR},"
-            +           "SYSDATE "
+            +           "SYSDATE, "
+            +           "#{item.phone, jdbcType=VARCHAR} "
             +       "FROM DUAL"
             +   "</foreach>"
             + ")M"

+ 3 - 3
bi-server/src/main/java/com/usoftchina/bi/server/dao/user/UserPowerMapper.java

@@ -46,13 +46,13 @@ public interface UserPowerMapper {
 
     @Select(  "<script>"
             + "SELECT ID id,BD_NAME dashboardName,CASE NVL(BPU_ID, '1') WHEN 1 THEN 0 ELSE 1 END checked "
-            + "FROM BI_DASHBOARDS LEFT JOIN BI_POWER_USERS ON BPU_DASHBOARDID = ID WHERE CREATE_ID = #{userId, jdbcType=INTEGER} "
+            + "FROM BI_DASHBOARDS LEFT JOIN BI_POWER_USERS ON BPU_DASHBOARDID = ID WHERE "
             + "<choose>"
             +   "<if test=\"type == 0\">"
-            +       " AND BPU_USERGROUPID = #{id,jdbcType=INTEGER}"
+            +       " BPU_USERGROUPID = #{id,jdbcType=INTEGER}"
             +    "</if>"
             +   "<otherwise>"
-            +       " AND BPU_USERID = #{id,jdbcType=INTEGER}"
+            +       " BPU_USERID = #{id,jdbcType=INTEGER}"
             +   "</otherwise>"
             + "</choose>"
             + "</script>")

+ 9 - 0
bi-server/src/main/java/com/usoftchina/bi/server/model/po/ChartsConfigToDash.java

@@ -6,6 +6,15 @@ public class ChartsConfigToDash implements Serializable{
     private int chartId;
     private String fetchConfig;
     private String chartType;
+    private String styleConfig;
+
+    public String getStyleConfig() {
+        return styleConfig;
+    }
+
+    public void setStyleConfig(String styleConfig) {
+        this.styleConfig = styleConfig;
+    }
 
     public String getChartType() {
         return chartType;

+ 9 - 0
bi-server/src/main/java/com/usoftchina/bi/server/model/vo/dataVo/ChartsDataInfo.java

@@ -9,6 +9,15 @@ public class ChartsDataInfo<T> {
     private List<T> serieses;
     private ChartsColumnConfig chartsColumnConfig;
     private boolean tooMany;
+    private String styleConfig;
+
+    public String getStyleConfig() {
+        return styleConfig;
+    }
+
+    public void setStyleConfig(String styleConfig) {
+        this.styleConfig = styleConfig;
+    }
 
     public boolean isTooMany() {
         return tooMany;

+ 47 - 0
bi-server/src/main/java/com/usoftchina/bi/server/model/vo/dataVo/DashboardExportInfo.java

@@ -0,0 +1,47 @@
+package com.usoftchina.bi.server.model.vo.dataVo;
+
+import java.util.List;
+
+/**
+ * @Author chenwei
+ * @Date 2019-06-12
+ */
+public class DashboardExportInfo {
+
+    /**
+     * 报表ID
+     */
+    private int dashboardId;
+    /**
+     * 数据源信息
+     */
+    private List<DataSourceExportInfo> data;
+    /**
+     * 报表名称
+     */
+    private String dashboardName;
+
+    public int getDashboardId() {
+        return dashboardId;
+    }
+
+    public void setDashboardId(int dashboardId) {
+        this.dashboardId = dashboardId;
+    }
+
+    public List<DataSourceExportInfo> getData() {
+        return data;
+    }
+
+    public void setData(List<DataSourceExportInfo> data) {
+        this.data = data;
+    }
+
+    public String getDashboardName() {
+        return dashboardName;
+    }
+
+    public void setDashboardName(String dashboardName) {
+        this.dashboardName = dashboardName;
+    }
+}

+ 33 - 0
bi-server/src/main/java/com/usoftchina/bi/server/model/vo/dataVo/DataSourceExportInfo.java

@@ -0,0 +1,33 @@
+package com.usoftchina.bi.server.model.vo.dataVo;
+
+import com.usoftchina.bi.server.model.bo.Screen;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @Author chenwei
+ * @Date 2019-06-12
+ */
+public class DataSourceExportInfo implements Serializable {
+
+    private int dataSourceId;
+
+    private List<Screen> filter;
+
+    public int getDataSourceId() {
+        return dataSourceId;
+    }
+
+    public void setDataSourceId(int dataSourceId) {
+        this.dataSourceId = dataSourceId;
+    }
+
+    public List<Screen> getFilter() {
+        return filter;
+    }
+
+    public void setFilter(List<Screen> filter) {
+        this.filter = filter;
+    }
+}

+ 9 - 0
bi-server/src/main/java/com/usoftchina/bi/server/model/vo/dataVo/PopAndIndDataInfo.java

@@ -5,6 +5,15 @@ import com.usoftchina.bi.server.model.bo.ChartsColumnConfig;
 public class PopAndIndDataInfo<T> {
     private ChartsColumnConfig chartsColumnConfig;
     private T valueList;
+    private String styleConfig;
+
+    public String getStyleConfig() {
+        return styleConfig;
+    }
+
+    public void setStyleConfig(String styleConfig) {
+        this.styleConfig = styleConfig;
+    }
 
     public ChartsColumnConfig getChartsColumnConfig() {
         return chartsColumnConfig;

+ 4 - 2
bi-server/src/main/java/com/usoftchina/bi/server/service/chart/ShowLineService.java

@@ -11,7 +11,6 @@ import com.usoftchina.bi.server.model.vo.configVo.LineConfigInfo;
 import com.usoftchina.bi.server.model.vo.dataVo.ChartsDataInfo;
 import com.usoftchina.bi.core.jdbc.DynamicDataSourceContextHolder;
 import com.usoftchina.bi.server.utils.ScreenUtil;
-import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -38,8 +37,9 @@ public class ShowLineService {
     /*
     Line数据展示
      */
-    public RepEntity showLine(LineConfigInfo lineConfigInfo, String token, int dashId){
+    public RepEntity showLine(LineConfigInfo lineConfigInfo, String token, int dashId, String styleConfig){
         ChartsDataInfo chartsDataInfo = new ChartsDataInfo();
+        chartsDataInfo.setStyleConfig(styleConfig);
         TimeReture timeReture = new TimeReture();
         if (lineConfigInfo == null || "".equals(lineConfigInfo)){
             return new RepEntity(RepCode.Null);
@@ -138,6 +138,8 @@ public class ShowLineService {
             while (itGroup.hasNext()){
                 String groupByName = (String) itGroup.next();
                 List<String> groupsData = showChartsMapper.getGroups(groupByName,tableName, screenToColumnS, lineConfigInfo.getMaxCount()); //查询每个分组系列
+                if (groupsData.size() == 0)
+                    continue;
                 Iterator itGroupsData = groupsData.iterator();
                 if (groupsData.size() > lineConfigInfo.getMaxCount()){
                     chartsDataInfo.setTooMany(true);

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

@@ -35,8 +35,9 @@ public class ShowPieService {
     /*
     Pie数据展示
      */
-    public RepEntity showPie(PieConfigInfo pieConfigInfo, String token, int dashId){
+    public RepEntity showPie(PieConfigInfo pieConfigInfo, String token, int dashId, String styleConfig){
         ChartsDataInfo<PieSeries> chartsDataInfo = new ChartsDataInfo();
+        chartsDataInfo.setStyleConfig(styleConfig);
         TimeReture timeReture = new TimeReture();
         if (pieConfigInfo == null || "".equals(pieConfigInfo)){
             return new RepEntity(RepCode.Null);

+ 38 - 30
bi-server/src/main/java/com/usoftchina/bi/server/service/chart/ShowScatterService.java

@@ -12,6 +12,7 @@ import com.usoftchina.bi.core.jdbc.DynamicDataSourceContextHolder;
 import com.usoftchina.bi.server.utils.ScreenUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 
 import java.util.ArrayList;
 import java.util.Iterator;
@@ -35,8 +36,9 @@ public class ShowScatterService {
     /*
     Line数据展示
      */
-    public RepEntity showScatter(ScatterConfigInfo scatterConfigInfo, String token, int dashId){
+    public RepEntity showScatter(ScatterConfigInfo scatterConfigInfo, String token, int dashId, String styleConfig){
         ChartsDataInfo chartsDataInfo = new ChartsDataInfo();
+        chartsDataInfo.setStyleConfig(styleConfig);
         TimeReture timeReture = new TimeReture();
         if (scatterConfigInfo == null || "".equals(scatterConfigInfo)){
             return new RepEntity(RepCode.Null);
@@ -129,41 +131,47 @@ public class ShowScatterService {
         if ("".equals(xAxisData) || xAxisData == null || xAxisData.size() == 0){
             return new RepEntity(RepCode.Null);
         }
-
-        //无分组时Y值
-        Iterator itX = xAxisData.iterator();
-        while (itX.hasNext()){
-            String xdata = (String)itX.next();
-            double valueOne = 0;
-            String valueOnes = null;
-            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 (groupBy.size() == 0) {
+            //无分组时Y值
+            if (!"time".equals(xColumnType)) {
+                if (StringUtils.isEmpty(screenToColumnS)) {
+                    screenToColumnS = " and 1 = 1 ";
+                }
+                value = showChartsMapper.getXAndYValues(yColumn, xColumn, tableName, yAxisType, screenToColumnS);
+            } else {
+                Iterator itX = xAxisData.iterator();
+                while (itX.hasNext()) {
+                    String xdata = (String) itX.next();
+                    double valueOne = 0;
+                    String valueOnes = null;
+                    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);
+                    }
+                    LineSeriesMap lineSeriesMap = new LineSeriesMap();
+                    lineSeriesMap.setValue(valueOne);
+                    lineSeriesMap.setDate(xdata);
+                    value.add(lineSeriesMap);
                 }
             }
-            if (valueOnes == null || "".equals(valueOnes)){
-                valueOne = 0;
-            }else {
-                valueOne = Double.parseDouble(valueOnes);
-            }
-            LineSeriesMap lineSeriesMap = new LineSeriesMap();
-            lineSeriesMap.setValue(valueOne);
-            lineSeriesMap.setDate(xdata);
-            value.add(lineSeriesMap);
-        }
-        LineSeries series = new LineSeries();
+            LineSeries series = new LineSeries();
 //        series.setName(yColumn);
-        series.setMdata(value);
-
-        serieses.add(series);
+            series.setMdata(value);
 
+            serieses.add(series);
+        }
         //有分组
         if (groupBy.size() != 0){
-            serieses.remove(0);
             Iterator itGroup = groupBy.iterator();  //分组数
 
             //便利分组

+ 216 - 4
bi-server/src/main/java/com/usoftchina/bi/server/service/dashboard/DashboardsService.java

@@ -3,27 +3,37 @@ package com.usoftchina.bi.server.service.dashboard;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.fasterxml.jackson.databind.type.CollectionType;
 import com.usoftchina.bi.core.base.*;
 import com.usoftchina.bi.core.exception.MyException;
+import com.usoftchina.bi.core.jdbc.DynamicDataSourceContextHolder;
+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.dashboard.DashboardsMapper;
+import com.usoftchina.bi.server.dao.dataSource.DataConnectorMapper;
 import com.usoftchina.bi.server.dao.user.UserMapper;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.github.pagehelper.PageInfo;
 import com.usoftchina.bi.server.model.bo.DashOrder;
+import com.usoftchina.bi.server.model.bo.Screen;
 import com.usoftchina.bi.server.model.bo.ShareReqBO;
 import com.usoftchina.bi.server.model.po.ChartConfig;
 import com.usoftchina.bi.server.model.po.Dashboards;
+import com.usoftchina.bi.server.model.po.DataConnector;
 import com.usoftchina.bi.server.model.vo.configVo.ChangeOrderInfo;
+import com.usoftchina.bi.server.model.vo.configVo.ColumnRenameInfo;
 import com.usoftchina.bi.server.model.vo.configVo.DashboardsInfo;
-import com.usoftchina.bi.server.model.vo.dataVo.DashboardCopyInfo;
-import com.usoftchina.bi.server.model.vo.dataVo.DashboardOrderInfo;
-import com.usoftchina.bi.server.model.vo.dataVo.DataSourceCopyInfo;
+import com.usoftchina.bi.server.model.vo.dataVo.*;
 import com.usoftchina.bi.server.service.chart.ChartsUtilService;
 import com.usoftchina.bi.core.utils.GetTokenDataUtil;
 import com.usoftchina.bi.server.service.common.MessageLogService;
 import com.usoftchina.bi.server.service.dataSource.DataConnectorService;
+import org.apache.poi.hssf.usermodel.*;
+import org.apache.poi.hssf.util.HSSFCellUtil;
+import org.apache.poi.hssf.util.HSSFColor;
+import org.apache.poi.ss.format.CellFormatType;
+import org.apache.poi.ss.usermodel.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
@@ -33,6 +43,10 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.ObjectUtils;
 import org.springframework.util.StringUtils;
 
+import java.io.IOException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 
 @Service
@@ -53,6 +67,8 @@ public class DashboardsService {
     private MessageLogService messageLogService;
     @Autowired
     private DefaultDashboardService defaultDashboardService;
+    @Autowired
+    private DataConnectorMapper dataConnectorMapper;
 
     private static final Logger LOGGER = LoggerFactory.getLogger(DashboardsService.class);
 
@@ -177,7 +193,7 @@ public class DashboardsService {
         //删除报表-图表关联关系
         dashboardsMapper.deleteDashboardChartRelation(id);
         //删除报表-首页默认报表
-        defaultDashboardService.delete(userId, id);
+        defaultDashboardService.delete(id);
         messageLogService.delete("报表", name, BaseContextHolder.getUserName(), null);
         return new RepEntity(RepCode.success);
     }
@@ -420,4 +436,200 @@ public class DashboardsService {
         return new RepEntity(RepCode.success, dashboards.getId());
     }
 
+    /**
+     * 导出报表数据
+     * @param dashboardExportInfo
+     * @return
+     */
+    public HSSFWorkbook export(DashboardExportInfo dashboardExportInfo){
+        HSSFWorkbook workbook = new HSSFWorkbook();
+        int dashboardId = dashboardExportInfo.getDashboardId();
+        List<DataSourceExportInfo> dataSourceExportInfoList = dashboardExportInfo.getData();
+        for (DataSourceExportInfo dataInfo : dataSourceExportInfoList) {
+            RepEntity<DataConnector> repEntity = dataConnectorService.getConnector(dataInfo.getDataSourceId());
+            if (repEntity.getCode() == 200) {
+                DataConnector dataConnector = repEntity.getData();
+                String tableName = dataConnector.getLoadObject();
+                List<Screen> screenList = dataInfo.getFilter();
+                String condition = parseFilter(screenList);
+                DynamicDataSourceContextHolder.setDataSourceType(dataConnector.getDbConfig().getId());
+                List<Map<String, Object>> dataList = dataConnectorMapper.getExportData(tableName, condition);
+                DynamicDataSourceContextHolder.clearDataSourceType();
+                List<ColumnRenameInfo> columnRenameInfo = JSON.parseArray(dataConnector.getColumnConfig(), ColumnRenameInfo.class);
+                createExcelSheet(workbook, dataConnector.getDataName(), dataList, columnRenameInfo);
+            }
+        }
+        return workbook;
+    }
+
+
+    private void createExcelSheet(HSSFWorkbook workbook, String sheetName, List<Map<String, Object>> dataList, List<ColumnRenameInfo> columnRenameInfo) {
+        //添加sheet
+        HSSFSheet sheet = workbook.createSheet(sheetName);
+        HSSFRow row = sheet.createRow(0);
+        HSSFCell cell;
+        HSSFCellStyle cellStyle = getCellStyle(workbook);
+        //设置标题
+        for (int i = 0, len = columnRenameInfo.size(); i < len; i++) {
+            cell = row.createCell(i);
+            cell.setCellStyle(cellStyle);
+            cell.setCellType(HSSFCell.CELL_TYPE_STRING);
+            cell.setCellValue(columnRenameInfo.get(i).getColumnLable());
+        }
+        //设置数据
+        for (int i = 0, len = dataList.size(); i < len; i++) {
+            row = sheet.createRow(i + 1);
+            Map<String, Object> data = dataList.get(i);
+            for (int j = 0, size = columnRenameInfo.size(); j < size; j++) {
+                cell = row.createCell(j);
+                int dataType = convertToCellType(columnRenameInfo.get(j).getColumnType());
+                Object value = data.get(columnRenameInfo.get(j).getColumnName());
+                if (9 == dataType) {
+                    cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
+                    Date dataValue = null;
+                    try {
+                        dataValue = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(String.valueOf(value));
+                    } catch (ParseException e) {
+                        continue;
+                    }
+                    cell.setCellValue(dataValue);
+                }else {
+                    cell.setCellType(dataType);
+                    cell.setCellValue(StringUtils.isEmpty(value) ? "" : String.valueOf(value));
+                }
+            }
+        }
+
+    }
+
+    private int convertToCellType(String columnType) {
+        switch (columnType) {
+            case "categorical":
+                return HSSFCell.CELL_TYPE_STRING;
+            case "Timestamp":
+                return 9;
+            case "BigDecimal":
+                return HSSFCell.CELL_TYPE_NUMERIC;
+            case "scale":
+                return HSSFCell.CELL_TYPE_NUMERIC;
+            default:
+                return HSSFCell.CELL_TYPE_STRING;
+        }
+    }
+
+    private HSSFCellStyle getCellStyle(HSSFWorkbook workbook) {
+        HSSFCellStyle style = workbook.createCellStyle();
+        Font font = workbook.createFont();
+        font.setFontName("仿宋_GB2312");// 字体
+        font.setFontHeightInPoints((short) 12);// 字号
+        font.setBoldweight(new Short("8"));
+        font.setColor((short)64);// 颜色
+        style.setFont(font);
+        style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
+        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
+        style.setFillForegroundColor(HSSFColor.PALE_BLUE.index);
+        style.setBorderBottom(HSSFCellStyle.BORDER_MEDIUM);
+        style.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);
+        style.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);
+        style.setBorderTop(HSSFCellStyle.BORDER_MEDIUM);
+        return style;
+    }
+
+    private String parseFilter(List<Screen> screenList){
+        StringBuilder condition = new StringBuilder(" where 1=1 ");
+        if (CollectionUtils.isEmpty(screenList)) {
+            return null;
+        }
+        for (Screen screen : screenList) {
+            String columnName = screen.getColumnName();
+            String columnType = screen.getColumnType();
+            String symbol = screen.getSymbol();
+            String value = screen.getValue();
+            if (columnType != "time" && !("time".equals(columnType))) {
+                String symbVal = getSymbAndVal(symbol, value, columnType);
+                condition.append(" and " + columnName + " " + symbVal);
+            }else if (columnType == "time" || "time".equals(columnType)) {
+                String symbVal = getTimeSymbAndVal(symbol, value);
+                condition.append(" and " + columnName + " " + symbVal);
+            }
+        }
+        return condition.toString();
+    }
+
+    private String getTimeSymbAndVal(String symbol, String value) {
+        String values = "" + value;
+        String tar = "";
+        if ("between".equals(symbol)) {
+            String[] str = value.split(",");
+            String str1 = str[0];
+            String str2 = str[1];
+            tar = "between to_date('" + str1 + "','yyyy-MM-dd') and to_date('" + str2 + "','yyyy-MM-dd')";
+        } else {
+            tar = symbol + " '" + values + "'";
+        }
+        return tar;
+    }
+
+    private String getSymbAndVal(String symbol, String value, String columnType) {
+        String values = "" + value;
+        String tar = "";
+        if ("contain".equals(symbol)) {
+            if ("categorical".equals(columnType)) {
+                tar = "in " + getContainsCate(value);
+            } else {
+                tar = "like '%" + values + "%'";
+            }
+        } else if ("notContain".equals(symbol)) {
+            if ("categorical".equals(columnType)) {
+                tar = "not in " + getContainsCate(value);
+            } else {
+                tar = "not like '%" + values + "%'";
+            }
+        } else if ("startsWith".equals(symbol)) {
+            tar = "like '" + values + "%'";
+        } else if ("endsWith".equals(symbol)) {
+            tar = "like '%" + values + "'";
+        } else if ("null".equals(symbol)) {
+            tar = "is null";
+        } else if ("notNull".equals(symbol)) {
+            tar = "is not null";
+        } else if ("between".equals(symbol)) {
+            tar = "";
+            String[] str = value.split(",");
+            String str1 = str[0];
+            String str2 = str[1];
+            tar = "between '" + str1 + "' and '" + str2 + "'";
+        } else if("notInclude".equals(symbol)) {
+            tar = "not like '%" + values + "%'";
+        } else if("include".equals(symbol)){
+            tar = "like '%" + values + "%'";
+        } else if("equals".equals(symbol)){
+            tar = "=" + " '" + values + "'";
+        } else if("notEquals".equals(symbol)){
+            tar = "!=" + " '" + values + "'";
+        }else {
+            tar = symbol + " '" + values + "'";
+        }
+        return tar;
+    }
+
+    private String getContainsCate(String value) {
+        List<String> val = new ArrayList<>();
+        CollectionType javaType = objectMapper.getTypeFactory().constructCollectionType(ArrayList.class, String.class);
+        try {
+            val = objectMapper.readValue(value, javaType);   //这里不需要强制转换
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        String valueString = "";
+        Iterator isList = val.iterator();
+        while (isList.hasNext()) {
+            String v = String.valueOf(isList.next());
+            valueString = valueString + ", '" + v + "'";
+        }
+        valueString = valueString.replaceFirst(",", "(") + ")";
+        return valueString;
+    }
+
 }

+ 28 - 30
bi-server/src/main/java/com/usoftchina/bi/server/service/dashboard/DashboardsToChartsUtilService.java

@@ -12,6 +12,7 @@ import com.usoftchina.bi.core.base.TestPage;
 import com.usoftchina.bi.server.model.po.TokenData;
 import com.usoftchina.bi.server.model.po.User;
 import com.usoftchina.bi.server.model.vo.configVo.*;
+import com.usoftchina.bi.server.model.vo.dataVo.PopAndIndDataInfo;
 import com.usoftchina.bi.server.service.chart.*;
 import com.usoftchina.bi.server.service.user.UserService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -47,22 +48,15 @@ public class DashboardsToChartsUtilService {
     @Autowired
     private UserService userService;
 
-    private int chartId;
-
-    private Lock lock = new ReentrantLock();
-
     public RepEntity getChartsInDash(ChartsToDashInfo chartsToDashInfo, String token) throws SQLException {
-        if (StringUtils.isEmpty(token)) {
+        if (StringUtils.isEmpty(token) || "null".equals(token)) {
             User user = userService.getUserById(chartsToDashInfo.getDashboardCreatorId()).getData();
             LoginInfo loginInfo = new LoginInfo(user.getUserName(), EncryUtil.decryptPassword(user.getPassWord()));
             token = userService.login(loginInfo).getData().getToken();
         }
-        lock.lock();
-        try {
-            chartId = chartsToDashInfo.getChartId();
-        } finally {
-            lock.unlock();
-        }
+
+        int chartId = chartsToDashInfo.getChartId();
+
         //拿到图表配置
         ChartsConfigToDash chartsConfigToDash = chartsConfigMapper.getChartConfigToDash(chartId);
         if (chartsConfigToDash == null || "".equals(chartsConfigToDash)){
@@ -70,6 +64,7 @@ public class DashboardsToChartsUtilService {
         }
         String chartType = chartsConfigToDash.getChartType();
         String fetchConfig = chartsConfigToDash.getFetchConfig();
+        String styleConfig = chartsConfigToDash.getStyleConfig();
         if (fetchConfig == null || "".equals(fetchConfig)){
             return new RepEntity(RepCode.Null);
         }
@@ -77,27 +72,26 @@ public class DashboardsToChartsUtilService {
         //判断图表类型
         List<Screen> filters = chartsToDashInfo.getFilters();
         if ("Pie".equals(chartType)){
-            return getPie(fetchConfig, token, filters);
-
+            return getPie(fetchConfig, token, filters, chartId, styleConfig);
         }else if ("Histogram".equals(chartType)){
-            return getHistogram(fetchConfig, token, filters);
+            return getHistogram(fetchConfig, token, filters, chartId, styleConfig);
 
         }else if ("Line".equals(chartType)){
-            return getLine(fetchConfig, token, filters);
+            return getLine(fetchConfig, token, filters, chartId, styleConfig);
 
         }else if ("population".equals(chartType)){
-            return getPopulation(fetchConfig, token, filters);
+            return getPopulation(fetchConfig, token, filters, chartId, styleConfig);
 
         }else if ("individual".equals(chartType)){
-            return getIndividual(fetchConfig, token, filters, chartsToDashInfo.getTestPage());
+            return getIndividual(fetchConfig, token, filters, chartsToDashInfo.getTestPage(), chartId, styleConfig);
 
         }else if("scatter".equals(chartType)){
-            return getScatter(fetchConfig, token, filters);
+            return getScatter(fetchConfig, token, filters, chartId, styleConfig);
         }
         return new RepEntity(RepCode.success);
     }
 
-    public RepEntity getHistogram(String fetchConfig, String token, List<Screen> filters){
+    public RepEntity getHistogram(String fetchConfig, String token, List<Screen> filters, int chartId, String styleConfig){
         HistogramConfigInfo histogramConfigInfo = new HistogramConfigInfo();
         try {
             histogramConfigInfo = objectMapper.readValue(fetchConfig,HistogramConfigInfo.class);
@@ -105,10 +99,10 @@ public class DashboardsToChartsUtilService {
         } catch (Exception e) {
             e.printStackTrace();
         }
-        return showHistogramService.showHistogram(histogramConfigInfo, token, chartId);
+        return showHistogramService.showHistogram(histogramConfigInfo, token, chartId, styleConfig);
     }
 
-    public RepEntity getScatter(String fetchConfig, String token, List<Screen> filters){
+    public RepEntity getScatter(String fetchConfig, String token, List<Screen> filters, int chartId, String styleConfig){
             ScatterConfigInfo scatterConfigInfo = new ScatterConfigInfo();
             try {
                 scatterConfigInfo = objectMapper.readValue(fetchConfig,ScatterConfigInfo.class);
@@ -116,10 +110,10 @@ public class DashboardsToChartsUtilService {
             } catch (Exception e) {
                 e.printStackTrace();
             }
-            return showScatterService.showScatter(scatterConfigInfo, token, chartId);
+            return showScatterService.showScatter(scatterConfigInfo, token, chartId, styleConfig);
     }
 
-    public RepEntity getLine(String fetchConfig, String token, List<Screen> filters){
+    public RepEntity getLine(String fetchConfig, String token, List<Screen> filters, int chartId, String styleConfig){
         LineConfigInfo lineConfigInfo = new LineConfigInfo();
         try {
             lineConfigInfo = objectMapper.readValue(fetchConfig,LineConfigInfo.class);
@@ -127,10 +121,10 @@ public class DashboardsToChartsUtilService {
         } catch (Exception e) {
             e.printStackTrace();
         }
-        return showLineService.showLine(lineConfigInfo, token, chartId);
+        return showLineService.showLine(lineConfigInfo, token, chartId, styleConfig);
     }
 
-    public RepEntity getPopulation(String fetchConfig, String token, List<Screen> filters) throws SQLException {
+    public RepEntity getPopulation(String fetchConfig, String token, List<Screen> filters, int chartId, String styleConfig) throws SQLException {
         PopulationInfo populationInfo = new PopulationInfo();
         try {
             populationInfo = objectMapper.readValue(fetchConfig,PopulationInfo.class);
@@ -138,10 +132,12 @@ public class DashboardsToChartsUtilService {
         } catch (Exception e) {
             e.printStackTrace();
         }
-        return showPopulationService.showPopulation(populationInfo, token, chartId);
+        RepEntity<PopAndIndDataInfo> repEntity = showPopulationService.showPopulation(populationInfo, token, chartId);
+        repEntity.getData().setStyleConfig(styleConfig);
+        return repEntity;
     }
 
-    public RepEntity getIndividual(String fetchConfig, String token, List<Screen> filters, TestPage testPage) throws SQLException {
+    public RepEntity getIndividual(String fetchConfig, String token, List<Screen> filters, TestPage testPage, int chartId, String styleConfig) throws SQLException {
         IndividualConfigInfo individualConfigInfo = new IndividualConfigInfo();
         try {
             individualConfigInfo = objectMapper.readValue(fetchConfig,IndividualConfigInfo.class);
@@ -150,10 +146,12 @@ public class DashboardsToChartsUtilService {
         } catch (Exception e) {
             e.printStackTrace();
         }
-        return showIndividualService.showIndividual(individualConfigInfo, token, chartId);
+        RepEntity<PopAndIndDataInfo> repEntity = showIndividualService.showIndividual(individualConfigInfo, token, chartId);
+        repEntity.getData().setStyleConfig(styleConfig);
+        return repEntity;
     }
 
-    public RepEntity getPie(String fetchConfig, String token, List<Screen> filters){
+    public RepEntity getPie(String fetchConfig, String token, List<Screen> filters, int chartId, String styleConfig){
         PieConfigInfo pieConfigInfo = new PieConfigInfo();
         try {
             pieConfigInfo = objectMapper.readValue(fetchConfig,PieConfigInfo.class);
@@ -161,7 +159,7 @@ public class DashboardsToChartsUtilService {
         } catch (Exception e) {
             e.printStackTrace();
         }
-        return showPieService.showPie(pieConfigInfo, token, chartId);
+        return showPieService.showPie(pieConfigInfo, token, chartId, styleConfig);
     }
 
 }

+ 2 - 2
bi-server/src/main/java/com/usoftchina/bi/server/service/dashboard/DefaultDashboardService.java

@@ -27,8 +27,8 @@ public class DefaultDashboardService {
         defaultDashboardMapper.save(userId, dashboardId);
     }
 
-    public void delete(int userId, int dashboardId) {
-        defaultDashboardMapper.delete(userId, dashboardId);
+    public void delete(int dashboardId) {
+        defaultDashboardMapper.delete(dashboardId);
     }
 
 }

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
bi-server/src/main/resources/static/index.491cc5e0.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
bi-server/src/main/resources/static/index.9804a75f.css


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
bi-server/src/main/resources/static/index.b4415de2.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
bi-server/src/main/resources/static/index.c3809205.css


+ 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.9804a75f.css" rel="stylesheet"></head>
+<link rel="shortcut icon" href="favicon.png"><link href="index.c3809205.css" rel="stylesheet"></head>
 <body>
   <div id="root"></div>
-<script type="text/javascript" src="index.b4415de2.js"></script></body>
+<script type="text/javascript" src="index.491cc5e0.js"></script></body>
 </html>

+ 6 - 0
pom.xml

@@ -37,6 +37,7 @@
     <swagger.version>2.7.0</swagger.version>
     <mysql.version>6.0.6</mysql.version>
     <jwt.version>3.1.0</jwt.version>
+    <poi.version>3.9</poi.version>
   </properties>
 
   <repositories>
@@ -160,6 +161,11 @@
         <artifactId>mysql-connector-java</artifactId>
         <version>${mysql.version}</version>
       </dependency>
+      <dependency>
+        <groupId>org.apache.poi</groupId>
+        <artifactId>poi</artifactId>
+        <version>${poi.version}</version>
+      </dependency>
     </dependencies>
   </dependencyManagement>
 

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů