Bläddra i källkod

Merge remote-tracking branch 'origin/feature-refactor' into feature-refactor

hy 7 år sedan
förälder
incheckning
e4810b561d
41 ändrade filer med 973 tillägg och 141 borttagningar
  1. 3 1
      bi-auth/src/main/java/com/usoftchina/bi/auth/config/ConfigAdapter.java
  2. 50 0
      bi-core/src/main/java/com/usoftchina/bi/core/base/BaseContextHolder.java
  3. 2 1
      bi-core/src/main/java/com/usoftchina/bi/core/base/RepCode.java
  4. 3 0
      bi-server/src/main/java/com/usoftchina/bi/server/aspect/JwtTokenAspect.java
  5. 91 0
      bi-server/src/main/java/com/usoftchina/bi/server/aspect/LogAspect.java
  6. 18 9
      bi-server/src/main/java/com/usoftchina/bi/server/controller/chart/ChartsConfigController.java
  7. 39 0
      bi-server/src/main/java/com/usoftchina/bi/server/controller/common/MessageLogController.java
  8. 5 0
      bi-server/src/main/java/com/usoftchina/bi/server/controller/dashboard/DashboardMenuController.java
  9. 4 1
      bi-server/src/main/java/com/usoftchina/bi/server/controller/dashboard/DashboardsController.java
  10. 5 4
      bi-server/src/main/java/com/usoftchina/bi/server/controller/dataSource/DataBasesController.java
  11. 10 7
      bi-server/src/main/java/com/usoftchina/bi/server/controller/dataSource/DataConnectorController.java
  12. 3 3
      bi-server/src/main/java/com/usoftchina/bi/server/controller/user/UserController.java
  13. 13 1
      bi-server/src/main/java/com/usoftchina/bi/server/dao/chart/ChartsConfigMapper.java
  14. 47 4
      bi-server/src/main/java/com/usoftchina/bi/server/dao/chart/ShowChartsMapper.java
  15. 34 0
      bi-server/src/main/java/com/usoftchina/bi/server/dao/common/MessageLogMapper.java
  16. 8 0
      bi-server/src/main/java/com/usoftchina/bi/server/dao/dashboard/DashBoardMenuMapper.java
  17. 29 0
      bi-server/src/main/java/com/usoftchina/bi/server/dao/dataSource/DataConnectorMapper.java
  18. 3 3
      bi-server/src/main/java/com/usoftchina/bi/server/dao/user/UserMapper.java
  19. 9 0
      bi-server/src/main/java/com/usoftchina/bi/server/model/po/ColumnToShow.java
  20. 132 0
      bi-server/src/main/java/com/usoftchina/bi/server/model/po/MessageLog.java
  21. 37 0
      bi-server/src/main/java/com/usoftchina/bi/server/model/pojo/annotation/Log.java
  22. 43 14
      bi-server/src/main/java/com/usoftchina/bi/server/service/chart/ChartsConfigService.java
  23. 26 33
      bi-server/src/main/java/com/usoftchina/bi/server/service/chart/ShowHistogramService.java
  24. 3 3
      bi-server/src/main/java/com/usoftchina/bi/server/service/chart/ShowPieService.java
  25. 2 2
      bi-server/src/main/java/com/usoftchina/bi/server/service/chart/ShowScatterService.java
  26. 91 0
      bi-server/src/main/java/com/usoftchina/bi/server/service/chart/TimeConverterUtil.java
  27. 56 0
      bi-server/src/main/java/com/usoftchina/bi/server/service/common/MessageLogService.java
  28. 6 0
      bi-server/src/main/java/com/usoftchina/bi/server/service/dashboard/DashBoardMenuService.java
  29. 41 17
      bi-server/src/main/java/com/usoftchina/bi/server/service/dashboard/DashboardsService.java
  30. 2 1
      bi-server/src/main/java/com/usoftchina/bi/server/service/dashboard/DashboardsToChartsUtilService.java
  31. 11 3
      bi-server/src/main/java/com/usoftchina/bi/server/service/dataSource/DataBasesService.java
  32. 48 16
      bi-server/src/main/java/com/usoftchina/bi/server/service/dataSource/DataConnectorService.java
  33. 1 1
      bi-server/src/main/java/com/usoftchina/bi/server/service/user/SynchronizeEmpInfo.java
  34. 1 10
      bi-server/src/main/java/com/usoftchina/bi/server/service/user/UserService.java
  35. 92 5
      bi-server/src/main/java/com/usoftchina/bi/server/utils/ScreenUtil.java
  36. 3 0
      bi-server/src/main/resources/application.properties
  37. 0 0
      bi-server/src/main/webapp/dist/index.0e157b20.js
  38. 0 0
      bi-server/src/main/webapp/dist/index.3f25d010.css
  39. 0 0
      bi-server/src/main/webapp/dist/index.9af88545.js
  40. 0 0
      bi-server/src/main/webapp/dist/index.9e336fcf.css
  41. 2 2
      bi-server/src/main/webapp/dist/index.html

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

@@ -22,7 +22,9 @@ public class ConfigAdapter implements WebMvcConfigurer {
     public void addInterceptors(InterceptorRegistry registry) {
     public void addInterceptors(InterceptorRegistry registry) {
         registry.addInterceptor(securityInterceptor())
         registry.addInterceptor(securityInterceptor())
                 .addPathPatterns("/DataBase/*").excludePathPatterns("/DataBase/getColumnData")
                 .addPathPatterns("/DataBase/*").excludePathPatterns("/DataBase/getColumnData")
-        .addPathPatterns("/getUserList").addPathPatterns("/updateUser")
+        .addPathPatterns("/getUserList")
+        .addPathPatterns("/*User*")
+        .addPathPatterns("/*User*/*")
         .addPathPatterns("/Connector/*").excludePathPatterns("/Connector/getListDataConnector")
         .addPathPatterns("/Connector/*").excludePathPatterns("/Connector/getListDataConnector")
         .excludePathPatterns("/Connector/getConnectorGroup")
         .excludePathPatterns("/Connector/getConnectorGroup")
         .excludePathPatterns("/getDashboardByCode")
         .excludePathPatterns("/getDashboardByCode")

+ 50 - 0
bi-core/src/main/java/com/usoftchina/bi/core/base/BaseContextHolder.java

@@ -0,0 +1,50 @@
+package com.usoftchina.bi.core.base;
+
+import org.springframework.util.ObjectUtils;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @Author chenwei
+ * @Date 2019-05-07
+ */
+public class BaseContextHolder {
+
+    private final static ThreadLocal<Map<String, Object>> contextHolder = new ThreadLocal<Map<String, Object>>();
+
+    public static void set(String key, Object value) {
+        Map<String, Object> map = contextHolder.get();
+        if (null == map) {
+            map = new HashMap<String, Object>(1);
+            contextHolder.set(map);
+        }
+        map.put(key, value);
+    }
+
+    public static Object get(String key) {
+        Map<String, Object> map = contextHolder.get();
+        if (null == map) {
+            return null;
+        }
+        return map.get(key);
+    }
+
+    public static int getUserId() {
+        Object value = get("userId");
+        return Integer.valueOf(String.valueOf(value));
+    }
+
+    public static void setUserId(int userId) {
+        set("userId", userId);
+    }
+
+    public static String getUserName() {
+        Object value = get("userName");
+        return String.valueOf(value);
+    }
+
+    public static void setUserName(String userName) {
+        set("userName", userName);
+    }
+}

+ 2 - 1
bi-core/src/main/java/com/usoftchina/bi/core/base/RepCode.java

@@ -24,7 +24,8 @@ public enum  RepCode {
     DashboardNonExistent(-510, "看板不存在"),
     DashboardNonExistent(-510, "看板不存在"),
     DATACONNECTOR_USED_DATASOURCE(-511, "已有数据源使用了此连接,无法删除!"),
     DATACONNECTOR_USED_DATASOURCE(-511, "已有数据源使用了此连接,无法删除!"),
     CHARTS_USED_DATACONNECTOR(-512, "已有图表使用了此数据源,无法删除!"),
     CHARTS_USED_DATACONNECTOR(-512, "已有图表使用了此数据源,无法删除!"),
-    DASHBOARD_USED_CHARTS(-513, "已有看板使用了此图表,无法删除!");
+    DASHBOARD_USED_CHARTS(-513, "已有看板使用了此图表,无法删除!"),
+    MENU_USED_DASHBOARD(-514, "此目录下存在看板,无法删除!");
 
 
     private int code;
     private int code;
     private String msg;
     private String msg;

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

@@ -5,6 +5,7 @@ import com.auth0.jwt.JWTVerifier;
 import com.auth0.jwt.algorithms.Algorithm;
 import com.auth0.jwt.algorithms.Algorithm;
 import com.auth0.jwt.interfaces.Claim;
 import com.auth0.jwt.interfaces.Claim;
 import com.auth0.jwt.interfaces.DecodedJWT;
 import com.auth0.jwt.interfaces.DecodedJWT;
+import com.usoftchina.bi.core.base.BaseContextHolder;
 import com.usoftchina.bi.core.exception.MyException;
 import com.usoftchina.bi.core.exception.MyException;
 import com.usoftchina.bi.server.model.po.TokenData;
 import com.usoftchina.bi.server.model.po.TokenData;
 import com.usoftchina.bi.server.model.po.User;
 import com.usoftchina.bi.server.model.po.User;
@@ -91,6 +92,8 @@ public class JwtTokenAspect {
         } catch (MyException e) {
         } catch (MyException e) {
             throw new MyException(-505, "token过期");
             throw new MyException(-505, "token过期");
         }
         }
+        BaseContextHolder.setUserId(Integer.valueOf(jwt.getClaim("id").asString()));
+        BaseContextHolder.setUserName(jwt.getClaim("name").asString());
         return jwt.getClaims();
         return jwt.getClaims();
     }
     }
 }
 }

+ 91 - 0
bi-server/src/main/java/com/usoftchina/bi/server/aspect/LogAspect.java

@@ -0,0 +1,91 @@
+package com.usoftchina.bi.server.aspect;
+
+import com.usoftchina.bi.core.utils.GetTokenDataUtil;
+import com.usoftchina.bi.server.model.pojo.annotation.Log;
+import com.usoftchina.bi.server.service.common.MessageLogService;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.annotation.After;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+import org.aspectj.lang.reflect.MethodSignature;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.LocalVariableTableParameterNameDiscoverer;
+import org.springframework.expression.EvaluationContext;
+import org.springframework.expression.Expression;
+import org.springframework.expression.ExpressionParser;
+import org.springframework.expression.spel.standard.SpelExpressionParser;
+import org.springframework.expression.spel.support.StandardEvaluationContext;
+import org.springframework.stereotype.Component;
+
+import java.lang.reflect.Method;
+
+/**
+ * Log注解处理类,用于记录操作日志(保存/更新/删除)
+ * @Author chenwei
+ * @Date 2019-04-26
+ */
+@Aspect
+@Component
+public class LogAspect {
+
+    private ExpressionParser parser = new SpelExpressionParser();
+
+    private LocalVariableTableParameterNameDiscoverer discoverer = new LocalVariableTableParameterNameDiscoverer();
+
+    @Autowired
+    private MessageLogService messageLogService;
+
+    @Pointcut("@annotation(com.usoftchina.bi.server.model.pojo.annotation.Log)")
+    public void Log(){
+
+    }
+
+    @After(value = "Log()")
+    public void writeLog(JoinPoint joinPoint){
+        Object[] arguments = joinPoint.getArgs();
+        MethodSignature signature = (MethodSignature)joinPoint.getSignature();
+        Method method = signature.getMethod();
+        Log log = method.getAnnotation(Log.class);
+        String content = log.value(), token = log.token(), module = log.module(), name = log.name();
+        String contentValue = parseSpEL(method, arguments, content, String.class, content);
+        String nameValue = parseSpEL(method, arguments, name, String.class, null);
+        String tokenValue = parseSpEL(method, arguments, token, String.class, null);
+        String methodName = method.getName();
+        String username = GetTokenDataUtil.getTokenData(tokenValue).get("name");
+        if (methodName.startsWith("save")) {
+            // 记录新增日志
+            messageLogService.save(module, nameValue, username, contentValue);
+        }else if (methodName.startsWith("update")) {
+            // 记录更改日志
+            messageLogService.update(module, nameValue, username, contentValue);
+        }else if (methodName.startsWith("delete")) {
+            // 记录删除日志
+            messageLogService.delete(module, nameValue, username, contentValue);
+        }
+    }
+
+    /**
+     * 解析SpringEL表达式的值
+     * @param method
+     * @param arguments
+     * @param spel
+     * @param Clazz
+     * @param defaultResult
+     * @param <T>
+     * @return
+     */
+    private <T> T parseSpEL(Method method, Object[] arguments, String spel, Class<T> Clazz, T defaultResult){
+        String[] params = discoverer.getParameterNames(method);
+        EvaluationContext context = new StandardEvaluationContext();
+        for (int i = 0, len = params.length; i < len; i++) {
+            context.setVariable(params[i], arguments[i]);
+        }
+        try {
+            Expression expression = parser.parseExpression(spel);
+            return expression.getValue(context, Clazz);
+        }catch (Exception e) {
+            return defaultResult;
+        }
+    }
+
+}

+ 18 - 9
bi-server/src/main/java/com/usoftchina/bi/server/controller/chart/ChartsConfigController.java

@@ -1,9 +1,11 @@
 package com.usoftchina.bi.server.controller.chart;
 package com.usoftchina.bi.server.controller.chart;
 
 
+import com.usoftchina.bi.auth.annotation.Auth;
 import com.usoftchina.bi.core.base.RepEntity;
 import com.usoftchina.bi.core.base.RepEntity;
 import com.usoftchina.bi.core.base.TestPage;
 import com.usoftchina.bi.core.base.TestPage;
 import com.usoftchina.bi.server.model.bo.GroupUpdateId;
 import com.usoftchina.bi.server.model.bo.GroupUpdateId;
 import com.usoftchina.bi.server.model.pojo.annotation.CheckToken;
 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.ChangeOrderInfo;
 import com.usoftchina.bi.server.model.vo.configVo.ChangeOrderInfo;
 import com.usoftchina.bi.server.model.vo.configVo.ChartConfigInfo;
 import com.usoftchina.bi.server.model.vo.configVo.ChartConfigInfo;
 import com.usoftchina.bi.server.model.vo.configVo.GroupInfo;
 import com.usoftchina.bi.server.model.vo.configVo.GroupInfo;
@@ -32,8 +34,9 @@ public class ChartsConfigController {
             @ApiImplicitParam(name = "body", value = "图表配置", required = true, dataType = "ChartConfigInfo", paramType = "body")
             @ApiImplicitParam(name = "body", value = "图表配置", required = true, dataType = "ChartConfigInfo", paramType = "body")
     })
     })
     @CheckToken
     @CheckToken
+    @Log(module = "图表", name = "#body.chartName", token = "#token")
     @PostMapping("/inputCharts")
     @PostMapping("/inputCharts")
-    public RepEntity inputCharts(@RequestHeader String token, @RequestBody ChartConfigInfo body){
+    public RepEntity saveCharts(@RequestHeader String token, @RequestBody ChartConfigInfo body){
         return chartsConfigService.setChartsConfig(body, token);
         return chartsConfigService.setChartsConfig(body, token);
     }
     }
 
 
