Browse Source

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

zhuth 6 years ago
parent
commit
616df145c9

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

@@ -36,8 +36,7 @@ public class DashboardMenuController {
     @Auth(user = "admin")
     @ApiOperation(value = "保存目录", notes = "保存看板目录", response = RepEntity.class)
     public RepEntity save(@RequestHeader String token, @RequestBody DashBoardMenuInfo dashBoardMenuInfo){
-        dashBoardMenuService.save(dashBoardMenuInfo);
-        return new RepEntity(RepCode.success);
+        return new RepEntity(RepCode.success, dashBoardMenuService.save(dashBoardMenuInfo));
     }
 
     @PostMapping("/update")

+ 2 - 0
bi-server/src/main/java/com/usoftchina/bi/server/controller/user/UserPowerController.java

@@ -3,6 +3,7 @@ package com.usoftchina.bi.server.controller.user;
 import com.usoftchina.bi.core.base.RepCode;
 import com.usoftchina.bi.core.base.RepEntity;
 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.configVo.BatchUserPowerInfo;
 import com.usoftchina.bi.server.model.vo.configVo.UserPowerInfo;
 import com.usoftchina.bi.server.service.user.UserPowerService;
@@ -31,6 +32,7 @@ public class UserPowerController {
      */
     @PostMapping("/save")
     @CheckToken
+    @Log(module = "权限设置", name = "", token = "#token", value = "")
     @ApiOperation(value = "新增用户(组)报表权限", notes = "新增用户(组)报表权限", response = RepEntity.class)
     public RepEntity save(@RequestHeader String token, @RequestBody UserPowerInfo userPowerInfo){
         userPowerService.save(userPowerInfo);

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

@@ -7,6 +7,7 @@ import com.usoftchina.bi.server.model.po.ChartConfig;
 import com.usoftchina.bi.server.model.po.ChartConfigList;
 import com.usoftchina.bi.server.model.po.ChartsConfigToDash;
 import com.usoftchina.bi.server.model.vo.configVo.GroupInfo;
+import io.swagger.models.auth.In;
 import org.apache.ibatis.annotations.*;
 import org.springframework.stereotype.Repository;
 
@@ -18,9 +19,9 @@ import java.util.Map;
 public interface ChartsConfigMapper {
 
     @Insert("insert into bi_charts(id,CHART_NAME,CHART_TYPE,BD_DATA_ID,CHART_CONFIG,GROUP_BY,ACCESS_AUTHORITY,UPDATE_AUTHORITY,BC_CHARTS_GROUP,CHART_DESCRIBES,BC_CHART_STYLE," +
-            "create_by,create_date, bc_charts_option, create_id, BC_FETCHCONFIG) " +
+            "create_by,create_date, bc_charts_option, create_id, BC_FETCHCONFIG, from_id, from_data_id) " +
             "VALUES (#{chartId,jdbcType=INTEGER},#{chartName,jdbcType=VARCHAR},#{chartType,jdbcType=VARCHAR}, #{dataId,jdbcType=INTEGER}, #{chartConfig,jdbcType=VARCHAR}, #{groupBy,jdbcType=VARCHAR}, #{accessAuthority,jdbcType=VARCHAR}, #{updateAuthority,jdbcType=VARCHAR}, #{chartsGroup,jdbcType=INTEGER}," +
-            "#{describes,jdbcType=VARCHAR},#{style,jdbcType=VARCHAR}, #{createBy,jdbcType=VARCHAR},to_date(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'YYYY-MM-DD hh24:mi:ss'),  #{chartOption,jdbcType=VARCHAR}, #{createId,jdbcType=INTEGER}, #{fetchConfig,jdbcType=VARCHAR})" )
+            "#{describes,jdbcType=VARCHAR},#{style,jdbcType=VARCHAR}, #{createBy,jdbcType=VARCHAR},to_date(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'YYYY-MM-DD hh24:mi:ss'),  #{chartOption,jdbcType=VARCHAR}, #{createId,jdbcType=INTEGER}, #{fetchConfig,jdbcType=VARCHAR},#{from_id,jdbcType=INTEGER},#{from_data_id,jdbcType=INTEGER})" )
 //    @Options(useGeneratedKeys=false, keyProperty = "chartId",keyColumn = "id")
     @SelectKey(before=true,keyProperty="chartId",resultType=Integer.class,statement="SELECT bi_charts_sequence.nextval from dual",keyColumn = "id")
     void insertCharts(ChartConfig chartConfig);
@@ -41,6 +42,9 @@ public interface ChartsConfigMapper {
     @Select("select DATA_NAME as name from BI_DATA_CONNECTORS where id = #{id}")
     String getDataNameById(int id);
 
+    @Select("select BD_DATA_ID from BI_CHARTS where FROM_DATA_ID = #{bd_data_id}")
+    Integer getDataConnectId(@Param("bd_data_id") int id);
+
     /*
     查看图表列表
      */
@@ -257,7 +261,7 @@ public interface ChartsConfigMapper {
      * @param groupInfoList
      */
     @Update("<script>"
-            + "UPDATE BI_CHARTS_GROUP SET BC_FATHER_ID = -1 WHERE BC_FATHER_ID IN "
+            + "UPDATE BI_CHARTS_GROUP SET BC_FATHER_ID = -1 WHERE BC_ID IN "
             + "<foreach collection=\"list\" item=\"item\" index=\"index\" open=\"(\" close=\")\" separator=\",\">"
             +   "#{item.id, jdbcType=INTEGER}"
             + "</foreach>"
@@ -339,4 +343,9 @@ public interface ChartsConfigMapper {
             "from bi_charts bc left join bi_data_connectors bd on bc.bd_data_id = bd.id where bc.id = #{id}")
     ChartsColumnConfig getChartsColumn(int id);
 
+    /*
+    通过图表ID查询图表列配置和style
+     */
+    @Select("select ID,BD_DATA_ID from BI_CHARTS where FROM_ID = #{bc_id} and FROM_DATA_ID = #{bd_data_id}")
+    List<Map<String, Object>> checkOldChart(@Param("bc_id") int bc_id,@Param("bd_data_id") int bd_data_id);
 }

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

@@ -34,10 +34,10 @@ public interface ShowChartsMapper {
                      @Param("xdata") String xdata, @Param("screen") String screen);
 
     //x轴数据 -> 优化后
-    @Select("select ${dataType}(${yAxisName}) from ${tableName} where 1=1 ${screen} GROUP BY ${xColumn}")
+    @Select("select ${dataType}(${yAxisName}) from ${tableName} where 1=1 ${screen} and ${xColumn} in (select * from (select DISTINCT ${xColumn} from ${tableName} ${screenToColumn}) where rownum <= #{num}) GROUP BY ${xColumn}")
     List<Double> getValues(@Param("yAxisName") String yAxisName, @Param("xColumn") String xColumn,
                     @Param("tableName") String tableName, @Param("dataType") String dataType,
-                    @Param("screen") String screen);
+                    @Param("screen") String screen, @Param("screenToColumn") String screenToColumn, @Param("num") int num);
 
     //x轴数据 -> 饼图优化后
     @Select("select ${dataType}(${yAxisName}) value, ${xColumn} name from ${tableName} where 1=1 ${screen} GROUP BY ${xColumn}")

+ 1 - 4
bi-server/src/main/java/com/usoftchina/bi/server/dao/dashboard/DashboardsMapper.java

@@ -133,10 +133,7 @@ public interface DashboardsMapper {
    查询看板
     */
     @Select("select id, bd_note as bdNote, bd_name as bdName, CONFIGURATION as bdConfiguration, CREATE_BY as createBy, create_id as createId, CREATE_DATE as createDate, BD_THUMBNAIL as thumbnail, relation_columns as relationColumns, filters, demo, bd_code,bd_menuId " +
-            " from BI_DASHBOARDS where (id in " +
-            " (select bo_da_id from bi_DASHBOARDS_object " +
-            " where (bo_type = '0' and bo_ob_id in (select br_user_group from bi_user_rel_groups))" +
-            " or (BO_TYPE='1'))) and id = #{id}")
+            " from BI_DASHBOARDS where id = #{id}")
     @ResultMap("DashBoardsResultMap")
     Dashboards getDashboardsWithoutLimit(@Param("id") int id);
 

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

@@ -84,4 +84,12 @@ public interface UserPowerMapper {
             + "</script>")
     void insertByUserId(@Param("array") String[] ids, @Param("userId") int id);
 
+    @Select("SELECT WM_CONCAT(BD_NAME) FROM BI_DASHBOARDS WHERE ID IN (${ids}) AND ID NOT IN (SELECT BPU_DASHBOARDID FROM BI_POWER_USERS WHERE BPU_USERGROUPID = #{id} AND BPU_DASHBOARDID IN (${ids}))")
+    String getDashboardsNameByUserGroup(@Param("ids") String ids, @Param("id") int id);
+
+    @Select("SELECT WM_CONCAT(BD_NAME) FROM BI_DASHBOARDS WHERE ID IN (${ids}) AND ID NOT IN (SELECT BPU_DASHBOARDID FROM BI_POWER_USERS WHERE BPU_USERID = #{id} AND BPU_DASHBOARDID IN (${ids}))")
+    String getDashboardsNameByUser(@Param("ids") String ids, @Param("id") int id);
+
+    @Select("SELECT WM_CONCAT(BD_NAME) FROM BI_DASHBOARDS WHERE ID IN (${ids})")
+    String getDashboardsByIds(@Param("ids") String ids);
 }

+ 18 - 0
bi-server/src/main/java/com/usoftchina/bi/server/model/po/ChartConfig.java

@@ -26,6 +26,24 @@ public class ChartConfig {
     private boolean demo;
     private String dataConnectionId;
     private String dataConnectionName;
+    private Integer from_id;//复制来源ID
+    private Integer from_data_id;//复制数据源ID
+
+    public Integer getFrom_id() {
+        return from_id;
+    }
+
+    public void setFrom_id(Integer from_id) {
+        this.from_id = from_id;
+    }
+
+    public Integer getFrom_data_id() {
+        return from_data_id;
+    }
+
+    public void setFrom_data_id(Integer from_data_id) {
+        this.from_data_id = from_data_id;
+    }
 
     public String getDataConnectionId() {
         return dataConnectionId;

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

@@ -141,7 +141,7 @@ public class ShowHistogramService {
             if ("time".equals(xColumnType)){        //如果是时间类型
                 value = timeConverterUtil.getHistogramTimeValue(yColumn, xColumn, tableName, yAxisType, xAxisType, xAxisData, screenToColumnS);
             }else {
-                value = showChartsMapper.getValues(yColumn, xColumn, tableName, yAxisType, screenToColumnS);
+                value = showChartsMapper.getValues(yColumn, xColumn, tableName, yAxisType, screenToColumnS, screen, histogramConfigInfo.getMaxCount());
             }
 
             series.setName(xColumn);

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

@@ -4,6 +4,7 @@ import com.usoftchina.bi.server.dao.chart.ShowChartsMapper;
 import com.usoftchina.bi.server.model.bo.TimeReture;
 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;
@@ -72,6 +73,9 @@ public class TimeConverterUtil {
             }else {
                 timeReture.setOverdose(true);
             }
+            if (StringUtils.isEmpty(screen)) {
+                screen = "where 1 = 1";
+            }
             value = showChartsMapper.getTimeYear(xColumnName, tableName, screen);
             timeReture.setValues(value);
         }else {

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

@@ -50,8 +50,9 @@ public class DashBoardMenuService {
         return dashboardMenuRespDTOList;
     }
 
-    public void save(DashBoardMenuInfo dashBoardMenuInfo){
+    public int save(DashBoardMenuInfo dashBoardMenuInfo){
         dashBoardMenuMapper.insert(dashBoardMenuInfo);
+        return dashBoardMenuInfo.getId();
     }
 
     public void update(DashBoardMenuInfo dashBoardMenuInfo){

+ 32 - 14
bi-server/src/main/java/com/usoftchina/bi/server/service/dashboard/DashboardsService.java

@@ -353,20 +353,38 @@ public class DashboardsService {
             for (int i = 0, len = idArray.length; i < len; i++) {
                 ChartConfig chartConfig = chartsConfigMapper.getOneChart(Integer.valueOf(idArray[i]));
                 int oldChartId = chartConfig.getChartId();
-                chartConfig.setChartName(chartConfig.getChartName() + dashboardCopyInfo.getLastName());
-                chartConfig.setCreateBy(userName);
-                chartConfig.setCreateId(userId);
-                String oldFetchConfig = chartConfig.getFetchConfig();
-                int dataId = dataConnectorService.copyDataSource(token, new DataSourceCopyInfo(chartConfig.getDataId(), dataSourceId ,dashboardCopyInfo.getLastName())).getData();
-                chartConfig.setDataId(dataId);
-                chartsConfigMapper.insertCharts(chartConfig);
-                int newChartId = chartConfig.getChartId();
-                //新ID更新到FetchConfig
-                JSONArray jsonArray = JSONObject.parseArray("["+oldFetchConfig+"]");
-                jsonArray.getJSONObject(0).put("id",newChartId);
-                chartsConfigMapper.updateChartFetchConfig(JSONObject.toJSONString(jsonArray.getJSONObject(0)),newChartId);
-                idMap.put(String.valueOf(oldChartId), String.valueOf(newChartId));
-                idList.add(String.valueOf(newChartId));
+                //校验 要复制的图标是否已在目标账套
+                List<Map<String, Object>> chartMap = chartsConfigMapper.checkOldChart(oldChartId,chartConfig.getDataId());
+                if(chartMap.size()==0){
+                    chartConfig.setFrom_id(oldChartId);
+                    chartConfig.setFrom_data_id(chartConfig.getDataId());
+                    chartConfig.setChartName(chartConfig.getChartName() + dashboardCopyInfo.getLastName());
+                    chartConfig.setCreateBy(userName);
+                    chartConfig.setCreateId(userId);
+                    String oldFetchConfig = chartConfig.getFetchConfig();
+                    //判断数据源是否已复制过
+                    Integer DataConnectId = chartsConfigMapper.getDataConnectId(chartConfig.getDataId());
+                    int dataId = 0;
+                    if(DataConnectId==null || DataConnectId==0){
+                        dataId = dataConnectorService.copyDataSource(token, new DataSourceCopyInfo(chartConfig.getDataId(), dataSourceId ,dashboardCopyInfo.getLastName())).getData();
+                    }else{
+                        dataId = DataConnectId;
+                        chartConfig.setFrom_data_id(dataId);
+                    }
+                    chartConfig.setDataId(dataId);
+                    chartsConfigMapper.insertCharts(chartConfig);
+                    int newChartId = chartConfig.getChartId();
+                    //新ID更新到FetchConfig
+                    JSONArray jsonArray = JSONObject.parseArray("["+oldFetchConfig+"]");
+                    jsonArray.getJSONObject(0).put("id",newChartId);
+                    chartsConfigMapper.updateChartFetchConfig(JSONObject.toJSONString(jsonArray.getJSONObject(0)),newChartId);
+                    idMap.put(String.valueOf(oldChartId), String.valueOf(newChartId));
+                    idList.add(String.valueOf(newChartId));
+                }else{
+                    String newChartId = String.valueOf(chartMap.get(0).get("ID"));
+                    idMap.put(String.valueOf(oldChartId), newChartId);
+                    idList.add(newChartId);
+                }
             }
         }
         //复制报表

+ 50 - 0
bi-server/src/main/java/com/usoftchina/bi/server/service/user/UserPowerService.java

@@ -1,10 +1,13 @@
 package com.usoftchina.bi.server.service.user;
 
 import com.usoftchina.bi.core.base.BaseContextHolder;
+import com.usoftchina.bi.server.dao.dashboard.DashboardsMapper;
+import com.usoftchina.bi.server.dao.user.UserMapper;
 import com.usoftchina.bi.server.dao.user.UserPowerMapper;
 import com.usoftchina.bi.server.model.vo.configVo.BatchUserPowerInfo;
 import com.usoftchina.bi.server.model.vo.configVo.UserPowerInfo;
 import com.usoftchina.bi.server.model.vo.dataVo.DashboardPowerDTO;
+import com.usoftchina.bi.server.service.common.MessageLogService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -19,6 +22,12 @@ public class UserPowerService {
 
     @Autowired
     private UserPowerMapper userPowerMapper;
+    @Autowired
+    private MessageLogService messageLogService;
+    @Autowired
+    private UserMapper userMapper;
+    @Autowired
+    private DashboardsMapper dashboardsMapper;
 
     /**
      * 新增用户(组)权限
@@ -26,6 +35,8 @@ public class UserPowerService {
      */
     public void save(UserPowerInfo userPowerInfo){
         userPowerMapper.insert(userPowerInfo);
+        String content = getLogContent(userPowerInfo, "新增");
+        messageLogService.save("权限设置", null, BaseContextHolder.getUserName(), content);
     }
 
     /**
@@ -43,6 +54,8 @@ public class UserPowerService {
      */
     public void delete(UserPowerInfo userPowerInfo){
         userPowerMapper.delete(userPowerInfo);
+        String content = getLogContent(userPowerInfo, "删除");
+        messageLogService.delete("权限设置", null, BaseContextHolder.getUserName(), content);
     }
 
     /**
@@ -52,20 +65,57 @@ public class UserPowerService {
     public void batchAdd(BatchUserPowerInfo batchUserPowerInfo) {
         String[] ids = batchUserPowerInfo.getDashboardIds().split(",");
         if (batchUserPowerInfo.getType() == 0) {
+            String dashboardsName = userPowerMapper.getDashboardsNameByUserGroup(batchUserPowerInfo.getDashboardIds(), batchUserPowerInfo.getBizId());
+            String name = userMapper.getUserGroup(batchUserPowerInfo.getBizId()).getUserGroupName();
+
             userPowerMapper.deleteByUserGroupId(batchUserPowerInfo.getDashboardIds(),batchUserPowerInfo.getBizId());
             userPowerMapper.insertByUserGroupId(ids, batchUserPowerInfo.getBizId());
+            messageLogService.save("权限设置", null, BaseContextHolder.getUserName(), "批量新增 " + name + "(用户组) 查看报表 " + dashboardsName + " 的权限");
         }else {
+            String dashboardsName = userPowerMapper.getDashboardsNameByUser(batchUserPowerInfo.getDashboardIds(), batchUserPowerInfo.getBizId());
+            String name = userMapper.getUserById(batchUserPowerInfo.getBizId()).getUserName();
+
             userPowerMapper.deleteByUserId(batchUserPowerInfo.getDashboardIds(), batchUserPowerInfo.getBizId());
             userPowerMapper.insertByUserId(ids, batchUserPowerInfo.getBizId());
+
+            messageLogService.save("权限设置", null, BaseContextHolder.getUserName(), "批量新增 " + name + "(用户) 查看报表 " + dashboardsName + " 的权限");
         }
     }
 
+    /**
+     * 批量删除权限
+     * @param batchUserPowerInfo
+     */
     public void batchDelete(BatchUserPowerInfo batchUserPowerInfo){
         if (batchUserPowerInfo.getType() == 0) {
+            String dashboardsName = userPowerMapper.getDashboardsByIds(batchUserPowerInfo.getDashboardIds());
+            String name = userMapper.getUserGroup(batchUserPowerInfo.getBizId()).getUserGroupName();
             userPowerMapper.deleteByUserGroupId(batchUserPowerInfo.getDashboardIds(),batchUserPowerInfo.getBizId());
+            messageLogService.delete("权限设置", null, BaseContextHolder.getUserName(), "批量删除 " + name + "(用户组) 查看报表 " + dashboardsName + " 的权限");
         }else {
+            String dashboardsName = userPowerMapper.getDashboardsByIds(batchUserPowerInfo.getDashboardIds());
+            String name = userMapper.getUserById(batchUserPowerInfo.getBizId()).getUserName();
             userPowerMapper.deleteByUserId(batchUserPowerInfo.getDashboardIds(), batchUserPowerInfo.getBizId());
+            messageLogService.delete("权限设置", null, BaseContextHolder.getUserName(), "批量删除 " + name + "(用户) 查看报表 " + dashboardsName + " 的权限");
+        }
+    }
+
+    /**
+     * 获取日志内容
+     * @param userPowerInfo
+     * @return
+     */
+    private String getLogContent(UserPowerInfo userPowerInfo, String operation){
+        String dashboardName = dashboardsMapper.getDashboardsWithoutLimit(userPowerInfo.getDashboardId()).getBdName();
+        StringBuilder sb = new StringBuilder();
+        if (userPowerInfo.getType() == 0) {
+            String name = userMapper.getUserGroup(userPowerInfo.getBizId()).getUserGroupName();
+            sb.append(operation + "用户组 " + name + "查看报表 " + dashboardName + "的权限");
+        }else {
+            String name = userMapper.getUserById(userPowerInfo.getBizId()).getUserName();
+            sb.append(operation + "用户 " + name + "查看报表 " + dashboardName + "的权限");
         }
+        return sb.toString();
     }
 
 }

+ 2 - 2
bi-server/src/main/resources/application.properties

@@ -9,8 +9,8 @@ spring.datasource.url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
 spring.datasource.username=UAS_BI
 spring.datasource.password=select!#%*(
 
-spring.jackson.date-format=yyyy-MM-dd
-spring.jackson.time-zone=GMT+8
+#spring.jackson.date-format=yyyy-MM-dd
+#spring.jackson.time-zone=GMT+8
 
 #线上环境
 #spring.datasource.url=jdbc:oracle:thin:@218.18.115.198:1523:orcl