Browse Source

1.整改了项目结构
2.修改了生成图表筛选选择跟x轴相同列时报错问题
3.修改了策略未启用就生效的问题

heqinwei 7 years ago
parent
commit
40358369e4
37 changed files with 3456 additions and 87 deletions
  1. 1 1
      src/main/java/com/Application.java
  2. 1 1
      src/main/java/com/config/BasesSource/DynamicDataSource.java
  3. 1 1
      src/main/java/com/config/BasesSource/DynamicDataSourceContextHolder.java
  4. 7 31
      src/main/java/com/config/BasesSource/DynamicDataSourceRegister.java
  5. 67 0
      src/main/java/com/config/BasesSource/DynamicDattaSourceAspect.java
  6. 4 1
      src/main/java/com/config/CommonConfiguration.java
  7. 1 1
      src/main/java/com/config/RoleInterceptor/Auth.java
  8. 1 1
      src/main/java/com/config/RoleInterceptor/ConfigAdapter.java
  9. 1 1
      src/main/java/com/config/RoleInterceptor/SecurityInterceptor.java
  10. 1 1
      src/main/java/com/config/WebMvcConfig.java
  11. 1 1
      src/main/java/com/config/exception/GlobalException.java
  12. 1 1
      src/main/java/com/config/exception/MyException.java
  13. 1 1
      src/main/java/com/dao/user/UserMapper.java
  14. 273 0
      src/main/java/com/server/chart/ChartsConfigService.java
  15. 128 0
      src/main/java/com/server/chart/ChartsUtilService.java
  16. 130 0
      src/main/java/com/server/chart/GetChartsDataUtilService.java
  17. 259 0
      src/main/java/com/server/chart/ShowHistogramService.java
  18. 116 0
      src/main/java/com/server/chart/ShowIndividualService.java
  19. 224 0
      src/main/java/com/server/chart/ShowLineService.java
  20. 186 0
      src/main/java/com/server/chart/ShowPieService.java
  21. 193 0
      src/main/java/com/server/chart/ShowPopulationService.java
  22. 257 0
      src/main/java/com/server/chart/ShowScatterService.java
  23. 203 0
      src/main/java/com/server/chart/TimeConverterUtil.java
  24. 124 0
      src/main/java/com/server/dashboard/DashboardsService.java
  25. 143 0
      src/main/java/com/server/dashboard/DashboardsToChartsUtilService.java
  26. 96 0
      src/main/java/com/server/dataSource/ColumnScreenService.java
  27. 206 0
      src/main/java/com/server/dataSource/DataBasesService.java
  28. 389 0
      src/main/java/com/server/dataSource/DataConnectorService.java
  29. 192 0
      src/main/java/com/server/dataSource/ImplementSqlService.java
  30. 210 0
      src/main/java/com/server/strategy/StrategysService.java
  31. 30 0
      src/main/java/com/server/user/RecodeService.java
  32. 3 3
      src/main/java/com/server/user/UserService.java
  33. 2 2
      src/main/java/com/util/CalculationJudgeUtil.java
  34. 1 0
      src/main/java/com/util/GetTokenData.java
  35. 0 20
      src/main/java/com/util/SqlMatch.java
  36. 0 17
      src/main/java/com/util/TimeUtil.java
  37. 3 3
      src/main/test/com/test/TestDataSource.java

+ 1 - 1
src/main/java/com/Application.java

@@ -1,6 +1,6 @@
 package com;
 
-import com.util.BasesSource.DynamicDataSourceRegister;
+import com.config.BasesSource.DynamicDataSourceRegister;
 import com.util.ContextUtil;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;

+ 1 - 1
src/main/java/com/util/BasesSource/DynamicDataSource.java → src/main/java/com/config/BasesSource/DynamicDataSource.java

@@ -1,4 +1,4 @@
-package com.util.BasesSource;
+package com.config.BasesSource;
 
 import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
 

+ 1 - 1
src/main/java/com/util/BasesSource/DynamicDataSourceContextHolder.java → src/main/java/com/config/BasesSource/DynamicDataSourceContextHolder.java

@@ -1,4 +1,4 @@
-package com.util.BasesSource;
+package com.config.BasesSource;
 
 import java.util.ArrayList;
 import java.util.List;

+ 7 - 31
src/main/java/com/util/BasesSource/DynamicDataSourceRegister.java → src/main/java/com/config/BasesSource/DynamicDataSourceRegister.java

@@ -1,7 +1,9 @@
-package com.util.BasesSource;
+package com.config.BasesSource;
 
 import com.alibaba.druid.pool.DruidDataSource;
 import com.alibaba.druid.pool.DruidDataSourceFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.MutablePropertyValues;
 import org.springframework.beans.factory.support.BeanDefinitionRegistry;
 import org.springframework.beans.factory.support.GenericBeanDefinition;
@@ -34,6 +36,8 @@ public class DynamicDataSourceRegister implements ImportBeanDefinitionRegistrar,
     //用户自定义数据源
     private Map<String, DataSource> slaveDataSources = new HashMap<>();
 