@@ -42,6 +45,7 @@ public class ChartsConfigController {
     */
     */
     @ApiOperation(value = "更新图表", notes = "更新图表", response = RepEntity.class)
     @ApiOperation(value = "更新图表", notes = "更新图表", response = RepEntity.class)
     @CheckToken
     @CheckToken
+    @Log(module = "图表", name = "#body.chartName", token = "#token")
     @PostMapping("/updateCharts")
     @PostMapping("/updateCharts")
     public RepEntity updateCharts(@RequestHeader String token,@RequestBody ChartConfigInfo body){
     public RepEntity updateCharts(@RequestHeader String token,@RequestBody ChartConfigInfo body){
         return chartsConfigService.updateChartsConfig(body, token);
         return chartsConfigService.updateChartsConfig(body, token);
@@ -62,9 +66,10 @@ public class ChartsConfigController {
      */
      */
     @ApiOperation(value = "更新图表分组", notes = "更新图表分组", response = RepEntity.class)
     @ApiOperation(value = "更新图表分组", notes = "更新图表分组", response = RepEntity.class)
     @CheckToken
     @CheckToken
+    @Auth(user = "admin")
     @PostMapping("/updateChartConfigGroup")
     @PostMapping("/updateChartConfigGroup")
     public RepEntity updateConfigGroup(@RequestHeader String token, @RequestBody GroupUpdateId body){
     public RepEntity updateConfigGroup(@RequestHeader String token, @RequestBody GroupUpdateId body){
-        return chartsConfigService.updateConfigGroup(body);
+        return chartsConfigService.updateConfigGroup(token, body);
     }
     }
 
 
     /*
     /*
@@ -73,8 +78,8 @@ public class ChartsConfigController {
     @ApiOperation(value = "删除图表", notes = "删除图表", response = RepEntity.class)
     @ApiOperation(value = "删除图表", notes = "删除图表", response = RepEntity.class)
     @CheckToken
     @CheckToken
     @PostMapping("/delChartsConfig")
     @PostMapping("/delChartsConfig")
-    public RepEntity delChartsConfig(@RequestHeader String token,@RequestBody Long body){
-        return chartsConfigService.delChartsConfig(body);
+    public RepEntity deleteChartsConfig(@RequestHeader String token, @RequestBody Long body){
+        return chartsConfigService.delChartsConfig(token, body);
     }
     }
 
 
     /*
     /*
@@ -102,9 +107,10 @@ public class ChartsConfigController {
      */
      */
     @ApiOperation(value = "添加图表分组", notes = "添加图表分组", response = RepEntity.class)
     @ApiOperation(value = "添加图表分组", notes = "添加图表分组", response = RepEntity.class)
     @CheckToken
     @CheckToken
+    @Auth(user = "admin")
     @PostMapping("/setChartsGroup")
     @PostMapping("/setChartsGroup")
     public RepEntity setChartsGroup(@RequestHeader String token, @RequestBody GroupInfo body){
     public RepEntity setChartsGroup(@RequestHeader String token, @RequestBody GroupInfo body){
-        return chartsConfigService.setDataConnectorGroup(body);
+        return chartsConfigService.setDataConnectorGroup(token, body);
     }
     }
 
 
     /*
     /*
@@ -112,16 +118,18 @@ public class ChartsConfigController {
      */
      */
     @ApiOperation(value = "更新图表分组", notes = "更新图表分组", response = RepEntity.class)
     @ApiOperation(value = "更新图表分组", notes = "更新图表分组", response = RepEntity.class)
     @CheckToken
     @CheckToken
+    @Auth(user = "admin")
     @PostMapping("/updataChartsGroup")
     @PostMapping("/updataChartsGroup")
     public RepEntity updataChartsGroup(@RequestHeader String token,@RequestBody GroupInfo body){
     public RepEntity updataChartsGroup(@RequestHeader String token,@RequestBody GroupInfo body){
-        return chartsConfigService.updataDataConnectorGroup(body);
+        return chartsConfigService.updataDataConnectorGroup(token, body);
     }
     }
 
 
     @ApiOperation(value = "批量更新数据源分组", notes = "批量更新数据源分组", response = RepEntity.class)
     @ApiOperation(value = "批量更新数据源分组", notes = "批量更新数据源分组", response = RepEntity.class)
     @CheckToken
     @CheckToken
+    @Auth(user = "admin")
     @PostMapping("/batchUpdateChartsGroup")
     @PostMapping("/batchUpdateChartsGroup")
     public RepEntity saveChartsGroup(@RequestHeader String token, @RequestBody List<GroupInfo> groupInfoList){
     public RepEntity saveChartsGroup(@RequestHeader String token, @RequestBody List<GroupInfo> groupInfoList){
-        return chartsConfigService.saveChartsGroup(groupInfoList);
+        return chartsConfigService.saveChartsGroup(token, groupInfoList);
     }
     }
 
 
     /*
     /*
@@ -131,7 +139,7 @@ public class ChartsConfigController {
     @CheckToken
     @CheckToken
     @PostMapping("/updataListGroup")
     @PostMapping("/updataListGroup")
     public RepEntity updataListGroup(@RequestHeader String token,@RequestBody List<GroupInfo> body){
     public RepEntity updataListGroup(@RequestHeader String token,@RequestBody List<GroupInfo> body){
-        return chartsConfigService.updataListGroup(body);
+        return chartsConfigService.updataListGroup(token, body);
     }
     }
 
 
     /*
     /*
@@ -139,9 +147,10 @@ public class ChartsConfigController {
      */
      */
     @ApiOperation(value = "删除图表分组", notes = "删除图表分组", response = RepEntity.class)
     @ApiOperation(value = "删除图表分组", notes = "删除图表分组", response = RepEntity.class)
     @CheckToken
     @CheckToken
+    @Auth(user = "admin")
     @PostMapping("/delChartsGroup")
     @PostMapping("/delChartsGroup")
     public RepEntity delChartsGroup(@RequestHeader String token,@RequestBody List<Integer> body){
     public RepEntity delChartsGroup(@RequestHeader String token,@RequestBody List<Integer> body){
-        return chartsConfigService.delDataConnectorGroup(body);
+        return chartsConfigService.delDataConnectorGroup(token, body);
     }
     }
 
 
     /*
     /*

+ 39 - 0
bi-server/src/main/java/com/usoftchina/bi/server/controller/common/MessageLogController.java

@@ -0,0 +1,39 @@
+package com.usoftchina.bi.server.controller.common;
+
+import com.github.pagehelper.PageInfo;
+import com.usoftchina.bi.core.base.RepCode;
+import com.usoftchina.bi.core.base.RepEntity;
+import com.usoftchina.bi.core.base.TestPage;
+import com.usoftchina.bi.server.model.po.MessageLog;
+import com.usoftchina.bi.server.model.pojo.annotation.CheckToken;
+import com.usoftchina.bi.server.service.common.MessageLogService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @Author chenwei
+ * @Date 2019-04-26
+ */
+@RestController
+@RequestMapping("/messageLog")
+@Api(description = "操作日志接口")
+public class MessageLogController {
+
+    @Autowired
+    private MessageLogService messageLogService;
+
+    @GetMapping("/list")
+    @CheckToken
+    @ApiOperation(value = "操作日志列表", notes = "操作日志列表(分页)", response = RepEntity.class)
+    public RepEntity<PageInfo<MessageLog>> list(@RequestHeader String token, TestPage testPage){
+        return new RepEntity<>(RepCode.success, messageLogService.list(testPage));
+    }
+
+}

+ 5 - 0
bi-server/src/main/java/com/usoftchina/bi/server/controller/dashboard/DashboardMenuController.java

@@ -1,5 +1,6 @@
 package com.usoftchina.bi.server.controller.dashboard;
 package com.usoftchina.bi.server.controller.dashboard;
 
 
+import com.usoftchina.bi.auth.annotation.Auth;
 import com.usoftchina.bi.core.base.RepCode;
 import com.usoftchina.bi.core.base.RepCode;
 import com.usoftchina.bi.core.base.RepEntity;
 import com.usoftchina.bi.core.base.RepEntity;
 import com.usoftchina.bi.server.model.pojo.annotation.CheckToken;
 import com.usoftchina.bi.server.model.pojo.annotation.CheckToken;
@@ -32,6 +33,7 @@ public class DashboardMenuController {
 
 
     @PostMapping("/save")
     @PostMapping("/save")
     @CheckToken
     @CheckToken
+    @Auth(user = "admin")
     @ApiOperation(value = "保存目录", notes = "保存看板目录", response = RepEntity.class)
     @ApiOperation(value = "保存目录", notes = "保存看板目录", response = RepEntity.class)
     public RepEntity save(@RequestHeader String token, @RequestBody DashBoardMenuInfo dashBoardMenuInfo){
     public RepEntity save(@RequestHeader String token, @RequestBody DashBoardMenuInfo dashBoardMenuInfo){
         dashBoardMenuService.save(dashBoardMenuInfo);
         dashBoardMenuService.save(dashBoardMenuInfo);
@@ -40,6 +42,7 @@ public class DashboardMenuController {
 
 
     @PostMapping("/update")
     @PostMapping("/update")
     @CheckToken
     @CheckToken
+    @Auth(user = "admin")
     @ApiOperation(value = "更新目录", notes = "更新看板目录", response = RepEntity.class)
     @ApiOperation(value = "更新目录", notes = "更新看板目录", response = RepEntity.class)
     public RepEntity update(@RequestHeader String token, @RequestBody DashBoardMenuInfo dashBoardMenuInfo){
     public RepEntity update(@RequestHeader String token, @RequestBody DashBoardMenuInfo dashBoardMenuInfo){
         dashBoardMenuService.update(dashBoardMenuInfo);
         dashBoardMenuService.update(dashBoardMenuInfo);
@@ -48,6 +51,7 @@ public class DashboardMenuController {
 
 
     @PostMapping("/delete/{id}")
     @PostMapping("/delete/{id}")
     @CheckToken
     @CheckToken
+    @Auth(user = "admin")
     @ApiOperation(value = "删除目录", notes = "删除看板目录", response = RepEntity.class)
     @ApiOperation(value = "删除目录", notes = "删除看板目录", response = RepEntity.class)
     public RepEntity delete(@RequestHeader String token, @PathVariable("id") Long id){
     public RepEntity delete(@RequestHeader String token, @PathVariable("id") Long id){
         dashBoardMenuService.deleteById(id);
         dashBoardMenuService.deleteById(id);
@@ -56,6 +60,7 @@ public class DashboardMenuController {
 
 
     @PostMapping("/update/dashboard")
     @PostMapping("/update/dashboard")
     @CheckToken
     @CheckToken
+    @Auth(user = "admin")
     @ApiOperation(value = "更新看板目录", notes = "更新看板目录", response = RepEntity.class)
     @ApiOperation(value = "更新看板目录", notes = "更新看板目录", response = RepEntity.class)
     public RepEntity updateDashBoard(@RequestHeader String token, @RequestBody DashBoardUpdateMenuInfo dashBoardUpdateMenuInfo){
     public RepEntity updateDashBoard(@RequestHeader String token, @RequestBody DashBoardUpdateMenuInfo dashBoardUpdateMenuInfo){
         dashBoardMenuService.updateDashBoardMenu(dashBoardUpdateMenuInfo);
         dashBoardMenuService.updateDashBoardMenu(dashBoardUpdateMenuInfo);

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

@@ -6,6 +6,7 @@ import com.usoftchina.bi.core.base.TestPage;
 import com.usoftchina.bi.core.utils.EncryUtil;
 import com.usoftchina.bi.core.utils.EncryUtil;
 import com.usoftchina.bi.server.model.bo.ShareReqBO;
 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.CheckToken;
+import com.usoftchina.bi.server.model.pojo.annotation.Log;
 import com.usoftchina.bi.server.model.vo.configVo.ChangeOrderInfo;
 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.ChartsToDashInfo;
 import com.usoftchina.bi.server.model.vo.configVo.DashboardsInfo;
 import com.usoftchina.bi.server.model.vo.configVo.DashboardsInfo;
@@ -33,8 +34,9 @@ public class DashboardsController {
      */
      */
     @ApiOperation(value = "保存看板", notes = "保存看板", response = RepEntity.class)
     @ApiOperation(value = "保存看板", notes = "保存看板", response = RepEntity.class)
     @CheckToken
     @CheckToken
+    @Log(module = "看板", name = "#body.bdName", token = "#token")
     @PostMapping("/inputDashboards")
     @PostMapping("/inputDashboards")
-    public RepEntity inputDashboards(@RequestHeader String token, @RequestBody DashboardsInfo body){
+    public RepEntity saveDashboards(@RequestHeader String token, @RequestBody DashboardsInfo body){
         return dashboardsService.setDashboards(token, body);
         return dashboardsService.setDashboards(token, body);
     }
     }
 
 
@@ -43,6 +45,7 @@ public class DashboardsController {
      */
      */
     @ApiOperation(value = "更新看板", notes = "更新看板", response = RepEntity.class)
     @ApiOperation(value = "更新看板", notes = "更新看板", response = RepEntity.class)
     @CheckToken
     @CheckToken
+    @Log(module = "看板", name = "#body.bdName", token = "#token")
     @PostMapping("/updateDashboards")
     @PostMapping("/updateDashboards")
     public RepEntity updateDashboards(@RequestHeader String token,@RequestBody DashboardsInfo body){
     public RepEntity updateDashboards(@RequestHeader String token,@RequestBody DashboardsInfo body){
         return dashboardsService.updateDashboards(token, body);
         return dashboardsService.updateDashboards(token, body);

+ 5 - 4
bi-server/src/main/java/com/usoftchina/bi/server/controller/dataSource/DataBasesController.java

@@ -5,6 +5,7 @@ import com.usoftchina.bi.server.model.pojo.annotation.CheckToken;
 import com.usoftchina.bi.server.model.po.Databases;
 import com.usoftchina.bi.server.model.po.Databases;
 import com.usoftchina.bi.core.base.RepEntity;
 import com.usoftchina.bi.core.base.RepEntity;
 import com.usoftchina.bi.core.base.TestPage;
 import com.usoftchina.bi.core.base.TestPage;
+import com.usoftchina.bi.server.model.pojo.annotation.Log;
 import com.usoftchina.bi.server.model.vo.configVo.DatabasesInfo;
 import com.usoftchina.bi.server.model.vo.configVo.DatabasesInfo;
 import com.usoftchina.bi.server.service.dataSource.DataBasesService;
 import com.usoftchina.bi.server.service.dataSource.DataBasesService;
 import com.usoftchina.bi.server.service.dataSource.ImplementSqlService;
 import com.usoftchina.bi.server.service.dataSource.ImplementSqlService;
@@ -13,8 +14,6 @@ import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
-import java.util.List;
-
 @RestController
 @RestController
 @RequestMapping("/DataBase")
 @RequestMapping("/DataBase")
 @Api(description = "数据连接相关接口")
 @Api(description = "数据连接相关接口")
@@ -30,8 +29,9 @@ public class DataBasesController {
     @ApiOperation(value = "保存数据库配置", notes = "保存数据库配置", response = RepEntity.class)
     @ApiOperation(value = "保存数据库配置", notes = "保存数据库配置", response = RepEntity.class)
     @CheckToken
     @CheckToken
     @Auth(user = "admin")
     @Auth(user = "admin")
+    @Log(module = "数据连接", name = "#body.name", token = "#token")
     @PostMapping("/inputDatabases")
     @PostMapping("/inputDatabases")
-    public RepEntity inputDatabases(@RequestHeader String token, @RequestBody DatabasesInfo body){
+    public RepEntity saveDatabases(@RequestHeader String token, @RequestBody DatabasesInfo body){
         return dataBasesService.inputDatabases(body);
         return dataBasesService.inputDatabases(body);
     }
     }
 
 
@@ -63,8 +63,9 @@ public class DataBasesController {
     @ApiOperation(value = "更新数据库配置", notes = "更新数据库配置", response = RepEntity.class)
     @ApiOperation(value = "更新数据库配置", notes = "更新数据库配置", response = RepEntity.class)
     @CheckToken
     @CheckToken
     @Auth(user = "admin")
     @Auth(user = "admin")
+    @Log(module = "数据连接", name = "#databasesInfo.name", token = "#token")
     @PostMapping("/updatabases")
     @PostMapping("/updatabases")
-    public RepEntity updatabases(@RequestHeader String token,@RequestBody DatabasesInfo databasesInfo){
+    public RepEntity updateDatabases(@RequestHeader String token,@RequestBody DatabasesInfo databasesInfo){
         return dataBasesService.updatabases(databasesInfo);
         return dataBasesService.updatabases(databasesInfo);
     }
     }
 
 

+ 10 - 7
bi-server/src/main/java/com/usoftchina/bi/server/controller/dataSource/DataConnectorController.java

@@ -7,6 +7,7 @@ import com.usoftchina.bi.server.model.bo.GroupUpdateId;
 import com.usoftchina.bi.server.model.bo.ToSql;
 import com.usoftchina.bi.server.model.bo.ToSql;
 import com.usoftchina.bi.core.base.RepEntity;
 import com.usoftchina.bi.core.base.RepEntity;
 import com.usoftchina.bi.core.base.TestPage;
 import com.usoftchina.bi.core.base.TestPage;
+import com.usoftchina.bi.server.model.pojo.annotation.Log;
 import com.usoftchina.bi.server.model.vo.configVo.ChangeOrderInfo;
 import com.usoftchina.bi.server.model.vo.configVo.ChangeOrderInfo;
 import com.usoftchina.bi.server.model.vo.configVo.DataConnectorInfo;
 import com.usoftchina.bi.server.model.vo.configVo.DataConnectorInfo;
 import com.usoftchina.bi.server.model.vo.configVo.GroupInfo;
 import com.usoftchina.bi.server.model.vo.configVo.GroupInfo;
@@ -37,6 +38,7 @@ public class DataConnectorController {
     @ApiOperation(value = "保存数据源配置", notes = "保存数据源配置", response = RepEntity.class)
     @ApiOperation(value = "保存数据源配置", notes = "保存数据源配置", response = RepEntity.class)
     @CheckToken
     @CheckToken
     @Auth(user = "admin")
     @Auth(user = "admin")
+    @Log(module = "数据源", name = "#body.dataName", token = "#token")
     @PostMapping("/inputDataConnector")
     @PostMapping("/inputDataConnector")
     public RepEntity saveDataConnector(@RequestHeader String token, @RequestBody DataConnectorInfo body) {
     public RepEntity saveDataConnector(@RequestHeader String token, @RequestBody DataConnectorInfo body) {
         return dataConnectorService.setDataConnector(token,body);
         return dataConnectorService.setDataConnector(token,body);
@@ -69,6 +71,7 @@ public class DataConnectorController {
     @ApiOperation(value = "更新数据源配置", notes = "更新数据源配置", response = RepEntity.class)
     @ApiOperation(value = "更新数据源配置", notes = "更新数据源配置", response = RepEntity.class)
     @CheckToken
     @CheckToken
     @Auth(user = "admin")
     @Auth(user = "admin")
+    @Log(module = "数据源", name = "#body.dataName", token = "#token")
     @PostMapping("/updateData")
     @PostMapping("/updateData")
     public RepEntity updateData(@RequestHeader String token,@RequestBody DataConnectorInfo body){
     public RepEntity updateData(@RequestHeader String token,@RequestBody DataConnectorInfo body){
         return dataConnectorService.updateData(body);
         return dataConnectorService.updateData(body);
@@ -81,7 +84,7 @@ public class DataConnectorController {
     @CheckToken
     @CheckToken
     @PostMapping("/changeDbOrder")
     @PostMapping("/changeDbOrder")
     public RepEntity changeDbOrder(@RequestHeader String token,@RequestBody ChangeOrderInfo body){
     public RepEntity changeDbOrder(@RequestHeader String token,@RequestBody ChangeOrderInfo body){
-        return dataConnectorService.changeOrder(body, token);
+        return dataConnectorService.changeOrder(body);
     }
     }
 
 
     /*
     /*
@@ -92,7 +95,7 @@ public class DataConnectorController {
     @CheckToken
     @CheckToken
     @PostMapping("/updateConnectConfigGroup")
     @PostMapping("/updateConnectConfigGroup")
     public RepEntity updateConConfigGroup(@RequestHeader String token,@RequestBody GroupUpdateId body){
     public RepEntity updateConConfigGroup(@RequestHeader String token,@RequestBody GroupUpdateId body){
-        return dataConnectorService.updateConfigGroup(body);
+        return dataConnectorService.updateConfigGroup(token, body);
     }
     }
 
 
 
 
@@ -104,7 +107,7 @@ public class DataConnectorController {
     @CheckToken
     @CheckToken
     @PostMapping("/delDataConnector")
     @PostMapping("/delDataConnector")
     public RepEntity delDataConnector(@RequestHeader String token,@RequestBody Long body){
     public RepEntity delDataConnector(@RequestHeader String token,@RequestBody Long body){
-        return dataConnectorService.delDataConnector(body);
+        return dataConnectorService.delDataConnector(token, body);
     }
     }
 
 
     /*
     /*
@@ -127,7 +130,7 @@ public class DataConnectorController {
     @PostMapping("/setConnectorGroup")
     @PostMapping("/setConnectorGroup")
     @Auth(user = "admin")
     @Auth(user = "admin")
     public RepEntity setConnectorGroup(@RequestHeader String token,@RequestBody GroupInfo body){
     public RepEntity setConnectorGroup(@RequestHeader String token,@RequestBody GroupInfo body){
-        return dataConnectorService.setDataConnectorGroup(body);
+        return dataConnectorService.setDataConnectorGroup(token, body);
     }
     }
 
 
     /**
     /**
@@ -141,7 +144,7 @@ public class DataConnectorController {
     @PostMapping("/batchUpdateConnectorGroup")
     @PostMapping("/batchUpdateConnectorGroup")
     @Auth(user = "admin")
     @Auth(user = "admin")
     public RepEntity saveConnectorGroups(@RequestHeader String token, @RequestBody List<GroupInfo> groupInfoList){
     public RepEntity saveConnectorGroups(@RequestHeader String token, @RequestBody List<GroupInfo> groupInfoList){
-        return dataConnectorService.saveConnectorGroups(groupInfoList);
+        return dataConnectorService.saveConnectorGroups(token, groupInfoList);
     }
     }
 
 
     /*
     /*
@@ -152,7 +155,7 @@ public class DataConnectorController {
     @Auth(user = "admin")
     @Auth(user = "admin")
     @PostMapping("/updataDataConnectorGroup")
     @PostMapping("/updataDataConnectorGroup")
     public RepEntity updataDataConnectorGroup(@RequestHeader String token,@RequestBody GroupInfo body){
     public RepEntity updataDataConnectorGroup(@RequestHeader String token,@RequestBody GroupInfo body){
-        return dataConnectorService.updataDataConnectorGroup(body);
+        return dataConnectorService.updataDataConnectorGroup(token, body);
     }
     }
 
 
     /*
     /*
@@ -174,7 +177,7 @@ public class DataConnectorController {
     @CheckToken
     @CheckToken
     @PostMapping("/delDataConnectorGroup")
     @PostMapping("/delDataConnectorGroup")
     public RepEntity delDataConnectorGroup(@RequestHeader String token,@RequestBody Long body){
     public RepEntity delDataConnectorGroup(@RequestHeader String token,@RequestBody Long body){
-        return dataConnectorService.delDataConnectorGroup(body);
+        return dataConnectorService.delDataConnectorGroup(token, body);
     }
     }
 
 
     /*
     /*

+ 3 - 3
bi-server/src/main/java/com/usoftchina/bi/server/controller/user/UserController.java

@@ -95,9 +95,9 @@ public class UserController {
      */
      */
     @ApiOperation(value = "删除用户组", notes = "删除用户组", response = RepEntity.class)
     @ApiOperation(value = "删除用户组", notes = "删除用户组", response = RepEntity.class)
     @Auth(user = "admin")
     @Auth(user = "admin")
-    @PostMapping("/delUserGroup")
-    public RepEntity delUserGroup(@RequestBody Long body){
-        return userService.delUserGroup(body);
+    @PostMapping("/delUserGroup/{id}")
+    public RepEntity delUserGroup(@PathVariable("id") Long id){
+        return userService.delUserGroup(id);
     }
     }
 
 
     /*
     /*

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

@@ -31,7 +31,7 @@ public interface ChartsConfigMapper {
     @Delete("delete from bi_charts where id = #{id}")
     @Delete("delete from bi_charts where id = #{id}")
     void deleteCharts(Long id);
     void deleteCharts(Long id);
 
 
-    @Select("select bc.id as chartId, chart_name as chartName, chart_type as chartType, bc.create_by as createBy, bc.create_date as createDate, bc_charts_group as chartsGroup " +
+    @Select("select bc.id as chartId, chart_name as chartName, BC_FETCHCONFIG as fetchConfig, chart_type as chartType, bc.create_by as createBy, bc.create_date as createDate, bc_charts_group as chartsGroup " +
             ",bc.bc_filters as filters, bc.BD_DATA_ID as dataId, bc_table_name as tableName, CHART_CONFIG as chartConfig, bc.GROUP_BY as groupBy, bc_charts_option as chartOption, " +
             ",bc.bc_filters as filters, bc.BD_DATA_ID as dataId, bc_table_name as tableName, CHART_CONFIG as chartConfig, bc.GROUP_BY as groupBy, bc_charts_option as chartOption, " +
             "bc.ACCESS_AUTHORITY as accessAuthority, UPDATE_AUTHORITY as updateAuthority, CHART_DESCRIBES as describes, BC_CHART_STYLE as style, BC_FILTERS as filters " +
             "bc.ACCESS_AUTHORITY as accessAuthority, UPDATE_AUTHORITY as updateAuthority, CHART_DESCRIBES as describes, BC_CHART_STYLE as style, BC_FILTERS as filters " +
             ",bc.create_id as createId, bdc.DATA_NAME as dataName, bc.demo, BD.BASES_NAME as dataConnectionName, BD.ID as dataConnectionId  from bi_charts bc left join BI_DATA_CONNECTORS bdc on bc.BD_DATA_ID = bdc.id left join BI_DATABASES bd on BD.ID = BDC.DB_CONFIG " +
             ",bc.create_id as createId, bdc.DATA_NAME as dataName, bc.demo, BD.BASES_NAME as dataConnectionName, BD.ID as dataConnectionId  from bi_charts bc left join BI_DATA_CONNECTORS bdc on bc.BD_DATA_ID = bdc.id left join BI_DATABASES bd on BD.ID = BDC.DB_CONFIG " +
@@ -243,6 +243,18 @@ public interface ChartsConfigMapper {
             + "</script>")
             + "</script>")
     void batchDeleteCharts(@Param("list") List<GroupInfo> groupInfoList);
     void batchDeleteCharts(@Param("list") List<GroupInfo> groupInfoList);
 
 
+    /**
+     * 更新图表分组为默认分组-1
+     * @param groupInfoList
+     */
+    @Update("<script>"
+            + "UPDATE BI_CHARTS_GROUP 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>"
+            + "</script>")
+    void batchUpdateGroupToDefault(@Param("list") List<GroupInfo> groupInfoList);
+
     /*
     /*
     查询分组
     查询分组
      */
      */

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

@@ -29,10 +29,16 @@ public interface ShowChartsMapper {
 
 
     //x轴数据
     //x轴数据
     @Select("select ${dataType}(${yAxisName}) from ${tableName} where ${xColumn} = #{xdata} ${screen}")
     @Select("select ${dataType}(${yAxisName}) from ${tableName} where ${xColumn} = #{xdata} ${screen}")
-    String getValues(@Param("yAxisName") String yAxisName, @Param("xColumn") String xColumn,
+    String getXValue(@Param("yAxisName") String yAxisName, @Param("xColumn") String xColumn,
                      @Param("tableName") String tableName, @Param("dataType") String dataType,
                      @Param("tableName") String tableName, @Param("dataType") String dataType,
                      @Param("xdata") String xdata, @Param("screen") String screen);
                      @Param("xdata") String xdata, @Param("screen") String screen);
 
 
+    //x轴数据 -> 优化后
+    @Select("select ${dataType}(${yAxisName}) from ${tableName} where 1=1 ${screen} 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);
+
     //x轴为空时的数据
     //x轴为空时的数据
     @Select("select ${dataType}(${yAxisName}) from ${tableName} where ${xColumn} is null ${screen}")
     @Select("select ${dataType}(${yAxisName}) from ${tableName} where ${xColumn} is null ${screen}")
     String getValuesIsNull(@Param("yAxisName") String yAxisName, @Param("xColumn") String xColumn,
     String getValuesIsNull(@Param("yAxisName") String yAxisName, @Param("xColumn") String xColumn,
@@ -42,7 +48,7 @@ public interface ShowChartsMapper {
 
 
 
 
     //查询分组系列
     //查询分组系列
-    @Select("select ${groupsBy} from ${tableName} where 1=1 ${screen} and rownum<=#{count} group by ${groupsBy}")
+    @Select("SELECT * FROM (select ${groupsBy} from ${tableName} where ${groupsBy} is not null ${screen} group by ${groupsBy}) WHERE rownum<=#{count}")
     List<String> getGroups(@Param("groupsBy") String groupsBy, @Param("tableName") String tableName, @Param("screen") String screen, @Param("count") int count);
     List<String> getGroups(@Param("groupsBy") String groupsBy, @Param("tableName") String tableName, @Param("screen") String screen, @Param("count") int count);
 
 
     //查询分组系列个数
     //查询分组系列个数
@@ -57,6 +63,10 @@ public interface ShowChartsMapper {
                           @Param("xColumn") String xColumn,
                           @Param("xColumn") String xColumn,
                           @Param("screen") String screen);
                           @Param("screen") String screen);
 
 
+    //查询分组的值(柱状图)->优化后
+    @Select("select ${dataType}(${yAxisName}) from ${tableName} where ${groupsColumn} and ${xColumn} ${screen}")
+    List<Double> getGroupsValues(@Param("dataType") String dataType, @Param("yAxisName") String yAxisName, @Param("tableName") String tableName,
+                                 @Param("groupsColumn") String groupsColumn, @Param("xColumn") String xColumn, @Param("screen") String screen);
 
 
     //时间类型的X轴
     //时间类型的X轴
     @Select("select distinct to_char(${xAxisName},${timeType})time from ${tableName} ${screen} ORDER by to_char(${xAxisName},${timeType}) ASC")
     @Select("select distinct to_char(${xAxisName},${timeType})time from ${tableName} ${screen} ORDER by to_char(${xAxisName},${timeType}) ASC")
@@ -70,7 +80,7 @@ public interface ShowChartsMapper {
 
 
     //半年
     //半年
     @Select("select distinct case when to_char(${xAxisName},'MM')<=6 then to_char(${xAxisName},'YYYY')|| '-H1'" +
     @Select("select distinct case when to_char(${xAxisName},'MM')<=6 then to_char(${xAxisName},'YYYY')|| '-H1'" +
-            "else to_char(${xAxisName},'YYYY')||'-H2' end time from ${tableName} ${screen} order by time")
+            "else to_char(${xAxisName},'YYYY')||'-H2' end time from ${tableName} ${screen} and ${xAxisName} is not null order by time")
     List<String> getTimeYear(@Param("xAxisName") String xAxisName, @Param("tableName") String tableName, @Param("screen") String screen);
     List<String> getTimeYear(@Param("xAxisName") String xAxisName, @Param("tableName") String tableName, @Param("screen") String screen);
     
     
     //无分组时间类型值
     //无分组时间类型值
@@ -86,12 +96,33 @@ public interface ShowChartsMapper {
                                  @Param("tableName") String tableName, @Param("xAxisName") String xAxisName,
                                  @Param("tableName") String tableName, @Param("xAxisName") String xAxisName,
                                  @Param("screen") String screen);
                                  @Param("screen") String screen);
 
 
+    //无分组时间类型值(柱状图)->优化后
+    @Select("select ${dataType}(${yAxisName}) from ${tableName} WHERE 1=1 ${screen} GROUP BY (to_char(${xAxisName},${timeType})) ORDER BY (to_char(${xAxisName},${timeType}))")
+    List<Double> getHistogramTimeValue(@Param("dataType") String dataType, @Param("yAxisName") String yAxisName,
+                                       @Param("tableName") String tableName, @Param("xAxisName") String xAxisName,
+                                       @Param("timeType") String timeType, @Param("screen") String screen);
+
     //无分组半年时间值
     //无分组半年时间值
     @Select("select ${dataType}(${yAxisName}) from ${tableName} where TO_CHAR(${xAxisName},'YYYY-MM') between #{firstIndex} and #{afterIndex} ${screen}")
     @Select("select ${dataType}(${yAxisName}) from ${tableName} where TO_CHAR(${xAxisName},'YYYY-MM') between #{firstIndex} and #{afterIndex} ${screen}")
     String getTimeValueYear(@Param("dataType") String dataType, @Param("yAxisName") String yAxisName, @Param("tableName") String tableName,
     String getTimeValueYear(@Param("dataType") String dataType, @Param("yAxisName") String yAxisName, @Param("tableName") String tableName,
                             @Param("xAxisName") String xAxisName, @Param("firstIndex") String firstIndex,
                             @Param("xAxisName") String xAxisName, @Param("firstIndex") String firstIndex,
                             @Param("afterIndex") String afterIndex, @Param("screen") String screen);
                             @Param("afterIndex") String afterIndex, @Param("screen") String screen);
 
 
+    /**
+     * 无分组半年时间值(柱状图)
+     * @param dataType
+     * @param yAxisName
+     * @param tableName
+     * @param xAxisName
+     * @param firstIndex
+     * @param afterIndex
+     * @param screen
+     * @return
+     */
+    @Select("select ${dataType}(${yAxisName}) from ${tableName} where TO_CHAR(${xAxisName},'YYYY-MM') between #{firstIndex} and #{afterIndex} ${screen}")
+    Double getHistogramTimeValueYear(@Param("dataType") String dataType, @Param("yAxisName") String yAxisName, @Param("tableName") String tableName,
+                                     @Param("xAxisName") String xAxisName, @Param("firstIndex") String firstIndex,
+                                     @Param("afterIndex") String afterIndex, @Param("screen") String screen);
     //时间为空时间值
     //时间为空时间值
     @Select("select ${dataType}(${yAxisName}) from ${tableName} where ${xAxisName} is null ${screen}")
     @Select("select ${dataType}(${yAxisName}) from ${tableName} where ${xAxisName} is null ${screen}")
     String getTimeIsNull(@Param("dataType") String dataType, @Param("yAxisName") String yAxisName, @Param("tableName") String tableName,
     String getTimeIsNull(@Param("dataType") String dataType, @Param("yAxisName") String yAxisName, @Param("tableName") String tableName,
@@ -105,13 +136,19 @@ public interface ShowChartsMapper {
                           @Param("xColumn") String xColumn, @Param("timeType") String timeType, @Param("xColumnIndex") String xColumnIndex
                           @Param("xColumn") String xColumn, @Param("timeType") String timeType, @Param("xColumnIndex") String xColumnIndex
                            );
                            );
 
 
-    //查询时间类型分组的值->优化后
+    //查询时间类型分组的值->优化后(折线图)
     @Select("select ${dataType}(${yAxisName}) as \"value\",TO_CHAR(${xColumn},${timeType}) as \"date\" from ${tableName} where ${groupsColumn}=#{groupsIndex} GROUP BY TO_CHAR(${xColumn},${timeType}) ")
     @Select("select ${dataType}(${yAxisName}) as \"value\",TO_CHAR(${xColumn},${timeType}) as \"date\" from ${tableName} where ${groupsColumn}=#{groupsIndex} GROUP BY TO_CHAR(${xColumn},${timeType}) ")
     List<LineSeriesMap> getGroupValuesTime(@Param("dataType") String dataType, @Param("yAxisName") String yAxisName, @Param("tableName") String tableName,
     List<LineSeriesMap> getGroupValuesTime(@Param("dataType") String dataType, @Param("yAxisName") String yAxisName, @Param("tableName") String tableName,
                               @Param("groupsColumn") String groupsColumn, @Param("groupsIndex") String groupsIndex,
                               @Param("groupsColumn") String groupsColumn, @Param("groupsIndex") String groupsIndex,
                               @Param("xColumn") String xColumn, @Param("timeType") String timeType
                               @Param("xColumn") String xColumn, @Param("timeType") String timeType
     );
     );
 
 
+    //查询时间类型分组的值->优化后(柱状图)
+    @Select("select ${dataType}(${yAxisName}) from ${tableName} where ${groupsColumn}=#{groupsIndex} GROUP BY TO_CHAR(${xColumn},${timeType}) GROUP BY TO_CHAR(${xColumn},${timeType})")
+    List<Double> getHistogramTimeValueGroupValuesTime(@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);
+
     //查询时间类型分组的值->优化后
     //查询时间类型分组的值->优化后
     @Select("select ${dataType}(${yAxisName}) as \"value\",TO_CHAR(${xColumn},${timeType}) as \"date\",${groupsColumn} as \"group\" from ${tableName} where ${groupsColumn} IN (SELECT ${groupsColumn} FROM ${tableName} GROUP BY ${groupsColumn}) GROUP BY TO_CHAR(${xColumn},${timeType}),${groupsColumn} ")
     @Select("select ${dataType}(${yAxisName}) as \"value\",TO_CHAR(${xColumn},${timeType}) as \"date\",${groupsColumn} as \"group\" from ${tableName} where ${groupsColumn} IN (SELECT ${groupsColumn} FROM ${tableName} GROUP BY ${groupsColumn}) GROUP BY TO_CHAR(${xColumn},${timeType}),${groupsColumn} ")
     List<LineSeriesGroupMap> getGroupsValuesTime(@Param("dataType") String dataType, @Param("yAxisName") String yAxisName, @Param("tableName") String tableName,
     List<LineSeriesGroupMap> getGroupsValuesTime(@Param("dataType") String dataType, @Param("yAxisName") String yAxisName, @Param("tableName") String tableName,
@@ -135,6 +172,12 @@ public interface ShowChartsMapper {
                             @Param("xAxisName") String xAxisName, @Param("firstIndex") String firstIndex, @Param("afterIndex") String afterIndex,
                             @Param("xAxisName") String xAxisName, @Param("firstIndex") String firstIndex, @Param("afterIndex") String afterIndex,
                                 @Param("groupsColumn") String groupsColumn, @Param("groupsIndex") String groupsIndex, @Param("screen") String screen);
                                 @Param("groupsColumn") String groupsColumn, @Param("groupsIndex") String groupsIndex, @Param("screen") String screen);
 
 
+    //查询分组的值(时间类型半年)  柱状图
+    //分组半年时间值
+    @Select("select ${dataType}(${yAxisName}) from ${tableName} where TO_CHAR(${xAxisName},'YYYY-MM') between #{firstIndex} and #{afterIndex} and ${groupsColumn}=#{groupsIndex} ${screen}")
+    Double getHistogramTimeValueHalfYear (@Param("dataType") String dataType, @Param("yAxisName") String yAxisName, @Param("tableName") String tableName,
+                                          @Param("xAxisName") String xAxisName, @Param("firstIndex") String firstIndex, @Param("afterIndex") String afterIndex,
+                                          @Param("groupsColumn") String groupsColumn, @Param("groupsIndex") String groupsIndex, @Param("screen") String screen);
 
 
     /*
     /*
    总体未分组
    总体未分组

+ 34 - 0
bi-server/src/main/java/com/usoftchina/bi/server/dao/common/MessageLogMapper.java

@@ -0,0 +1,34 @@
+package com.usoftchina.bi.server.dao.common;
+
+import com.usoftchina.bi.core.base.TestPage;
+import com.usoftchina.bi.server.model.po.MessageLog;
+import org.apache.ibatis.annotations.*;
+import org.apache.ibatis.type.JdbcType;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Mapper
+@Repository
+public interface MessageLogMapper {
+
+    @Insert("INSERT INTO BI_MESSAGELOG(BML_MODULE,BML_ORDER,BML_ID,BML_DATE,BML_MAN,BML_CONTENT,BML_RESULT,BML_SEARCH) "
+            + "VALUES(#{module,jdbcType=VARCHAR}, #{order,jdbcType=VARCHAR}, #{id,jdbcType=INTEGER}, SYSDATE, #{userName,jdbcType=VARCHAR},"
+            + "#{content,jdbcType=VARCHAR}, #{result,jdbcType=VARCHAR}, #{search,jdbcType=VARCHAR})")
+    @SelectKey(before=true,keyProperty="id",resultType=Integer.class,statement="SELECT BI_MESSAGELOG_SEQ.NEXTVAL FROM DUAL",keyColumn = "id")
+    void insert(MessageLog messageLog);
+
+
+    @Select("SELECT * FROM BI_MESSAGELOG ORDER BY BML_ID DESC")
+    @Results(id = "BaseResultMap", value = {
+            @Result(id = true, column = "BML_ID", property = "id", jdbcType = JdbcType.INTEGER),
+            @Result(column = "BML_DATE", property = "date", jdbcType = JdbcType.TIMESTAMP),
+            @Result(column = "BML_MAN", property = "userName", jdbcType = JdbcType.VARCHAR),
+            @Result(column = "BML_CONTENT", property = "content", jdbcType = JdbcType.VARCHAR),
+            @Result(column = "BML_RESULT", property = "result", jdbcType = JdbcType.VARCHAR),
+            @Result(column = "BML_SEARCH", property = "search", jdbcType = JdbcType.VARCHAR),
+            @Result(column = "BML_MODULE", property = "module", jdbcType = JdbcType.VARCHAR),
+            @Result(column = "BML_ORDER", property = "order", jdbcType = JdbcType.VARCHAR),
+    })
+    List<MessageLog> list(TestPage testPage);
+}

+ 8 - 0
bi-server/src/main/java/com/usoftchina/bi/server/dao/dashboard/DashBoardMenuMapper.java

@@ -55,6 +55,14 @@ public interface DashBoardMenuMapper {
     @Delete("DELETE FROM BI_DASHBOARDS_MENU WHERE BDM_ID = #{id, jdbcType=INTEGER}")
     @Delete("DELETE FROM BI_DASHBOARDS_MENU WHERE BDM_ID = #{id, jdbcType=INTEGER}")
     void deleteByPrimaryKey(Long id);
     void deleteByPrimaryKey(Long id);
 
 
+    /**
+     * 查询此看板目录下有多少个看板
+     * @param id        看板目录ID
+     * @return
+     */
+    @Select("SELECT COUNT(*) FROM BI_DASHBOARDS WHERE BD_MENUID = #{id}")
+    int countDashboardByMenuId(Long id);
+
     /**
     /**
      * 更新看板所属目录
      * 更新看板所属目录
      * @param dashBoardUpdateMenuInfo
      * @param dashBoardUpdateMenuInfo

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

@@ -250,6 +250,26 @@ public interface DataConnectorMapper {
             "</script>")
             "</script>")
     void updataConnectorGroup(GroupInfo groupInfo);
     void updataConnectorGroup(GroupInfo groupInfo);
 
 
+    /**
+     * 删除分组时,将数据源分组更新成默认值 -1
+     * @param id  数据源分组ID
+     */
+    @Update("UPDATE BI_DATA_CONNECTORS SET BD_GROUP = -1 WHERE BD_GROUP = #{id,jdbcType=INTEGER}")
+    void updateGroupIdToDefault(Long id);
+
+    /**
+     * 删除分组时,将数据源分组更新成默认值 -1
+     * @param groupInfoList  数据源分组信息
+     */
+    @Update("<script>"
+            + "UPDATE BI_DATA_CONNECTORS SET BD_GROUP = -1 WHERE BD_GROUP IN "
+            + "<foreach collection=\"list\" item=\"item\" index=\"index\" open=\"(\" close=\")\" separator=\",\">"
+            +   "#{item.id, jdbcType=INTEGER}"
+            + "</foreach>"
+            + "</script>"
+           )
+    void batchUpdateGroupIdToDefault(List<GroupInfo> groupInfoList);
+
     /*
     /*
     删除分组
     删除分组
      */
      */
@@ -319,6 +339,15 @@ public interface DataConnectorMapper {
             "create_date as createDate from bi_base_group_by")
             "create_date as createDate from bi_base_group_by")
     List<GroupInfo> getConnectorGroup();
     List<GroupInfo> getConnectorGroup();
 
 
+    /**
+     * 通过分组Id查询数据源分组
+     * @param id  分组ID
+     * @return
+     */
+    @Select("select bb_id as id, bb_group_name as groupName, bb_index as groupIndex, bb_father_id as fatherId, create_by as createBy," +
+            "create_date as createDate from bi_base_group_by WHERE BB_ID = #{id}")
+    GroupInfo getConnectorGroupById(int id);
+
     /*
     /*
    查询数据源是否关联图表
    查询数据源是否关联图表
     */
     */

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

@@ -117,7 +117,7 @@ public interface UserMapper {
      */
      */
     @Select("select BU_ID as id, BU_NAME as name, BU_DEPARTMENT as department, BU_POST as post, BU_ROLE as role," +
     @Select("select BU_ID as id, BU_NAME as name, BU_DEPARTMENT as department, BU_POST as post, BU_ROLE as role," +
             "user_name as userName, pass_word as passWord, create_date as createDate " +
             "user_name as userName, pass_word as passWord, create_date as createDate " +
-            "from bi_users")
+            "from bi_users WHERE BU_CLASS <> '离职'")
     List<User> getUserList();
     List<User> getUserList();
 
 
     @Select("select BU_ID as id, BU_NAME as name, BU_DEPARTMENT as department, BU_POST as post, BU_ROLE as role," +
     @Select("select BU_ID as id, BU_NAME as name, BU_DEPARTMENT as department, BU_POST as post, BU_ROLE as role," +
@@ -129,7 +129,7 @@ public interface UserMapper {
     匹配用户20个
     匹配用户20个
      */
      */
     @Select("select BU_ID as id, BU_NAME as name, BU_DEPARTMENT as department, BU_POST as post, BU_ROLE as role " +
     @Select("select BU_ID as id, BU_NAME as name, BU_DEPARTMENT as department, BU_POST as post, BU_ROLE as role " +
-            "from bi_users where bu_name ${condition} and rownum < #{count, jdbcType=INTEGER}")
+            "from bi_users where bu_name ${condition} AND BU_CLASS <> '离职' and rownum < #{count, jdbcType=INTEGER}")
     List<User> getNameList(@Param("condition") String condition, @Param("count") Long count);
     List<User> getNameList(@Param("condition") String condition, @Param("count") Long count);
 
 
     /*
     /*
@@ -190,7 +190,7 @@ public interface UserMapper {
      */
      */
     @Select("select bu_id as id, bu_name as name, bu_department as department, bu_post as post, bu_role as role " +
     @Select("select bu_id as id, bu_name as name, bu_department as department, bu_post as post, bu_role as role " +
             " from bi_users,bi_user_groups,bi_user_rel_groups where bi_users.bu_id=bi_user_rel_groups.br_user_id and " +
             " from bi_users,bi_user_groups,bi_user_rel_groups where bi_users.bu_id=bi_user_rel_groups.br_user_id and " +
-            " bi_user_rel_groups.br_user_group=bi_user_groups.bg_id and bi_user_groups.bg_id = #{id}")
+            " bi_user_rel_groups.br_user_group=bi_user_groups.bg_id and bi_user_groups.bg_id = #{id} AND BU_CLASS <> '离职'")
     List<User> getGroupUserList(int id);
     List<User> getGroupUserList(int id);
 
 
     /*
     /*

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

@@ -9,6 +9,15 @@ public class ColumnToShow {
     private String columnType;
     private String columnType;
     private String isGroup;
     private String isGroup;
     private String isSubsection;
     private String isSubsection;
+    private String isFilter;
+
+    public String getIsFilter() {
+        return isFilter;
+    }
+
+    public void setIsFilter(String isFilter) {
+        this.isFilter = isFilter;
+    }
 
 
     public String getColumnName() {
     public String getColumnName() {
         return columnName;
         return columnName;

+ 132 - 0
bi-server/src/main/java/com/usoftchina/bi/server/model/po/MessageLog.java

@@ -0,0 +1,132 @@
+package com.usoftchina.bi.server.model.po;
+
+import java.util.Date;
+
+/**
+ * @Author chenwei
+ * @Date 2019-04-26
+ */
+public class MessageLog {
+
+    /**
+     * ID
+     */
+    private Integer id;
+    /**
+     * 操作时间
+     */
+    private Date date;
+    /**
+     * 操作人
+     */
+    private String userName;
+    /**
+     * 操作内容
+     */
+    private String content;
+    /**
+     * 操作结果
+     */
+    private String result;
+    /**
+     * 搜索字段
+     */
+    private String search;
+    /**
+     * 模块名
+     */
+    private String module;
+    /**
+     * 单据名称
+     */
+    private String order;
+
+    @Override
+    public String toString() {
+        return "MessageLog{" +
+                "id=" + id +
+                ", date=" + date +
+                ", userName='" + userName + '\'' +
+                ", content='" + content + '\'' +
+                ", result='" + result + '\'' +
+                ", search='" + search + '\'' +
+                '}';
+    }
+
+    public MessageLog() {
+    }
+
+    public MessageLog(String userName, String content, String result, String search, String module, String order) {
+        this.userName = userName;
+        this.content = content;
+        this.result = result;
+        this.search = search;
+        this.module = module;
+        this.order = order;
+    }
+
+    public Integer getId() {
+
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Date getDate() {
+        return date;
+    }
+
+    public void setDate(Date date) {
+        this.date = date;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public String getResult() {
+        return result;
+    }
+
+    public void setResult(String result) {
+        this.result = result;
+    }
+
+    public String getSearch() {
+        return search;
+    }
+
+    public void setSearch(String search) {
+        this.search = search;
+    }
+
+    public String getModule() {
+        return module;
+    }
+
+    public void setModule(String module) {
+        this.module = module;
+    }
+
+    public String getOrder() {
+        return order;
+    }
+
+    public void setOrder(String order) {
+        this.order = order;
+    }
+}

+ 37 - 0
bi-server/src/main/java/com/usoftchina/bi/server/model/pojo/annotation/Log.java

@@ -0,0 +1,37 @@
+package com.usoftchina.bi.server.model.pojo.annotation;
+
+import java.lang.annotation.*;
+
+/**
+ * 日志注解
+ */
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface Log {
+
+    /**
+     * 模块名称:  看板/图表 等等
+     * @return
+     */
+    String module() default "";
+
+    /**
+     * 单据名称   具体的单据名称,如: 图表中的 '销售情况分析折线图'
+     * @return
+     */
+    String name() default "";
+
+    /**
+     * 身份token
+     * @return
+     */
+    String token() default "";
+
+    /**
+     * 前端传入的自定义centent
+     * @return
+     */
+    String value() default "";
+
+}

+ 43 - 14
bi-server/src/main/java/com/usoftchina/bi/server/service/chart/ChartsConfigService.java

@@ -1,5 +1,6 @@
 package com.usoftchina.bi.server.service.chart;
 package com.usoftchina.bi.server.service.chart;
 
 
+import com.usoftchina.bi.core.base.BaseContextHolder;
 import com.usoftchina.bi.core.base.RepCode;
 import com.usoftchina.bi.core.base.RepCode;
 import com.usoftchina.bi.core.base.RepEntity;
 import com.usoftchina.bi.core.base.RepEntity;
 import com.usoftchina.bi.core.base.TestPage;
 import com.usoftchina.bi.core.base.TestPage;
@@ -13,9 +14,11 @@ import com.github.pagehelper.PageInfo;
 import com.usoftchina.bi.server.model.bo.GroupUpdateId;
 import com.usoftchina.bi.server.model.bo.GroupUpdateId;
 import com.usoftchina.bi.server.model.po.ChartConfig;
 import com.usoftchina.bi.server.model.po.ChartConfig;
 import com.usoftchina.bi.server.model.po.ChartConfigList;
 import com.usoftchina.bi.server.model.po.ChartConfigList;
+import com.usoftchina.bi.server.model.po.MessageLog;
 import com.usoftchina.bi.server.model.vo.configVo.ChangeOrderInfo;
 import com.usoftchina.bi.server.model.vo.configVo.ChangeOrderInfo;
 import com.usoftchina.bi.server.model.vo.configVo.ChartConfigInfo;
 import com.usoftchina.bi.server.model.vo.configVo.ChartConfigInfo;
 import com.usoftchina.bi.server.model.vo.configVo.GroupInfo;
 import com.usoftchina.bi.server.model.vo.configVo.GroupInfo;
+import com.usoftchina.bi.server.service.common.MessageLogService;
 import com.usoftchina.bi.server.service.strategy.StrategysService;
 import com.usoftchina.bi.server.service.strategy.StrategysService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -37,6 +40,8 @@ public class ChartsConfigService {
     StrategysService strategysService;
     StrategysService strategysService;
     @Autowired
     @Autowired
     UserMapper userMapper;
     UserMapper userMapper;
+    @Autowired
+    private MessageLogService messageLogService;
 
 
     /*
     /*
     保存表设置
     保存表设置
@@ -157,36 +162,46 @@ public class ChartsConfigService {
     移交图表
     移交图表
      */
      */
     public RepEntity changeChartOrder(ChangeOrderInfo changeOrderInfo, String token){
     public RepEntity changeChartOrder(ChangeOrderInfo changeOrderInfo, String token){
-        Map<String, String> resMap = GetTokenDataUtil.getTokenData(token);
-        int userId = Integer.parseInt(resMap.get("id"));
-        String name = userMapper.getName(changeOrderInfo.getUserId());
+        int userId = BaseContextHolder.getUserId();
+        String username = BaseContextHolder.getUserName();
         int createId = chartsConfigMapper.getCreateId(changeOrderInfo.getId());
         int createId = chartsConfigMapper.getCreateId(changeOrderInfo.getId());
         if (createId != userId){
         if (createId != userId){
             return new RepEntity(RepCode.NoAuthority);
             return new RepEntity(RepCode.NoAuthority);
         }
         }
-        chartsConfigMapper.changeChartOrder(name, changeOrderInfo.getUserId(), changeOrderInfo.getId());
+        chartsConfigMapper.changeChartOrder(username, changeOrderInfo.getUserId(), changeOrderInfo.getId());
+        //记录LOg
+        String chartName = chartsConfigMapper.getOneChart(changeOrderInfo.getId()).getChartName();
+        messageLogService.update("图表", chartName, username, "移交图表");
         return new RepEntity(RepCode.success);
         return new RepEntity(RepCode.success);
     }
     }
 
 
     /*
     /*
     更新图表配置的分组
     更新图表配置的分组
      */
      */
-    public RepEntity updateConfigGroup(GroupUpdateId groupUpdateId){
+    public RepEntity updateConfigGroup(String token, GroupUpdateId groupUpdateId){
+        String username = BaseContextHolder.getUserName();
         int chartId = groupUpdateId.getId();
         int chartId = groupUpdateId.getId();
         int chartGroupId = groupUpdateId.getGroupId();
         int chartGroupId = groupUpdateId.getGroupId();
         chartsConfigMapper.updateConfigGroup(chartId, chartGroupId);
         chartsConfigMapper.updateConfigGroup(chartId, chartGroupId);
+        //记录LOg
+        String chartName = chartsConfigMapper.getOneChart(chartId).getChartName();
+        messageLogService.update("图表", chartName, username, "更新图表分组");
         return new RepEntity(RepCode.success);
         return new RepEntity(RepCode.success);
     }
     }
 
 
     /*
     /*
     删除图表
     删除图表
      */
      */
-    public RepEntity delChartsConfig(Long id){
+    public RepEntity delChartsConfig(String token, Long id){
+        String username = BaseContextHolder.getUserName();
         int count = chartsConfigMapper.countDashboardsById(id);
         int count = chartsConfigMapper.countDashboardsById(id);
         if (count > 0) {
         if (count > 0) {
             throw new MyException(RepCode.DASHBOARD_USED_CHARTS);
             throw new MyException(RepCode.DASHBOARD_USED_CHARTS);
         }
         }
+        String chartName = chartsConfigMapper.getOneChart(id.intValue()).getChartName();
         chartsConfigMapper.deleteCharts(id);
         chartsConfigMapper.deleteCharts(id);
+        //记录LOg
+        messageLogService.delete("图表", chartName, username, "删除图表分组");
         return new RepEntity(RepCode.success);
         return new RepEntity(RepCode.success);
     }
     }
 
 
@@ -194,8 +209,7 @@ public class ChartsConfigService {
     查询图表列表
     查询图表列表
      */
      */
     public RepEntity getListCharts(String token, TestPage testPage){
     public RepEntity getListCharts(String token, TestPage testPage){
-        Map<String, String> resMap = GetTokenDataUtil.getTokenData(token);
-        int id = Integer.parseInt(resMap.get("id"));
+        int id = BaseContextHolder.getUserId();
         List<ChartConfigList> chartsList = chartsConfigMapper.getListByUser(id,testPage.enablePaging());
         List<ChartConfigList> chartsList = chartsConfigMapper.getListByUser(id,testPage.enablePaging());
         PageInfo<ChartConfigList> pageInfo = new PageInfo<>(chartsList);
         PageInfo<ChartConfigList> pageInfo = new PageInfo<>(chartsList);
         return new RepEntity(RepCode.success, pageInfo);
         return new RepEntity(RepCode.success, pageInfo);
@@ -219,24 +233,32 @@ public class ChartsConfigService {
     /*
     /*
     创建图表分组
     创建图表分组
      */
      */
-    public RepEntity setDataConnectorGroup(GroupInfo groupInfo){
+    public RepEntity setDataConnectorGroup(String token, GroupInfo groupInfo){
+        String username = BaseContextHolder.getUserName();
         if (groupInfo == null){
         if (groupInfo == null){
             return new RepEntity(RepCode.Null);
             return new RepEntity(RepCode.Null);
         }
         }
         chartsConfigMapper.setChartsGroup(groupInfo);
         chartsConfigMapper.setChartsGroup(groupInfo);
         int id = groupInfo.getId();
         int id = groupInfo.getId();
+        //记录LOg
+        MessageLog messageLog = new MessageLog(username, "创建图表分组", "创建成功", "", "图表", groupInfo.getGroupName());
+        messageLogService.customizeLog(messageLog);
         return new RepEntity(RepCode.success, id);
         return new RepEntity(RepCode.success, id);
     }
     }
 
 
     /*
     /*
     更新图表分组
     更新图表分组
      */
      */
-    public RepEntity updataDataConnectorGroup(GroupInfo groupInfo){
+    public RepEntity updataDataConnectorGroup(String token, GroupInfo groupInfo){
+        String username = BaseContextHolder.getUserName();
         chartsConfigMapper.updataChartsGroup(groupInfo);
         chartsConfigMapper.updataChartsGroup(groupInfo);
+        //记录LOg
+        messageLogService.update("图表", groupInfo.getGroupName(), username, "更新图表分组");
         return new RepEntity(RepCode.success);
         return new RepEntity(RepCode.success);
     }
     }
 
 
-    public RepEntity saveChartsGroup(List<GroupInfo> groupInfoList) {
+    public RepEntity saveChartsGroup(String token, List<GroupInfo> groupInfoList) {
+        String username = BaseContextHolder.getUserName();
         List<GroupInfo> addGroupInfoList = new ArrayList<>();
         List<GroupInfo> addGroupInfoList = new ArrayList<>();
         List<GroupInfo> deleteGroupInfoList = new ArrayList<>();
         List<GroupInfo> deleteGroupInfoList = new ArrayList<>();
         List<GroupInfo> updateGroupInfoList = new ArrayList<>();
         List<GroupInfo> updateGroupInfoList = new ArrayList<>();
@@ -250,12 +272,16 @@ public class ChartsConfigService {
             }
             }
         });
         });
         if (addGroupInfoList.size() > 0) {
         if (addGroupInfoList.size() > 0) {
+            messageLogService.save("图表分组", null, username, "批量创建图表分组");
             chartsConfigMapper.batchInsertCharts(addGroupInfoList);
             chartsConfigMapper.batchInsertCharts(addGroupInfoList);
         }
         }
         if (updateGroupInfoList.size() > 0) {
         if (updateGroupInfoList.size() > 0) {
+            messageLogService.save("图表分组", null, username, "批量更新图表分组");
             chartsConfigMapper.batchUpdateCharts(updateGroupInfoList);
             chartsConfigMapper.batchUpdateCharts(updateGroupInfoList);
         }
         }
         if (deleteGroupInfoList.size() > 0) {
         if (deleteGroupInfoList.size() > 0) {
+            messageLogService.save("图表分组", null, username, "批量删除图表分组");
+            chartsConfigMapper.batchUpdateGroupToDefault(deleteGroupInfoList);
             chartsConfigMapper.batchDeleteCharts(deleteGroupInfoList);
             chartsConfigMapper.batchDeleteCharts(deleteGroupInfoList);
         }
         }
         return new RepEntity(RepCode.success);
         return new RepEntity(RepCode.success);
@@ -264,21 +290,23 @@ public class ChartsConfigService {
     /*
     /*
     批量更新图表分组
     批量更新图表分组
      */
      */
-    public RepEntity updataListGroup(List<GroupInfo> groupInfoList){
+    public RepEntity updataListGroup(String token, List<GroupInfo> groupInfoList){
+        String username = BaseContextHolder.getUserName();
         Iterator isList = groupInfoList.iterator();
         Iterator isList = groupInfoList.iterator();
         GroupInfo groupInfo = new GroupInfo();
         GroupInfo groupInfo = new GroupInfo();
         while (isList.hasNext()){
         while (isList.hasNext()){
             groupInfo = (GroupInfo) isList.next();
             groupInfo = (GroupInfo) isList.next();
             chartsConfigMapper.updataChartsGroup(groupInfo);
             chartsConfigMapper.updataChartsGroup(groupInfo);
         }
         }
-
+        messageLogService.save("图表分组", null, username, "批量更新图表分组");
         return new RepEntity(RepCode.success);
         return new RepEntity(RepCode.success);
     }
     }
 
 
     /*
     /*
     删除图表分组
     删除图表分组
      */
      */
-    public RepEntity delDataConnectorGroup(List<Integer> idList){
+    public RepEntity delDataConnectorGroup(String token, List<Integer> idList){
+        String username = BaseContextHolder.getUserName();
         List<Integer> integerList = idList;
         List<Integer> integerList = idList;
         Iterator isList = integerList.iterator();
         Iterator isList = integerList.iterator();
         while (isList.hasNext()){
         while (isList.hasNext()){
@@ -293,6 +321,7 @@ public class ChartsConfigService {
             }
             }
         }
         }
         chartsConfigMapper.delChartsGroup(idList);
         chartsConfigMapper.delChartsGroup(idList);
+        messageLogService.save("图表分组", null, username, "批量删除图表分组");
         return new RepEntity(RepCode.success);
         return new RepEntity(RepCode.success);
     }
     }
 
 

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

@@ -138,26 +138,10 @@ public class ShowHistogramService {
             }
             }
 
 
             //无分组时Y值
             //无分组时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.getValues(yColumn, xColumn, tableName, yAxisType, xdata, screenToColumnS);
-                    }
-                }
-                if (valueOnes == null || "".equals(valueOnes)){
-                    valueOne = 0;
-                }else {
-                    valueOne = Double.parseDouble(valueOnes);
-                }
-                value.add(valueOne);
+            if ("time".equals(xColumnType)){        //如果是时间类型
+                value = timeConverterUtil.getHistogramTimeValue(yColumn, xColumn, tableName, yAxisType, xAxisType, xAxisData, screenToColumnS);
+            }else {
+                value = showChartsMapper.getValues(yColumn, xColumn, tableName, yAxisType, screenToColumnS);
             }
             }
 
 
             series.setName(xColumn);
             series.setName(xColumn);
@@ -167,16 +151,16 @@ public class ShowHistogramService {
             //有分组
             //有分组
             if (groupBy.size() != 0){
             if (groupBy.size() != 0){
                 serieses.remove(0);
                 serieses.remove(0);
-                Iterator itGroup = groupBy.iterator();  //分组数
+                Iterator<String> itGroup = groupBy.iterator();  //分组数
 
 
                 //便利分组
                 //便利分组
                 while (itGroup.hasNext()){
                 while (itGroup.hasNext()){
-                    String groupByName = (String) itGroup.next(); //每个分组的组名
+                    String groupByName = itGroup.next(); //每个分组的组名
                     int counts = showChartsMapper.getGroupsCount(groupByName,tableName, screenToColumnS);
                     int counts = showChartsMapper.getGroupsCount(groupByName,tableName, screenToColumnS);
-                    if (counts > 20){
+                    if (counts > histogramConfigInfo.getMaxCount()){
                         chartsDataInfo.setTooMany(true);
                         chartsDataInfo.setTooMany(true);
                     }
                     }
-                    List<String> groupsData = showChartsMapper.getGroups(groupByName,tableName, screenToColumnS, 20); //查询每个分组系列
+                    List<String> groupsData = showChartsMapper.getGroups(groupByName,tableName, screenToColumnS, histogramConfigInfo.getMaxCount()); //查询每个分组系列
                     Iterator itGroupsData = groupsData.iterator();
                     Iterator itGroupsData = groupsData.iterator();
 
 
                     //每个分组得到得每个系列
                     //每个分组得到得每个系列
@@ -195,14 +179,13 @@ public class ShowHistogramService {
                             double groupsValueOne = 0;
                             double groupsValueOne = 0;
                             String groupsValueOnes = null;
                             String groupsValueOnes = null;
                             if ("time".equals(xColumnType)){
                             if ("time".equals(xColumnType)){
-                                groupsValueOnes = timeConverterUtil.getGroupTimeConverter(yAxisType, yColumn, tableName, groupByName, xAxisType,
-                                        groupsName, xColumn, xAxisDataOne, screenToColumnS);
+                                groupsValue = timeConverterUtil.getHistogramGroupTime(yAxisType, yColumn, tableName, groupByName, xAxisType,
+                                        groupsName, xColumn, xAxisData, screenToColumnS);
                             }else {
                             }else {
                                 String xColumnKey = "";
                                 String xColumnKey = "";
                                 if (xAxisDataOne == null || "".equals(xAxisDataOne)){
                                 if (xAxisDataOne == null || "".equals(xAxisDataOne)){
                                     xColumnKey  = xColumn + " is null";
                                     xColumnKey  = xColumn + " is null";
-                                }else
-                                {
+                                }else {
                                     xColumnKey = xColumn + " = '" +xAxisDataOne +"'";
                                     xColumnKey = xColumn + " = '" +xAxisDataOne +"'";
                                 }
                                 }
 
 
@@ -212,6 +195,7 @@ public class ShowHistogramService {
                                 }else {
                                 }else {
                                     groupByKey = groupByName + " = '" +groupsName +"'";
                                     groupByKey = groupByName + " = '" +groupsName +"'";
                                 }
                                 }
+                                //groupsValue = showChartsMapper.getGroupsValue(yAxisType, yColumn, tableName, groupByKey, xColumnKey, screenToColumnS);
                                 groupsValueOnes = showChartsMapper.getGroupsValue(yAxisType, yColumn, tableName, groupByKey, xColumnKey, screenToColumnS);
                                 groupsValueOnes = showChartsMapper.getGroupsValue(yAxisType, yColumn, tableName, groupByKey, xColumnKey, screenToColumnS);
                             }
                             }
                             if ("".equals(groupsValueOnes) || groupsValueOnes == null){
                             if ("".equals(groupsValueOnes) || groupsValueOnes == null){
@@ -222,6 +206,15 @@ public class ShowHistogramService {
                             groupsValue.add(groupsValueOne);
                             groupsValue.add(groupsValueOne);
                         }
                         }
 
 
+                        /*if ("time".equals(xColumnType)){
+                            groupsValue = timeConverterUtil.getHistogramGroupTime(yAxisType, yColumn, tableName, groupByName, xAxisType,
+                                    groupsName, xColumn, xAxisData, screenToColumnS);
+                        }else {
+                            String xColumnKey = xColumn;
+                            String groupByKey =groupByName + " = '" +groupsName +"'";
+                            groupsValue = showChartsMapper.getGroupsValues(yAxisType, yColumn, tableName, groupByKey, xColumnKey, screenToColumnS);
+                        }*/
+
                         ne.setValue(groupsValue);
                         ne.setValue(groupsValue);
                         serieses.add(ne);
                         serieses.add(ne);
                     }
                     }
@@ -230,11 +223,11 @@ public class ShowHistogramService {
 
 
             chartsDataInfo.setSerieses(serieses);
             chartsDataInfo.setSerieses(serieses);
         }catch (Exception e){
         }catch (Exception e){
-        e.printStackTrace();
-        return new RepEntity(RepCode.erro);
-    }finally {
-        DynamicDataSourceContextHolder.clearDataSourceType();
-    }
+            e.printStackTrace();
+            return new RepEntity(RepCode.erro.getCode(), e.getCause().getMessage(), null);
+        }finally {
+            DynamicDataSourceContextHolder.clearDataSourceType();
+        }
 
 
         return new RepEntity(RepCode.success, chartsDataInfo);
         return new RepEntity(RepCode.success, chartsDataInfo);
     }
     }

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

@@ -134,7 +134,7 @@ public class ShowPieService {
         while (itX.hasNext()){
         while (itX.hasNext()){
             String xdata = (String)itX.next();
             String xdata = (String)itX.next();
             if ("".equals(xdata) || xdata == null){
             if ("".equals(xdata) || xdata == null){
-                continue;
+                //continue;
             }
             }
             double valueOne = 0;
             double valueOne = 0;
             String valueOnes = null;
             String valueOnes = null;
@@ -145,7 +145,7 @@ public class ShowPieService {
                 if (xdata == null || "".equals(xdata)){
                 if (xdata == null || "".equals(xdata)){
                     valueOnes = showChartsMapper.getValuesIsNull(yColumn, xColumn, tableName, yAxisType, screenToColumnS);
                     valueOnes = showChartsMapper.getValuesIsNull(yColumn, xColumn, tableName, yAxisType, screenToColumnS);
                 }else {
                 }else {
-                    valueOnes = showChartsMapper.getValues(yColumn, xColumn, tableName, yAxisType, xdata, screenToColumnS);
+                    valueOnes = showChartsMapper.getXValue(yColumn, xColumn, tableName, yAxisType, xdata, screenToColumnS);
                 }
                 }
             }
             }
             if (valueOnes == null || "".equals(valueOnes)){
             if (valueOnes == null || "".equals(valueOnes)){
@@ -165,7 +165,7 @@ public class ShowPieService {
         chartsDataInfo.setSerieses(serieses);
         chartsDataInfo.setSerieses(serieses);
         }catch (Exception e){
         }catch (Exception e){
             e.printStackTrace();
             e.printStackTrace();
-            return new RepEntity(RepCode.erro);
+            return new RepEntity(RepCode.erro.getCode(), e.getCause().getMessage(), null);
         }finally {
         }finally {
             DynamicDataSourceContextHolder.clearDataSourceType();
             DynamicDataSourceContextHolder.clearDataSourceType();
         }
         }

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

@@ -142,7 +142,7 @@ public class ShowScatterService {
                 if (xdata == null || "".equals(xdata)){
                 if (xdata == null || "".equals(xdata)){
                     valueOnes = showChartsMapper.getValuesIsNull(yColumn, xColumn, tableName, yAxisType, screenToColumnS);
                     valueOnes = showChartsMapper.getValuesIsNull(yColumn, xColumn, tableName, yAxisType, screenToColumnS);
                 }else {
                 }else {
-                    valueOnes = showChartsMapper.getValues(yColumn, xColumn, tableName, yAxisType, xdata ,screenToColumnS);
+                    valueOnes = showChartsMapper.getXValue(yColumn, xColumn, tableName, yAxisType, xdata ,screenToColumnS);
                 }
                 }
             }
             }
             if (valueOnes == null || "".equals(valueOnes)){
             if (valueOnes == null || "".equals(valueOnes)){
@@ -233,7 +233,7 @@ public class ShowScatterService {
         chartsDataInfo.setSerieses(serieses);
         chartsDataInfo.setSerieses(serieses);
         }catch (Exception e){
         }catch (Exception e){
             e.printStackTrace();
             e.printStackTrace();
-            return new RepEntity(RepCode.erro);
+            return new RepEntity(RepCode.erro.getCode(), e.getCause().getMessage(), null);
         }finally {
         }finally {
             DynamicDataSourceContextHolder.clearDataSourceType();
             DynamicDataSourceContextHolder.clearDataSourceType();
         }
         }

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

@@ -154,6 +154,51 @@ public class TimeConverterUtil {
         return value;
         return value;
     }
     }
 
 
+    /**
+     * 无分组时间值(柱状图)
+     * @param yColumn
+     * @param xColumn
+     * @param tableName
+     * @param dataType
+     * @param timeType
+     * @param xAxisData
+     * @param screen
+     * @return
+     */
+    public List<Double> getHistogramTimeValue(String yColumn, String xColumn, String tableName, String dataType, String timeType, List<String> xAxisData, String screen){
+        String timeGroup = "'YYYY-MM-DD'";
+        List<Double> result = new ArrayList<>();
+        Double value = null;
+        //判断时间类型
+        if ("halfYear".equals(timeType)) {
+            for(String xData : xAxisData) {
+                String firstIndex = null;
+                String afterIndex = null;
+                String[] str = xData.split("-");
+                if ("H1".equals(str[1])) {
+                    firstIndex = str[0] + "-01";
+                    afterIndex = str[0] + "-06";
+                } else {
+                    firstIndex = str[0] + "-07";
+                    afterIndex = str[0] + "-12";
+                }
+                value = showChartsMapper.getHistogramTimeValueYear(dataType, yColumn, tableName, xColumn, firstIndex, afterIndex, screen);
+                result.add(value);
+            }
+            return result;
+        } else if ("year".equals(timeType)) {
+            timeGroup = "'YYYY'";
+        } else if ("month".equals(timeType)) {
+            timeGroup = "'YYYY-MM'";
+        } else if ("day".equals(timeType) || "".equals(timeType)) {
+        } else if ("quarter".equals(timeType)) {
+            timeGroup = "'YYYY-Q'";
+        } else if ("week".equals(timeType)) {
+            timeGroup = "'YYYY-WW'";
+        }
+        return showChartsMapper.getHistogramTimeValue(dataType, yColumn, tableName, xColumn, timeGroup, screen);
+    }
+
     //有分组时间类型值处理
     //有分组时间类型值处理
     public String getGroupTimeConverter(String dataType, String yColumn, String tableName, String groupByName, String timeType,
     public String getGroupTimeConverter(String dataType, String yColumn, String tableName, String groupByName, String timeType,
                                         String groupsName, String xColumn, String xAxisDataOne, String screen){
                                         String groupsName, String xColumn, String xAxisDataOne, String screen){
@@ -200,4 +245,50 @@ public class TimeConverterUtil {
         }
         }
         return value;
         return value;
     }
     }
+
+    /**
+     * 有分组时间类型值处理(柱状图)
+     * @param dataType
+     * @param yColumn
+     * @param tableName
+     * @param groupByName
+     * @param timeType
+     * @param groupsName
+     * @param xColumn
+     * @param xAxisData
+     * @param screen
+     * @return
+     */
+    public List<Double> getHistogramGroupTime(String dataType, String yColumn, String tableName, String groupByName, String timeType,
+                                        String groupsName, String xColumn, List<String> xAxisData, String screen){
+        String timeGroup = "'YYYY-MM-DD'";
+        Double value = null;
+        List<Double> result = new ArrayList<>();
+        if ("halfYear".equals(timeType)) {
+            for (String xAxisDataOne : xAxisData) {
+                String firstIndex = null;
+                String afterIndex = null;
+                String[] str = xAxisDataOne.split("-");
+                if ("上半年".equals(str[1])) {
+                    firstIndex = str[0] + "-01";
+                    afterIndex = str[0] + "-06";
+                } else {
+                    firstIndex = str[0] + "-07";
+                    afterIndex = str[0] + "-12";
+                }
+                value = showChartsMapper.getHistogramTimeValueHalfYear(dataType, yColumn, tableName, xColumn, firstIndex, afterIndex, groupByName, groupsName, screen);
+                result.add(value);
+            }
+            return result;
+        } else if ("year".equals(timeType)) {
+            timeGroup = "'YYYY'";
+        } else if ("month".equals(timeType)) {
+            timeGroup = "'YYYY-MM'";
+        } else if ("quarter".equals(timeType)) {
+            timeGroup = "'YYYY-Q'";
+        } else if ("week".equals(timeType)) {
+            timeGroup = "'YYYY-WW'";
+        }
+        return showChartsMapper.getHistogramTimeValueGroupValuesTime(dataType, yColumn, tableName, groupByName, groupsName, xColumn, timeGroup);
+    }
 }
 }

+ 56 - 0
bi-server/src/main/java/com/usoftchina/bi/server/service/common/MessageLogService.java

@@ -0,0 +1,56 @@
+package com.usoftchina.bi.server.service.common;
+
+import com.github.pagehelper.PageInfo;
+import com.usoftchina.bi.core.base.TestPage;
+import com.usoftchina.bi.server.dao.common.MessageLogMapper;
+import com.usoftchina.bi.server.model.po.MessageLog;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import java.util.List;
+
+/**
+ * @Author chenwei
+ * @Date 2019-04-26
+ */
+@Service
+public class MessageLogService {
+
+    @Autowired
+    private MessageLogMapper messageLogMapper;
+
+    public PageInfo<MessageLog> list(TestPage testPage) {
+        List<MessageLog> messageLogList = messageLogMapper.list(testPage.enablePaging());
+        return new PageInfo<MessageLog>(messageLogList);
+    }
+
+    public void save(String module, String name, String username, String content){
+        if (StringUtils.isEmpty(content)) {
+            content = "保存操作";
+        }
+        MessageLog messageLog = new MessageLog(username, content, "保存成功", null, module, name);
+        customizeLog(messageLog);
+    }
+
+    public void update(String module, String name, String username, String content){
+        if (StringUtils.isEmpty(content)) {
+            content = "更新操作";
+        }
+        MessageLog messageLog = new MessageLog(username, content, "更新成功", null, module, name);
+        customizeLog(messageLog);
+    }
+
+    public void delete(String module, String name, String username, String content){
+        if (StringUtils.isEmpty(content)) {
+            content = "删除操作";
+        }
+        MessageLog messageLog = new MessageLog(username, content, "删除成功", null, module, name);
+        customizeLog(messageLog);
+    }
+
+    public void customizeLog(MessageLog messageLog){
+        messageLogMapper.insert(messageLog);
+    }
+
+}

+ 6 - 0
bi-server/src/main/java/com/usoftchina/bi/server/service/dashboard/DashBoardMenuService.java

@@ -2,6 +2,7 @@ package com.usoftchina.bi.server.service.dashboard;
 
 
 import com.usoftchina.bi.core.base.RepCode;
 import com.usoftchina.bi.core.base.RepCode;
 import com.usoftchina.bi.core.base.RepEntity;
 import com.usoftchina.bi.core.base.RepEntity;
+import com.usoftchina.bi.core.exception.MyException;
 import com.usoftchina.bi.core.utils.GetTokenDataUtil;
 import com.usoftchina.bi.core.utils.GetTokenDataUtil;
 import com.usoftchina.bi.server.dao.dashboard.DashBoardMenuMapper;
 import com.usoftchina.bi.server.dao.dashboard.DashBoardMenuMapper;
 import com.usoftchina.bi.server.model.vo.configVo.DashBoardMenuInfo;
 import com.usoftchina.bi.server.model.vo.configVo.DashBoardMenuInfo;
@@ -51,6 +52,11 @@ public class DashBoardMenuService {
 
 
     public void deleteById(Long id){
     public void deleteById(Long id){
         Assert.state(id > 0, "参数错误");
         Assert.state(id > 0, "参数错误");
+        // 判断是否存在报表,存在不允许删除目录
+        int count = dashBoardMenuMapper.countDashboardByMenuId(id);
+        if (count > 0) {
+            throw new MyException(RepCode.MENU_USED_DASHBOARD);
+        }
         dashBoardMenuMapper.deleteByPrimaryKey(id);
         dashBoardMenuMapper.deleteByPrimaryKey(id);
     }
     }
 
 

+ 41 - 17
bi-server/src/main/java/com/usoftchina/bi/server/service/dashboard/DashboardsService.java

@@ -3,6 +3,7 @@ package com.usoftchina.bi.server.service.dashboard;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
+import com.usoftchina.bi.core.base.BaseContextHolder;
 import com.usoftchina.bi.core.exception.MyException;
 import com.usoftchina.bi.core.exception.MyException;
 import com.usoftchina.bi.core.utils.EncryUtil;
 import com.usoftchina.bi.core.utils.EncryUtil;
 import com.usoftchina.bi.server.dao.chart.ChartsConfigMapper;
 import com.usoftchina.bi.server.dao.chart.ChartsConfigMapper;
@@ -24,6 +25,7 @@ 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.DataSourceCopyInfo;
 import com.usoftchina.bi.server.service.chart.ChartsUtilService;
 import com.usoftchina.bi.server.service.chart.ChartsUtilService;
 import com.usoftchina.bi.core.utils.GetTokenDataUtil;
 import com.usoftchina.bi.core.utils.GetTokenDataUtil;
+import com.usoftchina.bi.server.service.common.MessageLogService;
 import com.usoftchina.bi.server.service.dataSource.DataConnectorService;
 import com.usoftchina.bi.server.service.dataSource.DataConnectorService;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
@@ -50,6 +52,8 @@ public class DashboardsService {
     private DataConnectorService dataConnectorService;
     private DataConnectorService dataConnectorService;
     @Autowired
     @Autowired
     private ChartsConfigMapper chartsConfigMapper;
     private ChartsConfigMapper chartsConfigMapper;
+    @Autowired
+    private MessageLogService messageLogService;
 
 
     private static final Logger LOGGER = LoggerFactory.getLogger(DashboardsService.class);
     private static final Logger LOGGER = LoggerFactory.getLogger(DashboardsService.class);
 
 
@@ -58,7 +62,8 @@ public class DashboardsService {
      */
      */
     public RepEntity setDashboards(String token, DashboardsInfo dashboardsInfo) {
     public RepEntity setDashboards(String token, DashboardsInfo dashboardsInfo) {
         //校验报表编号是否已存在
         //校验报表编号是否已存在
-        validCode(dashboardsInfo.getBdCode(), dashboardsInfo.getId());
+        String code = validCode(dashboardsInfo.getBdCode(), dashboardsInfo.getId());
+        dashboardsInfo.setBdCode(code);
         Map<String, String> stringMap = GetTokenDataUtil.getTokenData(token);
         Map<String, String> stringMap = GetTokenDataUtil.getTokenData(token);
         int userId = Integer.parseInt(stringMap.get("id"));
         int userId = Integer.parseInt(stringMap.get("id"));
         String name = stringMap.get("name");
         String name = stringMap.get("name");
@@ -84,7 +89,8 @@ public class DashboardsService {
      */
      */
     public RepEntity updateDashboards(String token, DashboardsInfo dashboardsInfo) {
     public RepEntity updateDashboards(String token, DashboardsInfo dashboardsInfo) {
         //校验报表编号是否已存在
         //校验报表编号是否已存在
-        validCode(dashboardsInfo.getBdCode(), dashboardsInfo.getId());
+        String code = validCode(dashboardsInfo.getBdCode(), dashboardsInfo.getId());
+        dashboardsInfo.setBdCode(code);
         Map<String, String> stringMap = GetTokenDataUtil.getTokenData(token);
         Map<String, String> stringMap = GetTokenDataUtil.getTokenData(token);
         int userId = Integer.parseInt(stringMap.get("id"));
         int userId = Integer.parseInt(stringMap.get("id"));
         String name = stringMap.get("name");
         String name = stringMap.get("name");
@@ -127,28 +133,51 @@ public class DashboardsService {
      * @param code
      * @param code
      * @param id
      * @param id
      */
      */
-    private void validCode(String code, int id) {
+    private String validCode(String code, int id) {
         if (!StringUtils.isEmpty(code)) {
         if (!StringUtils.isEmpty(code)) {
             int count = dashboardsMapper.countBdCodeById(code, id);
             int count = dashboardsMapper.countBdCodeById(code, id);
             if (count > 0) {
             if (count > 0) {
                 throw new MyException("编号" + code + "已存在");
                 throw new MyException("编号" + code + "已存在");
             }
             }
+            return code;
+        }else {
+            return generateUUCode(id);
+        }
+    }
+
+    /**
+     * 创建报表唯一编号
+     * @param id
+     * @return
+     */
+    private String generateUUCode(int id){
+        String UUcode = UUID.randomUUID().toString();
+        UUcode = UUcode.substring(UUcode.lastIndexOf("-") + 1);
+        int count = dashboardsMapper.countBdCodeById(UUcode, id);
+        if (count > 0) {
+            generateUUCode(id);
         }
         }
+        return UUcode;
     }
     }
 
 
     /*
     /*
     删除看板
     删除看板
      */
      */
     public RepEntity delDashboards(String token, Integer id) {
     public RepEntity delDashboards(String token, Integer id) {
-        Map<String, String> stringMap = GetTokenDataUtil.getTokenData(token);
-        int userId = Integer.parseInt(stringMap.get("id"));
+        int userId = BaseContextHolder.getUserId();
         int createId = dashboardsMapper.getCreateIdById(id);
         int createId = dashboardsMapper.getCreateIdById(id);
         if (userId != createId) {
         if (userId != createId) {
             return new RepEntity(RepCode.NoAuthority);
             return new RepEntity(RepCode.NoAuthority);
         }
         }
+        Dashboards dashboards = dashboardsMapper.getDashboards(userId, id);
+        String name = null;
+        if (!ObjectUtils.isEmpty(dashboards)) {
+            name = dashboards.getBdName();
+        }
         dashboardsMapper.delDashboards(id);
         dashboardsMapper.delDashboards(id);
         //删除看板-图表关联关系
         //删除看板-图表关联关系
         dashboardsMapper.deleteDashboardChartRelation(id);
         dashboardsMapper.deleteDashboardChartRelation(id);
+        messageLogService.delete("看板", name, BaseContextHolder.getUserName(), null);
         return new RepEntity(RepCode.success);
         return new RepEntity(RepCode.success);
     }
     }
 
 
@@ -156,8 +185,7 @@ public class DashboardsService {
     查看看板
     查看看板
      */
      */
     public RepEntity getListDashboards(String token, TestPage testPage) {
     public RepEntity getListDashboards(String token, TestPage testPage) {
-        Map<String, String> stringMap = GetTokenDataUtil.getTokenData(token);
-        int id = Integer.parseInt(stringMap.get("id"));
+        int id = BaseContextHolder.getUserId();
         List<Dashboards> getListDashboards = dashboardsMapper.getListDashboards(id, testPage.enablePaging());
         List<Dashboards> getListDashboards = dashboardsMapper.getListDashboards(id, testPage.enablePaging());
         PageInfo<Dashboards> pageInfo = new PageInfo<>(getListDashboards);
         PageInfo<Dashboards> pageInfo = new PageInfo<>(getListDashboards);
         return new RepEntity(RepCode.success, pageInfo);
         return new RepEntity(RepCode.success, pageInfo);
@@ -167,8 +195,7 @@ public class DashboardsService {
     查看单个看板
     查看单个看板
      */
      */
     public RepEntity getDashboards(String token, int id) {
     public RepEntity getDashboards(String token, int id) {
-        Map<String, String> stringMap = GetTokenDataUtil.getTokenData(token);
-        int userId = Integer.parseInt(stringMap.get("id"));
+        int userId = BaseContextHolder.getUserId();
         Dashboards dashboards = dashboardsMapper.getDashboards(userId, id);
         Dashboards dashboards = dashboardsMapper.getDashboards(userId, id);
         if (dashboards == null){
         if (dashboards == null){
             return new RepEntity(RepCode.DashboardNonExistent);
             return new RepEntity(RepCode.DashboardNonExistent);
@@ -258,8 +285,7 @@ public class DashboardsService {
     转交看板
     转交看板
      */
      */
     public RepEntity changeDashOrder(String token, ChangeOrderInfo changeOrderInfo) {
     public RepEntity changeDashOrder(String token, ChangeOrderInfo changeOrderInfo) {
-        Map<String, String> stringMap = GetTokenDataUtil.getTokenData(token);
-        int userId = Integer.parseInt(stringMap.get("id"));
+        int userId = BaseContextHolder.getUserId();
         int createId = dashboardsMapper.getCreateIdById(changeOrderInfo.getId());
         int createId = dashboardsMapper.getCreateIdById(changeOrderInfo.getId());
         if (userId != createId) {
         if (userId != createId) {
             return new RepEntity(RepCode.NoAuthority);
             return new RepEntity(RepCode.NoAuthority);
@@ -273,8 +299,7 @@ public class DashboardsService {
     查看看板分发对象
     查看看板分发对象
      */
      */
     public RepEntity getDashOrder(String token, int dashId) {
     public RepEntity getDashOrder(String token, int dashId) {
-        Map<String, String> stringMap = GetTokenDataUtil.getTokenData(token);
-        int userId = Integer.parseInt(stringMap.get("id"));
+        int userId = BaseContextHolder.getUserId();
         int createId = dashboardsMapper.getCreateIdById(dashId);
         int createId = dashboardsMapper.getCreateIdById(dashId);
         if (userId != createId) {
         if (userId != createId) {
             return new RepEntity(RepCode.NoAuthority);
             return new RepEntity(RepCode.NoAuthority);
@@ -305,9 +330,8 @@ public class DashboardsService {
      */
      */
     @Transactional
     @Transactional
     public RepEntity copy(String token, DashboardCopyInfo dashboardCopyInfo) {
     public RepEntity copy(String token, DashboardCopyInfo dashboardCopyInfo) {
-        Map<String, String> resultMap = GetTokenDataUtil.getTokenData(token);
-        int userId = Integer.parseInt(resultMap.get("id"));
-        String userName = resultMap.get("name");
+        int userId = BaseContextHolder.getUserId();
+        String userName = BaseContextHolder.getUserName();
         int dashboardId = dashboardCopyInfo.getDashboardId(),
         int dashboardId = dashboardCopyInfo.getDashboardId(),
             dataSourceId = dashboardCopyInfo.getDataSourceId();
             dataSourceId = dashboardCopyInfo.getDataSourceId();
         List<String> idList = new ArrayList<>();
         List<String> idList = new ArrayList<>();
@@ -347,7 +371,7 @@ public class DashboardsService {
         dashboards.setCreateBy(userName);
         dashboards.setCreateBy(userName);
         dashboards.setCreateId(userId);
         dashboards.setCreateId(userId);
         dashboards.setDemo(false);
         dashboards.setDemo(false);
-        dashboards.setBdCode("");
+        dashboards.setBdCode(generateUUCode(0));
         dashboardsMapper.setDashboards(dashboards);
         dashboardsMapper.setDashboards(dashboards);
         String[] ids = String.join(",", idList).split(",");
         String[] ids = String.join(",", idList).split(",");
         dashboardsMapper.saveDashboardChartRelation(dashboards.getId(), ids);
         dashboardsMapper.saveDashboardChartRelation(dashboards.getId(), ids);

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

@@ -1,5 +1,6 @@
 package com.usoftchina.bi.server.service.dashboard;
 package com.usoftchina.bi.server.service.dashboard;
 
 
+import com.usoftchina.bi.core.utils.EncryUtil;
 import com.usoftchina.bi.server.dao.chart.ChartsConfigMapper;
 import com.usoftchina.bi.server.dao.chart.ChartsConfigMapper;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.usoftchina.bi.server.model.bo.Screen;
 import com.usoftchina.bi.server.model.bo.Screen;
@@ -52,7 +53,7 @@ public class DashboardsToChartsUtilService {
     public RepEntity getChartsInDash(ChartsToDashInfo chartsToDashInfo, String token) throws SQLException {
     public RepEntity getChartsInDash(ChartsToDashInfo chartsToDashInfo, String token) throws SQLException {
         if (StringUtils.isEmpty(token)) {
         if (StringUtils.isEmpty(token)) {
             User user = userService.getUserById(chartsToDashInfo.getDashboardCreatorId()).getData();
             User user = userService.getUserById(chartsToDashInfo.getDashboardCreatorId()).getData();
-            LoginInfo loginInfo = new LoginInfo(user.getUserName(), user.getPassWord());
+            LoginInfo loginInfo = new LoginInfo(user.getUserName(), EncryUtil.decryptPassword(user.getPassWord()));
             token = userService.login(loginInfo).getData().getToken();
             token = userService.login(loginInfo).getData().getToken();
         }
         }
         lock.lock();
         lock.lock();

+ 11 - 3
bi-server/src/main/java/com/usoftchina/bi/server/service/dataSource/DataBasesService.java

@@ -1,8 +1,9 @@
 package com.usoftchina.bi.server.service.dataSource;
 package com.usoftchina.bi.server.service.dataSource;
 
 
+import com.usoftchina.bi.core.base.BaseContextHolder;
 import com.usoftchina.bi.core.exception.MyException;
 import com.usoftchina.bi.core.exception.MyException;
 import com.usoftchina.bi.core.utils.ContextUtil;
 import com.usoftchina.bi.core.utils.ContextUtil;
-import com.usoftchina.bi.core.utils.JsonUtils;
+import com.usoftchina.bi.core.utils.GetTokenDataUtil;
 import com.usoftchina.bi.server.dao.dataSource.DataConnectorMapper;
 import com.usoftchina.bi.server.dao.dataSource.DataConnectorMapper;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.type.CollectionType;
 import com.fasterxml.jackson.databind.type.CollectionType;
@@ -19,6 +20,7 @@ import com.usoftchina.bi.server.service.chart.GetChartsDataUtilService;
 import com.usoftchina.bi.core.jdbc.DynamicDataSource;
 import com.usoftchina.bi.core.jdbc.DynamicDataSource;
 import com.usoftchina.bi.core.jdbc.DynamicDataSourceContextHolder;
 import com.usoftchina.bi.core.jdbc.DynamicDataSourceContextHolder;
 import com.usoftchina.bi.core.jdbc.DynamicDataSourceRegister;
 import com.usoftchina.bi.core.jdbc.DynamicDataSourceRegister;
+import com.usoftchina.bi.server.service.common.MessageLogService;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.BeanUtils;
@@ -41,6 +43,8 @@ public class DataBasesService {
     GetChartsDataUtilService getChartsDataUtilService;
     GetChartsDataUtilService getChartsDataUtilService;
     @Autowired
     @Autowired
     private ImplementSqlService implementSqlService;
     private ImplementSqlService implementSqlService;
+    @Autowired
+    private MessageLogService messageLogService;
 
 
     private static final Logger LOGGER = LoggerFactory.getLogger(DataBasesService.class);
     private static final Logger LOGGER = LoggerFactory.getLogger(DataBasesService.class);
     /*
     /*
@@ -76,9 +80,9 @@ public class DataBasesService {
      * @param databases
      * @param databases
      */
      */
     private void validExists(Databases databases){
     private void validExists(Databases databases){
-        int count = dataConnectorMapper.countDataBasesName(databases.getDataName());
+        int count = dataConnectorMapper.countDataBasesName(databases.getName());
         if (count > 0) {
         if (count > 0) {
-            throw new MyException("已存在连接名为 " + databases.getDataName() + " 的数据连接");
+            throw new MyException("已存在连接名为 " + databases.getName() + " 的数据连接");
         }
         }
         count = dataConnectorMapper.countDataBases(databases);
         count = dataConnectorMapper.countDataBases(databases);
         if (count > 0) {
         if (count > 0) {
@@ -106,11 +110,14 @@ public class DataBasesService {
     删除数据库配置
     删除数据库配置
      */
      */
     public RepEntity delDatabases(Long id){
     public RepEntity delDatabases(Long id){
+        String username = BaseContextHolder.getUserName();
         int count = dataConnectorMapper.countDataConnectorById(id);
         int count = dataConnectorMapper.countDataConnectorById(id);
         if (count > 0) {
         if (count > 0) {
             throw new MyException(RepCode.DATACONNECTOR_USED_DATASOURCE);
             throw new MyException(RepCode.DATACONNECTOR_USED_DATASOURCE);
         }
         }
+        String databaseName = dataConnectorMapper.getDatabases(id.intValue()).getName();
         dataConnectorMapper.deleteDatabases(id);
         dataConnectorMapper.deleteDatabases(id);
+        messageLogService.delete("数据连接", databaseName, username, null);
         return new RepEntity(RepCode.success);
         return new RepEntity(RepCode.success);
     }
     }
 
 
@@ -165,6 +172,7 @@ public class DataBasesService {
                 columnToShow.setColumnType(columnRenameInfo.getColumnType());
                 columnToShow.setColumnType(columnRenameInfo.getColumnType());
                 columnToShow.setIsGroup(columnRenameInfo.getIsGroup());
                 columnToShow.setIsGroup(columnRenameInfo.getIsGroup());
                 columnToShow.setIsSubsection(columnRenameInfo.getIsSubsection());
                 columnToShow.setIsSubsection(columnRenameInfo.getIsSubsection());
+                columnToShow.setIsFilter(columnRenameInfo.getIsFilter());
                 toShows.add(columnToShow);
                 toShows.add(columnToShow);
             }
             }
         }
         }

+ 48 - 16
bi-server/src/main/java/com/usoftchina/bi/server/service/dataSource/DataConnectorService.java

@@ -1,5 +1,6 @@
 package com.usoftchina.bi.server.service.dataSource;
 package com.usoftchina.bi.server.service.dataSource;
 
 
+import com.usoftchina.bi.core.base.BaseContextHolder;
 import com.usoftchina.bi.core.exception.MyException;
 import com.usoftchina.bi.core.exception.MyException;
 import com.usoftchina.bi.core.utils.GetTokenDataUtil;
 import com.usoftchina.bi.core.utils.GetTokenDataUtil;
 import com.usoftchina.bi.server.dao.chart.ChartsConfigMapper;
 import com.usoftchina.bi.server.dao.chart.ChartsConfigMapper;
@@ -17,10 +18,12 @@ import com.usoftchina.bi.server.model.po.DataConnectorList;
 import com.usoftchina.bi.core.base.RepCode;
 import com.usoftchina.bi.core.base.RepCode;
 import com.usoftchina.bi.core.base.RepEntity;
 import com.usoftchina.bi.core.base.RepEntity;
 import com.usoftchina.bi.core.base.TestPage;
 import com.usoftchina.bi.core.base.TestPage;
+import com.usoftchina.bi.server.model.po.MessageLog;
 import com.usoftchina.bi.server.model.vo.configVo.*;
 import com.usoftchina.bi.server.model.vo.configVo.*;
 import com.usoftchina.bi.server.model.vo.dataVo.ColumnValuesInfo;
 import com.usoftchina.bi.server.model.vo.dataVo.ColumnValuesInfo;
 import com.usoftchina.bi.server.model.vo.dataVo.DataSourceCopyInfo;
 import com.usoftchina.bi.server.model.vo.dataVo.DataSourceCopyInfo;
 import com.usoftchina.bi.server.service.chart.GetChartsDataUtilService;
 import com.usoftchina.bi.server.service.chart.GetChartsDataUtilService;
+import com.usoftchina.bi.server.service.common.MessageLogService;
 import com.usoftchina.bi.server.service.strategy.StrategysService;
 import com.usoftchina.bi.server.service.strategy.StrategysService;
 import com.usoftchina.bi.server.service.chart.ChartsUtilService;
 import com.usoftchina.bi.server.service.chart.ChartsUtilService;
 import com.usoftchina.bi.core.jdbc.DynamicDataSourceContextHolder;
 import com.usoftchina.bi.core.jdbc.DynamicDataSourceContextHolder;
@@ -34,6 +37,7 @@ import org.springframework.dao.DataAccessException;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ObjectUtils;
 
 
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.Iterator;
@@ -61,6 +65,8 @@ public class DataConnectorService {
     GetChartsDataUtilService getChartsDataUtilService;
     GetChartsDataUtilService getChartsDataUtilService;
     @Autowired
     @Autowired
     private JdbcTemplate jdbcTemplate;
     private JdbcTemplate jdbcTemplate;
+    @Autowired
+    private MessageLogService messageLogService;
 
 
     private static final Logger logger = LoggerFactory.getLogger(DataConnectorService.class);
     private static final Logger logger = LoggerFactory.getLogger(DataConnectorService.class);
 
 
@@ -199,10 +205,9 @@ public class DataConnectorService {
     /*
     /*
     转交数据源
     转交数据源
      */
      */
-    public RepEntity changeOrder(ChangeOrderInfo changeOrderInfo, String token) {
-        Map<String, String> resMap = GetTokenDataUtil.getTokenData(token);
-        int userId = Integer.parseInt(resMap.get("id"));
-        String name = userMapper.getName(changeOrderInfo.getUserId());
+    public RepEntity changeOrder(ChangeOrderInfo changeOrderInfo) {
+        int userId = BaseContextHolder.getUserId();
+        String name = BaseContextHolder.getUserName();
         int createId = dataConnectorMapper.getCreateIdById(changeOrderInfo.getId());
         int createId = dataConnectorMapper.getCreateIdById(changeOrderInfo.getId());
         if (createId != userId) {
         if (createId != userId) {
             return new RepEntity(RepCode.NoAuthority);
             return new RepEntity(RepCode.NoAuthority);
@@ -214,34 +219,51 @@ public class DataConnectorService {
     /*
     /*
     更新数据源分组
     更新数据源分组
      */
      */
-    public RepEntity updateConfigGroup(GroupUpdateId groupUpdateId) {
+    public RepEntity updateConfigGroup(String token, GroupUpdateId groupUpdateId) {
+        String username = BaseContextHolder.getUserName();
         int id = groupUpdateId.getId();
         int id = groupUpdateId.getId();
         int groupId = groupUpdateId.getGroupId();
         int groupId = groupUpdateId.getGroupId();
+        GroupInfo groupInfo = dataConnectorMapper.getConnectorGroupById(groupId);
+        String groupName = null;
+        if (!ObjectUtils.isEmpty(groupInfo)) {
+            groupName = groupInfo.getGroupName();
+        }
         dataConnectorMapper.updateConfigGroup(id, groupId);
         dataConnectorMapper.updateConfigGroup(id, groupId);
+        String dataName = dataConnectorMapper.getOneData(id).getDataName();
+        // 记录LOG
+        MessageLog messageLog = new MessageLog(username, "更新数据源分组为( "+ groupName + ")", "更新成功", null, "数据源", dataName);
+        messageLogService.customizeLog(messageLog);
         return new RepEntity(RepCode.success);
         return new RepEntity(RepCode.success);
     }
     }
 
 
     /*
     /*
     删除数据源
     删除数据源
      */
      */
-    public RepEntity delDataConnector(Long id) {
+    public RepEntity delDataConnector(String token, Long id) {
+        String username = BaseContextHolder.getUserName();
+        String dataName = dataConnectorMapper.getOneData(id.intValue()).getDataName();
         int count = dataConnectorMapper.countChartsById(id);
         int count = dataConnectorMapper.countChartsById(id);
         if (count > 0) {
         if (count > 0) {
             throw new MyException(RepCode.CHARTS_USED_DATACONNECTOR);
             throw new MyException(RepCode.CHARTS_USED_DATACONNECTOR);
         }
         }
         dataConnectorMapper.deleteData(id);
         dataConnectorMapper.deleteData(id);
+        // 记录LOG
+        messageLogService.delete("数据源", dataName, username, null);
         return new RepEntity(RepCode.success);
         return new RepEntity(RepCode.success);
     }
     }
 
 
     /*
     /*
     创建数据源分组
     创建数据源分组
      */
      */
-    public RepEntity setDataConnectorGroup(GroupInfo groupInfo) {
+    public RepEntity setDataConnectorGroup(String token, GroupInfo groupInfo) {
+        String username = BaseContextHolder.getUserName();
         if (groupInfo == null || "".equals(groupInfo)) {
         if (groupInfo == null || "".equals(groupInfo)) {
             return new RepEntity(RepCode.Null);
             return new RepEntity(RepCode.Null);
         }
         }
         dataConnectorMapper.setConnectorGroup(groupInfo);
         dataConnectorMapper.setConnectorGroup(groupInfo);
         int id = groupInfo.getId();
         int id = groupInfo.getId();
+        // 记录LOG
+        messageLogService.save("数据源分组", groupInfo.getGroupName(), username, "创建数据源分组");
         return new RepEntity(RepCode.success, id);
         return new RepEntity(RepCode.success, id);
     }
     }
 
 
@@ -251,7 +273,8 @@ public class DataConnectorService {
      * @return
      * @return
      */
      */
     @Transactional
     @Transactional
-    public RepEntity saveConnectorGroups(List<GroupInfo> groupInfoList) {
+    public RepEntity saveConnectorGroups(String token, List<GroupInfo> groupInfoList) {
+        String username = BaseContextHolder.getUserName();
         List<GroupInfo> addGroupInfoList = new ArrayList<>();
         List<GroupInfo> addGroupInfoList = new ArrayList<>();
         List<GroupInfo> deleteGroupInfoList = new ArrayList<>();
         List<GroupInfo> deleteGroupInfoList = new ArrayList<>();
         List<GroupInfo> updateGroupInfoList = new ArrayList<>();
         List<GroupInfo> updateGroupInfoList = new ArrayList<>();
@@ -265,12 +288,16 @@ public class DataConnectorService {
             }
             }
         });
         });
         if (addGroupInfoList.size() > 0) {
         if (addGroupInfoList.size() > 0) {
+            messageLogService.save("数据源分组", null, username, "批量新增数据源分组");
             dataConnectorMapper.batchInsertDataConnector(addGroupInfoList);
             dataConnectorMapper.batchInsertDataConnector(addGroupInfoList);
         }
         }
         if (updateGroupInfoList.size() > 0) {
         if (updateGroupInfoList.size() > 0) {
+            messageLogService.save("数据源分组", null, username, "批量更新数据源分组");
             dataConnectorMapper.batchUpdateDataConnector(updateGroupInfoList);
             dataConnectorMapper.batchUpdateDataConnector(updateGroupInfoList);
         }
         }
         if (deleteGroupInfoList.size() > 0) {
         if (deleteGroupInfoList.size() > 0) {
+            messageLogService.save("数据源分组", null, username, "批量删除数据源分组");
+            dataConnectorMapper.batchUpdateGroupIdToDefault(deleteGroupInfoList);
             dataConnectorMapper.batchDeleteDataConnector(deleteGroupInfoList);
             dataConnectorMapper.batchDeleteDataConnector(deleteGroupInfoList);
         }
         }
         return new RepEntity(RepCode.success);
         return new RepEntity(RepCode.success);
@@ -279,16 +306,17 @@ public class DataConnectorService {
     /*
     /*
     更新数据源分组
     更新数据源分组
      */
      */
-    @CacheEvict(value = "singleDataConnector", key = "#body.id")
-    public RepEntity updataDataConnectorGroup(GroupInfo groupInfo) {
+    public RepEntity updataDataConnectorGroup(String token, GroupInfo groupInfo) {
         dataConnectorMapper.updataConnectorGroup(groupInfo);
         dataConnectorMapper.updataConnectorGroup(groupInfo);
+        Map<String, String> resMap = GetTokenDataUtil.getTokenData(token);
+        String username = resMap.get("name");
+        messageLogService.update("数据源分组", groupInfo.getGroupName(), username, "更新分组");
         return new RepEntity(RepCode.success);
         return new RepEntity(RepCode.success);
     }
     }
 
 
     /*
     /*
    批量更新数据源分组
    批量更新数据源分组
     */
     */
-    @CacheEvict(value = "singleDataConnector")
     public RepEntity updataConnectorGroups(List<GroupInfo> groupInfoList) {
     public RepEntity updataConnectorGroups(List<GroupInfo> groupInfoList) {
         Iterator isList = groupInfoList.iterator();
         Iterator isList = groupInfoList.iterator();
         GroupInfo groupInfo = new GroupInfo();
         GroupInfo groupInfo = new GroupInfo();
@@ -303,8 +331,8 @@ public class DataConnectorService {
     /*
     /*
     删除数据源分组
     删除数据源分组
      */
      */
-    @CacheEvict(value = "singleDataConnector")
-    public RepEntity delDataConnectorGroup(Long id) {
+    public RepEntity delDataConnectorGroup(String token, Long id) {
+        String username = BaseContextHolder.getUserName();
         List<String> groupName = dataConnectorMapper.getFatherId(id.intValue());
         List<String> groupName = dataConnectorMapper.getFatherId(id.intValue());
         if (groupName.size() != 0) {
         if (groupName.size() != 0) {
             return new RepEntity(RepCode.hasGroupUsing);
             return new RepEntity(RepCode.hasGroupUsing);
@@ -313,7 +341,11 @@ public class DataConnectorService {
         if (chartName.size() != 0) {
         if (chartName.size() != 0) {
             return new RepEntity(RepCode.hasConUsing);
             return new RepEntity(RepCode.hasConUsing);
         }
         }
+        String dataName = dataConnectorMapper.getOneData(id.intValue()).getDataName();
         dataConnectorMapper.delConnectorGroup(id);
         dataConnectorMapper.delConnectorGroup(id);
+        // 更新分组字段值
+        dataConnectorMapper.updateGroupIdToDefault(id);
+        messageLogService.delete("数据源分组", dataName, username, "删除数据源分组");
         return new RepEntity(RepCode.success);
         return new RepEntity(RepCode.success);
     }
     }
 
 
@@ -380,9 +412,8 @@ public class DataConnectorService {
      * @return
      * @return
      */
      */
     public RepEntity<Integer> copyDataSource(String token, DataSourceCopyInfo dataSourceCopyInfo){
     public RepEntity<Integer> copyDataSource(String token, DataSourceCopyInfo dataSourceCopyInfo){
-        Map<String, String> resultMap = GetTokenDataUtil.getTokenData(token);
-        int userId = Integer.parseInt(resultMap.get("id"));
-        String userName = resultMap.get("name");
+        int userId = BaseContextHolder.getUserId();
+        String userName = BaseContextHolder.getUserName();
 
 
         int dataSourceId = dataSourceCopyInfo.getDataSourceId(),
         int dataSourceId = dataSourceCopyInfo.getDataSourceId(),
             dataConnectionId = dataSourceCopyInfo.getDataConnectionId();
             dataConnectionId = dataSourceCopyInfo.getDataConnectionId();
@@ -395,6 +426,7 @@ public class DataConnectorService {
         dataConnector.setCreateBy(userName);
         dataConnector.setCreateBy(userName);
         dataConnector.setCreateId(userId);
         dataConnector.setCreateId(userId);
         dataConnector.setDbConId(String.valueOf(dataConnectionId));
         dataConnector.setDbConId(String.valueOf(dataConnectionId));
+        dataConnector.setTableName(dataConnector.getLoadObject());
         dataConnectorMapper.insertDataConnector(dataConnector);
         dataConnectorMapper.insertDataConnector(dataConnector);
         int dataId = dataConnector.getDataId();
         int dataId = dataConnector.getDataId();
         return new RepEntity(RepCode.success, dataId);
         return new RepEntity(RepCode.success, dataId);

+ 1 - 1
bi-server/src/main/java/com/usoftchina/bi/server/service/user/SynchronizeEmpInfo.java

@@ -28,7 +28,7 @@ public class SynchronizeEmpInfo {
                        + "USING EMPLOYEE SOURCETABLE "
                        + "USING EMPLOYEE SOURCETABLE "
                        + "ON (SOURCETABLE.EM_CODE = TARGETTABLE.USER_NAME) "
                        + "ON (SOURCETABLE.EM_CODE = TARGETTABLE.USER_NAME) "
                        + "WHEN MATCHED THEN "
                        + "WHEN MATCHED THEN "
-                       + "  UPDATE  SET TARGETTABLE.BU_CLASS = SOURCETABLE.EM_CLASS, TARGETTABLE.PASS_WORD = SOURCETABLE.EM_PASSWORD, TARGETTABLE.BU_ROLE = SOURCETABLE.EM_TYPE "
+                       + "  UPDATE  SET TARGETTABLE.BU_CLASS = SOURCETABLE.EM_CLASS, TARGETTABLE.PASS_WORD = SOURCETABLE.EM_PASSWORD "
                        + "WHEN NOT MATCHED THEN"
                        + "WHEN NOT MATCHED THEN"
                        + "  INSERT (BU_ID,BU_NAME,BU_DEPARTMENT,BU_POST,BU_USER_GROUP,USER_NAME,PASS_WORD,BU_ROLE,CREATE_DATE,UPDATA_DATE,USER_TOKEN,BU_PHONE,BU_CLASS) "
                        + "  INSERT (BU_ID,BU_NAME,BU_DEPARTMENT,BU_POST,BU_USER_GROUP,USER_NAME,PASS_WORD,BU_ROLE,CREATE_DATE,UPDATA_DATE,USER_TOKEN,BU_PHONE,BU_CLASS) "
                        + "  VALUES (SOURCETABLE.EM_ID,SOURCETABLE.EM_NAME,SOURCETABLE.EM_DEFAULTHSNAME,SOURCETABLE.EM_DEPART,NULL,SOURCETABLE.EM_CODE,SOURCETABLE.EM_PASSWORD,SOURCETABLE.EM_TYPE,SYSDATE,NULL,NULL,SOURCETABLE.EM_MOBILE,SOURCETABLE.EM_CLASS)";
                        + "  VALUES (SOURCETABLE.EM_ID,SOURCETABLE.EM_NAME,SOURCETABLE.EM_DEFAULTHSNAME,SOURCETABLE.EM_DEPART,NULL,SOURCETABLE.EM_CODE,SOURCETABLE.EM_PASSWORD,SOURCETABLE.EM_TYPE,SYSDATE,NULL,NULL,SOURCETABLE.EM_MOBILE,SOURCETABLE.EM_CLASS)";

+ 1 - 10
bi-server/src/main/java/com/usoftchina/bi/server/service/user/UserService.java

@@ -155,16 +155,7 @@ public class UserService {
     查询匹配用户
     查询匹配用户
      */
      */
     public RepEntity getNameList(String condition, Long count){
     public RepEntity getNameList(String condition, Long count){
-        String value = null;
-        String v = null;
-        try {
-            v = objectMapper.readValue(condition, String.class);
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-
-        value = "like '%" + v + "%'";
-
+        String value = "like '%" + condition + "%'";
         List<User> userName = userMapper.getNameList(value, count);
         List<User> userName = userMapper.getNameList(value, count);
         return new RepEntity(RepCode.success, userName);
         return new RepEntity(RepCode.success, userName);
     }
     }

+ 92 - 5
bi-server/src/main/java/com/usoftchina/bi/server/utils/ScreenUtil.java

@@ -8,6 +8,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 
 
 import java.io.IOException;
 import java.io.IOException;
+import java.time.DayOfWeek;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.TemporalAdjusters;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.Iterator;
 import java.util.List;
 import java.util.List;
@@ -123,16 +127,22 @@ public class ScreenUtil {
     private String getTimeSymbAndVal(String symbol, String value) {
     private String getTimeSymbAndVal(String symbol, String value) {
         String values = "" + value;
         String values = "" + value;
         String tar = "";
         String tar = "";
-        if ("null".equals(symbol)) {
-            tar = "is null";
-        } else if ("notNull".equals(symbol)) {
-            tar = "is not null";
-        } else if ("between".equals(symbol)) {
+        if ("between".equals(symbol)) {
             tar = "";
             tar = "";
             String[] str = value.split(",");
             String[] str = value.split(",");
             String str1 = str[0];
             String str1 = str[0];
             String str2 = str[1];
             String str2 = str[1];
             tar = "between '" + str1 + "' and '" + str2 + "'";
             tar = "between '" + str1 + "' and '" + str2 + "'";
+        } else if ("=".equals(symbol)) {
+            values = TimeFormat(value);
+            if (values.contains(",")) {
+                String[] str = values.split(",");
+                String str1 = str[0];
+                String str2 = str[1];
+                tar = "between '" + str1 + "' and '" + str2 + "'";
+            } else {
+                tar = symbol + " '" + values + "'";
+            }
         } else {
         } else {
             tar = symbol + " '" + values + "'";
             tar = symbol + " '" + values + "'";
         }
         }
@@ -157,4 +167,81 @@ public class ScreenUtil {
         valueString = valueString.replaceFirst(",", "(") + ")";
         valueString = valueString.replaceFirst(",", "(") + ")";
         return valueString;
         return valueString;
     }
     }
+
+    /**
+     *
+     * @return
+     */
+    private String TimeFormat(String value){
+        String formatValue = "";
+        LocalDate localDate = LocalDate.now();
+        switch (value) {
+            case "today" :
+                formatValue = localDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                break;
+            case "yesterday" :
+                formatValue = localDate.plusDays(-1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                break;
+            case "week" :
+                formatValue = localDate.plusWeeks(0).with(DayOfWeek.MONDAY).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + ","
+                        + localDate.plusWeeks(0).with(DayOfWeek.SUNDAY).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                break;
+            case "lastweek" :
+                formatValue = localDate.plusWeeks(-1).with(DayOfWeek.MONDAY).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + ","
+                        + localDate.plusWeeks(-1).with(DayOfWeek.SUNDAY).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                break;
+            case "month" :
+                formatValue = localDate.plusMonths(0).with(TemporalAdjusters.firstDayOfMonth()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + ","
+                        + localDate.plusWeeks(0).with(TemporalAdjusters.lastDayOfMonth()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                break;
+            case "lastmonth" :
+                formatValue = localDate.plusWeeks(-1).with(TemporalAdjusters.firstDayOfMonth()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + ","
+                        + localDate.plusWeeks(-1).with(TemporalAdjusters.lastDayOfMonth()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                break;
+            case "quarter" :
+                formatValue = quarterStart(0).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + ","
+                        + quarterStart(0).plusMonths(2).with(TemporalAdjusters.lastDayOfMonth()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                break;
+            case "lastquarter" :
+                formatValue = quarterStart(-1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + ","
+                        + quarterStart(-1).plusMonths(2).with(TemporalAdjusters.lastDayOfMonth()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                formatValue = "";
+                break;
+            case "halfyear" :
+                formatValue = localDate.plusMonths(-6).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + ","
+                        + localDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                break;
+            case "year" :
+                formatValue = localDate.plusYears(0).with(TemporalAdjusters.firstDayOfYear()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + ","
+                        + localDate.plusWeeks(0).with(TemporalAdjusters.firstDayOfYear()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                break;
+            case "lastyear" :
+                formatValue = localDate.plusYears(-1).with(TemporalAdjusters.firstDayOfYear()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + ","
+                        + localDate.plusWeeks(-1).with(TemporalAdjusters.firstDayOfYear()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                break;
+            default:
+                formatValue = value;
+                break;
+        }
+        return formatValue;
+    }
+
+    private static LocalDate quarterStart(int offset) {
+        final LocalDate date = LocalDate.now().plusMonths(offset * 3);
+        int month = date.getMonth().getValue();//当月
+        int start = 0;
+        if (month >= 1 && month <= 3) {//第一季度
+            start = 1;
+        } else if (month >= 4 && month <= 6) {//第二季度
+            start = 4;
+        } else if (month >= 7 && month <= 9) {//第三季度
+            start = 7;
+        } else if ((month >= 10 && month <= 12)) {//第四季度
+            start = 10;
+        } else if (month == 12) {//第四季度
+            start = 12;
+            month = 14;
+        }
+        return date.plusMonths(start - month).with(TemporalAdjusters.firstDayOfMonth());
+    }
 }
 }

+ 3 - 0
bi-server/src/main/resources/application.properties

@@ -9,6 +9,9 @@ spring.datasource.url=jdbc:oracle:thin:@10.1.81.2:1521:orcl
 spring.datasource.username=UAS_DEV
 spring.datasource.username=UAS_DEV
 spring.datasource.password=select!#%*(
 spring.datasource.password=select!#%*(
 
 
+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
 #spring.datasource.url=jdbc:oracle:thin:@218.18.115.198:1523:orcl
 #spring.datasource.username=BI_ADMIN
 #spring.datasource.username=BI_ADMIN

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
bi-server/src/main/webapp/dist/index.0e157b20.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
bi-server/src/main/webapp/dist/index.3f25d010.css


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
bi-server/src/main/webapp/dist/index.9af88545.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
bi-server/src/main/webapp/dist/index.9e336fcf.css


+ 2 - 2
bi-server/src/main/webapp/dist/index.html

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

Vissa filer visades inte eftersom för många filer har ändrats