+    private Logger LOGGER = LoggerFactory.getLogger(DynamicDataSourceRegister.class);
+
     Map<Object, Object> targetDataSources = new HashMap<Object, Object>();
 
     public DataSource getDefaultDataSource() {
@@ -76,26 +80,12 @@ public class DynamicDataSourceRegister implements ImportBeanDefinitionRegistrar,
         dsDeMap.put("url", env.getProperty("spring.datasource.url"));
         dsDeMap.put("username", env.getProperty("spring.datasource.username"));
         dsDeMap.put("password", env.getProperty("spring.datasource.password"));
-        System.out.println("主数据源:" + dsDeMap);
+        LOGGER.info("主数据源:" + dsDeMap);
         defaultDataSource = buildDataSource(dsDeMap);
     }
 
 
     private void initslaveDataSources(){
-        // 读取配置文件获取更多数据源
-//        String dsPrefixs = env.getProperty("slave.datasource.names");
-//        for (String dsPrefix : dsPrefixs.split(",")) {
-//            // 多个数据源
-//            Map<String, Object> dsMap = new HashMap<>();
-//            dsMap.put("driver", env.getProperty("slave.datasource." + dsPrefix + ".driver-class-name"));
-//            dsMap.put("url", env.getProperty("slave.datasource." + dsPrefix + ".url"));
-//            dsMap.put("username", env.getProperty("slave.datasource." + dsPrefix + ".username"));
-//            dsMap.put("password", env.getProperty("slave.datasource." + dsPrefix + ".password"));
-//            DataSource ds = buildDataSource(dsMap);
-//            System.out.println("MAP" + dsMap);
-//            slaveDataSources.put(dsPrefix, ds);
-//        }
-
         String driver = String.valueOf(dsDeMap.get("driver"));
         String url = String.valueOf(dsDeMap.get("url"));
         String userName = String.valueOf(dsDeMap.get("username"));
@@ -163,26 +153,12 @@ public class DynamicDataSourceRegister implements ImportBeanDefinitionRegistrar,
         mpv.addPropertyValue("targetDataSources", targetDataSources);
         //注册 - BeanDefinitionRegistry
         beanDefinitionRegistry.registerBeanDefinition("dataSource", beanDefinition);
-
-        System.out.println("Dynamic DataSource Registry");
     }
 
     public DataSource buildDataSource(Map<String, Object> dataSourceMap) {
         try {
-            Object type = dataSourceMap.get("type");
-            if (type == null) {
-                type = DATASOURCE_TYPE_DEFAULT;// 默认DataSource
-            }
-            Class<? extends DataSource> dataSourceType;
-                dataSourceType = (Class<? extends DataSource>) Class.forName((String) type);
-                String driverClassName = String.valueOf(dataSourceMap.get("driver"));
-                String url = String.valueOf(dataSourceMap.get("url"));
-                String username = String.valueOf(dataSourceMap.get("username"));
-                String password = String.valueOf(dataSourceMap.get("password"));
                 dataSourceMap.put("testWhileIdle", "true");
-                // 自定义DataSource配置
-//                DataSourceBuilder factory = DataSourceBuilder.create().driverClassName(driverClassName).url(url)
-//                        .username(username).password(password).type(dataSourceType);
+
             DruidDataSource factory = (DruidDataSource) DruidDataSourceFactory.createDataSource(dataSourceMap);
                 return factory;
             } catch (ClassNotFoundException e) {

+ 67 - 0
src/main/java/com/config/BasesSource/DynamicDattaSourceAspect.java

@@ -0,0 +1,67 @@
+package com.config.BasesSource;
+
+import com.dao.dataSource.DataColumnMapper;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.model.bo.ToSql;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.annotation.After;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+
+import java.io.IOException;
+
+/**
+ * @Author caiChaoqi
+ * @Description 动态数据源通知
+ * @Date 2018-06-23
+ */
+@Aspect
+@Order(-1)//保证在@Transactional之前执行
+@Component
+public class DynamicDattaSourceAspect {
+
+    @Autowired
+    ObjectMapper objectMapper;
+    @Autowired
+    DataColumnMapper dataColumnMapper;
+
+    //改变数据源
+    @Before("@annotation(com.model.pojo.annotation.TargetDataSource)")
+    public void changeDataSource(JoinPoint joinPoint) {
+        Object[] arr = joinPoint.getArgs();
+        String joinStr = null;
+        ToSql toSql = new ToSql();
+//        System.out.println("数据源用户名"+baseName);
+
+        try {
+            joinStr = objectMapper.writeValueAsString(arr[1]);
+        } catch (JsonProcessingException e) {
+            e.printStackTrace();
+        }
+
+        try {
+            toSql = objectMapper.readValue(joinStr, ToSql.class);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        int baseId = toSql.getId();
+
+        if (!DynamicDataSourceContextHolder.isContainsDataSource(String.valueOf(baseId))) {
+            //joinPoint.getSignature() :获取连接点的方法签名对象
+            System.out.println("数据源 " + String.valueOf(baseId) + " 不存在使用默认的数据源 -> " + joinPoint.getSignature());
+        } else {
+            System.out.println("使用数据源:" +  String.valueOf(baseId));
+            DynamicDataSourceContextHolder.setDataSourceType(String.valueOf(baseId));
+        }
+    }
+
+    @After("@annotation(com.model.pojo.annotation.TargetDataSource)")
+    public void clearDataSource(JoinPoint joinPoint) {
+        System.out.println("清除数据源!");
+        DynamicDataSourceContextHolder.clearDataSourceType();
+    }
+}

+ 4 - 1
src/main/java/com/util/CommonConfiguration.java → src/main/java/com/config/CommonConfiguration.java

@@ -1,4 +1,4 @@
-package com.util;
+package com.config;
 
 import com.github.pagehelper.PageHelper;
 import org.springframework.context.annotation.Bean;
@@ -6,6 +6,9 @@ import org.springframework.context.annotation.Configuration;
 
 import java.util.Properties;
 
+/*
+分页配置类
+ */
 @Configuration
 public class CommonConfiguration {
 

+ 1 - 1
src/main/java/com/util/RoleInterceptor/Auth.java → src/main/java/com/config/RoleInterceptor/Auth.java

@@ -1,4 +1,4 @@
-package com.util.RoleInterceptor;
+package com.config.RoleInterceptor;
 
 import java.lang.annotation.*;
 

+ 1 - 1
src/main/java/com/util/RoleInterceptor/ConfigAdapter.java → src/main/java/com/config/RoleInterceptor/ConfigAdapter.java

@@ -1,4 +1,4 @@
-package com.util.RoleInterceptor;
+package com.config.RoleInterceptor;
 
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;

+ 1 - 1
src/main/java/com/util/RoleInterceptor/SecurityInterceptor.java → src/main/java/com/config/RoleInterceptor/SecurityInterceptor.java

@@ -1,4 +1,4 @@
-package com.util.RoleInterceptor;
+package com.config.RoleInterceptor;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.util.GetTokenData;

+ 1 - 1
src/main/java/com/util/WebMvcConfig.java → src/main/java/com/config/WebMvcConfig.java

@@ -1,4 +1,4 @@
-package com.util;
+package com.config;
 
 import org.springframework.context.annotation.Configuration;
 import org.springframework.web.servlet.config.annotation.CorsRegistry;

+ 1 - 1
src/main/java/com/util/GlobalException.java → src/main/java/com/config/exception/GlobalException.java

@@ -1,4 +1,4 @@
-package com.util;
+package com.config.exception;
 
 import com.auth0.jwt.exceptions.InvalidClaimException;
 import org.apache.ibatis.binding.BindingException;

+ 1 - 1
src/main/java/com/util/MyException.java → src/main/java/com/config/exception/MyException.java

@@ -1,4 +1,4 @@
-package com.util;
+package com.config.exception;
 
 public class MyException extends RuntimeException{
     /**

+ 1 - 1
src/main/java/com/dao/UserMapper.java → src/main/java/com/dao/user/UserMapper.java

@@ -1,4 +1,4 @@
-package com.dao;
+package com.dao.user;
 
 import com.model.po.User;
 import com.model.po.UserGroup;

+ 273 - 0
src/main/java/com/server/chart/ChartsConfigService.java

@@ -0,0 +1,273 @@
+package com.server.chart;
+
+import com.dao.chart.ChartsConfigMapper;
+import com.dao.user.UserMapper;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.github.pagehelper.PageInfo;
+import com.model.bo.GroupUpdateId;
+import com.model.po.ChartConfig;
+import com.model.po.ChartConfigList;
+import com.model.pojo.RepCode;
+import com.model.pojo.RepEntity;
+import com.model.pojo.TestPage;
+import com.model.vo.configVo.ChangeOrderInfo;
+import com.model.vo.configVo.ChartConfigInfo;
+import com.model.vo.configVo.GroupInfo;
+import com.server.strategy.StrategysService;
+import com.util.GetTokenData;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class ChartsConfigService {
+
+    @Autowired
+    ChartsConfigMapper chartsConfigMapper;
+    @Autowired
+    ObjectMapper objectmapper;
+    @Autowired
+    StrategysService strategysService;
+    @Autowired
+    GetTokenData getTokenData;
+    @Autowired
+    UserMapper userMapper;
+
+    /*
+    保存表设置
+     */
+    public RepEntity setChartsConfig(ChartConfigInfo chartConfigInfo, String token){
+        Map<String, String> resMap = getTokenData.getTokenData(token);
+        int userId = Integer.parseInt(resMap.get("id"));
+        String userName = resMap.get("name");
+        ChartConfig chartConfig = new ChartConfig();
+        BeanUtils.copyProperties(chartConfigInfo, chartConfig);
+
+        String groupBy = null;
+        String accessAuthority = null;
+        String updateAuthority = null;
+
+        try {
+            groupBy = objectmapper.writeValueAsString(chartConfigInfo.getGroupBy());
+        } catch (JsonProcessingException e) {
+            e.printStackTrace();
+        }
+
+        try {
+            accessAuthority = objectmapper.writeValueAsString(chartConfigInfo.getAccessAuthority());
+        } catch (JsonProcessingException e) {
+            e.printStackTrace();
+        }
+
+        try {
+            updateAuthority = objectmapper.writeValueAsString(chartConfigInfo.getUpdateAuthority());
+        } catch (JsonProcessingException e) {
+            e.printStackTrace();
+        }
+
+        chartConfig.setGroupBy(groupBy);
+        chartConfig.setAccessAuthority(accessAuthority);
+        chartConfig.setUpdateAuthority(updateAuthority);
+        chartConfig.setCreateId(userId);
+        chartConfig.setCreateBy(userName);
+
+        if (chartConfig.getChartsGroup() == 0){
+            chartConfig.setChartsGroup(-1);
+        }
+        if (chartConfig.getChartOption() == null ) {
+            chartConfig.setChartOption("");
+        }
+        if (chartConfig.getFetchConfig() == null || "".equals(chartConfig.getFetchConfig())){
+            chartConfig.setFetchConfig("");
+        }
+        if (chartConfig.getStyle() == null){
+            chartConfig.setStyle("");
+        }
+
+        chartsConfigMapper.insertCharts(chartConfig);
+        int id = chartConfig.getChartId();
+
+        return new RepEntity(RepCode.success,id);
+    }
+
+    /*
+    更新表设置
+     */
+    public RepEntity updateChartsConfig(ChartConfigInfo chartConfigInfo, String token){
+        Map<String, String> resMap = getTokenData.getTokenData(token);
+        int userId = Integer.parseInt(resMap.get("id"));
+        String userName = resMap.get("name");
+        int createID = chartsConfigMapper.getCreateId(chartConfigInfo.getChartId());
+        if (userId != createID){
+            return new RepEntity(RepCode.NoAuthority);
+        }
+        ChartConfig chartConfig = new ChartConfig();
+        BeanUtils.copyProperties(chartConfigInfo, chartConfig);
+
+        String groupBy = null;
+        String accessAuthority = null;
+        String updateAuthority = null;
+
+        try {
+            groupBy = objectmapper.writeValueAsString(chartConfigInfo.getGroupBy());
+        } catch (JsonProcessingException e) {
+            e.printStackTrace();
+        }
+
+
+        try {
+            accessAuthority = objectmapper.writeValueAsString(chartConfigInfo.getAccessAuthority());
+        } catch (JsonProcessingException e) {
+            e.printStackTrace();
+        }
+
+        try {
+            updateAuthority = objectmapper.writeValueAsString(chartConfigInfo.getUpdateAuthority());
+        } catch (JsonProcessingException e) {
+            e.printStackTrace();
+        }
+
+
+        chartConfig.setGroupBy(groupBy);
+        chartConfig.setAccessAuthority(accessAuthority);
+        chartConfig.setAccessAuthority(accessAuthority);
+        chartConfig.setUpdateAuthority(updateAuthority);
+        chartConfig.setCreateId(userId);
+        chartConfig.setCreateBy(userName);
+        if (chartConfig.getChartsGroup() == 0){
+            chartConfig.setChartsGroup(-1);
+        }
+        if (chartConfig.getChartOption() == null) {
+            chartConfig.setChartOption("");
+        }
+        if (chartConfig.getStyle() == null){
+            chartConfig.setStyle("");
+        }
+        System.out.println("chartOption:"+chartConfig.getChartOption());
+        chartsConfigMapper.updateChartConfig(chartConfig);
+
+        return new RepEntity(RepCode.success);
+    }
+
+    /*
+    移交图表
+     */
+    public RepEntity changeChartOrder(ChangeOrderInfo changeOrderInfo, String token){
+        Map<String, String> resMap = getTokenData.getTokenData(token);
+        int userId = Integer.parseInt(resMap.get("id"));
+        String name = userMapper.getName(changeOrderInfo.getUserId());
+        int createId = chartsConfigMapper.getCreateId(changeOrderInfo.getId());
+        if (createId != userId){
+            return new RepEntity(RepCode.NoAuthority);
+        }
+        chartsConfigMapper.changeChartOrder(name, changeOrderInfo.getUserId(), changeOrderInfo.getId());
+        return new RepEntity(RepCode.success);
+    }
+
+    /*
+    更新图表配置的分组
+     */
+    public RepEntity updateConfigGroup(GroupUpdateId groupUpdateId){
+        int chartId = groupUpdateId.getId();
+        int chartGroupId = groupUpdateId.getGroupId();
+        chartsConfigMapper.updateConfigGroup(chartId, chartGroupId);
+        return new RepEntity(RepCode.success);
+    }
+
+    /*
+    删除图表
+     */
+    public RepEntity delChartsConfig(List<Integer> idList){
+        chartsConfigMapper.deleteCharts(idList);
+        return new RepEntity(RepCode.success);
+    }
+
+    /*
+    查询图表列表
+     */
+    public RepEntity getListCharts(String token, TestPage testPage){
+        Map<String, String> resMap = getTokenData.getTokenData(token);
+        int id = Integer.parseInt(resMap.get("id"));
+        List<ChartConfigList> chartsList = chartsConfigMapper.getListByUser(id,testPage.enablePaging());
+        PageInfo<ChartConfigList> pageInfo = new PageInfo<>(chartsList);
+        return new RepEntity(RepCode.success, pageInfo);
+    }
+
+    /*
+    查询单个图表配置
+     */
+    public RepEntity getOneCharts(int id){
+        if (id == 0){
+            return new RepEntity(RepCode.Null);
+        }
+        return new RepEntity(RepCode.success,chartsConfigMapper.getOneChart(id));
+    }
+
+    /*
+    创建图表分组
+     */
+    public RepEntity setDataConnectorGroup(GroupInfo groupInfo){
+        if (groupInfo == null){
+            return new RepEntity(RepCode.Null);
+        }
+        chartsConfigMapper.setChartsGroup(groupInfo);
+        int id = groupInfo.getId();
+        return new RepEntity(RepCode.success, id);
+    }
+
+    /*
+    更新图表分组
+     */
+    public RepEntity updataDataConnectorGroup(GroupInfo groupInfo){
+        chartsConfigMapper.updataChartsGroup(groupInfo);
+        return new RepEntity(RepCode.success);
+    }
+
+    /*
+    批量更新图表分组
+     */
+    public RepEntity updataListGroup(List<GroupInfo> groupInfoList){
+        Iterator isList = groupInfoList.iterator();
+        GroupInfo groupInfo = new GroupInfo();
+        while (isList.hasNext()){
+            groupInfo = (GroupInfo) isList.next();
+            chartsConfigMapper.updataChartsGroup(groupInfo);
+        }
+
+        return new RepEntity(RepCode.success);
+    }
+
+    /*
+    删除图表分组
+     */
+    public RepEntity delDataConnectorGroup(List<Integer> idList){
+        List<Integer> integerList = idList;
+        Iterator isList = integerList.iterator();
+        while (isList.hasNext()){
+            int id = (int) isList.next();
+            List<String> groupName = chartsConfigMapper.getChartFatherId(id);
+            if (groupName.size() != 0){
+                return new RepEntity(RepCode.hasGroupUsing);
+            }
+            List<String> chartName = chartsConfigMapper.getChartName(id);
+            if (chartName.size() != 0 ){
+                return new RepEntity(RepCode.hasChartUsing);
+            }
+        }
+        chartsConfigMapper.delChartsGroup(idList);
+        return new RepEntity(RepCode.success);
+    }
+
+    /*
+    查询图表分组列表
+     */
+    public RepEntity getConnectorGroup(){
+        return new RepEntity(RepCode.success, chartsConfigMapper.getChartsGroup());
+    }
+
+}

+ 128 - 0
src/main/java/com/server/chart/ChartsUtilService.java

@@ -0,0 +1,128 @@
+package com.server.chart;
+
+import com.dao.chart.ChartsConfigMapper;
+import com.dao.dataSource.DataConnectorMapper;
+import com.dao.strategy.StrategysBdMapper;
+import com.dao.strategy.StrategysChartMapper;
+import com.dao.user.RecordMapper;
+import com.model.vo.configVo.RecordInfo;
+import com.util.GetTokenData;
+import org.apache.ibatis.binding.BindingException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+@Component
+public class ChartsUtilService {
+    @Autowired
+    GetTokenData getTokenData;
+    @Autowired
+    DataConnectorMapper dataConnectorMapper;
+    @Autowired
+    ChartsConfigMapper chartsConfigMapper;
+    @Autowired
+    StrategysBdMapper strategysBdMapper;
+    @Autowired
+    StrategysChartMapper strategysChartMapper;
+    @Autowired
+    RecordMapper recordMapper;
+
+    public String getSqlStr(String token, int id) {
+        Map<String, String> resultMap = getTokenData.getTokenData(token);
+        int userId = Integer.parseInt(resultMap.get("id"));
+        int createID;
+        int baseId;
+        try {
+            createID = chartsConfigMapper.getCreateId(id);
+            baseId = dataConnectorMapper.getBaseId(id);
+        }catch (BindingException exception){
+            throw new BindingException();
+        }
+        String tableName = chartsConfigMapper.getTableName(id);
+        System.out.println("table:"+tableName);
+        System.out.println("userId:" + userId + ", createID:" + createID + "");
+        if (userId == createID) {
+            //如果数据源创建人ID跟用户ID一样,获得数据源全部权限
+            if (tableName == null || "".equals(tableName)) {
+                return "";
+            } else {
+                return columnNameUtil(userId, baseId, tableName, true, id, -1);
+            }
+        } else {
+            //先拿图表创建者权限,在取分发权限
+            System.out.println("你他妈的去哪里了");
+            String sql = columnNameUtil(createID, baseId, tableName, true, id, -1);
+            return columnNameUtil(userId, baseId, sql, false, id, -1);
+        }
+    }
+
+    public String columnNameUtil(int userId, int baseId, String tableName, boolean isOrder, int id, int createBId){
+        //用户不是创建人
+        List<String> strList = new ArrayList<>();
+
+        if (isOrder){
+            int baseCreateId;
+            if (id != 0) {
+                baseCreateId = chartsConfigMapper.getCreateIdBychart(id);
+            }else {
+                baseCreateId = createBId;
+            }
+            if (baseCreateId == userId ){
+                System.out.println("等于吗");
+                return "(" + tableName +")";
+            }else {
+                System.out.println("周到这里。。。。。。。。。。。。。。。。。");
+                strList = strategysBdMapper.getSqlStr(userId, baseId);
+                System.out.println("strList:" + strList);
+            }
+        }else {
+            strList = strategysChartMapper.getSqlStr(userId, id);
+        }
+
+        if (strList.size() == 0){
+            return "";
+        }
+        String sqlStr = "";
+        Iterator isList = strList.iterator();
+        while (isList.hasNext()){
+            String str = (String) isList.next();
+            if ("".equals(str) || str == null){
+                return  "(select * from " + "(" + tableName +"))";
+            }
+            System.out.println("str111:" + str);
+            StringBuilder sb = new StringBuilder(str);
+            sqlStr = sqlStr + String.valueOf(sb .replace(1, 5, "( ")) + ") or";
+        }
+        System.out.println("sqlStr:" + sqlStr);
+        StringBuilder sb = new StringBuilder(sqlStr);
+        sqlStr = "(select * from " + "(" + tableName +")" + " where " + sb.replace(sb.length()-2,sb.length(), "") + ")";
+        System.out.println("sql:" + sqlStr);
+        return sqlStr;
+    }
+
+    /*
+    浏览记录
+     */
+    public void inputRecord(String token, RecordInfo recordInfo){
+        int tarId = recordInfo.getTarId();
+        String type = recordInfo.getType();
+        Map<String, String> resultMap = getTokenData.getTokenData(token);
+        int userId = Integer.parseInt(resultMap.get("id"));
+        int count = recordMapper.getCount(type, userId);
+
+
+        List<Integer> integerList = recordMapper.getListId(type, userId);
+        if (integerList.contains(tarId)){
+            recordMapper.updateRecord(type, tarId);
+        }else {
+            if (count >= 10) {
+                recordMapper.deleteRecord(type, userId);
+            }
+            recordMapper.inputRecord(type, userId, tarId);
+        }
+    }
+}

+ 130 - 0
src/main/java/com/server/chart/GetChartsDataUtilService.java

@@ -0,0 +1,130 @@
+package com.server.chart;
+
+import com.dao.chart.ChartsConfigMapper;
+import com.dao.dataSource.DataConnectorMapper;
+import com.dao.chart.ShowChartsMapper;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.github.pagehelper.PageInfo;
+import com.model.po.Databases;
+import com.model.pojo.RepCode;
+import com.model.pojo.RepEntity;
+import com.model.vo.configVo.ShowDataChartInfo;
+import com.model.vo.dataVo.ColumnValuesInfo;
+import com.config.BasesSource.DynamicDataSourceContextHolder;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class GetChartsDataUtilService {
+    @Autowired
+    ChartsConfigMapper chartsConfigMapper;
+    @Autowired
+    ObjectMapper objectMapper;
+    @Autowired
+    DataConnectorMapper dataConnectorMapper;
+    @Autowired
+    ChartsUtilService chartsUtilService;
+    @Autowired
+    ShowChartsMapper showChartsMapper;
+    @Autowired
+    GetChartsDataUtilService getChartsDataUtilService;
+
+    /*
+    通过图表ID获取数据库连接ID
+     */
+    public int getBaseId(int id){
+
+        //取数据源ID
+        String dataConfig = chartsConfigMapper.getBaseConifg(id);
+
+        //取数据连接名的数据库名
+        Databases databases = new Databases();
+        try {
+            databases = objectMapper.readValue(dataConfig, Databases.class);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        int baseId = databases.getId();
+
+        return baseId;
+    }
+
+    /*
+    通过数据源ID获取数据库连接ID
+     */
+    public int getBaseIdByConnect(int id){
+
+        //取数据源ID
+        String dataConfig = dataConnectorMapper.getDbConfig(id);
+
+        //取数据连接名的数据库名
+        Databases databases = new Databases();
+        try {
+            databases = objectMapper.readValue(dataConfig, Databases.class);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        int baseId = databases.getId();
+
+        return baseId;
+    }
+
+    //取数据源Id
+    public int getConnectId(int id){
+
+        //取数据源ID
+        int ConnectId = chartsConfigMapper.getBaseId(id);
+
+        return ConnectId;
+    }
+
+    /*
+    查看图表列数据信息
+     */
+    public RepEntity getChartsData(String token, ShowDataChartInfo showDataChartInfo){
+        int chartsId = showDataChartInfo.getChartId();
+        //取表名;
+        String tableName = chartsUtilService.getSqlStr(token, chartsId);
+        if ("".equals(tableName)){
+            return new RepEntity(RepCode.NoAuthority);
+        }
+
+        int baseId = getChartsDataUtilService.getBaseId(chartsId);
+        System.out.println("切换数据库"+baseId);
+
+        ColumnValuesInfo columnValuesInfo = new ColumnValuesInfo();
+
+        String columnConfig = chartsConfigMapper.getConfigByChartId(chartsId);
+        String sql = chartsUtilService.getSqlStr(token, chartsId);
+        if ("".equals(sql)) {
+            return new RepEntity(RepCode.NoAuthority);
+        }
+        List<Map<String, Object>> values = new ArrayList<>();
+        try {
+            if (!DynamicDataSourceContextHolder.isContainsDataSource(String.valueOf(baseId))) {
+                //joinPoint.getSignature() :获取连接点的方法签名对象
+                System.out.println("数据源 " + baseId + " 不存在使用默认的数据源 -> ");
+            } else {
+                System.out.println("使用数据源:" + baseId);
+                DynamicDataSourceContextHolder.setDataSourceType(String.valueOf(baseId));
+            }
+            values = chartsConfigMapper.getChartsData(sql, showDataChartInfo.getTestPage().enablePaging());
+            PageInfo<Map<String, Object>> pageInfo = new PageInfo<>(values);
+            columnValuesInfo.setValues(pageInfo);
+        }catch (Exception e){
+            e.printStackTrace();
+            System.out.println("异常");
+            return new RepEntity(RepCode.erro);
+        }finally {
+            System.out.println("关闭数据源");
+            DynamicDataSourceContextHolder.clearDataSourceType();
+        }
+        columnValuesInfo.setColumnConfig(columnConfig);
+        return new RepEntity(RepCode.success, columnValuesInfo);
+    }
+}

+ 259 - 0
src/main/java/com/server/chart/ShowHistogramService.java

@@ -0,0 +1,259 @@
+package com.server.chart;
+
+import com.dao.chart.ChartsConfigMapper;
+import com.dao.chart.ShowChartsMapper;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.model.bo.*;
+import com.model.pojo.RepCode;
+import com.model.pojo.RepEntity;
+import com.model.vo.configVo.HistogramConfigInfo;
+import com.model.vo.dataVo.ChartsDataInfo;
+import com.config.BasesSource.DynamicDataSourceContextHolder;
+import com.util.CalculationJudgeUtil;
+import com.util.ScreenUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+@Repository
+public class ShowHistogramService {
+    @Autowired
+    ShowChartsMapper showChartsMapper;
+    @Autowired
+    TimeConverterUtil timeConverterUtil;
+    @Autowired
+    CalculationJudgeUtil calculationJudgeUtil;
+    @Autowired
+    ChartsConfigMapper chartsConfigMapper;
+    @Autowired
+    ObjectMapper objectMapper;
+    @Autowired
+    GetChartsDataUtilService getChartsDataUtilService;
+    @Autowired
+    ScreenUtil screenUtil;
+    @Autowired
+    ChartsUtilService chartsUtilService;
+
+    /*
+    柱状图数据展示
+     */
+    public RepEntity showHistogram(HistogramConfigInfo histogramConfigInfo, String token){
+        ChartsDataInfo chartsDataInfo = new ChartsDataInfo();
+        TimeReture timeReture = new TimeReture();
+        if (histogramConfigInfo == null || "".equals(histogramConfigInfo)){
+            return new RepEntity(RepCode.Null);
+        }
+
+        //取表名
+        int id = histogramConfigInfo.getId();
+        //获取列配置
+        ChartsColumnConfig chartsColumn = chartsConfigMapper.getChartsColumn(id);
+        if (chartsColumn == null || "".equals(chartsColumn)){
+            return new RepEntity(RepCode.Null);
+        }
+        chartsDataInfo.setChartsColumnConfig(chartsColumn);
+
+        String tableName = chartsUtilService.getSqlStr(token, id);
+        if ("".equals(tableName)){
+            return new RepEntity(RepCode.NoAuthority);
+        }
+
+        int baseId = getChartsDataUtilService.getBaseId(id);
+        System.out.println("切换数据库"+baseId);
+
+        try{
+            if (!DynamicDataSourceContextHolder.isContainsDataSource(String.valueOf(baseId))) {
+                //joinPoint.getSignature() :获取连接点的方法签名对象
+                System.out.println("数据源 " + baseId + " 不存在使用默认的数据源 -> ");
+            } else {
+                System.out.println("使用数据源:" + baseId);
+                DynamicDataSourceContextHolder.setDataSourceType(String.valueOf(baseId));
+            }
+
+            String xColumn = histogramConfigInfo.getxAxis().getColumnRename();
+            String yColumn = histogramConfigInfo.getyAxis().getColumnRename();
+            String xColumnType = histogramConfigInfo.getxAxis().getColumnType();
+
+            String xAxisType = histogramConfigInfo.getxAxis().getShowDataType();
+            List<String> groupBy = histogramConfigInfo.getGroups();
+
+            if (xColumn == null || "".equals(xColumn) || yColumn == null || "".equals(yColumn)){
+                return new RepEntity(RepCode.nullAxis);
+            }
+
+            String yType = histogramConfigInfo.getyAxis().getShowDataType();
+            String yAxisType = calculationJudgeUtil.Judge(yType);
+
+
+            Series series = new Series();
+            List<Double> value = new ArrayList<Double>();
+            List<Series> serieses = new ArrayList<Series>();    //生成柱状图的系列
+            List<String> xAxisData = new ArrayList<String>();  //X轴自己用
+            List<String> xData = new ArrayList<String>();      //X轴前端用
+
+            //取筛选列表
+            List<Screen> screens = histogramConfigInfo.getFilters();
+            ScreenStr scr = new ScreenStr();
+            String screen = "";               //正常筛选条件
+            String screenToColumn = "";       //跟目标列相同的筛选条件
+            String screenToColumnS = "";       //跟目标列相同的筛选条件
+            if ("".equals(screens) || screens == null || screens.size() == 0){
+                screen = "";
+            }else {
+                scr = screenUtil.screensUtil(screens, xColumn, xColumnType);
+                screen = scr.getRet();
+                screenToColumn = scr.getWithColumnRet();
+                StringBuilder sb = new StringBuilder(screenToColumn);
+                System.out.println("sb:"+sb);
+                if (screenToColumn != null && !("".equals(screenToColumn))){
+                    screenToColumnS = screenToColumn + " " + screen;               //and
+                    screenToColumn = String.valueOf(sb .replace(1, 5, "where "));
+                    screen = screenToColumn + " " + screen;         //where
+                    System.out.println("screen:" + screen);
+                } else {
+                    StringBuilder sb1 = new StringBuilder(screen);
+                    screenToColumnS = screen;
+                    screen = String.valueOf(sb1 .replace(1, 5, "where "));
+                }
+            }
+
+            //X轴
+            //判断是否为日期类型
+            if ("time".equals(xColumnType)){
+                timeReture = timeConverterUtil.timeConverter(xColumn, tableName, xAxisType, screen, 20);
+                xAxisData = timeReture.getValues();
+                chartsDataInfo.setTooMany(timeReture.isOverdose());
+                System.out.println("xA:" + xAxisData);
+                xData = timeConverterUtil.toRespons(xAxisData,xAxisType );
+                System.out.println("data:"+xAxisData);
+            }else {
+                int count = showChartsMapper.getNumForX(xColumn, tableName);
+                if (count > 20){
+                    chartsDataInfo.setTooMany(true);
+                }
+                xAxisData = showChartsMapper.getXAxis(xColumn, tableName, screen, 20);
+
+            }
+            if ("".equals(xAxisData) || xAxisData == null || xAxisData.size() == 0){
+                return new RepEntity(RepCode.Null);
+            }
+            if ("week".equals(xAxisType) || "month".equals(xAxisType) || "quarter".equals(xAxisType)){
+                chartsDataInfo.setxAxis(xData);
+            }else {
+                chartsDataInfo.setxAxis(xAxisData);
+            }
+
+            //无分组时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);
+            }
+
+            System.out.println(value);
+            series.setName(xColumn);
+            series.setValue(value);
+            serieses.add(series);
+            System.out.println(serieses);
+
+            //有分组
+            if (groupBy.size() != 0){
+                serieses.remove(0);
+                Iterator itGroup = groupBy.iterator();  //分组数
+
+                //便利分组
+                while (itGroup.hasNext()){
+                    String groupByName = (String) itGroup.next(); //每个分组的组名
+                    int counts = showChartsMapper.getGroupsCount(groupByName,tableName, screenToColumnS);
+                    if (counts > 20){
+                        chartsDataInfo.setTooMany(true);
+                    }
+                    List<String> groupsData = showChartsMapper.getGroups(groupByName,tableName, screenToColumnS, 20); //查询每个分组系列
+                    System.out.println("groupdata:"+ groupsData.toString());
+                    Iterator itGroupsData = groupsData.iterator();
+
+                    //每个分组得到得每个系列
+                    while(itGroupsData.hasNext()){
+                        Series ne = new Series();
+                        String groupsName = (String)itGroupsData.next();
+                        ne.setName(groupsName);
+                        ne.setStack(groupByName);
+
+                        List<Double> groupsValue = new ArrayList<Double>();
+                        Iterator itXAxisData = xAxisData.iterator();
+
+                        //每个系列对应X轴上的值
+                        while (itXAxisData.hasNext()){
+                            String xAxisDataOne = (String) itXAxisData.next();
+                            double groupsValueOne = 0;
+                            String groupsValueOnes = null;
+                            if ("time".equals(xColumnType)){
+                                groupsValueOnes = timeConverterUtil.getGroupTimeConverter(yAxisType, yColumn, tableName, groupByName, xAxisType,
+                                        groupsName, xColumn, xAxisDataOne, screenToColumnS);
+                            }else {
+                                String xColumnKey = "";
+                                if (xAxisDataOne == null || "".equals(xAxisDataOne)){
+                                    xColumnKey  = xColumn + " is null";
+                                }else
+                                {
+                                    xColumnKey = xColumn + " = '" +xAxisDataOne +"'";
+                                }
+
+                                String groupByKey = "";
+                                if (groupsName == null || "".equals(groupsName)){
+                                    groupByKey = groupByName +" is null";
+                                }else {
+                                    groupByKey = groupByName + " = '" +groupsName +"'";
+                                }
+                                groupsValueOnes = showChartsMapper.getGroupsValue(yAxisType, yColumn, tableName, groupByKey, xColumnKey, screenToColumnS);
+                            }
+                            if ("".equals(groupsValueOnes) || groupsValueOnes == null){
+                                groupsValueOne = 0;
+                            }else{
+                                groupsValueOne = Double.parseDouble(groupsValueOnes);
+                            }
+                            groupsValue.add(groupsValueOne);
+                        }
+
+                        ne.setValue(groupsValue);
+                        System.out.println("值:"+ series);
+                        serieses.add(ne);
+                    }
+                    System.out.println(serieses);
+                }
+            }
+
+            chartsDataInfo.setSerieses(serieses);
+        }catch (Exception e){
+        e.printStackTrace();
+        System.out.println("异常");
+        return new RepEntity(RepCode.erro);
+    }finally {
+            System.out.println("关闭数据源");
+        DynamicDataSourceContextHolder.clearDataSourceType();
+    }
+
+        return new RepEntity(RepCode.success, chartsDataInfo);
+    }
+
+
+}

+ 116 - 0
src/main/java/com/server/chart/ShowIndividualService.java

@@ -0,0 +1,116 @@
+package com.server.chart;
+
+import com.dao.chart.ChartsConfigMapper;
+import com.dao.chart.ShowChartsMapper;
+import com.github.pagehelper.PageInfo;
+import com.model.bo.ChartsColumnConfig;
+import com.model.bo.Screen;
+import com.model.bo.ScreenStr;
+import com.model.pojo.RepCode;
+import com.model.pojo.RepEntity;
+import com.model.vo.configVo.IndividualConfigInfo;
+import com.model.vo.dataVo.PopAndIndDataInfo;
+import com.config.BasesSource.DynamicDataSourceContextHolder;
+import com.util.ScreenUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+
+/*
+个人统计表
+ */
+@Service
+public class ShowIndividualService {
+    @Autowired
+    ChartsConfigMapper chartsConfigMapper;
+    @Autowired
+    GetChartsDataUtilService getChartsDataUtilService;
+    @Autowired
+    ShowChartsMapper showChartsMapper;
+    @Autowired
+    ScreenUtil screenUtil;
+    @Autowired
+    ChartsUtilService chartsUtilService;
+
+    public RepEntity showIndividual(IndividualConfigInfo individualConfigInfo, String token){
+        if (individualConfigInfo == null || "".equals(individualConfigInfo)){
+            return new RepEntity(RepCode.Null);
+        }
+        PopAndIndDataInfo popAndIndDataInfo = new PopAndIndDataInfo();
+
+        List<LinkedHashMap<String, Object>> targetValue = new ArrayList<>();
+        //取表名
+        int id = individualConfigInfo.getId();
+        //获取列配置
+        ChartsColumnConfig chartsColumn = chartsConfigMapper.getChartsColumn(id);
+        if (chartsColumn == null || "".equals(chartsColumn)){
+            return new RepEntity(RepCode.Null);
+        }
+        popAndIndDataInfo.setChartsColumnConfig(chartsColumn);
+
+        String tableName = chartsUtilService.getSqlStr(token, id);
+        if ("".equals(tableName)){
+            return new RepEntity(RepCode.NoAuthority);
+    }
+
+        int baseId = getChartsDataUtilService.getBaseId(id);
+        System.out.println("切换数据库"+String.valueOf(baseId));
+
+        try{
+            if (!DynamicDataSourceContextHolder.isContainsDataSource(String.valueOf(baseId))) {
+                //joinPoint.getSignature() :获取连接点的方法签名对象
+                System.out.println("数据源 " + String.valueOf(baseId) + " 不存在使用默认的数据源 -> ");
+            } else {
+                System.out.println("使用数据源:" + String.valueOf(baseId));
+                DynamicDataSourceContextHolder.setDataSourceType(String.valueOf(baseId));
+            }
+
+            //取筛选列表
+            List<Screen> screens = individualConfigInfo.getFilters();
+            ScreenStr scr = new ScreenStr();
+            String screen = "";
+            String screenStr = "";
+            if ("".equals(screens) || screens == null || screens.size() == 0){
+                screen = "";
+                screenStr = "";
+            }else {
+                scr = screenUtil.screensUtil(screens, "", "");
+                screen = scr.getRet();
+                StringBuilder sb = new StringBuilder(screen);
+                screenStr = String.valueOf(sb .replace(1, 5, "where "));
+            }
+
+        String columnName = individualConfigInfo.getSortColumn();
+        System.out.println("columnName:"+columnName);
+        //查询其他列
+        String columnListName = individualConfigInfo.getColumnListName().toString();
+        String sort = individualConfigInfo.getSort();
+
+        String tableListName = this.getString(columnListName);
+
+        targetValue = showChartsMapper.getOtherData(tableListName, tableName, columnName, sort, screenStr, individualConfigInfo.getTestPage().enablePaging());
+        PageInfo<LinkedHashMap<String, Object>> pageInfo = new PageInfo<>(targetValue);
+        popAndIndDataInfo.setValueList(pageInfo);
+    }catch (Exception e){
+        e.printStackTrace();
+        System.out.println("异常");
+        return new RepEntity(RepCode.erro);
+    }finally {
+        DynamicDataSourceContextHolder.clearDataSourceType();
+    }
+        return new RepEntity(RepCode.success, popAndIndDataInfo);
+    }
+
+
+    private String getString(String str){
+        String st1 = "[";
+        String st2 = "]";
+        String strA = str.replace(st1, "");
+        String strB = strA.replace(st2, "");
+        System.out.println("str:"+ strB);
+        return strB;
+    }
+}

+ 224 - 0
src/main/java/com/server/chart/ShowLineService.java

@@ -0,0 +1,224 @@
+package com.server.chart;
+
+import com.dao.chart.ChartsConfigMapper;
+import com.dao.chart.ShowChartsMapper;
+import com.model.bo.*;
+import com.model.pojo.RepCode;
+import com.model.pojo.RepEntity;
+import com.model.vo.configVo.LineConfigInfo;
+import com.model.vo.dataVo.ChartsDataInfo;
+import com.config.BasesSource.DynamicDataSourceContextHolder;
+import com.util.CalculationJudgeUtil;
+import com.util.ScreenUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+@Service
+public class ShowLineService {
+    @Autowired
+    ShowChartsMapper showChartsMapper;
+    @Autowired
+    TimeConverterUtil timeConverterUtil;
+    @Autowired
+    CalculationJudgeUtil calculationJudgeUtil;
+    @Autowired
+    ChartsConfigMapper chartsConfigMapper;
+    @Autowired
+    GetChartsDataUtilService getChartsDataUtilService;
+    @Autowired
+    ScreenUtil screenUtil;
+    @Autowired
+    ChartsUtilService chartsUtilService;
+
+    /*
+    Line数据展示
+     */
+    public RepEntity showLine(LineConfigInfo lineConfigInfo, String token){
+        ChartsDataInfo chartsDataInfo = new ChartsDataInfo();
+        TimeReture timeReture = new TimeReture();
+        if (lineConfigInfo == null || "".equals(lineConfigInfo)){
+            return new RepEntity(RepCode.Null);
+        }
+        int id = lineConfigInfo.getId();
+        //获取列配置
+        ChartsColumnConfig chartsColumn = chartsConfigMapper.getChartsColumn(id);
+        if (chartsColumn == null || "".equals(chartsColumn)){
+            return new RepEntity(RepCode.Null);
+        }
+        String style = chartsColumn.getChartStyle();
+        String config = chartsColumn.getChartConfig();
+        chartsDataInfo.setChartsColumnConfig(chartsColumn);
+
+
+        String tableName = chartsUtilService.getSqlStr(token, id);
+        if ("".equals(tableName)){
+            return new RepEntity(RepCode.NoAuthority);
+        }
+
+        int baseId = getChartsDataUtilService.getBaseId(id);
+        System.out.println("切换数据库"+String.valueOf(baseId));
+
+        try{
+            if (!DynamicDataSourceContextHolder.isContainsDataSource(String.valueOf(baseId))) {
+                //joinPoint.getSignature() :获取连接点的方法签名对象
+                System.out.println("数据源 " + String.valueOf(baseId) + " 不存在使用默认的数据源 -> ");
+            } else {
+                System.out.println("使用数据源:" + String.valueOf(baseId));
+                DynamicDataSourceContextHolder.setDataSourceType(String.valueOf(baseId));
+            }
+
+        String xColumn = lineConfigInfo.getxAxis().getColumnRename();
+        String yColumn = lineConfigInfo.getyAxis().getColumnRename();
+
+        String xAxisType = lineConfigInfo.getxAxis().getShowDataType();
+        List<String> groupBy = lineConfigInfo.getGroups();
+
+        if (xColumn == null || "".equals(xColumn) || yColumn == null || "".equals(yColumn)){
+            return new RepEntity(RepCode.nullAxis);
+        }
+
+        String yType = lineConfigInfo.getyAxis().getShowDataType();
+        String yAxisType = calculationJudgeUtil.Judge(yType);
+
+
+
+        List<LineSeriesMap> value = new ArrayList<LineSeriesMap>();
+        List<LineSeries> serieses = new ArrayList<LineSeries>();    //生成柱状图的系列
+        List<String> xAxisData = new ArrayList<String>();  //X轴自己用
+
+            //取筛选列表
+            List<Screen> screens = lineConfigInfo.getFilters();
+            ScreenStr scr = new ScreenStr();
+            String screen = "";               //正常筛选条件
+            String screenToColumn = "";       //跟目标列相同的筛选条件
+            String screenToColumnS = "";       //跟目标列相同的筛选条件
+            if ("".equals(screens) || screens == null || screens.size() == 0){
+                screen = "";
+            }else {
+                scr = screenUtil.screensUtil(screens, xColumn, xAxisType);
+                screen = scr.getRet();
+                screenToColumn = scr.getWithColumnRet();
+                StringBuilder sb = new StringBuilder(screenToColumn);
+                System.out.println("sb:"+sb);
+                if (screenToColumn != null && !("".equals(screenToColumn))){
+                    screenToColumnS = screenToColumn + " " + screen;               //and
+                    screenToColumn = String.valueOf(sb .replace(1, 5, "where "));
+                    screen = screenToColumn + " " + screen;         //where
+                    System.out.println("screen:" + screen);
+                } else {
+                    StringBuilder sb1 = new StringBuilder(screen);
+                    screenToColumnS = screen;
+                    screen = String.valueOf(sb1 .replace(1, 5, "where "));
+                }
+            }
+
+        //X轴
+        //判断是否为日期类型
+            timeReture = timeConverterUtil.timeConverter(xColumn, tableName, xAxisType, screen, 366);
+            xAxisData = timeReture.getValues();
+            chartsDataInfo.setTooMany(timeReture.isOverdose());
+
+        if ("".equals(xAxisData) || xAxisData == null || xAxisData.size() == 0){
+            return new RepEntity(RepCode.Null);
+        }
+
+        //无分组时Y值
+        Iterator itX = xAxisData.iterator();
+        while (itX.hasNext()){
+            String xdata = (String)itX.next();
+            if (xdata == null || "".equals(xdata)){
+                continue;
+            }
+            double valueOne = 0;
+            String valueOnes = null;
+//                System.out.println("Y:"+ yColumn + "........x:" + xColumn + "........yAxistype:" + yAxisType + "...xtpye:+"+yAxisType+ "   xdata:"+xdata);
+                valueOnes = timeConverterUtil.getTimeValueConverter(yColumn, xColumn, tableName, yAxisType, xAxisType, xdata, screenToColumnS);
+//                System.out.println("value:"+valueOnes);
+            if (valueOnes == null || "".equals(valueOnes)){
+                valueOne = 0;
+            }else {
+                valueOne = Double.parseDouble(valueOnes);
+            }
+            LineSeriesMap lineSeriesMap = new LineSeriesMap();
+            lineSeriesMap.setValue(valueOne);
+            lineSeriesMap.setDate(xdata);
+            value.add(lineSeriesMap);
+        }
+        LineSeries series = new LineSeries();
+//        series.setName(yColumn);
+        series.setMdata(value);
+
+        serieses.add(series);
+
+        //有分组
+        if (groupBy.size() != 0){
+            serieses.remove(0);
+            Iterator itGroup = groupBy.iterator();  //分组数
+
+            //便利分组
+            while (itGroup.hasNext()){
+                String groupByName = (String) itGroup.next();
+                int counts = showChartsMapper.getGroupsCount(groupByName,tableName, screenToColumnS);
+                if (counts > 366){
+                    chartsDataInfo.setTooMany(true);
+                }
+                List<String> groupsData = showChartsMapper.getGroups(groupByName,tableName, screenToColumnS, 366); //查询每个分组系列
+                Iterator itGroupsData = groupsData.iterator();
+
+                //每个分组得到得每个系列
+                while(itGroupsData.hasNext()){
+                    String groupsName = (String)itGroupsData.next();
+                    if ("".equals(groupsName) || groupsName == null){
+                        continue;
+                    }
+                    List<LineSeriesMap> groupsValue = new ArrayList<LineSeriesMap>();
+                    Iterator itXAxisData = xAxisData.iterator();
+
+                    //每个系列对应X轴上的值
+                    while (itXAxisData.hasNext()){
+                        String xAxisDataOne = (String) itXAxisData.next();
+                        if ("".equals(xAxisDataOne) || xAxisDataOne == null){
+                            continue;
+                        }
+                        double groupsValueOne = 0;
+                        String groupsValueOnes = null;
+                        groupsValueOnes = timeConverterUtil.getGroupTimeConverter(yAxisType, yColumn, tableName, groupByName, xAxisType,
+                                    groupsName, xColumn, xAxisDataOne, screenToColumnS);
+                        if ("".equals(groupsValueOnes) || groupsValueOnes == null){
+                            groupsValueOne = 0;
+                        }else{
+                            groupsValueOne = Double.parseDouble(groupsValueOnes);
+                        }
+                        LineSeriesMap lineSeriesMap = new LineSeriesMap();
+                        lineSeriesMap.setDate(xAxisDataOne);
+                        lineSeriesMap.setValue(groupsValueOne);
+                        groupsValue.add(lineSeriesMap);
+                    }
+
+                    LineSeries lineSeries = new LineSeries();
+                    lineSeries.setMdata(groupsValue);
+                    lineSeries.setName(groupsName);
+                    serieses.add(lineSeries);
+                }
+            }
+        }
+
+        chartsDataInfo.setSerieses(serieses);
+
+        }catch (Exception e){
+            e.printStackTrace();
+            System.out.println("异常");
+            return new RepEntity(RepCode.erro);
+        }finally {
+            DynamicDataSourceContextHolder.clearDataSourceType();
+        }
+
+        return new RepEntity(RepCode.success, chartsDataInfo);
+    }
+
+
+}

+ 186 - 0
src/main/java/com/server/chart/ShowPieService.java

@@ -0,0 +1,186 @@
+package com.server.chart;
+
+import com.dao.chart.ChartsConfigMapper;
+import com.dao.chart.ShowChartsMapper;
+import com.model.bo.*;
+import com.model.pojo.RepCode;
+import com.model.pojo.RepEntity;
+import com.model.vo.configVo.PieConfigInfo;
+import com.model.vo.dataVo.ChartsDataInfo;
+import com.config.BasesSource.DynamicDataSourceContextHolder;
+import com.util.CalculationJudgeUtil;
+import com.util.ScreenUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+@Service
+public class ShowPieService {
+    @Autowired
+    ShowChartsMapper showChartsMapper;
+    @Autowired
+    TimeConverterUtil timeConverterUtil;
+    @Autowired
+    CalculationJudgeUtil calculationJudgeUtil;
+    @Autowired
+    ChartsConfigMapper chartsConfigMapper;
+    @Autowired
+    ScreenUtil screenUtil;
+    @Autowired
+    GetChartsDataUtilService getChartsDataUtilService;
+    @Autowired
+    ChartsUtilService chartsUtilService;
+
+    /*
+    Pie数据展示
+     */
+    public RepEntity showPie(PieConfigInfo pieConfigInfo, String token){
+        ChartsDataInfo<PieSeries> chartsDataInfo = new ChartsDataInfo();
+        TimeReture timeReture = new TimeReture();
+        if (pieConfigInfo == null || "".equals(pieConfigInfo)){
+            return new RepEntity(RepCode.Null);
+        }
+        int id = pieConfigInfo.getId();
+        //获取列配置
+        ChartsColumnConfig chartsColumn = chartsConfigMapper.getChartsColumn(id);
+        if (chartsColumn == null || "".equals(chartsColumn)){
+            return new RepEntity(RepCode.Null);
+        }
+        chartsDataInfo.setChartsColumnConfig(chartsColumn);
+        String tableName = chartsUtilService.getSqlStr(token, id);
+        if ("".equals(tableName)){
+            return new RepEntity(RepCode.NoAuthority);
+        }
+
+        int baseId = getChartsDataUtilService.getBaseId(id);
+        System.out.println("切换数据库"+String.valueOf(baseId));
+        try{
+            if (!DynamicDataSourceContextHolder.isContainsDataSource(String.valueOf(baseId))) {
+                //joinPoint.getSignature() :获取连接点的方法签名对象
+                System.out.println("数据源 " + String.valueOf(baseId) + " 不存在使用默认的数据源 -> ");
+            } else {
+                System.out.println("使用数据源:" + String.valueOf(baseId));
+                DynamicDataSourceContextHolder.setDataSourceType(String.valueOf(baseId));
+            }
+
+        String xColumn = pieConfigInfo.getLegendData().getColumnRename();
+        String yColumn = pieConfigInfo.getSeries().getColumnRename();
+        String xColumnType = pieConfigInfo.getLegendData().getColumnType();
+
+        String xAxisType = pieConfigInfo.getLegendData().getShowDataType();
+
+        if (xColumn == null || "".equals(xColumn) || yColumn == null || "".equals(yColumn)){
+            return new RepEntity(RepCode.nullAxis);
+        }
+
+        String yType = pieConfigInfo.getSeries().getShowDataType();
+        String yAxisType = calculationJudgeUtil.Judge(yType);
+
+
+        PieSeries series = new PieSeries();
+        List<PieSeriesMap> value = new ArrayList<PieSeriesMap>();
+        List<PieSeries> serieses = new ArrayList<PieSeries>();    //生成柱状图的系列
+        List<String> xAxisData = new ArrayList<String>();  //X轴自己用
+        List<String> xData = new ArrayList<String>();      //X轴前端用
+
+            //取筛选列表
+            List<Screen> screens = pieConfigInfo.getFilters();
+            ScreenStr scr = new ScreenStr();
+            String screen = "";               //正常筛选条件
+            String screenToColumn = "";       //跟目标列相同的筛选条件
+            String screenToColumnS = "";       //跟目标列相同的筛选条件
+            if ("".equals(screens) || screens == null || screens.size() == 0){
+                screen = "";
+            }else {
+                scr = screenUtil.screensUtil(screens, xColumn, xColumnType);
+                screen = scr.getRet();
+                screenToColumn = scr.getWithColumnRet();
+                StringBuilder sb = new StringBuilder(screenToColumn);
+                System.out.println("sb:"+sb);
+                if (screenToColumn != null && !("".equals(screenToColumn))){
+                    screenToColumnS = screenToColumn + " " + screen;               //and
+                    screenToColumn = String.valueOf(sb .replace(1, 5, "where "));
+                    screen = screenToColumn + " " + screen;         //where
+                    System.out.println("screen:" + screen);
+                } else {
+                    StringBuilder sb1 = new StringBuilder(screen);
+                    screenToColumnS = screen;
+                    screen = String.valueOf(sb1 .replace(1, 5, "where "));
+                }
+            }
+
+        //X轴
+        //判断是否为日期类型
+        if ("time".equals(xColumnType)){
+            timeReture = timeConverterUtil.timeConverter(xColumn, tableName, xAxisType, screen, 20);
+            xAxisData = timeReture.getValues();
+            chartsDataInfo.setTooMany(timeReture.isOverdose());
+            xData = timeConverterUtil.toRespons(xAxisData,xAxisType );
+            System.out.println("data:"+xAxisData);
+        }else {
+            int count = showChartsMapper.getNumForX(xColumn, tableName);
+            if (count > 20){
+                chartsDataInfo.setTooMany(true);
+            }
+            xAxisData = showChartsMapper.getXAxis(xColumn, tableName, screen, 20);
+
+        }
+        if ("".equals(xAxisData) || xAxisData == null || xAxisData.size() == 0){
+            return new RepEntity(RepCode.Null);
+        }
+        if ("week".equals(xAxisType) || "month".equals(xAxisType) || "quarter".equals(xAxisType)){
+            chartsDataInfo.setxAxis(xData);
+        }else {
+            chartsDataInfo.setxAxis(xAxisData);
+        }
+
+        //无分组时Y值
+        Iterator itX = xAxisData.iterator();
+        while (itX.hasNext()){
+            String xdata = (String)itX.next();
+            if ("".equals(xdata) || xdata == null){
+                continue;
+            }
+            double valueOne = 0;
+            String valueOnes = null;
+            PieSeriesMap pieSeriesMap = new PieSeriesMap();
+            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);
+            }
+            pieSeriesMap.setName(xdata);
+            pieSeriesMap.setValue(valueOne);
+            value.add(pieSeriesMap);
+        }
+
+        series.setName(pieConfigInfo.getSeries().getColumnName());
+        series.setValue(value);
+        serieses.add(series);
+
+        chartsDataInfo.setSerieses(serieses);
+        }catch (Exception e){
+            e.printStackTrace();
+            System.out.println("异常");
+            return new RepEntity(RepCode.erro);
+        }finally {
+            DynamicDataSourceContextHolder.clearDataSourceType();
+        }
+
+        return new RepEntity(RepCode.success, chartsDataInfo);
+    }
+
+
+}

+ 193 - 0
src/main/java/com/server/chart/ShowPopulationService.java

@@ -0,0 +1,193 @@
+package com.server.chart;
+
+import com.dao.chart.ChartsConfigMapper;
+import com.dao.chart.ShowChartsMapper;
+import com.model.bo.ChartsColumnConfig;
+import com.model.bo.Screen;
+import com.model.bo.ScreenStr;
+import com.model.pojo.RepCode;
+import com.model.pojo.RepEntity;
+import com.model.vo.configVo.PopulationInfo;
+import com.model.vo.dataVo.PopAndIndDataInfo;
+import com.config.BasesSource.DynamicDataSourceContextHolder;
+import com.util.ScreenUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.sql.SQLException;
+import java.util.*;
+
+@Service
+public class ShowPopulationService {
+    @Autowired
+    ChartsConfigMapper chartsConfigMapper;
+    @Autowired
+    ShowChartsMapper showChartsMapper;
+    @Autowired
+    GetChartsDataUtilService getChartsDataUtilService;
+    @Autowired
+    ScreenUtil screenUtil;
+    @Autowired
+    ChartsUtilService chartsUtilService;
+
+    public RepEntity showPopulation(PopulationInfo populationInfo, String token) throws SQLException {
+        if (populationInfo == null || "".equals(populationInfo)){
+            return new RepEntity(RepCode.Null);
+        }
+        PopAndIndDataInfo popAndIndDataInfo = new PopAndIndDataInfo();
+        //取表名
+        int id = populationInfo.getId();
+        //获取列配置
+        ChartsColumnConfig chartsColumn = chartsConfigMapper.getChartsColumn(id);
+        if (chartsColumn == null || "".equals(chartsColumn)){
+            return new RepEntity(RepCode.Null);
+        }
+        String style = chartsColumn.getChartStyle();
+        String config = chartsColumn.getChartConfig();
+        popAndIndDataInfo.setChartsColumnConfig(chartsColumn);
+
+        String tableName = chartsUtilService.getSqlStr(token, id);
+        if ("".equals(tableName)){
+            return new RepEntity(RepCode.NoAuthority);
+        }
+
+        int baseId = getChartsDataUtilService.getBaseId(id);
+        System.out.println("切换数据库"+String.valueOf(baseId));
+
+        try{
+            if (!DynamicDataSourceContextHolder.isContainsDataSource(String.valueOf(baseId))) {
+                //joinPoint.getSignature() :获取连接点的方法签名对象
+                System.out.println("数据源 " + String.valueOf(baseId) + " 不存在使用默认的数据源 -> ");
+            } else {
+                System.out.println("使用数据源:" + String.valueOf(baseId));
+                DynamicDataSourceContextHolder.setDataSourceType(String.valueOf(baseId));
+            }
+            List<String> groupByList = populationInfo.getGroupByList();  //分组
+
+        //取目标列和分析运算符
+            String columnName = populationInfo.getColumnName();
+            List<String> operators = populationInfo.getOperatorList();
+            Map<String, Double> targetData = new HashMap<>();  //存放结果集
+            Double value = null;                 //MAP的值
+
+            //取筛选列表
+            List<Screen> screens = populationInfo.getFilters();
+            String screen = "";
+            String screenStr = "";
+            ScreenStr str = new ScreenStr();
+            if ("".equals(screens) || screens == null || screens.size() == 0){
+                screen = "";
+                screenStr = "";
+            }else {
+                str = screenUtil.screensUtil(screens, "", "");
+                screen = str.getRet();
+                StringBuilder sb = new StringBuilder(screen);
+                screenStr = String.valueOf(sb .replace(1, 5, "where "));
+            }
+
+        //无分组
+        if (groupByList.size() == 0) {
+            Iterator operatorsList = operators.iterator();
+            while (operatorsList.hasNext()) {
+                String operator = String.valueOf(operatorsList.next()).toUpperCase();
+                if ("75TH".equals(operator)) {
+                    String calculation = "MEDIAN";
+                    Double median = showChartsMapper.getColumnDev(tableName, columnName, calculation, screenStr);
+                    calculation = "MAX";
+                    Double max = showChartsMapper.getColumnDev(tableName, columnName, calculation, screenStr);
+                    value = showChartsMapper.getValue(tableName, columnName, calculation, median, max);
+                } else if ("25TH".equals(operator)) {
+                    String calculation = "MEDIAN";
+                    Double median = showChartsMapper.getColumnDev(tableName, columnName, calculation, screen);
+                    calculation = "MIN";
+                    Double min = showChartsMapper.getColumnDev(tableName, columnName, calculation, screenStr);
+                    value = showChartsMapper.getValue(tableName, columnName, calculation, min, median);
+                } else if ("PERCENT".equals(operator)) {
+                    value = 1.00;
+                } else {
+                    value = showChartsMapper.getColumnDev(tableName, columnName, operator, screenStr);
+                }
+                targetData.put(operator, value);
+            }
+            popAndIndDataInfo.setValueList(targetData);
+            return new RepEntity(RepCode.success, popAndIndDataInfo);
+            //有分组
+        }else {
+            String listOne = groupByList.get(0);
+
+            Iterator operatorsList = operators.iterator();
+            //获取常规运算列
+            List<String> operatorColumn = new ArrayList<>();
+            //获取25th,75th算符
+            List<String> operatorOther = new ArrayList<>();
+
+            String next = null;
+            while (operatorsList.hasNext()){
+                next = String.valueOf(operatorsList.next()).toLowerCase();
+
+                System.out.println("next:"+next);
+                //计算25th,75th,和百分比
+                if (next.toUpperCase() == "PERCENT" || "PERCENT".equals(next.toUpperCase())){
+                    System.out.println("走这里了吗?"+ next);
+                    String op = "count(" + columnName + ")/(select count(1) from " + tableName + ") "+ next;
+                    operatorColumn.add(op);
+                }else if ("25th".equals(next) || "75th".equals(next)){
+                    operatorOther.add(next);
+                }else {
+                    String op = next + "(" + columnName + ") as " + next.toLowerCase();
+                    operatorColumn.add(op);
+                }
+            }
+
+            String groups = groupByList.toString();
+            String groupBy = getString(groups);
+
+            String oprs = operatorColumn.toString();
+            String opr = getString(oprs);
+
+            //存放正常值
+            List<LinkedHashMap<String, Object>> valueList = new ArrayList<>();
+
+            //存放25th,75th
+            List<LinkedHashMap<String, Object>> valueListTh = new ArrayList<>();
+
+            Iterator thList = operatorOther.iterator();
+            while (thList.hasNext()){
+                String oprTh = (String) thList.next();
+                String fOpertion = "";
+                String aOpertion = "";
+                if ("25th".equals(oprTh)){
+                    fOpertion = "min";
+                    aOpertion = "median";
+                }else if ("75th".equals(oprTh)) {
+                    fOpertion = "median";
+                    aOpertion = "max";
+                }
+                valueListTh = showChartsMapper.getGroupByValueTh(groupBy, columnName, tableName, listOne, screen, fOpertion, aOpertion);
+
+            }
+
+            valueList = showChartsMapper.getGroupByValue(groupBy, opr, tableName, listOne, screenStr);
+            valueList.addAll(valueListTh);
+            System.out.println("valueList:"+ valueList);
+            popAndIndDataInfo.setValueList(valueList);
+            return new RepEntity(RepCode.success, popAndIndDataInfo);
+        }
+        }catch (Exception e){
+            e.printStackTrace();
+            System.out.println("异常");
+            return new RepEntity(RepCode.erro);
+        }finally {
+            DynamicDataSourceContextHolder.clearDataSourceType();
+        }
+    }
+
+    public String getString(String str){
+        String st1 = "[";
+        String st2 = "]";
+        String strA = str.replace(st1, "");
+        String strB = strA.replace(st2, "");
+        System.out.println("str:"+ strB);
+        return strB;
+    }
+}

+ 257 - 0
src/main/java/com/server/chart/ShowScatterService.java

@@ -0,0 +1,257 @@
+package com.server.chart;
+
+import com.dao.chart.ChartsConfigMapper;
+import com.dao.chart.ShowChartsMapper;
+import com.model.bo.*;
+import com.model.pojo.RepCode;
+import com.model.pojo.RepEntity;
+import com.model.vo.configVo.ScatterConfigInfo;
+import com.model.vo.dataVo.ChartsDataInfo;
+import com.config.BasesSource.DynamicDataSourceContextHolder;
+import com.util.CalculationJudgeUtil;
+import com.util.ScreenUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+@Service
+public class ShowScatterService {
+    @Autowired
+    ShowChartsMapper showChartsMapper;
+    @Autowired
+    TimeConverterUtil timeConverterUtil;
+    @Autowired
+    CalculationJudgeUtil calculationJudgeUtil;
+    @Autowired
+    ChartsConfigMapper chartsConfigMapper;
+    @Autowired
+    GetChartsDataUtilService getChartsDataUtilService;
+    @Autowired
+    ScreenUtil screenUtil;
+    @Autowired
+    ChartsUtilService chartsUtilService;
+
+    /*
+    Line数据展示
+     */
+    public RepEntity showScatter(ScatterConfigInfo scatterConfigInfo, String token){
+        ChartsDataInfo chartsDataInfo = new ChartsDataInfo();
+        TimeReture timeReture = new TimeReture();
+        if (scatterConfigInfo == null || "".equals(scatterConfigInfo)){
+            return new RepEntity(RepCode.Null);
+        }
+        int id = scatterConfigInfo.getId();
+        //获取列配置
+        ChartsColumnConfig chartsColumn = chartsConfigMapper.getChartsColumn(id);
+        if (chartsColumn == null || "".equals(chartsColumn)){
+            return new RepEntity(RepCode.Null);
+        }
+        String style = chartsColumn.getChartStyle();
+        String config = chartsColumn.getChartConfig();
+        chartsDataInfo.setChartsColumnConfig(chartsColumn);
+
+        String tableName = chartsUtilService.getSqlStr(token, id);
+        if ("".equals(tableName)){
+            return new RepEntity(RepCode.NoAuthority);
+        }
+
+        int baseId = getChartsDataUtilService.getBaseId(id);
+        System.out.println("切换数据库"+String.valueOf(baseId));
+
+        try{
+            if (!DynamicDataSourceContextHolder.isContainsDataSource(String.valueOf(baseId))) {
+                //joinPoint.getSignature() :获取连接点的方法签名对象
+                System.out.println("数据源 " + String.valueOf(baseId) + " 不存在使用默认的数据源 -> ");
+            } else {
+                System.out.println("使用数据源:" + String.valueOf(baseId));
+                DynamicDataSourceContextHolder.setDataSourceType(String.valueOf(baseId));
+            }
+
+        String xColumn = scatterConfigInfo.getxAxis().getColumnRename();
+        String yColumn = scatterConfigInfo.getyAxis().getColumnRename();
+        String xColumnType = scatterConfigInfo.getxAxis().getColumnType();
+
+        String xAxisType = scatterConfigInfo.getxAxis().getShowDataType();
+        List<String> groupBy = scatterConfigInfo.getGroups();
+
+        if (xColumn == null || "".equals(xColumn) || yColumn == null || "".equals(yColumn)){
+            return new RepEntity(RepCode.nullAxis);
+        }
+
+        String yType = scatterConfigInfo.getyAxis().getShowDataType();
+        String yAxisType = calculationJudgeUtil.Judge(yType);
+
+
+
+        List<LineSeriesMap> value = new ArrayList<LineSeriesMap>();
+        List<LineSeries> serieses = new ArrayList<LineSeries>();    //生成柱状图的系列
+        List<String> xAxisData = new ArrayList<String>();  //X轴自己用
+        List<String> xData = new ArrayList<String>();      //X轴前端用
+
+            //取筛选列表
+            List<Screen> screens = scatterConfigInfo.getFilters();
+            ScreenStr scr = new ScreenStr();
+            String screen = "";               //正常筛选条件
+            String screenToColumn = "";       //跟目标列相同的筛选条件
+            String screenToColumnS = "";       //跟目标列相同的筛选条件
+            if ("".equals(screens) || screens == null || screens.size() == 0){
+                screen = "";
+            }else {
+                scr = screenUtil.screensUtil(screens, xColumn, xColumnType);
+                screen = scr.getRet();
+                screenToColumn = scr.getWithColumnRet();
+                StringBuilder sb = new StringBuilder(screenToColumn);
+                System.out.println("sb:"+sb);
+                if (screenToColumn != null && !("".equals(screenToColumn))){
+                    screenToColumnS = screenToColumn + " " + screen;               //and
+                    screenToColumn = String.valueOf(sb .replace(1, 5, "where "));
+                    screen = screenToColumn + " " + screen;         //where
+                    System.out.println("screen:" + screen);
+                } else {
+                    StringBuilder sb1 = new StringBuilder(screen);
+                    screenToColumnS = screen;
+                    screen = String.valueOf(sb1 .replace(1, 5, "where "));
+                }
+            }
+
+        //X轴
+        //判断是否为日期类型
+        if ("time".equals(xColumnType)){
+            timeReture = timeConverterUtil.timeConverter(xColumn, tableName, xAxisType, screen, 50);
+            xAxisData = timeReture.getValues();
+            chartsDataInfo.setTooMany(timeReture.isOverdose());
+            xData = timeConverterUtil.toRespons(xAxisData,xAxisType );
+            System.out.println("data:"+xAxisData);
+        }else {
+                int count = showChartsMapper.getNumForX(xColumn, tableName);
+                if (count > 50){
+                    chartsDataInfo.setTooMany(true);
+                }
+            xAxisData = showChartsMapper.getXAxis(xColumn, tableName, screen, 50);
+
+        }
+
+        if ("".equals(xAxisData) || xAxisData == null || xAxisData.size() == 0){
+            return new RepEntity(RepCode.Null);
+        }
+
+        //无分组时Y值
+        Iterator itX = xAxisData.iterator();
+        while (itX.hasNext()){
+            String xdata = (String)itX.next();
+            double valueOne = 0;
+            String valueOnes = null;
+            if ("time".equals(xColumnType)){
+                valueOnes = timeConverterUtil.getTimeValueConverter(yColumn, xColumn, tableName, yAxisType, xAxisType, xdata, screenToColumnS);
+            }else {
+                if (xdata == null || "".equals(xdata)){
+                    valueOnes = showChartsMapper.getValuesIsNull(yColumn, xColumn, tableName, yAxisType, screenToColumnS);
+                }else {
+                    valueOnes = showChartsMapper.getValues(yColumn, xColumn, tableName, yAxisType, xdata ,screenToColumnS);
+                }
+            }
+            if (valueOnes == null || "".equals(valueOnes)){
+                valueOne = 0;
+            }else {
+                valueOne = Double.parseDouble(valueOnes);
+            }
+            LineSeriesMap lineSeriesMap = new LineSeriesMap();
+            lineSeriesMap.setValue(valueOne);
+            lineSeriesMap.setDate(xdata);
+            value.add(lineSeriesMap);
+        }
+        LineSeries series = new LineSeries();
+//        series.setName(yColumn);
+        series.setMdata(value);
+
+        serieses.add(series);
+        System.out.println(serieses);
+
+        //有分组
+        if (groupBy.size() != 0){
+            serieses.remove(0);
+            Iterator itGroup = groupBy.iterator();  //分组数
+
+            //便利分组
+            while (itGroup.hasNext()){
+                String groupByName = (String) itGroup.next();
+                int counts = showChartsMapper.getGroupsCount(groupByName,tableName, screenToColumnS);
+                if (counts > 50){
+                    chartsDataInfo.setTooMany(true);
+                }
+                List<String> groupsData = showChartsMapper.getGroups(groupByName,tableName, screenToColumnS, 50); //查询每个分组系列
+                System.out.println("groupdata:"+ groupsData.toString());
+                Iterator itGroupsData = groupsData.iterator();
+
+                //每个分组得到得每个系列
+                while(itGroupsData.hasNext()){
+                    String groupsName = (String)itGroupsData.next();
+                    if (groupsName == null || "".equals(groupsName)){
+                        continue;
+                    }
+
+                    List<LineSeriesMap> groupsValue = new ArrayList<LineSeriesMap>();
+                    Iterator itXAxisData = xAxisData.iterator();
+
+                    //每个系列对应X轴上的值
+                    while (itXAxisData.hasNext()){
+                        String xAxisDataOne = (String) itXAxisData.next();
+                        double groupsValueOne = 0;
+                        String groupsValueOnes = null;
+                        if ("time".equals(xColumnType)){
+                            groupsValueOnes = timeConverterUtil.getGroupTimeConverter(yAxisType, yColumn, tableName, groupByName, xAxisType,
+                                    groupsName, xColumn, xAxisDataOne,screenToColumnS);
+                        }else {
+                            String xColumnKey = "";
+                            if (xAxisDataOne == null || "".equals(xAxisDataOne)){
+                                xColumnKey  = xColumn + " is null";
+                            }else
+                            {
+                                xColumnKey = xColumn + " = '" +xAxisDataOne +"'";
+                            }
+
+                            String groupByKey = "";
+                            if (groupsName == null || "".equals(groupsName)){
+                                groupByKey = groupByName +" is null";
+                            }else {
+                                groupByKey = groupByName + " = '" +groupsName +"'";
+                            }
+                            groupsValueOnes = showChartsMapper.getGroupsValue(yAxisType, yColumn, tableName, groupByKey, xColumnKey ,screenToColumnS);
+                        }
+                        if ("".equals(groupsValueOnes) || groupsValueOnes == null){
+                            groupsValueOne = 0;
+                        }else{
+                            groupsValueOne = Double.parseDouble(groupsValueOnes);
+                        }
+                        LineSeriesMap lineSeriesMap = new LineSeriesMap();
+                        lineSeriesMap.setDate(xAxisDataOne);
+                        lineSeriesMap.setValue(groupsValueOne);
+                        groupsValue.add(lineSeriesMap);
+                    }
+
+                    LineSeries lineSeries = new LineSeries();
+                    lineSeries.setMdata(groupsValue);
+                    lineSeries.setName(groupsName);
+                    serieses.add(lineSeries);
+                }
+                System.out.println(serieses);
+            }
+        }
+
+        chartsDataInfo.setSerieses(serieses);
+        }catch (Exception e){
+            e.printStackTrace();
+            System.out.println("异常");
+            return new RepEntity(RepCode.erro);
+        }finally {
+            DynamicDataSourceContextHolder.clearDataSourceType();
+        }
+
+        return new RepEntity(RepCode.success, chartsDataInfo);
+    }
+
+
+}

+ 203 - 0
src/main/java/com/server/chart/TimeConverterUtil.java

@@ -0,0 +1,203 @@
+package com.server.chart;
+
+import com.dao.chart.ShowChartsMapper;
+import com.model.bo.TimeReture;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/*
+处理时间分段
+ */
+@Service
+public class TimeConverterUtil {
+    @Autowired
+    ShowChartsMapper showChartsMapper;
+
+    //x轴时间类型
+    public TimeReture timeConverter(String xColumnName, String tableName, String timeType, String screen, int counts){
+        TimeReture timeReture = new TimeReture();
+        String timeGroup = "'YYYY-MM-DD'";
+        List<String> value = new ArrayList<String>();
+        if ("year".equals(timeType)){
+            timeGroup = "'YYYY'";
+            value = showChartsMapper.getTimeDate(xColumnName, tableName, timeGroup, screen, counts);
+            timeReture.setValues(value);
+        }else if ("month".equals(timeType)){
+            timeGroup = "'YYYY-MM'";
+            int count = showChartsMapper.getTimeDateConunt(xColumnName, tableName, timeGroup, screen);
+            if (count > counts){
+                timeReture.setOverdose(false);
+            }else {
+                timeReture.setOverdose(true);
+            }
+            value = showChartsMapper.getTimeDate(xColumnName, tableName, timeGroup, screen, counts);
+            timeReture.setValues(value);
+        }else if ("day".equals(timeType) || "".equals(timeType)){
+            int count = showChartsMapper.getTimeDateConunt(xColumnName, tableName, timeGroup, screen);
+            if (count > counts){
+                timeReture.setOverdose(false);
+            }else {
+                timeReture.setOverdose(true);
+            }
+            value = showChartsMapper.getTimeDate(xColumnName, tableName, timeGroup, screen, counts);
+            timeReture.setValues(value);
+        }else if ("quarter".equals(timeType)){
+            timeGroup = "'YYYY-Q'";
+            int count = showChartsMapper.getTimeDateConunt(xColumnName, tableName, timeGroup, screen);
+            if (count > counts){
+                timeReture.setOverdose(false);
+            }else {
+                timeReture.setOverdose(true);
+            }
+            value = showChartsMapper.getTimeDate(xColumnName, tableName, timeGroup, screen, counts);
+            timeReture.setValues(value);
+        }else if ("week".equals(timeType)){
+            timeGroup = "'YYYY-WW'";
+            int count = showChartsMapper.getTimeDateConunt(xColumnName, tableName, timeGroup, screen);
+            if (count > counts){
+                timeReture.setOverdose(false);
+            }else {
+                timeReture.setOverdose(true);
+            }
+            value = showChartsMapper.getTimeDate(xColumnName, tableName, timeGroup, screen, counts);
+            timeReture.setValues(value);
+        }else if ("halfYear".equals(timeType)){
+            int count = showChartsMapper.getTimeDateConunt(xColumnName, tableName, timeGroup, screen);
+            if (count > counts){
+                timeReture.setOverdose(false);
+            }else {
+                timeReture.setOverdose(true);
+            }
+            value = showChartsMapper.getTimeYear(xColumnName, tableName, screen);
+            timeReture.setValues(value);
+        }else {
+            timeGroup = "'YYYY-MM-DD'";
+            int count = showChartsMapper.getTimeDateConunt(xColumnName, tableName, timeGroup, screen);
+            if (count > counts){
+                timeReture.setOverdose(false);
+            }else {
+                timeReture.setOverdose(true);
+            }
+            value = showChartsMapper.getTimeDate(xColumnName, tableName, timeGroup, screen,counts);
+            timeReture.setValues(value);
+        }
+        return timeReture;
+    }
+
+    //x轴时间类型包装
+    public List<String> toRespons(List<String> dataList, String timeType){
+        List<String> value = new ArrayList<String>();
+        String dataLast = null;
+        Iterator isDataList = dataList.iterator();
+        while (isDataList.hasNext()){
+            String data = (String) isDataList.next();
+            if (data == null || "".equals(data)){
+                continue;
+            }
+            if ("quarter".equals(timeType)){
+                String[] str = data.split("-");
+                dataLast = str[0] + "-Q" + str[1];
+            }else if ("month".equals(timeType)){
+                String[] str = data.split("-");
+                dataLast = str[0] + "-M" + str[1];
+            }else if ("week".equals(timeType)){
+                String[] str = data.split("-");
+                dataLast = str[0] + "-W" + str[1];
+            }
+            value.add(dataLast);
+        }
+        return value;
+    }
+
+    //无分组时间值
+    public String getTimeValueConverter(String yColumn, String xColumn, String tableName, String dataType, String timeType, String xdata, String screen){
+
+        String timeGroup = "'YYYY-MM-DD'";
+        String value = null;
+        //判断时间类型
+        if (xdata == null || "".equals(xdata)){
+            value = showChartsMapper.getTimeIsNull(dataType, yColumn, tableName, xColumn, screen);
+        }else {
+            if ("halfYear".equals(timeType)) {
+                String[] str = xdata.split("-");
+                if ("H1".equals(str[1])) {
+                    String firstIndex = str[0] + "-01";
+                    String afterIndex = str[0] + "-06";
+                    value = showChartsMapper.getTimeValueYear(dataType, yColumn, tableName, xColumn, firstIndex, afterIndex, screen);
+                } else {
+                    String firstIndex = str[0] + "-07";
+                    String afterIndex = str[0] + "-12";
+                    value = showChartsMapper.getTimeValueYear(dataType, yColumn, tableName, xColumn, firstIndex, afterIndex, screen);
+                }
+            } else if ("year".equals(timeType)) {
+                timeGroup = "'YYYY'";
+                value = showChartsMapper.getTimeValue(dataType, yColumn, tableName, xColumn, timeGroup, xdata, screen);
+            } else if ("month".equals(timeType)) {
+                timeGroup = "'YYYY-MM'";
+                value = showChartsMapper.getTimeValue(dataType, yColumn, tableName, xColumn, timeGroup, xdata, screen);
+            } else if ("day".equals(timeType) || "".equals(timeType)) {
+                value = showChartsMapper.getTimeValue(dataType, yColumn, tableName, xColumn, timeGroup, xdata, screen);
+            } else if ("quarter".equals(timeType)) {
+                timeGroup = "'YYYY-Q'";
+                value = showChartsMapper.getTimeValue(dataType, yColumn, tableName, xColumn, timeGroup, xdata, screen);
+            } else if ("week".equals(timeType)) {
+                timeGroup = "'YYYY-WW'";
+                value = showChartsMapper.getTimeValue(dataType, yColumn, tableName, xColumn, timeGroup, xdata, screen);
+            } else {
+                value = showChartsMapper.getTimeValue(dataType, yColumn, tableName, xColumn, timeGroup, xdata, screen);
+            }
+        }
+        return value;
+    }
+
+    //有分组时间类型值处理
+    public String getGroupTimeConverter(String dataType, String yColumn, String tableName, String groupByName, String timeType,
+                                        String groupsName, String xColumn, String xAxisDataOne, String screen){
+        String timeGroup = "'YYYY-MM-DD'";
+        String value = null;
+        if(groupsName == null || "".equals(groupsName)){
+            value = showChartsMapper.getGroupsValueTimeIsNull(dataType, yColumn, tableName, groupByName, groupsName, xColumn,
+                    timeGroup, xAxisDataOne, screen);
+        }else {
+            if ("year".equals(timeType)) {
+                timeGroup = "'YYYY'";
+                value = showChartsMapper.getGroupsValueTime(dataType, yColumn, tableName, groupByName, groupsName, xColumn,
+                        timeGroup, xAxisDataOne);
+            } else if ("month".equals(timeType)) {
+                timeGroup = "'YYYY-MM'";
+                value = showChartsMapper.getGroupsValueTime(dataType, yColumn, tableName, groupByName, groupsName, xColumn,
+                        timeGroup, xAxisDataOne);
+            } else if ("quarter".equals(timeType)) {
+                timeGroup = "'YYYY-Q'";
+                value = showChartsMapper.getGroupsValueTime(dataType, yColumn, tableName, groupByName, groupsName, xColumn,
+                        timeGroup, xAxisDataOne);
+            } else if ("week".equals(timeType)) {
+                timeGroup = "'YYYY-WW'";
+                value = showChartsMapper.getGroupsValueTime(dataType, yColumn, tableName, groupByName, groupsName, xColumn,
+                        timeGroup, xAxisDataOne);
+            } else if ("day".equals(timeType) || "".equals(timeType)) {
+                value = showChartsMapper.getGroupsValueTime(dataType, yColumn, tableName, groupByName, groupsName, xColumn,
+                        timeGroup, xAxisDataOne);
+            } else if ("halfYear".equals(timeType)) {
+                String[] str = xAxisDataOne.split("-");
+                if ("上半年".equals(str[1])) {
+                    String firstIndex = str[0] + "-01";
+                    String afterIndex = str[0] + "-06";
+                    value = showChartsMapper.getTimeValueHalfYear(dataType, yColumn, tableName, xColumn, firstIndex, afterIndex, groupByName, groupsName, screen);
+                } else {
+                    String firstIndex = str[0] + "-07";
+                    String afterIndex = str[0] + "-12";
+                    value = showChartsMapper.getTimeValueHalfYear(dataType, yColumn, tableName, xColumn, firstIndex, afterIndex, groupByName, groupsName, screen);
+                }
+            } else {
+                value = showChartsMapper.getGroupsValueTime(dataType, yColumn, tableName, groupByName, groupsName, xColumn,
+                        timeGroup, xAxisDataOne);
+            }
+        }
+        return value;
+    }
+}

+ 124 - 0
src/main/java/com/server/dashboard/DashboardsService.java

@@ -0,0 +1,124 @@
+package com.server.dashboard;
+
+import com.dao.dashboard.DashboardsMapper;
+import com.dao.user.UserMapper;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.github.pagehelper.PageInfo;
+import com.model.po.Dashboards;
+import com.model.pojo.RepCode;
+import com.model.pojo.RepEntity;
+import com.model.pojo.TestPage;
+import com.model.vo.configVo.ChangeOrderInfo;
+import com.model.vo.configVo.DashboardsInfo;
+import com.server.chart.ChartsUtilService;
+import com.util.GetTokenData;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class DashboardsService {
+    @Autowired
+    DashboardsMapper dashboardsMapper;
+    @Autowired
+    ObjectMapper objectMapper;
+    @Autowired
+    GetTokenData getTokenData;
+    @Autowired
+    UserMapper userMapper;
+    @Autowired
+    ChartsUtilService chartsUtilService;
+
+    /*
+    保存看板
+     */
+    public RepEntity setDashboards(String token, DashboardsInfo dashboardsInfo){
+        Map<String, String> stringMap = getTokenData.getTokenData(token);
+        int userId = Integer.parseInt(stringMap.get("id"));
+        String name = stringMap.get("name");
+        Dashboards dashboards = new Dashboards();
+        BeanUtils.copyProperties(dashboardsInfo,dashboards);
+        dashboards.setCreateBy(name);
+        dashboards.setCreateId(userId);
+        dashboardsMapper.setDashboards(dashboards);
+        int id = dashboards.getId();
+        return new RepEntity(RepCode.success, id);
+    }
+
+    /*
+    更新看板
+     */
+    public RepEntity updateDashboards(String token, DashboardsInfo dashboardsInfo) {
+        Map<String, String> stringMap = getTokenData.getTokenData(token);
+        int userId = Integer.parseInt(stringMap.get("id"));
+        String name = stringMap.get("name");
+        int createId = dashboardsMapper.getCreateIdById(dashboardsInfo.getId());
+        if (userId != createId){
+            return new RepEntity(RepCode.NoAuthority);
+        }
+        Dashboards dashboards = new Dashboards();
+        BeanUtils.copyProperties(dashboardsInfo, dashboards);
+        dashboards.setCreateBy(name);
+        dashboards.setCreateId(userId);
+
+        dashboardsMapper.updateDashboards(dashboards);
+        return new RepEntity(RepCode.success);
+    }
+
+    /*
+    删除看板
+     */
+    public RepEntity delDashboards(String token, List<Integer> idList){
+        Map<String, String> stringMap = getTokenData.getTokenData(token);
+        int userId = Integer.parseInt(stringMap.get("id"));
+        Iterator isList = idList.iterator();
+        while (isList.hasNext()){
+            int id = (int) isList.next();
+            int createId = dashboardsMapper.getCreateIdById(id);
+            if (userId != createId){
+                return new RepEntity(RepCode.NoAuthority);
+            }
+        }
+        dashboardsMapper.delDashboards(idList);
+        return new RepEntity(RepCode.success);
+    }
+
+    /*
+    查看看板
+     */
+    public RepEntity getListDashboards(String token, TestPage testPage){
+        Map<String, String> stringMap = getTokenData.getTokenData(token);
+        int id = Integer.parseInt(stringMap.get("id"));
+        List<Dashboards> getListDashboards = dashboardsMapper.getListDashboards(id, testPage.enablePaging());
+        PageInfo<Dashboards> pageInfo = new PageInfo<>(getListDashboards);
+        return new RepEntity(RepCode.success, pageInfo);
+    }
+
+    /*
+    查看单个看板
+     */
+    public RepEntity getDashboards(String token, int id){
+        Map<String, String> stringMap = getTokenData.getTokenData(token);
+        int userId = Integer.parseInt(stringMap.get("id"));
+        return new RepEntity(RepCode.success, dashboardsMapper.getDashboards(userId, id));
+    }
+
+    /*
+    转交看板
+     */
+    public RepEntity changeDashOrder(String token, ChangeOrderInfo changeOrderInfo){
+        Map<String, String> stringMap = getTokenData.getTokenData(token);
+        int userId = Integer.parseInt(stringMap.get("id"));
+        int createId = dashboardsMapper.getCreateIdById(changeOrderInfo.getId());
+        if (userId != createId){
+            return new RepEntity(RepCode.NoAuthority);
+        }
+        String name = userMapper.getName(changeOrderInfo.getUserId());
+        dashboardsMapper.changeDashOrder(name, changeOrderInfo.getUserId(), changeOrderInfo.getId());
+        return new RepEntity(RepCode.success);
+    }
+}

+ 143 - 0
src/main/java/com/server/dashboard/DashboardsToChartsUtilService.java

@@ -0,0 +1,143 @@
+package com.server.dashboard;
+
+import com.dao.chart.ChartsConfigMapper;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.model.bo.Screen;
+import com.model.po.ChartsConfigToDash;
+import com.model.pojo.RepCode;
+import com.model.pojo.RepEntity;
+import com.model.vo.configVo.*;
+import com.server.chart.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.sql.SQLException;
+import java.util.List;
+
+/*
+看板中调用生成图表
+ */
+@Service
+public class DashboardsToChartsUtilService {
+    @Autowired
+    ChartsConfigMapper chartsConfigMapper;
+    @Autowired
+    ObjectMapper objectMapper;
+    @Autowired
+    ShowHistogramService showHistogramService;
+    @Autowired
+    ShowIndividualService showIndividualService;
+    @Autowired
+    ShowLineService showLineService;
+    @Autowired
+    ShowPieService showPieService;
+    @Autowired
+    ShowPopulationService showPopulationService;
+    @Autowired
+    ShowScatterService showScatterService;
+
+    public RepEntity getChartsInDash(ChartsToDashInfo chartsToDashInfo, String token) throws SQLException {
+        int chartId = chartsToDashInfo.getDashCreateId();
+        ChartsConfigToDash chartsConfigToDash = chartsConfigMapper.getChartConfigToDash(chartId);
+        if (chartsConfigToDash == null || "".equals(chartsConfigToDash)){
+            return new RepEntity(RepCode.Null);
+        }
+        String chartType = chartsConfigToDash.getChartType();
+        String fetchConfig = chartsConfigToDash.getFetchConfig();
+        if (fetchConfig == null || "".equals(fetchConfig)){
+            return new RepEntity(RepCode.Null);
+        }
+        List<Screen> filters = chartsToDashInfo.getFilters();
+        if ("Pie".equals(chartType)){
+            return getPie(fetchConfig, token, filters);
+
+        }else if ("Histogram".equals(chartType)){
+            return getHistogram(fetchConfig, token, filters);
+
+        }else if ("Line".equals(chartType)){
+            return getLine(fetchConfig, token, filters);
+
+        }else if ("population".equals(chartType)){
+            return getPopulation(fetchConfig, token, filters);
+
+        }else if ("individual".equals(chartType)){
+            return getIndividual(fetchConfig, token, filters);
+
+        }else if("scatter".equals(chartType)){
+            return getScatter(fetchConfig, token, filters);
+        }
+        return new RepEntity(RepCode.success);
+    }
+
+    public RepEntity getHistogram(String fetchConfig, String token, List<Screen> filters){
+        HistogramConfigInfo histogramConfigInfo = new HistogramConfigInfo();
+        try {
+            histogramConfigInfo = objectMapper.readValue(fetchConfig,HistogramConfigInfo.class);
+            histogramConfigInfo.setFilters(filters);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return showHistogramService.showHistogram(histogramConfigInfo, token);
+    }
+
+    public RepEntity getScatter(String fetchConfig, String token, List<Screen> filters){
+            ScatterConfigInfo scatterConfigInfo = new ScatterConfigInfo();
+            try {
+                System.out.println(fetchConfig);
+                scatterConfigInfo = objectMapper.readValue(fetchConfig,ScatterConfigInfo.class);
+                scatterConfigInfo.setFilters(filters);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            return showScatterService.showScatter(scatterConfigInfo, token);
+    }
+
+    public RepEntity getLine(String fetchConfig, String token, List<Screen> filters){
+        LineConfigInfo lineConfigInfo = new LineConfigInfo();
+        try {
+            System.out.println(fetchConfig);
+            lineConfigInfo = objectMapper.readValue(fetchConfig,LineConfigInfo.class);
+            lineConfigInfo.setFilters(filters);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return showLineService.showLine(lineConfigInfo, token);
+    }
+
+    public RepEntity getPopulation(String fetchConfig, String token, List<Screen> filters) throws SQLException {
+        PopulationInfo populationInfo = new PopulationInfo();
+        try {
+            System.out.println(fetchConfig);
+            populationInfo = objectMapper.readValue(fetchConfig,PopulationInfo.class);
+            populationInfo.setFilters(filters);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return showPopulationService.showPopulation(populationInfo, token);
+    }
+
+    public RepEntity getIndividual(String fetchConfig, String token, List<Screen> filters) throws SQLException {
+        IndividualConfigInfo individualConfigInfo = new IndividualConfigInfo();
+        try {
+            System.out.println(fetchConfig);
+            individualConfigInfo = objectMapper.readValue(fetchConfig,IndividualConfigInfo.class);
+            individualConfigInfo.setFilters(filters);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return showIndividualService.showIndividual(individualConfigInfo, token);
+    }
+
+    public RepEntity getPie(String fetchConfig, String token, List<Screen> filters){
+        PieConfigInfo pieConfigInfo = new PieConfigInfo();
+        try {
+            System.out.println(fetchConfig);
+            pieConfigInfo = objectMapper.readValue(fetchConfig,PieConfigInfo.class);
+            pieConfigInfo.setFilters(filters);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return showPieService.showPie(pieConfigInfo, token);
+    }
+
+}

+ 96 - 0
src/main/java/com/server/dataSource/ColumnScreenService.java

@@ -0,0 +1,96 @@
+package com.server.dataSource;
+
+import com.dao.chart.ChartsConfigMapper;
+import com.dao.chart.ShowChartsMapper;
+import com.model.pojo.RepCode;
+import com.model.pojo.RepEntity;
+import com.model.vo.configVo.ColumnScreenInfo;
+import com.server.chart.GetChartsDataUtilService;
+import com.server.chart.ChartsUtilService;
+import com.config.BasesSource.DynamicDataSourceContextHolder;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+public class ColumnScreenService {
+    @Autowired
+    ShowChartsMapper showChartsMapper;
+    @Autowired
+    GetChartsDataUtilService getChartsDataUtilService;
+    @Autowired
+    ChartsConfigMapper chartsConfigMapper;
+    @Autowired
+    ChartsUtilService chartsUtilService;
+
+    public RepEntity getScreenData(ColumnScreenInfo columnScreenInfo, String token){
+        //取表名
+        int id = columnScreenInfo.getId();
+        String tableName = chartsUtilService.getSqlStr(token, id);
+        if ("".equals(tableName)){
+            return new RepEntity(RepCode.NoAuthority);
+        }
+
+        List<Object> data = new ArrayList<>();
+
+        int baseId = getChartsDataUtilService.getBaseId(id);
+        System.out.println("切换数据库"+String.valueOf(baseId));
+
+        try{
+            if (!DynamicDataSourceContextHolder.isContainsDataSource(String.valueOf(baseId))) {
+                //joinPoint.getSignature() :获取连接点的方法签名对象
+                System.out.println("数据源 " + String.valueOf(baseId) + " 不存在使用默认的数据源 -> ");
+            } else {
+                System.out.println("使用数据源:" + String.valueOf(baseId));
+                DynamicDataSourceContextHolder.setDataSourceType(String.valueOf(baseId));
+            }
+            data =  showChartsMapper.getScreenData(columnScreenInfo.getColumnName(), tableName);
+        }catch (Exception e){
+            e.printStackTrace();
+            System.out.println("异常");
+            return new RepEntity(RepCode.erro);
+        }finally {
+            DynamicDataSourceContextHolder.clearDataSourceType();
+        }
+        return new RepEntity(RepCode.success, data);
+    }
+
+    /*
+    通过数据源ID获取列的值
+     */
+    public RepEntity getScreenByBaseId(ColumnScreenInfo columnScreenInfo, String token){
+        //取表名
+        int connectId = columnScreenInfo.getId();
+        String tableName = chartsConfigMapper.getTableNameByBase(connectId);
+        if (tableName == null || "".equals(tableName)){
+            return new RepEntity(RepCode.nullTableName);
+        }else {
+            tableName = "(" + tableName +")";
+        }
+
+        List<Object> data = new ArrayList<>();
+
+        int baseId =  getChartsDataUtilService.getBaseIdByConnect(connectId);
+        System.out.println("切换数据库"+String.valueOf(baseId));
+
+        try{
+            if (!DynamicDataSourceContextHolder.isContainsDataSource(String.valueOf(baseId))) {
+                //joinPoint.getSignature() :获取连接点的方法签名对象
+                System.out.println("数据源 " + String.valueOf(baseId) + " 不存在使用默认的数据源 -> ");
+            } else {
+                System.out.println("使用数据源:" + String.valueOf(baseId));
+                DynamicDataSourceContextHolder.setDataSourceType(String.valueOf(baseId));
+            }
+            data =  showChartsMapper.getScreenData(columnScreenInfo.getColumnName(), tableName);
+        }catch (Exception e){
+            e.printStackTrace();
+            System.out.println("异常");
+            return new RepEntity(RepCode.erro);
+        }finally {
+            DynamicDataSourceContextHolder.clearDataSourceType();
+        }
+        return new RepEntity(RepCode.success, data);
+    }
+}

+ 206 - 0
src/main/java/com/server/dataSource/DataBasesService.java

@@ -0,0 +1,206 @@
+package com.server.dataSource;
+
+import com.dao.dataSource.DataConnectorMapper;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.type.CollectionType;
+import com.github.pagehelper.PageInfo;
+import com.model.po.ColumnToShow;
+import com.model.po.DataConnector;
+import com.model.po.Databases;
+import com.model.pojo.RepCode;
+import com.model.pojo.RepEntity;
+import com.model.pojo.TestPage;
+import com.model.vo.configVo.ColumnRenameInfo;
+import com.model.vo.configVo.DatabasesInfo;
+import com.server.chart.GetChartsDataUtilService;
+import com.config.BasesSource.DynamicDataSource;
+import com.config.BasesSource.DynamicDataSourceContextHolder;
+import com.config.BasesSource.DynamicDataSourceRegister;
+import com.util.ContextUtil;
+import com.util.GetTokenData;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+import java.util.*;
+
+@Service
+public class DataBasesService {
+    @Autowired
+    DataConnectorMapper dataConnectorMapper;
+    @Autowired
+    ObjectMapper objectMapper;
+    @Autowired
+    private DynamicDataSourceRegister dataSourceRegister;
+    @Autowired
+    GetChartsDataUtilService getChartsDataUtilService;
+    @Autowired
+    GetTokenData getTokenData;
+    /*
+   保存数据库连接
+    */
+
+    public RepEntity inputDatabases(DatabasesInfo databasesInfo){
+        if (databasesInfo == null || "".equals(databasesInfo)){
+            return new RepEntity(RepCode.Null);
+        }
+        Databases databases = new Databases();
+        BeanUtils.copyProperties(databasesInfo, databases);
+        String note = databases.getNote();
+        if (note == null || "".equals(note)){
+            note = "";
+            databases.setNote(note);
+        }
+        dataConnectorMapper.inputDataBases(databases);
+        int id = databases.getId();
+
+        databasesInfo.setId(id);
+        //添加数据源可切换
+        addDataSource(databasesInfo);
+
+        return new RepEntity(RepCode.success,id);
+    }
+
+    /*
+   查看数据库配置列表
+    */
+    public RepEntity getListDatabases(TestPage testPage){
+        List<Databases> databasesList = dataConnectorMapper.getDatabasesList(testPage.enablePaging());
+        List<Databases> databases = new ArrayList<>();
+        Iterator isList = databasesList.iterator();
+        while (isList.hasNext()){
+            Databases databases1 = (Databases) isList.next();
+            databases1.setPassWord("");
+            databases.add(databases1);
+        }
+        PageInfo<Databases> pageInfo = new PageInfo<>(databases);
+        return new RepEntity(RepCode.success, pageInfo);
+    }
+
+    /*
+    删除数据库配置
+     */
+    public RepEntity delDatabases(List<Integer> idList){
+        System.out.println(idList);
+        dataConnectorMapper.deleteDatabases(idList);
+        return new RepEntity(RepCode.success);
+    }
+
+    /*
+    修改数据库配置
+     */
+    public RepEntity updatabases(DatabasesInfo databasesInfo){
+        Databases databases = new Databases();
+        BeanUtils.copyProperties(databasesInfo, databases);
+        System.out.println(databases);
+        if (databases.getPassWord() == null || "".equals(databases.getPassWord())){
+            databases.setPassWord(null);
+        }
+        dataConnectorMapper.updatabases(databases);
+        DatabasesInfo databasesInfo1 = dataConnectorMapper.getDatabases(databasesInfo.getId());
+        addDataSource(databasesInfo1);
+        return new RepEntity(RepCode.success);
+    }
+
+    /*
+    查询列数据
+     */
+    public RepEntity getColumnData(int id){
+        DataConnector dataConnector = new DataConnector();
+        dataConnector = dataConnectorMapper.getColumnData(id);
+        if (dataConnector == null || "".equals(dataConnector)){
+            return new RepEntity(RepCode.Null);
+        }
+        String columnData = dataConnector.getColumnConfig();
+
+        List<ColumnRenameInfo> configList = new ArrayList<>();
+        if (columnData != null || (!"".equals(columnData))){
+            try {
+                CollectionType javaType = objectMapper.getTypeFactory().constructCollectionType(ArrayList.class, ColumnRenameInfo.class);
+                configList =  objectMapper.readValue(columnData, javaType);   //这里不需要强制转换
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        List<ColumnToShow> toShows = new ArrayList<>();
+
+
+        for (int i = 0; i < configList.size(); i++ ){
+            ColumnRenameInfo columnRenameInfo = new ColumnRenameInfo();
+            ColumnToShow columnToShow = new ColumnToShow();
+            columnRenameInfo = configList.get(i);
+            if ("1".equals(columnRenameInfo.getIsOpen())) {
+                columnToShow.setColumnName(columnRenameInfo.getColumnName());
+                columnToShow.setColumnRaname(columnRenameInfo.getColumnLable());
+                columnToShow.setColumnType(columnRenameInfo.getColumnType());
+                columnToShow.setIsGroup(columnRenameInfo.getIsGroup());
+                columnToShow.setIsSubsection(columnRenameInfo.getIsSubsection());
+                toShows.add(columnToShow);
+            }
+        }
+        return new RepEntity(RepCode.success,toShows);
+    }
+
+    /*
+    查询列数据通过图表ID
+     */
+    public RepEntity getColumnByChartId(int id){
+        DataConnector dataConnector = new DataConnector();
+        int ConnectId = getChartsDataUtilService.getConnectId(id);
+        System.out.println("baseId:"+ConnectId);
+        dataConnector = dataConnectorMapper.getColumnData(ConnectId);
+        if (dataConnector == null || "".equals(dataConnector)){
+            return new RepEntity(RepCode.Null);
+        }
+        String columnData = dataConnector.getColumnConfig();
+
+        List<ColumnRenameInfo> configList = new ArrayList<>();
+        if (columnData != null || (!"".equals(columnData))){
+            try {
+                CollectionType javaType = objectMapper.getTypeFactory().constructCollectionType(ArrayList.class, ColumnRenameInfo.class);
+                configList =  objectMapper.readValue(columnData, javaType);   //这里不需要强制转换
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        List<ColumnToShow> toShows = new ArrayList<>();
+
+
+        for (int i = 0; i < configList.size(); i++ ){
+            ColumnRenameInfo columnRenameInfo = new ColumnRenameInfo();
+            ColumnToShow columnToShow = new ColumnToShow();
+            columnRenameInfo = configList.get(i);
+            if ("1".equals(columnRenameInfo.getIsOpen())) {
+                columnToShow.setColumnName(columnRenameInfo.getColumnName());
+                columnToShow.setColumnRaname(columnRenameInfo.getColumnLable());
+                columnToShow.setColumnType(columnRenameInfo.getColumnType());
+                columnToShow.setIsGroup(columnRenameInfo.getIsGroup());
+                columnToShow.setIsSubsection(columnRenameInfo.getIsSubsection());
+                toShows.add(columnToShow);
+            }
+        }
+        return new RepEntity(RepCode.success,toShows);
+    }
+
+    //添加数据源
+    private void addDataSource(DatabasesInfo databasesInfo) {
+        //额外的数据源
+        Map<String, Object> dsMap = new HashMap<>();
+        dsMap.put("driver", "oracle.jdbc.driver.OracleDriver");
+        dsMap.put("url", "jdbc:oracle:thin:@" + databasesInfo.getAddrass() +":" + databasesInfo.getPort() + ":" + databasesInfo.getDataName());
+        dsMap.put("username", databasesInfo.getUserName());
+        dsMap.put("password", databasesInfo.getPassWord());
+        Map<Object, Object> target = dataSourceRegister.getTargetDataSources();
+        if (target.size() == 0) {
+            target.putAll(dataSourceRegister.getSlaveDataSources());
+        }
+        target.put(databasesInfo.getId(), dataSourceRegister.buildDataSource(dsMap));
+        DynamicDataSource datasource = (DynamicDataSource) ContextUtil.getBean("dataSource");
+        datasource.setTargetDataSources(target);
+        datasource.afterPropertiesSet();
+
+        DynamicDataSourceContextHolder.dataSourceIds.add(String.valueOf(databasesInfo.getId()));
+    }
+
+}

+ 389 - 0
src/main/java/com/server/dataSource/DataConnectorService.java

@@ -0,0 +1,389 @@
+package com.server.dataSource;
+
+import com.dao.chart.ChartsConfigMapper;
+import com.dao.dataSource.DataConnectorMapper;
+import com.dao.user.UserMapper;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.github.pagehelper.PageInfo;
+import com.model.bo.BaseToDataInfo;
+import com.model.bo.ColumnConfigAndSql;
+import com.model.bo.DatabaseConfig;
+import com.model.bo.GroupUpdateId;
+import com.model.po.BaseConfig;
+import com.model.po.DataConnector;
+import com.model.po.DataConnectorList;
+import com.model.pojo.RepCode;
+import com.model.pojo.RepEntity;
+import com.model.pojo.TestPage;
+import com.model.vo.configVo.ChangeOrderInfo;
+import com.model.vo.configVo.ColumnRenameInfo;
+import com.model.vo.configVo.DataConnectorInfo;
+import com.model.vo.configVo.GroupInfo;
+import com.model.vo.dataVo.ColumnValuesInfo;
+import com.server.chart.GetChartsDataUtilService;
+import com.server.strategy.StrategysService;
+import com.server.chart.ChartsUtilService;
+import com.config.BasesSource.DynamicDataSourceContextHolder;
+import com.util.GetTokenData;
+import com.util.ScreenUtil;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class DataConnectorService {
+
+    @Autowired
+    private DataConnectorMapper dataConnectorMapper;
+
+    @Autowired
+    ObjectMapper objectmapper;
+
+    @Autowired
+    ScreenUtil screenUtil;
+    @Autowired
+    StrategysService strategysService;
+    @Autowired
+    GetTokenData getTokenData;
+    @Autowired
+    UserMapper userMapper;
+    @Autowired
+    ChartsConfigMapper chartsConfigMapper;
+    @Autowired
+    ChartsUtilService chartsUtilService;
+    @Autowired
+    GetChartsDataUtilService getChartsDataUtilService;
+    /*
+    保存数据源
+     */
+    public RepEntity setDataConnector(String token, DataConnectorInfo dataConnectorInfo){
+
+        Map<String, String> resultMap = getTokenData.getTokenData(token);
+        int id = Integer.parseInt(resultMap.get("id"));
+        String userName = resultMap.get("name");
+
+        if (dataConnectorInfo == null || "".equals(dataConnectorInfo)){
+            return new RepEntity(RepCode.Null);
+        }
+        DataConnector dataConnector = new DataConnector();
+        BeanUtils.copyProperties(dataConnectorInfo,dataConnector);
+
+        //取出数据库连接ID
+        DatabaseConfig dbConfig = dataConnectorInfo.getDbConfig();
+        int dbConId = dbConfig.getId();
+        String pw = dataConnectorMapper.getBasesById(dbConId);
+        dbConfig.setPassWord(pw);
+
+//        String tableName = SqlMatch.matchSql(dataConnector.getLoadObject());
+        dataConnector.setTableName(dataConnector.getLoadObject());
+
+         String columnConfig = null;
+         String databaseConfig = null;
+         String dataTag = null;
+
+        try {
+            columnConfig = objectmapper.writeValueAsString(dataConnectorInfo.getColumnConfig());
+        } catch (JsonProcessingException e) {
+            e.printStackTrace();
+        }
+
+        try {
+            databaseConfig = objectmapper.writeValueAsString(dbConfig);
+        } catch (JsonProcessingException e) {
+            e.printStackTrace();
+        }
+
+        try {
+            dataTag = objectmapper.writeValueAsString(dataConnectorInfo.getDataTag());
+        } catch (JsonProcessingException e) {
+            e.printStackTrace();
+        }
+
+        dataConnector.setColumnConfig(columnConfig);
+        dataConnector.setDbConfig(databaseConfig);
+        dataConnector.setDataTag(dataTag);
+        if (dataConnector.getConnectorGroup() == 0){
+            dataConnector.setConnectorGroup(-1);
+        }
+
+        if (dataConnectorInfo.getNote() == null || "".equals(dataConnectorInfo)){
+            dataConnector.setNote("");
+        }
+
+        System.out.println(dataConnector);
+
+        dataConnector.setCreateBy(userName);
+        dataConnector.setCreateId(id);
+        dataConnectorMapper.insertDataConnector(dataConnector);
+        int dataId = dataConnector.getDataId();
+        return new RepEntity(RepCode.success,dataId);
+    }
+
+    //查看数据源列表
+    public RepEntity getListConnector(String token, TestPage testPage){
+        Map<String, String> resultMap = getTokenData.getTokenData(token);
+        String id = resultMap.get("id");
+        System.out.println("id:" + id);
+        List<DataConnectorList> listConnector = dataConnectorMapper.getDataConnectorList(Integer.parseInt(id), testPage.enablePaging());
+        List<DataConnectorList> listConnectors = new ArrayList<>();
+        Iterator isList = listConnector.iterator();
+        while (isList.hasNext()){
+            DataConnectorList dataConnectorList = (DataConnectorList) isList.next();
+            System.out.println("ddddd:"+dataConnectorList);
+            BaseConfig baseConfig = new BaseConfig();
+            String dbConfig = dataConnectorList.getDbConfig();
+            try {
+                baseConfig = objectmapper.readValue(dbConfig, BaseConfig.class);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            baseConfig.setPassWord("");
+            try{
+                dbConfig = objectmapper.writeValueAsString(baseConfig);
+            }catch (Exception e) {
+                e.printStackTrace();
+            }
+            dataConnectorList.setDbConfig(dbConfig);
+            listConnectors.add(dataConnectorList);
+        }
+        PageInfo<DataConnectorList> pageInfo = new PageInfo<>(listConnectors);
+
+        return new RepEntity(RepCode.success, pageInfo);
+    }
+
+    /*
+    查看单个数据源配置
+     */
+    public RepEntity getConnector(int id){
+        DataConnector dataConnector = dataConnectorMapper.getOneData(id);
+        BaseConfig baseConfig = new BaseConfig();
+        String dbConfig = dataConnector.getDbConfig();
+        try {
+            baseConfig = objectmapper.readValue(dbConfig, BaseConfig.class);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        baseConfig.setPassWord("");
+        try{
+            dbConfig = objectmapper.writeValueAsString(baseConfig);
+        }catch (Exception e) {
+            e.printStackTrace();
+        }
+        dataConnector.setDbConfig(dbConfig);
+        System.out.println(dataConnector);
+        return new RepEntity(RepCode.success, dataConnector);
+    }
+
+    /*
+    更新数据源配置
+     */
+    public RepEntity updateData(DataConnectorInfo dataConnectorInfo){
+
+        if (dataConnectorInfo == null && "".equals(dataConnectorInfo)){
+            return new RepEntity(RepCode.Null);
+        }
+        DataConnector dataConnector = new DataConnector();
+        BeanUtils.copyProperties(dataConnectorInfo,dataConnector);
+        //获取表名
+//        String tableName = SqlMatch.matchSql(dataConnector.getLoadObject());
+        dataConnector.setTableName(dataConnector.getLoadObject());
+
+        List<ColumnRenameInfo> columnConfig = dataConnectorInfo.getColumnConfig();
+//        DatabaseConfig dbConfig = dataConnectorInfo.getDbConfig();
+        List<String> dataTag = dataConnectorInfo.getDataTag();
+
+
+        String columnConfigJson = null;
+        String dbConfigJson = null;
+        String dataTagJson = null;
+
+        if (!("".equals(columnConfig)) && columnConfig != null){
+            try {
+                columnConfigJson = objectmapper.writeValueAsString(columnConfig);
+            } catch (JsonProcessingException e) {
+                e.printStackTrace();
+            }
+            dataConnector.setColumnConfig(columnConfigJson);
+        }
+
+        dataConnector.setDbConfig(dbConfigJson);
+        if (dataTag != null){
+            try {
+                dataTagJson = objectmapper.writeValueAsString(dataTag);
+            } catch (JsonProcessingException e) {
+                e.printStackTrace();
+            }
+            dataConnector.setDataTag(dataTagJson);
+        }
+
+        if (dataConnector.getConnectorGroup() == 0){
+            dataConnector.setConnectorGroup(-1);
+        }
+
+        System.out.println(dataConnector);
+
+        dataConnectorMapper.updateData(dataConnector);
+        return new RepEntity(RepCode.success);
+    }
+
+    /*
+    转交数据源
+     */
+    public RepEntity changeOrder(ChangeOrderInfo changeOrderInfo, String token){
+        Map<String, String> resMap = getTokenData.getTokenData(token);
+        int userId = Integer.parseInt(resMap.get("id"));
+        String name = userMapper.getName(changeOrderInfo.getUserId());
+        int createId = dataConnectorMapper.getCreateIdById(changeOrderInfo.getId());
+        if (createId != userId){
+            return new RepEntity(RepCode.NoAuthority);
+        }
+        dataConnectorMapper.updataOrder(name, changeOrderInfo.getUserId(), changeOrderInfo.getId());
+        return new RepEntity(RepCode.success);
+    }
+
+    /*
+    更新数据源分组
+     */
+    public RepEntity updateConfigGroup(GroupUpdateId groupUpdateId){
+        int id = groupUpdateId.getId();
+        int groupId = groupUpdateId.getGroupId();
+        dataConnectorMapper.updateConfigGroup(id, groupId);
+        return new RepEntity(RepCode.success);
+    }
+
+    /*
+    删除数据源
+     */
+
+    public RepEntity delDataConnector(List<Integer> idList){
+        Iterator isList = idList.iterator();
+        while (isList.hasNext()){
+            int id = (int) isList.next();
+            List<String> chartName = dataConnectorMapper.getChartsName(id);
+            if (chartName.size() != 0){
+                return new RepEntity(RepCode.hasChartsUsing, chartName);
+            }
+        }
+        dataConnectorMapper.deleteData(idList);
+        return new RepEntity(RepCode.success);
+    }
+
+    /*
+    创建数据源分组
+     */
+    public RepEntity setDataConnectorGroup(GroupInfo groupInfo){
+        if (groupInfo == null || "".equals(groupInfo)){
+            return new RepEntity(RepCode.Null);
+        }
+        dataConnectorMapper.setConnectorGroup(groupInfo);
+        int id = groupInfo.getId();
+        return new RepEntity(RepCode.success, id);
+    }
+
+    /*
+    更新数据源分组
+     */
+    public RepEntity updataDataConnectorGroup(GroupInfo groupInfo){
+        dataConnectorMapper.updataConnectorGroup(groupInfo);
+        return new RepEntity(RepCode.success);
+    }
+
+    /*
+   批量更新数据源分组
+    */
+    public RepEntity updataConnectorGroups(List<GroupInfo> groupInfoList){
+        Iterator isList = groupInfoList.iterator();
+        GroupInfo groupInfo = new GroupInfo();
+        while (isList.hasNext()){
+            groupInfo = (GroupInfo) isList.next();
+            dataConnectorMapper.updataConnectorGroup(groupInfo);
+        }
+
+        return new RepEntity(RepCode.success);
+    }
+
+    /*
+    删除数据源分组
+     */
+    public RepEntity delDataConnectorGroup(List<Integer> idList){
+        List<Integer> integerList = idList;
+        Iterator isList = integerList.iterator();
+        while (isList.hasNext()){
+            int id = (int) isList.next();
+            List<String> groupName = dataConnectorMapper.getFatherId(id);
+            if (groupName.size() != 0){
+                return new RepEntity(RepCode.hasGroupUsing);
+            }
+            List<String> chartName = dataConnectorMapper.getConName(id);
+            if (chartName.size() != 0){
+                return new RepEntity(RepCode.hasConUsing);
+            }
+        }
+        dataConnectorMapper.delConnectorGroup(idList);
+        return new RepEntity(RepCode.success);
+    }
+
+    /*
+    查询数据源分组列表
+     */
+    public RepEntity getConnectorGroup(){
+        return new RepEntity(RepCode.success, dataConnectorMapper.getConnectorGroup());
+    }
+
+    /*
+    查询数据源数据
+     */
+    public RepEntity getConnectorData(String token, BaseToDataInfo baseToDataInfo){
+
+        int dataId = baseToDataInfo.getId();
+        int baseId = getChartsDataUtilService.getBaseIdByConnect(dataId);
+        System.out.println("切换数据库"+baseId);
+
+        Map<String, String> resultMap = getTokenData.getTokenData(token);
+        int id = Integer.parseInt(resultMap.get("id"));
+        int createId = dataConnectorMapper.getCreateIdById(dataId);
+        ColumnValuesInfo columnValuesInfo = new ColumnValuesInfo();
+        ColumnConfigAndSql columnConfigAndSql = chartsConfigMapper.getConfigAndSql(dataId);
+        String sql = columnConfigAndSql.getSql();
+        String columnConfig = columnConfigAndSql.getColumnConfig();
+        columnValuesInfo.setColumnConfig(columnConfig);
+
+            try {
+                if (!DynamicDataSourceContextHolder.isContainsDataSource(String.valueOf(baseId))) {
+                    //joinPoint.getSignature() :获取连接点的方法签名对象
+                    System.out.println("数据源 " + baseId + " 不存在使用默认的数据源 -> ");
+                } else {
+                    System.out.println("使用数据源:" + baseId);
+                    DynamicDataSourceContextHolder.setDataSourceType(String.valueOf(baseId));
+                }
+                List<Map<String, Object>> val = new ArrayList<>();
+                if (id == createId) {
+                    val = dataConnectorMapper.getValues(sql, baseToDataInfo.getTestPage().enablePaging());
+                } else {
+                    String sqls = chartsUtilService.columnNameUtil(id, dataId, sql, true, 0, createId);
+                    if ("".equals(sqls)) {
+                        return new RepEntity(RepCode.NoAuthority);
+                    }
+                    val = dataConnectorMapper.getValues(sql, baseToDataInfo.getTestPage().enablePaging());
+                }
+
+                PageInfo<Map<String, Object>> pageInfo = new PageInfo<>(val);
+                columnValuesInfo.setValues(pageInfo);
+            } catch (Exception e) {
+                e.printStackTrace();
+                System.out.println("异常");
+                return new RepEntity(RepCode.erro);
+            } finally {
+                System.out.println("关闭数据源");
+                DynamicDataSourceContextHolder.clearDataSourceType();
+            }
+        return new RepEntity(RepCode.success, columnValuesInfo);
+    }
+
+}

+ 192 - 0
src/main/java/com/server/dataSource/ImplementSqlService.java

@@ -0,0 +1,192 @@
+package com.server.dataSource;
+
+import com.dao.dataSource.DataColumnMapper;
+import com.dao.dataSource.DataConnectorMapper;
+import com.model.bo.ToSql;
+import com.model.po.Databases;
+import com.model.pojo.RepCode;
+import com.model.pojo.RepEntity;
+import com.model.vo.dataVo.ColumnTypeInfo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.sql.*;
+import java.util.*;
+import java.util.Date;
+
+@Service
+public class ImplementSqlService {
+    @Autowired
+    DataColumnMapper dataColumnMapper;
+    @Autowired
+    DataConnectorMapper dataConnectorMapper;
+
+    /*
+    执行数据源
+     */
+    public RepEntity implementSql(ToSql toSql) {
+        List<String> checkSql = java.util.Arrays.asList(toSql.getStrSql().toLowerCase().split(" "));
+        if (checkSql.contains("update") || checkSql.contains("delete") || checkSql.contains("insert") ||
+                checkSql.contains("drop") || checkSql.contains("create") || checkSql.contains("comment")){
+            return new RepEntity(RepCode.SqlWarn);
+        }
+        String sqlStr = "select * from (" + toSql.getStrSql() + ") where rownum <=1";
+        System.out.println(sqlStr);
+        if ("".equals(sqlStr) || sqlStr == null) {
+            return new RepEntity(RepCode.ChartsNameNull);
+        }
+
+        LinkedHashMap<String, Object> columnData = dataColumnMapper.getColumn(sqlStr);
+        LinkedHashMap<String, String> tarValue = getColumnType(columnData);
+
+        List<ColumnTypeInfo> isList = new ArrayList<>();
+
+        Iterator<String> iter = columnData.keySet().iterator();
+        while (iter.hasNext()){
+            String key = iter.next();
+            String vaul = tarValue.get(key);
+            ColumnTypeInfo columnTypeInfo = new ColumnTypeInfo();
+            columnTypeInfo.setColumnName(key);
+            columnTypeInfo.setColumnType(vaul);
+            isList.add(columnTypeInfo);
+        }
+
+        return new RepEntity(RepCode.success,isList);
+    }
+
+     /*
+    执行数据源test
+     */
+//     public RepEntity getColumnTest(ToSql toSql){
+//         String sqlStr = toSql.getStrSql();
+//         Connection conn = null;
+//         try {
+//             String url = "jdbc:oracle:thin:@218.17.158.219:1521/orcl";
+//             String user = "UAS";
+//             String pass = "select!#%*(";
+//             conn = DriverManager.getConnection(url,user,pass);
+//             String sql="select as_id from accidinsur";
+//             PreparedStatement stmt;
+//             stmt = conn.prepareStatement(sql);
+//             System.out.println("...........");
+//             ResultSet rs = stmt.executeQuery(sql);
+//             System.out.println("1111111111");
+//
+//             ResultSetMetaData rsmd = rs.getMetaData();
+//             String name = rsmd.getCatalogName(1);
+//             int col = rsmd.getColumnCount();   //获得列的个数
+//             System.out.println("num"+col);
+//             System.out.println("name"+name);
+//
+//             ResultSetMetaData data = rs.getMetaData();
+//             while (rs.next()) {
+//                 for (int i = 1; i <= data.getColumnCount(); i++) {
+//                     //获得所有列的数目及实际列数
+//                     int columnCount = data.getColumnCount();
+//                     System.out.println("数:"+columnCount);
+//                     // 获得指定列的列名
+//                     String columnName = data.getColumnName(i);
+//                     System.out.println("ming:"+columnName);
+//                     //获得指定列的列值
+//                     String columnValue = rs.getString(i);
+//                     System.out.println("value"+columnValue);
+//                     //获得指定列的数据类型
+//                     int columnType = data.getColumnType(i);
+//                     System.out.println("type"+columnType);
+//                 }
+//             }
+//         }catch (SQLException e){
+//
+//         }
+//                     return new RepEntity(RepCode.success);
+//     }
+
+    /*
+    判断列类型
+     */
+    public LinkedHashMap<String, String> getColumnType(LinkedHashMap<String, Object> columnData){
+        LinkedHashMap<String, String> tarValue = new LinkedHashMap<>();
+            LinkedHashMap<String, Object> columnDataMap = columnData;
+            Iterator<String> cm = columnDataMap.keySet().iterator();
+            while (cm.hasNext()){
+                String key = cm.next();
+                if (tarValue.containsKey(key)){
+                    continue;
+                }else {
+                    Object value = columnDataMap.get(key);
+                    if (value == null) {
+                        continue;
+                    }else {
+                        String values = getType(value);
+                        tarValue.put(key, values);
+                    }
+                    if (tarValue.size() == columnDataMap.size()){
+                        break;
+                    }
+                }
+            }
+        return tarValue;
+    }
+
+    /*
+    判断值类型
+     */
+    public String getType(Object obj){
+        if(obj instanceof String){
+            return "String";
+        }else if (obj instanceof Double){
+            return "Double";
+        }else if (obj instanceof Integer){
+            return "Integer";
+        }else if (obj instanceof Date){
+            return "Date";
+        }else if (obj instanceof Boolean){
+            return "Boolean";
+        }else if(obj instanceof Byte){
+            return "Byte";
+        }else if (obj instanceof Short){
+            return "Short";
+        }else if (obj instanceof BigDecimal){
+            return "BigDecimal";
+        }else if (obj instanceof Object){
+            return "Object";
+        }else {
+            return "";
+        }
+    }
+
+
+
+    /*
+    判断数据库连接
+     */
+    public RepEntity connectTest(Databases databases) {
+        String password = "";
+        String passwords = databases.getPassWord();
+        int id = databases.getId();
+        String pw = dataConnectorMapper.getBasesById(id);
+        if (passwords != null && !"".equals(passwords)){
+            password = passwords;
+        }else {
+            password = pw;
+        }
+
+        String url = "jdbc:oracle:thin:@" + databases.getAddrass() + ":" + databases.getPort() + ":" + databases
+                .getDataName();
+        String username = databases.getUserName();
+//        String password = databases.getPassWord();
+        Connection con = null;
+        try {
+            DriverManager.setLoginTimeout(8);
+            con = DriverManager.getConnection(url, username, password);
+            System.out.println("数据库连接成功");
+            con.close();
+        } catch (SQLException se) {
+            System.out.println("数据库连接失败!");
+            se.printStackTrace();
+            return new RepEntity(RepCode.Null);
+        }
+        return new RepEntity(RepCode.success);
+    }
+}

+ 210 - 0
src/main/java/com/server/strategy/StrategysService.java

@@ -0,0 +1,210 @@
+package com.server.strategy;
+
+import com.dao.dashboard.DashboardsMapper;
+import com.dao.strategy.StrategysBdMapper;
+import com.dao.strategy.StrategysChartMapper;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.model.bo.Obj;
+import com.model.po.Strategys;
+import com.model.po.StrategysData;
+import com.model.pojo.RepCode;
+import com.model.pojo.RepEntity;
+import com.model.vo.configVo.ObjectInfo;
+import com.model.vo.configVo.StrategysInfo;
+import com.util.ScreenUtil;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+@Service
+public class StrategysService {
+    @Autowired
+    ScreenUtil screenUtil;
+    @Autowired
+    StrategysBdMapper strategysBdMapper;
+    @Autowired
+    StrategysChartMapper strategysChartMapper;
+    @Autowired
+    ObjectMapper objectMapper;
+    @Autowired
+    DashboardsMapper dashboardsMapper;
+    /*
+   保存数据源策略
+    */
+    public RepEntity addStrategys(StrategysInfo strategysInfo){
+        Strategys strategys = new Strategys();
+        BeanUtils.copyProperties(strategysInfo, strategys);
+        String scr = screenUtil.screensUtil(strategysInfo.getRule(), "", "").getRet();
+        strategys.setRule(scr);
+        strategys.setRuleStr(String.valueOf(strategysInfo.getRule()));
+
+        String type = strategysInfo.getType();
+        if ("base".equals(type)){
+            strategysBdMapper.addStrategys(strategys);
+        }else {
+            strategysChartMapper.addStrategys(strategys);
+        }
+
+        return new RepEntity(RepCode.success, strategys.getId());
+    }
+
+    /*
+    更新数据源策略
+     */
+    public RepEntity updateStrategys(StrategysInfo strategysInfo){
+        Strategys strategys = new Strategys();
+        BeanUtils.copyProperties(strategysInfo, strategys);
+        String scr = screenUtil.screensUtil(strategysInfo.getRule(), "", "").getRet();
+        strategys.setRule(scr);
+        String ruleStr = null;
+        try {
+            ruleStr = objectMapper.writeValueAsString(strategysInfo.getRule());
+        } catch (JsonProcessingException e) {
+            e.printStackTrace();
+        }
+        strategys.setRuleStr(ruleStr);
+        String type = strategysInfo.getType();
+        if ("base".equals(type)) {
+            strategysBdMapper.updataStrategys(strategys);
+        }else {
+            strategysChartMapper.updataStrategys(strategys);
+        }
+        return new RepEntity(RepCode.success);
+    }
+
+    /*
+    删除数据源策略
+     */
+    public RepEntity delDbStrategys(List<Integer> idList){
+        strategysBdMapper.delStrategys(idList);
+        Iterator isList = idList.iterator();
+        while (isList.hasNext()){
+            int id = (int) isList.next();
+            strategysBdMapper.delObject(id);
+        }
+        return new RepEntity(RepCode.success);
+    }
+
+    /*
+    删除图表策略
+     */
+    public RepEntity delChartStrategys(List<Integer> idList){
+        strategysChartMapper.delStrategys(idList);
+        Iterator isList = idList.iterator();
+        while (isList.hasNext()){
+            int id = (int) isList.next();
+            strategysChartMapper.delObject(id);
+        }
+        return new RepEntity(RepCode.success);
+    }
+
+    /*
+    查询数据源策略列表
+     */
+    public RepEntity getDbStrategys(int DbId){
+
+        List<StrategysData> strategysDataList = new ArrayList<>();
+        /*
+        获取id列表
+         */
+        List<Integer> idList = strategysBdMapper.getStrIdList(DbId);
+        Iterator isList = idList.iterator();
+        while (isList.hasNext()) {
+            int id = (int) isList.next();
+            List<Map<String, Object>> userGroupNameList = new ArrayList<>();
+            List<Map<String, Object>> userNameList = new ArrayList<>();
+            StrategysData strategysDatas = new StrategysData();
+
+            Strategys strategys = strategysBdMapper.getStrategys(id);  //策略的基本信息
+            List<String> types = strategysBdMapper.getStrategysType(id);
+            Iterator isTypeList = types.iterator();
+            while (isTypeList.hasNext()) {
+                String type = (String) isTypeList.next();
+                if ("0".equals(type)) {
+                    userGroupNameList = strategysBdMapper.getUserGroupIdAndName(id);
+                    System.out.println("userG:" + userGroupNameList);
+                } else {
+                    userNameList = strategysBdMapper.getUserIdAndName(id);
+                    System.out.println("user" + userNameList);
+                }
+            }
+            strategysDatas.setStrategies(strategys);
+            strategysDatas.setUserGroupName(userGroupNameList);
+            strategysDatas.setUserName(userNameList);
+            strategysDataList.add(strategysDatas);
+            System.out.println("strate:" + strategysDataList);
+        }
+        return new RepEntity(RepCode.success, strategysDataList);
+    }
+
+    /*
+    添加用户或用户组
+     */
+    public RepEntity addObject(ObjectInfo objectInfo){
+        String type = objectInfo.getType();
+        int stId = objectInfo.getStId();
+        if ("base".equals(type)){
+            strategysBdMapper.delObject(stId);
+        }else if ("chart".equals(type)){
+            strategysChartMapper.delObject(stId);
+        }else {
+            dashboardsMapper.delObject(stId);
+        }
+        List objs = objectInfo.getObj();
+        Iterator isObj = objs.iterator();
+        while (isObj.hasNext()) {
+            Obj obj = (Obj) isObj.next();
+            String obType = obj.getObjectType();
+            int obId = obj.getObId();
+            System.out.println("obId:" + obId);
+            if ("base".equals(type)) {
+                strategysBdMapper.addObject(stId, obType, obId);
+            } else if ("chart".equals(type)){
+                strategysChartMapper.addObject(stId, obType, obId);
+            }else {
+                dashboardsMapper.addObject(stId, obType, obId);
+            }
+        }
+        return new RepEntity(RepCode.success);
+    }
+
+
+    /*
+    查询图表策略列表
+     */
+    public RepEntity getChartStrategys(int chartId){
+        System.out.println(",,,");
+        List<StrategysData> strategysDataList = new ArrayList<>();
+        /*
+        获取id列表
+         */
+        List<Integer> idList = strategysChartMapper.getStrIdList(chartId);
+        Iterator isList = idList.iterator();
+        while (isList.hasNext()) {
+            int id = (int) isList.next();
+            List<Map<String, Object>> userGroupNameList = new ArrayList<>();
+            List<Map<String, Object>> userNameList = new ArrayList<>();
+            StrategysData strategysDatas = new StrategysData();
+
+            Strategys strategys = strategysChartMapper.getStrategys(id);  //策略的基本信息
+            List<String> types = strategysChartMapper.getStrategysType(id);
+            Iterator isTypeList = types.iterator();
+            while (isTypeList.hasNext()) {
+                String type = (String) isTypeList.next();
+                if ("0".equals(type)) {
+                    userGroupNameList = strategysChartMapper.getUserGroupIdAndName(id);
+                } else {
+                    userNameList = strategysChartMapper.getUserIdAndName(id);
+                }
+            }
+            strategysDatas.setStrategies(strategys);
+            strategysDatas.setUserGroupName(userGroupNameList);
+            strategysDatas.setUserName(userNameList);
+            strategysDataList.add(strategysDatas);
+        }
+        return new RepEntity(RepCode.success, strategysDataList);
+    }
+}

+ 30 - 0
src/main/java/com/server/user/RecodeService.java

@@ -0,0 +1,30 @@
+package com.server.user;
+
+import com.dao.user.RecordMapper;
+import com.model.pojo.RepCode;
+import com.model.pojo.RepEntity;
+import com.util.GetTokenData;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+@Service
+public class RecodeService {
+    @Autowired
+    RecordMapper recordMapper;
+    @Autowired
+    GetTokenData getTokenData;
+
+    public RepEntity getChartRecord(String token){
+        Map<String, String> resultMap = getTokenData.getTokenData(token);
+        int userId = Integer.parseInt(resultMap.get("id"));
+        return new RepEntity(RepCode.success, recordMapper.chartsRecode(userId));
+    }
+
+    public RepEntity getDashRecord(String token){
+        Map<String, String> resultMap = getTokenData.getTokenData(token);
+        int userId = Integer.parseInt(resultMap.get("id"));
+        return new RepEntity(RepCode.success, recordMapper.DashRecode(userId));
+    }
+}

+ 3 - 3
src/main/java/com/server/UserService.java → src/main/java/com/server/user/UserService.java

@@ -1,6 +1,6 @@
-package com.server;
+package com.server.user;
 
-import com.dao.UserMapper;
+import com.dao.user.UserMapper;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.model.po.TokenData;
 import com.model.po.User;
@@ -32,7 +32,7 @@ public class UserService {
         String userName = loginInfo.getUserName();
         User user = userMapper.getLogin(userName);
         System.out.println("user:" + user);
-        if ("".equals(user) || user == null){
+        if ("".equals(user) || user == null || "".equals(userName) || !userName.equals(user.getUserName())){
             return new RepEntity(RepCode.NoUser);
         }
         String passWord = user.getPassWord();

+ 2 - 2
src/main/java/com/util/CalculationJudgeUtil.java

@@ -1,6 +1,6 @@
 package com.util;
 
-import com.server.TimeConverterUtil;
+import com.server.chart.TimeConverterUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -9,7 +9,7 @@ public class CalculationJudgeUtil {
     @Autowired
     TimeConverterUtil timeConverterUtil;
 
-    public String Judge(String type){
+    public static String Judge(String type){
         if (type == null || "".equals(type) || "sum".equals(type)){
             return "sum";
         }else if ("count".equals(type)){

+ 1 - 0
src/main/java/com/util/GetTokenData.java

@@ -5,6 +5,7 @@ import com.auth0.jwt.JWTVerifier;
 import com.auth0.jwt.algorithms.Algorithm;
 import com.auth0.jwt.interfaces.Claim;
 import com.auth0.jwt.interfaces.DecodedJWT;
+import com.config.exception.MyException;
 import com.google.common.collect.Maps;
 import org.springframework.stereotype.Component;
 

+ 0 - 20
src/main/java/com/util/SqlMatch.java

@@ -1,20 +0,0 @@
-package com.util;
-
-import org.springframework.stereotype.Component;
-
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-@Component
-public class SqlMatch {
-    public static String matchSql(String sql) {
-        Matcher matcher = null;
-        matcher = Pattern.compile("select\\s.+from\\s(.+)").matcher(sql);
-        if (!matcher.find()) {
-            return null;
-        }
-        String[] tableSql = matcher.group(1).split("\"");
-        String tableName = tableSql[0];
-        return tableName;
-    }
-}

+ 0 - 17
src/main/java/com/util/TimeUtil.java

@@ -1,17 +0,0 @@
-package com.util;
-
-import org.springframework.stereotype.Component;
-
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-@Component
-public class TimeUtil {
-    public String SystemTime(){
-        Date date =new Date();
-        SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//完整的时间
-        String time = sdf.format(date);
-        return time;
-    }
-
-}

+ 3 - 3
src/main/test/com/test/TestDataSource.java

@@ -12,9 +12,9 @@ import org.springframework.context.annotation.Import;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.test.context.junit4.SpringRunner;
 
-import com.util.BasesSource.DynamicDataSource;
-import com.util.BasesSource.DynamicDataSourceContextHolder;
-import com.util.BasesSource.DynamicDataSourceRegister;
+import com.config.BasesSource.DynamicDataSource;
+import com.config.BasesSource.DynamicDataSourceContextHolder;
+import com.config.BasesSource.DynamicDataSourceRegister;
 
 
 @RunWith(SpringRunner.class)