heqinwei 7 years ago
parent
commit
105e9cce8b
43 changed files with 1310 additions and 470 deletions
  1. 0 1
      .idea/.name
  2. 0 13
      .idea/compiler.xml
  3. 0 6
      .idea/encodings.xml
  4. 1 1
      .idea/misc.xml
  5. 0 124
      .idea/uiDesigner.xml
  6. 0 6
      .idea/vcs.xml
  7. 0 11
      .project
  8. 21 10
      pom.xml
  9. 3 0
      src/main/java/com/Application.java
  10. 37 34
      src/main/java/com/controller/ChartsConfigController.java
  11. 70 0
      src/main/java/com/controller/DataBasesController.java
  12. 25 31
      src/main/java/com/controller/DataConnectorController.java
  13. 15 3
      src/main/java/com/controller/ShowChartsController.java
  14. 67 5
      src/main/java/com/dao/ChartsConfigMapper.java
  15. 49 4
      src/main/java/com/dao/DataConnectorMapper.java
  16. 32 0
      src/main/java/com/model/bo/Scatter.java
  17. 32 0
      src/main/java/com/model/bo/ScatterSeries.java
  18. 30 0
      src/main/java/com/model/bo/ScatterSeriesMap.java
  19. 30 0
      src/main/java/com/model/bo/ToSql.java
  20. 10 0
      src/main/java/com/model/po/ChartConfigList.java
  21. 2 1
      src/main/java/com/model/pojo/RepCode.java
  22. 1 0
      src/main/java/com/model/vo/configVo/ChartConfigInfo.java
  23. 86 0
      src/main/java/com/model/vo/configVo/GroupInfo.java
  24. 7 6
      src/main/java/com/model/vo/configVo/HistogramConfigInfo.java
  25. 6 6
      src/main/java/com/model/vo/configVo/LineConfigInfo.java
  26. 6 6
      src/main/java/com/model/vo/configVo/PieConfigInfo.java
  27. 55 0
      src/main/java/com/model/vo/configVo/ScatterConfigInfo.java
  28. 44 112
      src/main/java/com/server/ChartsConfigService.java
  29. 122 0
      src/main/java/com/server/DataBasesService.java
  30. 18 76
      src/main/java/com/server/DataConnectorService.java
  31. 37 2
      src/main/java/com/server/ImplementSqlService.java
  32. 42 3
      src/main/java/com/server/ShowHistogramService.java
  33. 7 1
      src/main/java/com/server/ShowLineService.java
  34. 6 1
      src/main/java/com/server/ShowPieService.java
  35. 161 0
      src/main/java/com/server/ShowScatterService.java
  36. 17 0
      src/main/java/com/util/BasesSource/DynamicDataSource.java
  37. 37 0
      src/main/java/com/util/BasesSource/DynamicDataSourceContextHolder.java
  38. 114 0
      src/main/java/com/util/BasesSource/DynamicDataSourceRegister.java
  39. 64 0
      src/main/java/com/util/BasesSource/DynamicDattaSourceAspect.java
  40. 13 0
      src/main/java/com/util/BasesSource/TargetDataSource.java
  41. 16 0
      src/main/java/com/util/BasesSource/TargetDataSourceCharts.java
  42. 2 1
      src/main/java/com/util/CalculationJudgeUtil.java
  43. 25 6
      src/main/resources/application.properties

+ 0 - 1
.idea/.name

@@ -1 +0,0 @@
-BI

+ 0 - 13
.idea/compiler.xml

@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="CompilerConfiguration">
-    <annotationProcessing>
-      <profile name="Maven default annotation processors profile" enabled="true">
-        <sourceOutputDir name="target/generated-sources/annotations" />
-        <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
-        <outputRelativeToContentRoot value="true" />
-        <module name="BI" />
-      </profile>
-    </annotationProcessing>
-  </component>
-</project>

+ 0 - 6
.idea/encodings.xml

@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="Encoding">
-    <file url="file://$PROJECT_DIR$" charset="UTF-8" />
-  </component>
-</project>

+ 1 - 1
.idea/misc.xml

@@ -11,7 +11,7 @@
       </list>
     </option>
   </component>
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="false" project-jdk-name="9" project-jdk-type="JavaSDK">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="false" project-jdk-name="1.8" project-jdk-type="JavaSDK">
     <output url="file://$PROJECT_DIR$/out" />
   </component>
 </project>

+ 0 - 124
.idea/uiDesigner.xml

@@ -1,124 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="Palette2">
-    <group name="Swing">
-      <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
-        <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
-      </item>
-      <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
-        <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
-      </item>
-      <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
-        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
-      </item>
-      <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
-        <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
-      </item>
-      <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
-        <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
-        <initial-values>
-          <property name="text" value="Button" />
-        </initial-values>
-      </item>
-      <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
-        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
-        <initial-values>
-          <property name="text" value="RadioButton" />
-        </initial-values>
-      </item>
-      <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
-        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
-        <initial-values>
-          <property name="text" value="CheckBox" />
-        </initial-values>
-      </item>
-      <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
-        <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
-        <initial-values>
-          <property name="text" value="Label" />
-        </initial-values>
-      </item>
-      <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
-        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
-          <preferred-size width="150" height="-1" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
-        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
-          <preferred-size width="150" height="-1" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
-        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
-          <preferred-size width="150" height="-1" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
-        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
-          <preferred-size width="150" height="50" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
-        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
-          <preferred-size width="150" height="50" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
-        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
-          <preferred-size width="150" height="50" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
-        <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
-      </item>
-      <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
-        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
-          <preferred-size width="150" height="50" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
-        <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
-          <preferred-size width="150" height="50" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
-        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
-          <preferred-size width="150" height="50" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
-        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
-          <preferred-size width="200" height="200" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
-        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
-          <preferred-size width="200" height="200" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
-        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
-      </item>
-      <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
-        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
-      </item>
-      <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
-        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
-      </item>
-      <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
-        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
-      </item>
-      <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
-        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
-          <preferred-size width="-1" height="20" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
-        <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
-      </item>
-      <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
-        <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
-      </item>
-    </group>
-  </component>
-</project>

+ 0 - 6
.idea/vcs.xml

@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="VcsDirectoryMappings">
-    <mapping directory="$PROJECT_DIR$" vcs="Git" />
-  </component>
-</project>

+ 0 - 11
.project

@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>platform-bi</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-	</buildSpec>
-	<natures>
-	</natures>
-</projectDescription>

+ 21 - 10
pom.xml

@@ -81,16 +81,16 @@
 
 
     <!--mysql 驱动-->
-    <!--<dependency>-->
-      <!--<groupId>mysql</groupId>-->
-      <!--<artifactId>mysql-connector-java</artifactId>-->
-    <!--</dependency>-->
+    <dependency>
+      <groupId>mysql</groupId>
+      <artifactId>mysql-connector-java</artifactId>
+    </dependency>
 
     <!-- oracle -->
     <dependency>
       <groupId>com.oracle</groupId>
-      <artifactId>ojdbc6</artifactId>
-      <version>11.2.0</version>
+      <artifactId>ojdbc7</artifactId>
+      <version>12.2.0.1.0</version>
     </dependency>
 
     <!-- 引入json处理包 -->
@@ -111,13 +111,24 @@
       <version>2.7.0</version>
     </dependency>
 
-    <!-- springboot分页插件 -->
     <dependency>
-      <groupId>com.github.pagehelper</groupId>
-      <artifactId>pagehelper-spring-boot-starter</artifactId>
-      <version>5.0.2</version>
+      <groupId>org.springframework.boot</groupId>
+      <artifactId>spring-boot-starter-aop</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>com.alibaba</groupId>
+      <artifactId>druid</artifactId>
+      <version>0.2.26</version>
     </dependency>
 
+    <!-- springboot分页插件 -->
+    <!--<dependency>-->
+      <!--<groupId>com.github.pagehelper</groupId>-->
+      <!--<artifactId>pagehelper-spring-boot-starter</artifactId>-->
+      <!--<version>5.0.2</version>-->
+    <!--</dependency>-->
+
 
   </dependencies>
 

+ 3 - 0
src/main/java/com/Application.java

@@ -1,9 +1,12 @@
 package com;
 
+import com.util.BasesSource.DynamicDataSourceRegister;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.Import;
 
 @SpringBootApplication
+@Import({DynamicDataSourceRegister.class})
 public class Application {
     public static void main(String[] args) {
         SpringApplication.run(Application.class, args);

+ 37 - 34
src/main/java/com/controller/ChartsConfigController.java

@@ -2,8 +2,10 @@ package com.controller;
 
 import com.model.pojo.RepEntity;
 import com.model.vo.configVo.ChartConfigInfo;
+import com.model.vo.configVo.GroupInfo;
 import com.server.ChartsConfigService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
@@ -11,6 +13,7 @@ import org.springframework.web.bind.annotation.RestController;
 import java.util.List;
 
 @RestController
+@Transactional
 public class ChartsConfigController {
     @Autowired
     ChartsConfigService chartsConfigService;
@@ -31,7 +34,7 @@ public class ChartsConfigController {
 //   }
 
    /*
-   柱状
+   添加
     */
     @RequestMapping("/inputCharts")
     public RepEntity inputCharts(@RequestBody ChartConfigInfo body){
@@ -39,45 +42,13 @@ public class ChartsConfigController {
     }
 
     /*
-   更新柱状
+   更新
     */
     @RequestMapping("/updateCharts")
     public RepEntity updateCharts(@RequestBody ChartConfigInfo body){
         return chartsConfigService.updateChartsConfig(body);
     }
 
-//  /*
-//  折线
-//  */
-//    @RequestMapping("/inputLine")
-//    public RepEntity inputLine(@RequestBody ChartConfigInfo body){
-//        return chartsConfigService.setChartsConfig(body);
-//    }
-//
-//    /*
-//    更新Line
-//     */
-//    @RequestMapping("/updateLine")
-//    public RepEntity updateLine(@RequestBody ChartConfigInfo body){
-//        return chartsConfigService.updateChartsConfig(body);
-//    }
-//
-//    /*
-//   饼图配置
-//    */
-//    @RequestMapping("/inputPie")
-//    public RepEntity inputPie(@RequestBody ChartConfigInfo<Pie> body){
-//        return chartsConfigService.setChartsConfig(body);
-//    }
-//
-//    /*
-//   更新Pie
-//    */
-//    @RequestMapping("/updatePie")
-//    public RepEntity updatePie(@RequestBody ChartConfigInfo<Pie> body){
-//        return chartsConfigService.updateChartsConfig(body);
-//    }
-
     /*
     删除
      */
@@ -102,4 +73,36 @@ public class ChartsConfigController {
         return chartsConfigService.getOneCharts(body);
     }
 
+    /*
+    添加图表分组
+     */
+    @RequestMapping("/setChartsGroup")
+    public RepEntity setChartsGroup(@RequestBody GroupInfo body){
+        return chartsConfigService.setDataConnectorGroup(body);
+    }
+
+    /*
+    更新图表分组
+     */
+    @RequestMapping("/updataChartsGroup")
+    public RepEntity updataChartsGroup(@RequestBody GroupInfo body){
+        return chartsConfigService.updataDataConnectorGroup(body);
+    }
+
+    /*
+    删除图表分组
+     */
+    @RequestMapping("/delChartsGroup")
+    public RepEntity delChartsGroup(@RequestBody List<Integer> body){
+        return chartsConfigService.delDataConnectorGroup(body);
+    }
+
+    /*
+    查询图表分组
+     */
+    @RequestMapping("/getChartsGroup")
+    public RepEntity getChartsGroup(){
+        return chartsConfigService.getConnectorGroup();
+    }
+
 }

+ 70 - 0
src/main/java/com/controller/DataBasesController.java

@@ -0,0 +1,70 @@
+package com.controller;
+
+import com.model.bo.Pages;
+import com.model.po.Databases;
+import com.model.pojo.RepEntity;
+import com.model.vo.configVo.DatabasesInfo;
+import com.server.DataBasesService;
+import com.server.ImplementSqlService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+public class DataBasesController {
+    @Autowired
+    DataBasesService dataBasesService;
+    @Autowired
+    ImplementSqlService implementSqlService;
+    /*
+   数据库
+   保存数据库配置
+   */
+    @RequestMapping("/inputDatabases")
+    public RepEntity inputDatabases(@RequestBody DatabasesInfo body){
+        return dataBasesService.inputDatabases(body);
+    }
+
+    /*
+    查看数据库配置列表
+     */
+    @RequestMapping("/getDatabases")
+    public RepEntity getDatabases(@RequestBody Pages body){
+        return dataBasesService.getListDatabases(body);
+    }
+
+    /*
+    删除数据库配置
+     */
+    @RequestMapping("/delDatabases")
+    public RepEntity delDatabases(@RequestBody List<Integer> body){
+        return dataBasesService.delDatabases(body);
+    }
+
+    /*
+    更新数据库配置
+     */
+    @RequestMapping("/updatabases")
+    public RepEntity updatabases(@RequestBody DatabasesInfo databasesInfo){
+        return dataBasesService.updatabases(databasesInfo);
+    }
+
+    /*
+    查看列
+     */
+    @RequestMapping("/getColumnData")
+    public RepEntity getColumnData(@RequestBody int body){
+        return dataBasesService.getColumnData(body);
+    }
+
+    /*
+    测试数据库连接
+     */
+    @RequestMapping("/testConnect")
+    public RepEntity testConnect(@RequestBody Databases body){
+        return implementSqlService.connectTest(body);
+    }
+}

+ 25 - 31
src/main/java/com/controller/DataConnectorController.java

@@ -1,11 +1,13 @@
 package com.controller;
 
-import com.server.ImplementSqlService;
 import com.model.bo.Pages;
+import com.model.bo.ToSql;
 import com.model.pojo.RepEntity;
 import com.model.vo.configVo.DataConnectorInfo;
-import com.model.vo.configVo.DatabasesInfo;
+import com.model.vo.configVo.GroupInfo;
 import com.server.DataConnectorService;
+import com.server.ImplementSqlService;
+import com.util.BasesSource.TargetDataSource;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -21,14 +23,6 @@ public class DataConnectorController {
     @Autowired
     ImplementSqlService implementSqlService;
 
-    /*
-    执行数据源配置
-     */
-    @RequestMapping("/implementSql")
-    public RepEntity implementSql(@RequestBody String body){
-        return implementSqlService.implementSql(body);
-    }
-
     /*
     保存数据源配置
      */
@@ -72,43 +66,43 @@ public class DataConnectorController {
     }
 
     /*
-    数据库
-    保存数据库配置
+    执行数据源配置
     */
-    @RequestMapping("/inputDatabases")
-    public RepEntity inputDatabases(@RequestBody DatabasesInfo body){
-        return dataConnectorService.inputDatabases(body);
+    @RequestMapping("/implementSql")
+    @TargetDataSource
+    public RepEntity implementSql(@RequestBody ToSql body){
+        return implementSqlService.implementSql(body);
     }
 
     /*
-    查看数据库配置列表
+    添加数据源分组
      */
-    @RequestMapping("/getDatabases")
-    public RepEntity getDatabases(@RequestBody Pages body){
-        return dataConnectorService.getListDatabases(body);
+    @RequestMapping("/setConnectorGroup")
+    public RepEntity setConnectorGroup(@RequestBody GroupInfo body){
+        return dataConnectorService.setDataConnectorGroup(body);
     }
 
     /*
-    删除数据库配置
+    更新数据源分组
      */
-    @RequestMapping("/delDatabases")
-    public RepEntity delDatabases(@RequestBody List<Integer> body){
-        return dataConnectorService.delDatabases(body);
+    @RequestMapping("/updataDataConnectorGroup")
+    public RepEntity updataDataConnectorGroup(@RequestBody GroupInfo body){
+        return dataConnectorService.updataDataConnectorGroup(body);
     }
 
     /*
-    更新数据库配置
+    删除数据源分组
      */
-    @RequestMapping("/updatabases")
-    public RepEntity updatabases(@RequestBody DatabasesInfo databasesInfo){
-        return dataConnectorService.updatabases(databasesInfo);
+    @RequestMapping("/delDataConnectorGroup")
+    public RepEntity delDataConnectorGroup(@RequestBody List<Integer> body){
+        return dataConnectorService.delDataConnectorGroup(body);
     }
 
     /*
-    查看列
+    查询数据源分组
      */
-    @RequestMapping("/getColumnData")
-    public RepEntity getColumnData(@RequestBody int body){
-        return dataConnectorService.getColumnData(body);
+    @RequestMapping("/getConnectorGroup")
+    public RepEntity getConnectorGroup(){
+        return dataConnectorService.getConnectorGroup();
     }
 }

+ 15 - 3
src/main/java/com/controller/ShowChartsController.java

@@ -1,12 +1,14 @@
 package com.controller;
 
-import com.server.ShowHistogramService;
-import com.server.ShowLineService;
-import com.server.ShowPieService;
 import com.model.pojo.RepEntity;
 import com.model.vo.configVo.HistogramConfigInfo;
 import com.model.vo.configVo.LineConfigInfo;
 import com.model.vo.configVo.PieConfigInfo;
+import com.model.vo.configVo.ScatterConfigInfo;
+import com.server.ShowHistogramService;
+import com.server.ShowLineService;
+import com.server.ShowPieService;
+import com.server.ShowScatterService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -21,6 +23,8 @@ public class ShowChartsController {
     ShowPieService showPieService;
     @Autowired
     ShowLineService showLineService;
+    @Autowired
+    ShowScatterService showScatterService;
     /*
     展示柱状图
      */
@@ -44,4 +48,12 @@ public class ShowChartsController {
     public RepEntity showLine(@RequestBody LineConfigInfo body){
         return showLineService.showLine(body);
     }
+
+    /*
+    showScatter
+     */
+    @RequestMapping("/showScatter")
+    public RepEntity showScatter(@RequestBody ScatterConfigInfo body){
+        return showScatterService.showScatter(body);
+    }
 }

+ 67 - 5
src/main/java/com/dao/ChartsConfigMapper.java

@@ -2,6 +2,7 @@ package com.dao;
 
 import com.model.po.ChartConfig;
 import com.model.po.ChartConfigList;
+import com.model.vo.configVo.GroupInfo;
 import org.apache.ibatis.annotations.*;
 import org.springframework.stereotype.Repository;
 
@@ -11,9 +12,10 @@ import java.util.List;
 @Repository
 public interface ChartsConfigMapper {
 
-    @Insert("insert into bi_charts(CHART_NAME,CHART_TYPE,BD_DATA_ID,CHART_CONFIG,GROUP_BY,ACCESS_AUTHORITY,UPDATE_AUTHORITY,CHART_DESCRIBES,BC_CHART_STYLE,create_by,create_date) " +
-            "VALUES (#{chartName},#{chartType}, #{dataId}, #{chartConfig}, #{groupBy}, #{accessAuthority}, #{updateAuthority}, #{describes},#{style}, #{createBy},to_date(#{createDate},'YYYY-MM-DD hh24:mi:ss'))" )
-    @Options(useGeneratedKeys=false, keyProperty = "chartId",keyColumn = "id")
+    @Insert("insert into bi_charts(id,CHART_NAME,CHART_TYPE,BD_DATA_ID,CHART_CONFIG,GROUP_BY,ACCESS_AUTHORITY,UPDATE_AUTHORITY,CHART_DESCRIBES,BC_CHART_STYLE,create_by,create_date) " +
+            "VALUES (#{chartId},#{chartName},#{chartType}, #{dataId}, #{chartConfig}, #{groupBy}, #{accessAuthority}, #{updateAuthority}, #{describes},#{style}, #{createBy},to_date(#{createDate},'YYYY-MM-DD hh24:mi:ss'))" )
+//    @Options(useGeneratedKeys=false, keyProperty = "chartId",keyColumn = "id")
+    @SelectKey(before=true,keyProperty="chartId",resultType=Integer.class,statement="SELECT charts_squence.nextval from dual",keyColumn = "id")
     void insertCharts(ChartConfig chartConfig);
 
     @Delete("<script>" +
@@ -33,9 +35,27 @@ public interface ChartsConfigMapper {
     ChartConfig getOneChart(int id);
 
     @Select("select id as chartId, chart_name as chartName, chart_type as chartType, create_by as createBy, create_date as createDate" +
-            ",bc_filters as filters from bi_charts")
+            ",bc_filters as filters, CHART_DESCRIBES as describes from bi_charts")
     List<ChartConfigList> getListCharts();
 
+    /*
+    通过Id查找表名
+    */
+    @Select("select dc.table_name from bi_data_connectors dc left join bi_charts c on dc.id =c.bd_data_id where c.id=#{chartId}")
+    String getTableName(@Param("chartId") int id);
+
+    /*
+    通过ID查找数据源配置
+     */
+    @Select("select dc.db_config from bi_data_connectors dc left join bi_charts c on dc.id =c.bd_data_id where c.id=#{chartId}")
+    String getBaseConifg(@Param("chartId") int id);
+
+    /*
+    通过ID查找数据库用户名
+     */
+    @Select("select user_name from bi_databases where id = #{id}")
+    String getBaseUser(@Param("id") int id);
+
     /*
     更新图表配置
      */
@@ -46,7 +66,7 @@ public interface ChartsConfigMapper {
             "<if test=\"createBy != null\"> , CREATE_BY = #{createBy} </if>" +
             "<if test=\"groupBy != null\"> , GROUP_BY = #{groupBy} </if>" +
             "<if test=\"chartConfig != null\"> , CHART_CONFIG = #{chartConfig} </if>" +
-//            "<if test=\"chartDescribes != null\"> , CHART_DESCRIBES = #{chartDescribes} </if>" +
+            "<if test=\"describes != null\"> , CHART_DESCRIBES = #{describes} </if>" +
             "<if test=\"filters != null\"> , BC_FILTERS = #{filters} </if>" +
             "<if test=\"accessAuthority != null\"> , ACCESS_AUTHORITY = #{accessAuthority} </if>" +
             "<if test=\"updateAuthority != null\"> , UPDATE_AUTHORITY = #{updateAuthority} </if>" +
@@ -55,4 +75,46 @@ public interface ChartsConfigMapper {
             "where id = #{chartId}" +
             "</script>")
     void updateChartConfig(ChartConfig chartConfig);
+
+    /*
+   创建图表分组
+    */
+    @Insert("insert into bi_charts_group(bc_id, bc_group_name, bc_index, bc_father_id, create_by, create_date)" +
+            "values(#{id}, #{groupName}, #{groupIndex}, #{fatherId}, #{createBy}, to_date(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'YYYY-MM-DD hh24:mi:ss'))")
+    @SelectKey(before=true,keyProperty="id",resultType=int.class,statement="SELECT bi_charts_group_squence.nextval from dual",keyColumn = "bc_id")
+    void setChartsGroup(GroupInfo group);
+
+    /*
+    更新图表分组
+     */
+    @Update("<script>"+
+            "UPDATE bi_charts_group set "+
+            "bc_group_name = #{groupName}" +
+            "<if test=\"groupIndex != null\"> , bc_index = #{groupIndex} </if>" +
+            "<if test=\"fatherId != null\"> , bc_father_id = #{fatherId} </if>" +
+            "<if test=\"createBy != null\"> , create_by = #{createBy} ,</if>" +
+            "updata_date = to_date(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'YYYY-MM-DD hh24:mi:ss') "+
+            " where bc_id = #{id}" +
+            "</script>")
+    void updataChartsGroup(GroupInfo groupInfo);
+
+    /*
+    删除分组
+     */
+    @Delete("<script>" +
+            "delete from bi_charts_group where bc_id in" +
+            "(" +
+            "<foreach collection=\"list\" index=\"index\" item=\"item\"  separator=\",\">" +
+            "#{item, jdbcType = NUMERIC}" +
+            " </foreach>" +
+            ")" +
+            "</script>")
+    void delChartsGroup(List<Integer> isList);
+
+    /*
+    查询分组
+     */
+    @Select("select bc_id as id, bc_group_name as groupName, bc_index as groupIndex, bc_father_id as fatherId, create_by as createBy," +
+            "create_date as createDate from bi_charts_group")
+    List<GroupInfo> getChartsGroup();
 }

+ 49 - 4
src/main/java/com/dao/DataConnectorMapper.java

@@ -4,6 +4,7 @@ import com.model.po.ColumnData;
 import com.model.po.DataConnector;
 import com.model.po.DataConnectorList;
 import com.model.po.Databases;
+import com.model.vo.configVo.GroupInfo;
 import org.apache.ibatis.annotations.*;
 import org.springframework.stereotype.Repository;
 
@@ -48,8 +49,9 @@ public interface DataConnectorMapper {
     /*
     插入数据源配置
      */
-    @Insert("INSERT INTO bi_data_connectors(data_name,data_note,data_tag,con_type,LOAD_OBJECT,DB_CONFIG,columns_config,used_number,create_by,create_date, table_name) " +
-            "VALUES (#{dataName}, #{note}, #{dataTag}, #{type}, #{loadObject}, #{dbConfig},#{columnConfig}, #{usedNumber},#{createBy}, to_date(#{createDate},'YYYY-MM-DD hh24:mi:ss'), #{tableName})")
+    @Insert("INSERT INTO bi_data_connectors(id,data_name,data_note,data_tag,con_type,LOAD_OBJECT,DB_CONFIG,columns_config,used_number,create_by,create_date, table_name) " +
+            "VALUES (#{dataId},#{dataName}, #{note}, #{dataTag}, #{type}, #{loadObject}, #{dbConfig},#{columnConfig}, #{usedNumber},#{createBy}, to_date(#{createDate},'YYYY-MM-DD hh24:mi:ss'), #{tableName})")
+    @SelectKey(before=true,keyProperty="dataId",resultType=int.class,statement="SELECT BI_DASHBOARDS_squence.nextval from dual",keyColumn = "id")
     void insertDataConnector(DataConnector dataConnector);
 
     /*
@@ -87,8 +89,9 @@ public interface DataConnectorMapper {
     /*
     保存数据库连接
      */
-    @Insert("insert into BI_DATABASES(ADDRASS, CREATE_DATE, DATABASE_TYPE, DATA_NAME, bases_NAME, PASS_WORD, PORT, USER_NAME, note)" +
-            "values(#{addrass}, to_date(#{createDate},'YYYY-MM-DD hh24:mi:ss'), #{databaseType}, #{dataName}, #{name}, #{passWord}, #{port}, #{userName}, #{note})")
+    @Insert("insert into BI_DATABASES(id,ADDRASS, CREATE_DATE, DATABASE_TYPE, DATA_NAME, bases_NAME, PASS_WORD, PORT, USER_NAME, note)" +
+            "values(#{id},#{addrass}, to_date(#{createDate},'YYYY-MM-DD hh24:mi:ss'), #{databaseType}, #{dataName}, #{name}, #{passWord}, #{port}, #{userName}, #{note})")
+    @SelectKey(before=true,keyProperty="id",resultType=int.class,statement="SELECT bi_databases_squence.nextval from dual",keyColumn = "id")
     void inputDataBases(Databases databases);
 
     /*
@@ -140,4 +143,46 @@ public interface DataConnectorMapper {
     @Select("select columns_Config as columnConfig from bi_data_connectors " +
             " where id =#{id}")
     DataConnector getColumnData(int id);
+
+    /*
+    创建数据源分组
+     */
+    @Insert("insert into bi_base_group_by(bb_id, bb_group_name, bb_index, bb_father_id, create_by, create_date)" +
+            "values(#{id}, #{groupName}, #{groupIndex}, #{fatherId}, #{createBy}, to_date(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'YYYY-MM-DD hh24:mi:ss'))")
+    @SelectKey(before=true,keyProperty="id",resultType=int.class,statement="SELECT bi_base_group_by_squence.nextval from dual",keyColumn = "bb_id")
+    void setConnectorGroup(GroupInfo group);
+
+    /*
+    更新数据源分组
+     */
+    @Update("<script>"+
+            "UPDATE bi_base_group_by set "+
+            "bb_group_name = #{groupName}" +
+            "<if test=\"groupIndex != null\"> , bb_index = #{groupIndex} </if>" +
+            "<if test=\"fatherId != null\"> , bb_father_id = #{fatherId} </if>" +
+            "<if test=\"createBy != null\"> , create_by = #{createBy} ,</if>" +
+            "updata_date = to_date(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'YYYY-MM-DD hh24:mi:ss') "+
+            " where bb_id = #{id}" +
+            "</script>")
+    void updataConnectorGroup(GroupInfo groupInfo);
+
+    /*
+    删除分组
+     */
+    @Delete("<script>" +
+            "delete from bi_base_group_by where bb_id in" +
+            "(" +
+            "<foreach collection=\"list\" index=\"index\" item=\"item\"  separator=\",\">" +
+            "#{item, jdbcType = NUMERIC}" +
+            " </foreach>" +
+            ")" +
+            "</script>")
+    void delConnectorGroup(List<Integer> isList);
+
+    /*
+    查询分组
+     */
+    @Select("select bb_id as id, bb_group_name as groupName, bb_index as groupIndex, bb_father_id as fatherId, create_by as createBy," +
+            "create_date as createDate from bi_base_group_by")
+    List<GroupInfo> getConnectorGroup();
 }

+ 32 - 0
src/main/java/com/model/bo/Scatter.java

@@ -0,0 +1,32 @@
+package com.model.bo;
+/*
+散点图
+ */
+public class Scatter {
+    private Column xAxis;
+    private Column yAxis;
+
+    public Column getxAxis() {
+        return xAxis;
+    }
+
+    public void setxAxis(Column xAxis) {
+        this.xAxis = xAxis;
+    }
+
+    public Column getyAxis() {
+        return yAxis;
+    }
+
+    public void setyAxis(Column yAxis) {
+        this.yAxis = yAxis;
+    }
+
+    @Override
+    public String toString() {
+        return "Coordinate{" +
+                "xAxis='" + xAxis + '\'' +
+                ", yAxis='" + yAxis + '\'' +
+                '}';
+    }
+}

+ 32 - 0
src/main/java/com/model/bo/ScatterSeries.java

@@ -0,0 +1,32 @@
+package com.model.bo;
+
+import java.util.List;
+
+public class ScatterSeries {
+    private String name;
+    private List<ScatterSeriesMap> mdata;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public List<ScatterSeriesMap> getMdata() {
+        return mdata;
+    }
+
+    public void setMdata(List<ScatterSeriesMap> mdata) {
+        this.mdata = mdata;
+    }
+
+    @Override
+    public String toString() {
+        return "LineSeries{" +
+                "name='" + name + '\'' +
+                ", mdata=" + mdata +
+                '}';
+    }
+}

+ 30 - 0
src/main/java/com/model/bo/ScatterSeriesMap.java

@@ -0,0 +1,30 @@
+package com.model.bo;
+
+public class ScatterSeriesMap {
+    private String date;
+    private Double value;
+
+    public String getDate() {
+        return date;
+    }
+
+    public void setDate(String date) {
+        this.date = date;
+    }
+
+    public Double getValue() {
+        return value;
+    }
+
+    public void setValue(Double value) {
+        this.value = value;
+    }
+
+    @Override
+    public String toString() {
+        return "LineSeriesMap{" +
+                "date='" + date + '\'' +
+                ", value=" + value +
+                '}';
+    }
+}

+ 30 - 0
src/main/java/com/model/bo/ToSql.java

@@ -0,0 +1,30 @@
+package com.model.bo;
+
+public class ToSql {
+    private String baseName;
+    private String strSql;
+
+    public String getBaseName() {
+        return baseName;
+    }
+
+    public void setBaseName(String baseName) {
+        this.baseName = baseName;
+    }
+
+    public String getStrSql() {
+        return strSql;
+    }
+
+    public void setStrSql(String strSql) {
+        this.strSql = strSql;
+    }
+
+    @Override
+    public String toString() {
+        return "ToSql{" +
+                "baseName='" + baseName + '\'' +
+                ", strSql='" + strSql + '\'' +
+                '}';
+    }
+}

+ 10 - 0
src/main/java/com/model/po/ChartConfigList.java

@@ -4,9 +4,18 @@ public class ChartConfigList {
     private int chartId;
     private String chartName;
     private String chartType;
+    private String describes;
     private String createBy;
     private String createDate;
 
+    public String getDescribes() {
+        return describes;
+    }
+
+    public void setDescribes(String describes) {
+        this.describes = describes;
+    }
+
     public int getChartId() {
         return chartId;
     }
@@ -53,6 +62,7 @@ public class ChartConfigList {
                 "chartId=" + chartId +
                 ", chartName='" + chartName + '\'' +
                 ", chartType='" + chartType + '\'' +
+                ", describes='" + describes + '\'' +
                 ", createBy='" + createBy + '\'' +
                 ", createDate='" + createDate + '\'' +
                 '}';

+ 2 - 1
src/main/java/com/model/pojo/RepCode.java

@@ -5,7 +5,8 @@ public enum  RepCode {
     warn(-1,"请求失败,请重新尝试连接"),
     Null(-100,"数据为空"),
     nullAxis(-101,"x轴或y轴为空"),
-    erro(-110,"参数错误");
+    erro(-110,"参数错误"),
+    nullTableName(-120,"表名为空");
 
     private int code;
     private String msg;

+ 1 - 0
src/main/java/com/model/vo/configVo/ChartConfigInfo.java

@@ -21,6 +21,7 @@ public class ChartConfigInfo {
     private String style;                //样式
     private List<Column> filters;          //筛选
 
+
     public int getChartId() {
         return chartId;
     }

+ 86 - 0
src/main/java/com/model/vo/configVo/GroupInfo.java

@@ -0,0 +1,86 @@
+package com.model.vo.configVo;
+
+import java.util.Date;
+
+/*
+数据源分组
+图表分组
+ */
+public class GroupInfo {
+    private int id;
+    private String groupName;
+    private int groupIndex;
+    private int fatherId;
+    private String createBy;
+    private Date createDate;
+    private Date updataDate;
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public String getGroupName() {
+        return groupName;
+    }
+
+    public void setGroupName(String groupName) {
+        this.groupName = groupName;
+    }
+
+    public int getGroupIndex() {
+        return groupIndex;
+    }
+
+    public void setGroupIndex(int groupIndex) {
+        this.groupIndex = groupIndex;
+    }
+
+    public int getFatherId() {
+        return fatherId;
+    }
+
+    public void setFatherId(int fatherId) {
+        this.fatherId = fatherId;
+    }
+
+    public String getCreateBy() {
+        return createBy;
+    }
+
+    public void setCreateBy(String createBy) {
+        this.createBy = createBy;
+    }
+
+    public Date getCreateDate() {
+        return createDate;
+    }
+
+    public void setCreateDate(Date createDate) {
+        this.createDate = createDate;
+    }
+
+    public Date getUpdataDate() {
+        return updataDate;
+    }
+
+    public void setUpdataDate(Date updataDate) {
+        this.updataDate = updataDate;
+    }
+
+    @Override
+    public String toString() {
+        return "GroupInfo{" +
+                "id=" + id +
+                ", groupName='" + groupName + '\'' +
+                ", groupIndex=" + groupIndex +
+                ", fatherId=" + fatherId +
+                ", createBy='" + createBy + '\'' +
+                ", createDate=" + createDate +
+                ", updataDate=" + updataDate +
+                '}';
+    }
+}

+ 7 - 6
src/main/java/com/model/vo/configVo/HistogramConfigInfo.java

@@ -6,17 +6,18 @@ import com.model.bo.Column;
 import java.util.List;
 
 public class HistogramConfigInfo {
-    private String tableName;
+    private int id;
+//    private String tableName;
     private Column xAxis;
     private Column yAxis;
     private List<String> groups;
 
-    public String getTableName() {
-        return tableName;
+    public int getId() {
+        return id;
     }
 
-    public void setTableName(String tableName) {
-        this.tableName = tableName;
+    public void setId(int id) {
+        this.id = id;
     }
 
     public Column getxAxis() {
@@ -46,7 +47,7 @@ public class HistogramConfigInfo {
     @Override
     public String toString() {
         return "HistogramConfigInfo{" +
-                "tableName='" + tableName + '\'' +
+                "id=" + id +
                 ", xAxis=" + xAxis +
                 ", yAxis=" + yAxis +
                 ", groups=" + groups +

+ 6 - 6
src/main/java/com/model/vo/configVo/LineConfigInfo.java

@@ -6,17 +6,17 @@ import com.model.bo.Column;
 import java.util.List;
 
 public class LineConfigInfo {
-    private String tableName;
+    private int id;
     private Column xAxis;
     private Column yAxis;
     private List<String> groups;
 
-    public String getTableName() {
-        return tableName;
+    public int getId() {
+        return id;
     }
 
-    public void setTableName(String tableName) {
-        this.tableName = tableName;
+    public void setId(int id) {
+        this.id = id;
     }
 
     public Column getxAxis() {
@@ -46,7 +46,7 @@ public class LineConfigInfo {
     @Override
     public String toString() {
         return "LineConfigInfo{" +
-                "tableName='" + tableName + '\'' +
+                "id=" + id +
                 ", xAxis=" + xAxis +
                 ", yAxis=" + yAxis +
                 ", groups=" + groups +

+ 6 - 6
src/main/java/com/model/vo/configVo/PieConfigInfo.java

@@ -4,16 +4,16 @@ package com.model.vo.configVo;
 import com.model.bo.Column;
 
 public class PieConfigInfo {
-    private String tableName;
+    private int id;
     private Column legendData;
     private Column series;
 
-    public String getTableName() {
-        return tableName;
+    public int getId() {
+        return id;
     }
 
-    public void setTableName(String tableName) {
-        this.tableName = tableName;
+    public void setId(int id) {
+        this.id = id;
     }
 
     public Column getLegendData() {
@@ -35,7 +35,7 @@ public class PieConfigInfo {
     @Override
     public String toString() {
         return "PieConfigInfo{" +
-                "tableName='" + tableName + '\'' +
+                "id=" + id +
                 ", legendData=" + legendData +
                 ", series=" + series +
                 '}';

+ 55 - 0
src/main/java/com/model/vo/configVo/ScatterConfigInfo.java

@@ -0,0 +1,55 @@
+package com.model.vo.configVo;
+
+
+import com.model.bo.Column;
+
+import java.util.List;
+
+public class ScatterConfigInfo {
+    private int id;
+    private Column xAxis;
+    private Column yAxis;
+    private List<String> groups;
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public Column getxAxis() {
+        return xAxis;
+    }
+
+    public void setxAxis(Column xAxis) {
+        this.xAxis = xAxis;
+    }
+
+    public Column getyAxis() {
+        return yAxis;
+    }
+
+    public void setyAxis(Column yAxis) {
+        this.yAxis = yAxis;
+    }
+
+    public List<String> getGroups() {
+        return groups;
+    }
+
+    public void setGroups(List<String> groups) {
+        this.groups = groups;
+    }
+
+    @Override
+    public String toString() {
+        return "LineConfigInfo{" +
+                "id=" + id +
+                ", xAxis=" + xAxis +
+                ", yAxis=" + yAxis +
+                ", groups=" + groups +
+                '}';
+    }
+}

+ 44 - 112
src/main/java/com/server/ChartsConfigService.java

@@ -7,6 +7,7 @@ import com.model.po.ChartConfig;
 import com.model.pojo.RepCode;
 import com.model.pojo.RepEntity;
 import com.model.vo.configVo.ChartConfigInfo;
+import com.model.vo.configVo.GroupInfo;
 import com.util.TimeUtil;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -23,18 +24,6 @@ public class ChartsConfigService {
     ChartsConfigMapper chartsConfigMapper;
     @Autowired
     ObjectMapper objectmapper;
-//    @Autowired
-//    private AggregateMapper aggregateMapper;
-//    @Autowired
-//    private DataViewMapper dataViewMapper;
-//    @Autowired
-//    private LineMapper lineMapper;
-//    @Autowired
-//    private ScatterMapper scatterMapper;
-//    @Autowired
-//    private HistogramMapper histogramMapper;
-//    @Autowired
-//    private PieMapper pieMapper;
 
     /*
     保存基本设置
@@ -72,7 +61,7 @@ public class ChartsConfigService {
 
         String groupBy = null;
 //        String subsections = null;
-        String chartsConfig = null;
+//        String chartsConfig = null;
         String accessAuthority = null;
         String updateAuthority = null;
         String filters = null;
@@ -96,11 +85,11 @@ public class ChartsConfigService {
 //            e.printStackTrace();
 //        }
 
-        try {
-            chartsConfig = objectmapper.writeValueAsString(chartConfigInfo.getChartConfig());
-        } catch (JsonProcessingException e) {
-            e.printStackTrace();
-        }
+//        try {
+//            chartsConfig = objectmapper.writeValueAsString(chartConfigInfo.getChartConfig());
+//        } catch (JsonProcessingException e) {
+//            e.printStackTrace();
+//        }
 
         try {
             accessAuthority = objectmapper.writeValueAsString(chartConfigInfo.getAccessAuthority());
@@ -122,7 +111,7 @@ public class ChartsConfigService {
 
         chartConfig.setGroupBy(groupBy);
 //        chartConfig.setSubsections(subsections);
-        chartConfig.setChartConfig(chartsConfig);
+//        chartConfig.setChartConfig(chartsConfig);
         chartConfig.setAccessAuthority(accessAuthority);
         chartConfig.setUpdateAuthority(updateAuthority);
         chartConfig.setFilters(filters);
@@ -131,9 +120,8 @@ public class ChartsConfigService {
 
         chartsConfigMapper.insertCharts(chartConfig);
         int id = chartConfig.getChartId();
-        System.out.println(id);
 
-        return new RepEntity(RepCode.success);
+        return new RepEntity(RepCode.success,id);
     }
 
     /*
@@ -147,7 +135,7 @@ public class ChartsConfigService {
 
         String groupBy = null;
 //        String subsections = null;
-        String chartsConfig = null;
+//        String chartsConfig = null;
         String accessAuthority = null;
         String updateAuthority = null;
         String filters = null;
@@ -171,11 +159,6 @@ public class ChartsConfigService {
 //            e.printStackTrace();
 //        }
 
-        try {
-            chartsConfig = objectmapper.writeValueAsString(chartConfigInfo.getChartConfig());
-        } catch (JsonProcessingException e) {
-            e.printStackTrace();
-        }
 
         try {
             accessAuthority = objectmapper.writeValueAsString(chartConfigInfo.getAccessAuthority());
@@ -197,7 +180,8 @@ public class ChartsConfigService {
 
         chartConfig.setGroupBy(groupBy);
 //        chartConfig.setSubsections(subsections);
-        chartConfig.setChartConfig(chartsConfig);
+//        chartConfig.setChartConfig(chartsConfig);
+        chartConfig.setAccessAuthority(accessAuthority);
         chartConfig.setAccessAuthority(accessAuthority);
         chartConfig.setUpdateAuthority(updateAuthority);
         chartConfig.setFilters(filters);
@@ -236,90 +220,38 @@ public class ChartsConfigService {
     }
 
     /*
-    删除总体表
+    创建图表分组
      */
-//    public  RepEntity delAggregate(int id){
-//        if (aggregateMapper.getOneAggregate(id) == null){
-//            return new RepEntity(RepCode.Null);
-//        }
-//        aggregateMapper.delAggregate(id);
-//        return new RepEntity(RepCode.success);
-//    }
-//
-//    /*
-//    保存个体表设置
-//     */
-//    public RepEntity setDataView(DataViewInfo dataViewInfo){
-//        DataView dataView = new DataView();
-//        BeanUtils.copyProperties(dataViewInfo, dataView);
-//        dataView.setCreateTime(timeUtil.SystemTime());
-//        dataView.setSubsection(dataViewInfo.getSubsection().toString());
-//        dataView.setGroup(dataViewInfo.getGroup().toString());
-//        dataViewMapper.setDataView(dataView);
-//        return new RepEntity(RepCode.success);
-//    }
-//
-//    /*
-//    保存折线图
-//     */
-//    public RepEntity setLine(LineInfo lineInfo){
-//        Line line = new Line();
-//        BeanUtils.copyProperties(lineInfo,line);
-//        line.setCreateTime(timeUtil.SystemTime());
-//        line.setCount(lineInfo.getCount().toString());
-//        line.setAccumulate(lineInfo.getAccumulate().toString());
-//        line.setxAxis(lineInfo.getxAxis().toString());
-//        line.setyAxis(lineInfo.getyAxis().toString());
-//
-//        lineMapper.setLine(line);
-//        return new RepEntity(RepCode.success);
-//    }
-//
-//    /*
-//    保存散点图
-//     */
-//    public RepEntity setScatter(ScatterInfo scatterInfo){
-//        Scatter scatter = new Scatter();
-//        BeanUtils.copyProperties(scatterInfo,scatter);
-//        scatter.setCreateTime(timeUtil.SystemTime());
-//        scatter.setCount(scatterInfo.getCount().toString());
-//        scatter.setAccumulate(scatterInfo.getAccumulate().toString());
-//        scatter.setxAxis(scatterInfo.getxAxis().toString());
-//        scatter.setyAxis(scatterInfo.getyAxis().toString());
-//
-//        scatterMapper.setScatter(scatter);
-//        return new RepEntity(RepCode.success);
-//    }
-//
-//    /*
-//    保存饼图
-//     */
-//    public RepEntity setHistogram(HistogramInfo histogramInfo){
-//        Coordinate histogram = new Coordinate();
-//        BeanUtils.copyProperties(histogramInfo,histogram);
-//        histogram.setCreateTime(timeUtil.SystemTime());
-//        histogram.setCount(histogramInfo.getCount().toString());
-//        histogram.setAccumulate(histogramInfo.getAccumulate().toString());
-//        histogram.setxAxis(histogramInfo.getxAxis().toString());
-//        histogram.setyAxis(histogramInfo.getyAxis().toString());
-//
-//        histogramMapper.setHistogram(histogram);
-//        return new RepEntity(RepCode.success);
-//    }
-//
-//    /*
-//    保存柱状图
-//     */
-//    public RepEntity setPie(PieInfo pieInfo){
-//        Pie pie = new Pie();
-//        BeanUtils.copyProperties(pieInfo,pie);
-//        pie.setCreateTime(timeUtil.SystemTime());
-//        pie.setCount(pieInfo.getCount().toString());
-//        pie.setAccumulate(pieInfo.getAccumulate().toString());
-//        pie.setBlock(pieInfo.getBlock().toString());
-//
-//        pieMapper.setPie(pie);
-//        return new RepEntity(RepCode.success);
-//    }
+    public RepEntity setDataConnectorGroup(GroupInfo groupInfo){
+        if (groupInfo == null || "".equals(groupInfo)){
+            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 delDataConnectorGroup(List<Integer> idList){
+        chartsConfigMapper.delChartsGroup(idList);
+        return new RepEntity(RepCode.success);
+    }
+
+    /*
+    查询图表分组列表
+     */
+    public RepEntity getConnectorGroup(){
+        return new RepEntity(RepCode.success, chartsConfigMapper.getChartsGroup());
+    }
 
 }

+ 122 - 0
src/main/java/com/server/DataBasesService.java

@@ -0,0 +1,122 @@
+package com.server;
+
+import com.dao.DataConnectorMapper;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.type.CollectionType;
+import com.model.bo.Pages;
+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.vo.configVo.ColumnRenameInfo;
+import com.model.vo.configVo.DatabasesInfo;
+import com.util.TimeUtil;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+public class DataBasesService {
+    @Autowired
+    DataConnectorMapper dataConnectorMapper;
+    @Autowired
+    TimeUtil timeUtil;
+    @Autowired
+    ObjectMapper objectMapper;
+    /*
+   保存数据库连接
+    */
+    public RepEntity inputDatabases(DatabasesInfo databasesInfo){
+        if (databasesInfo == null || "".equals(databasesInfo)){
+            return new RepEntity(RepCode.Null);
+        }
+        Databases databases = new Databases();
+        BeanUtils.copyProperties(databasesInfo, databases);
+        databases.setCreateDate(timeUtil.SystemTime());
+        dataConnectorMapper.inputDataBases(databases);
+        int id = databases.getId();
+        return new RepEntity(RepCode.success,id);
+    }
+
+    /*
+   查看数据库配置列表
+    */
+    public RepEntity getListDatabases(Pages pages){
+        if (pages == null || "".equals(pages)){
+            int pageNum = pages.getPageNum();
+            int pageSize = pages.getPageSize();
+
+            //使用分页插件,核心代码就这一行
+//            PageHelper.startPage(pageNum, pageSize);
+        }
+
+        List<Databases> databases = dataConnectorMapper.getDatabasesList();
+        return new RepEntity(RepCode.success, databases);
+    }
+
+    /*
+    删除数据库配置
+     */
+    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);
+        dataConnectorMapper.updatabases(databases);
+        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<>();
+
+//        Iterator isList = configList.iterator();
+
+        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);
+    }
+
+}

+ 18 - 76
src/main/java/com/server/DataConnectorService.java

@@ -3,30 +3,23 @@ package com.server;
 import com.dao.DataConnectorMapper;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.type.CollectionType;
 import com.model.bo.DatabaseConfig;
 import com.model.bo.Pages;
-import com.model.po.ColumnToShow;
 import com.model.po.DataConnector;
 import com.model.po.DataConnectorList;
-import com.model.po.Databases;
 import com.model.pojo.RepCode;
 import com.model.pojo.RepEntity;
 import com.model.vo.configVo.ColumnRenameInfo;
 import com.model.vo.configVo.DataConnectorInfo;
-import com.model.vo.configVo.DatabasesInfo;
+import com.model.vo.configVo.GroupInfo;
 import com.util.SqlMatch;
 import com.util.TimeUtil;
 import org.springframework.beans.BeanUtils;
 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 com.dao.database2.DataColumnMapper;
-
 @Service
 public class DataConnectorService {
 
@@ -86,7 +79,8 @@ public class DataConnectorService {
         System.out.println(dataConnector);
 
         dataConnectorMapper.insertDataConnector(dataConnector);
-        return new RepEntity(RepCode.success);
+        int id = dataConnector.getDataId();
+        return new RepEntity(RepCode.success,id);
     }
 
     //查看数据源列表
@@ -177,89 +171,37 @@ public class DataConnectorService {
     }
 
     /*
-    保存数据库连接
+    创建数据源分组
      */
-    public RepEntity inputDatabases(DatabasesInfo databasesInfo){
-        if (databasesInfo == null || "".equals(databasesInfo)){
+    public RepEntity setDataConnectorGroup(GroupInfo groupInfo){
+        if (groupInfo == null || "".equals(groupInfo)){
             return new RepEntity(RepCode.Null);
         }
-        Databases databases = new Databases();
-        BeanUtils.copyProperties(databasesInfo, databases);
-        databases.setCreateDate(timeUtil.SystemTime());
-        dataConnectorMapper.inputDataBases(databases);
-        return new RepEntity(RepCode.success);
-    }
-
-    /*
-   查看数据库配置列表
-    */
-    public RepEntity getListDatabases(Pages pages){
-        if (pages == null || "".equals(pages)){
-            int pageNum = pages.getPageNum();
-            int pageSize = pages.getPageSize();
-
-            //使用分页插件,核心代码就这一行
-//            PageHelper.startPage(pageNum, pageSize);
-        }
-
-        List<Databases> databases = dataConnectorMapper.getDatabasesList();
-        return new RepEntity(RepCode.success, databases);
+        dataConnectorMapper.setConnectorGroup(groupInfo);
+        int id = groupInfo.getId();
+        return new RepEntity(RepCode.success, id);
     }
 
     /*
-    删除数据库配置
+    更新数据源分组
      */
-    public RepEntity delDatabases(List<Integer> idList){
-        System.out.println(idList);
-        dataConnectorMapper.deleteDatabases(idList);
+    public RepEntity updataDataConnectorGroup(GroupInfo groupInfo){
+        dataConnectorMapper.updataConnectorGroup(groupInfo);
         return new RepEntity(RepCode.success);
     }
 
     /*
-    修改数据库配置
+    删除数据源分组
      */
-    public RepEntity updatabases(DatabasesInfo databasesInfo){
-        Databases databases = new Databases();
-        BeanUtils.copyProperties(databasesInfo, databases);
-        System.out.println(databases);
-        dataConnectorMapper.updatabases(databases);
+    public RepEntity delDataConnectorGroup(List<Integer> idList){
+        dataConnectorMapper.delConnectorGroup(idList);
         return new RepEntity(RepCode.success);
     }
 
     /*
-    查询数据
+    查询数据源分组列表
      */
-    public RepEntity getColumnData(int id){
-        DataConnector dataConnector = new DataConnector();
-        dataConnector = dataConnectorMapper.getColumnData(id);
-        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<>();
-
-//        Iterator isList = configList.iterator();
-
-        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);
+    public RepEntity getConnectorGroup(){
+        return new RepEntity(RepCode.success, dataConnectorMapper.getConnectorGroup());
     }
 }

+ 37 - 2
src/main/java/com/server/ImplementSqlService.java

@@ -1,28 +1,63 @@
 package com.server;
 
 import com.dao.DataColumnMapper;
+import com.model.bo.ToSql;
 import com.model.po.ColumnData;
+import com.model.po.Databases;
 import com.model.pojo.RepCode;
 import com.model.pojo.RepEntity;
 import com.util.SqlMatch;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
 import java.util.List;
 
 @Service
 public class ImplementSqlService {
     @Autowired
     DataColumnMapper dataColumnMapper;
+
     /*
     执行数据源
      */
-    public RepEntity implementSql(String sqlStr){
+    public RepEntity implementSql(ToSql toSql) {
+        String sqlStr = toSql.getStrSql();
         String tableName = SqlMatch.matchSql(sqlStr).toUpperCase();
-        if ("".equals(tableName) || tableName == null){
+        System.out.println(tableName);
+        if ("".equals(tableName) || tableName == null) {
             return new RepEntity(RepCode.Null);
         }
         List<ColumnData> columnData = dataColumnMapper.getColumn(tableName);
         return new RepEntity(RepCode.success, columnData);
     }
+
+    /*
+    判断数据库连接
+     */
+    public RepEntity connectTest(Databases databases) {
+        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("数据库连接成功");
+        } catch (SQLException se) {
+            System.out.println("数据库连接失败!");
+            se.printStackTrace();
+            return new RepEntity(RepCode.Null);
+        }finally{
+            try {
+                con.close();
+                } catch (SQLException e) {
+                   e.printStackTrace();
+            }
+        }
+        return new RepEntity(RepCode.success);
+    }
 }

+ 42 - 3
src/main/java/com/server/ShowHistogramService.java

@@ -1,14 +1,20 @@
 package com.server;
 
+import com.dao.ChartsConfigMapper;
 import com.dao.ShowChartsMapper;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.model.bo.Series;
+import com.model.po.Databases;
 import com.model.pojo.RepCode;
 import com.model.pojo.RepEntity;
 import com.model.vo.configVo.HistogramConfigInfo;
 import com.model.vo.dataVo.ChartsDataInfo;
+import com.util.BasesSource.DynamicDataSourceContextHolder;
+import com.util.CalculationJudgeUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Repository;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -21,6 +27,10 @@ public class ShowHistogramService {
     TimeConverterUtil timeConverterUtil;
     @Autowired
     CalculationJudgeUtil calculationJudgeUtil;
+    @Autowired
+    ChartsConfigMapper chartsConfigMapper;
+    @Autowired
+    ObjectMapper objectMapper;
 
     /*
     柱状图数据展示
@@ -30,7 +40,36 @@ public class ShowHistogramService {
         if (histogramConfigInfo == null || "".equals(histogramConfigInfo)){
             return new RepEntity(RepCode.Null);
         }
-        String tableName = histogramConfigInfo.getTableName();
+
+        //取表名
+        int id = histogramConfigInfo.getId();
+        String tableName = chartsConfigMapper.getTableName(id);
+        if (tableName == null || "".equals(tableName)){
+            return new RepEntity(RepCode.nullTableName);
+        }
+
+
+        //取数据源ID
+        String dataConfig = chartsConfigMapper.getBaseConifg(id);
+
+        //取数据连接名的数据库名
+        Databases databases = new Databases();
+        try {
+            databases = objectMapper.readValue(dataConfig, Databases.class);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        String baseName = databases.getUserName();
+        System.out.println("切换数据库"+baseName);
+
+        if (!DynamicDataSourceContextHolder.isContainsDataSource(baseName)) {
+            //joinPoint.getSignature() :获取连接点的方法签名对象
+            System.out.println("数据源 " + baseName + " 不存在使用默认的数据源 -> ");
+        } else {
+            System.out.println("使用数据源:" + baseName);
+            DynamicDataSourceContextHolder.setDataSourceType(baseName);
+        }
+
         String xColumn = histogramConfigInfo.getxAxis().getColumnRename();
         String yColumn = histogramConfigInfo.getyAxis().getColumnRename();
         String xColumnType = histogramConfigInfo.getxAxis().getColumnType();
@@ -78,9 +117,7 @@ public class ShowHistogramService {
             double valueOne = 0;
             String valueOnes = null;
             if ("time".equals(xColumnType)){
-//                System.out.println("Y:"+ yColumn + "........x:" + xColumn + "........yAxistype:" + yAxisType + "...xtpye:+"+yAxisType+ "   xdata:"+xdata);
                 valueOnes = timeConverterUtil.getTimeValueConverter(yColumn, xColumn, tableName, yAxisType, xAxisType, xdata);
-//                System.out.println("value:"+valueOnes);
             }else {
                 valueOnes = showChartsMapper.getValues(yColumn, xColumn, tableName, yAxisType, xdata);
             }
@@ -149,6 +186,8 @@ public class ShowHistogramService {
 
         chartsDataInfo.setSerieses(serieses);
 
+        DynamicDataSourceContextHolder.clearDataSourceType();
+
         return new RepEntity(RepCode.success, chartsDataInfo);
     }
 

+ 7 - 1
src/main/java/com/server/ShowLineService.java

@@ -1,5 +1,6 @@
 package com.server;
 
+import com.dao.ChartsConfigMapper;
 import com.dao.ShowChartsMapper;
 import com.model.bo.LineSeries;
 import com.model.bo.LineSeriesMap;
@@ -7,6 +8,7 @@ import com.model.pojo.RepCode;
 import com.model.pojo.RepEntity;
 import com.model.vo.configVo.LineConfigInfo;
 import com.model.vo.dataVo.ChartsDataInfo;
+import com.util.CalculationJudgeUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -22,6 +24,8 @@ public class ShowLineService {
     TimeConverterUtil timeConverterUtil;
     @Autowired
     CalculationJudgeUtil calculationJudgeUtil;
+    @Autowired
+    ChartsConfigMapper chartsConfigMapper;
 
     /*
     Line数据展示
@@ -31,7 +35,9 @@ public class ShowLineService {
         if (lineConfigInfo == null || "".equals(lineConfigInfo)){
             return new RepEntity(RepCode.Null);
         }
-        String tableName = lineConfigInfo.getTableName();
+        int id = lineConfigInfo.getId();
+        String tableName = chartsConfigMapper.getTableName(id);
+
         String xColumn = lineConfigInfo.getxAxis().getColumnRename();
         String yColumn = lineConfigInfo.getyAxis().getColumnRename();
 

+ 6 - 1
src/main/java/com/server/ShowPieService.java

@@ -1,5 +1,6 @@
 package com.server;
 
+import com.dao.ChartsConfigMapper;
 import com.dao.ShowChartsMapper;
 import com.model.bo.PieSeries;
 import com.model.bo.PieSeriesMap;
@@ -7,6 +8,7 @@ import com.model.pojo.RepCode;
 import com.model.pojo.RepEntity;
 import com.model.vo.configVo.PieConfigInfo;
 import com.model.vo.dataVo.ChartsDataInfo;
+import com.util.CalculationJudgeUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -22,6 +24,8 @@ public class ShowPieService {
     TimeConverterUtil timeConverterUtil;
     @Autowired
     CalculationJudgeUtil calculationJudgeUtil;
+    @Autowired
+    ChartsConfigMapper chartsConfigMapper;
 
     /*
     Pie数据展示
@@ -31,7 +35,8 @@ public class ShowPieService {
         if (pieConfigInfo == null || "".equals(pieConfigInfo)){
             return new RepEntity(RepCode.Null);
         }
-        String tableName = pieConfigInfo.getTableName();
+        int id = pieConfigInfo.getId();
+        String tableName = chartsConfigMapper.getTableName(id);
         String xColumn = pieConfigInfo.getLegendData().getColumnRename();
         String yColumn = pieConfigInfo.getSeries().getColumnRename();
         String xColumnType = pieConfigInfo.getLegendData().getColumnType();

+ 161 - 0
src/main/java/com/server/ShowScatterService.java

@@ -0,0 +1,161 @@
+package com.server;
+
+import com.dao.ChartsConfigMapper;
+import com.dao.ShowChartsMapper;
+import com.model.bo.LineSeries;
+import com.model.bo.LineSeriesMap;
+import com.model.pojo.RepCode;
+import com.model.pojo.RepEntity;
+import com.model.vo.configVo.ScatterConfigInfo;
+import com.model.vo.dataVo.ChartsDataInfo;
+import com.util.CalculationJudgeUtil;
+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;
+
+    /*
+    Line数据展示
+     */
+    public RepEntity showScatter(ScatterConfigInfo scatterConfigInfo){
+        ChartsDataInfo chartsDataInfo = new ChartsDataInfo();
+        if (scatterConfigInfo == null || "".equals(scatterConfigInfo)){
+            return new RepEntity(RepCode.Null);
+        }
+        int id = scatterConfigInfo.getId();
+        String tableName = chartsConfigMapper.getTableName(id);
+
+        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轴前端用
+
+        //X轴
+        //判断是否为日期类型
+        if ("time".equals(xColumnType)){
+            xAxisData = timeConverterUtil.timeConverter(xColumn, tableName, xAxisType);
+            xData = timeConverterUtil.toRespons(xAxisData,xAxisType );
+            System.out.println("data:"+xAxisData);
+        }else {
+            xAxisData = showChartsMapper.getXAxis(xColumn, tableName);
+
+        }
+
+        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);
+            }else {
+                valueOnes = showChartsMapper.getValues(yColumn, xColumn, tableName, yAxisType, xdata);
+            }
+            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();
+                List<String> groupsData = showChartsMapper.getGroups(groupByName,tableName); //查询每个分组系列
+                System.out.println("groupdata:"+ groupsData.toString());
+                Iterator itGroupsData = groupsData.iterator();
+
+                //每个分组得到得每个系列
+                while(itGroupsData.hasNext()){
+                    String groupsName = (String)itGroupsData.next();
+
+                    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);
+                        }else {
+                            groupsValueOnes = showChartsMapper.getGroupsValue(yAxisType, yColumn, tableName, groupByName, groupsName, xColumn, xAxisDataOne);
+                        }
+                        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);
+
+        return new RepEntity(RepCode.success, chartsDataInfo);
+    }
+
+
+}

+ 17 - 0
src/main/java/com/util/BasesSource/DynamicDataSource.java

@@ -0,0 +1,17 @@
+package com.util.BasesSource;
+
+import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
+
+/**
+ * @Author caiChaoqi
+ * @Date 2018-06-23
+ * @Description 动态数据源
+ * AbstractRoutingDataSource(每执行一次数据库,动态获取DataSource)
+ */
+public class DynamicDataSource extends AbstractRoutingDataSource {
+    @Override
+    protected Object determineCurrentLookupKey() {
+        return DynamicDataSourceContextHolder.getDataSourceType();
+    }
+}
+

+ 37 - 0
src/main/java/com/util/BasesSource/DynamicDataSourceContextHolder.java

@@ -0,0 +1,37 @@
+package com.util.BasesSource;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Author caiChaoqi
+ * @Date 2018-06-23
+ * @Description 动态数据源上下文管理
+ */
+public class DynamicDataSourceContextHolder {
+
+    //存放当前线程使用的数据源类型信息
+    private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>();
+    //存放数据源id
+    public static List<String> dataSourceIds = new ArrayList<String>();
+
+    //设置数据源
+    public static void setDataSourceType(String dataSourceType) {
+        contextHolder.set(dataSourceType);
+    }
+
+    //获取数据源
+    public static String getDataSourceType() {
+        return contextHolder.get();
+    }
+
+    //清除数据源
+    public static void clearDataSourceType() {
+        contextHolder.remove();
+    }
+
+    //判断当前数据源是否存在
+    public static boolean isContainsDataSource(String dataSourceId) {
+        return dataSourceIds.contains(dataSourceId);
+    }
+}

+ 114 - 0
src/main/java/com/util/BasesSource/DynamicDataSourceRegister.java

@@ -0,0 +1,114 @@
+package com.util.BasesSource;
+
+import org.springframework.beans.MutablePropertyValues;
+import org.springframework.beans.factory.support.BeanDefinitionRegistry;
+import org.springframework.beans.factory.support.GenericBeanDefinition;
+import org.springframework.boot.jdbc.DataSourceBuilder;
+import org.springframework.context.EnvironmentAware;
+import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
+import org.springframework.core.env.Environment;
+import org.springframework.core.type.AnnotationMetadata;
+
+import javax.sql.DataSource;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @Author caiChaoqi
+ * @Date 2018-06-23
+ * @Description 注册动态数据源
+ * 初始化数据源和提供了执行动态切换数据源的工具类
+ * EnvironmentAware(获取配置文件配置的属性值)
+ */
+
+public class DynamicDataSourceRegister implements ImportBeanDefinitionRegistrar, EnvironmentAware {
+
+
+    //指定默认数据源(springboot2.0默认数据源是hikari如何想使用其他数据源可以自己配置)
+    private static final String DATASOURCE_TYPE_DEFAULT = "com.alibaba.druid.pool.DruidDataSource";
+    //默认数据源
+    private DataSource defaultDataSource;
+    //用户自定义数据源
+    private Map<String, DataSource> slaveDataSources = new HashMap<>();
+
+    @Override
+    public void setEnvironment(Environment environment) {
+        initDefaultDataSource(environment);
+        initslaveDataSources(environment);
+    }
+
+    private void initDefaultDataSource(Environment env) {
+        // 读取主数据源
+        Map<String, Object> dsMap = new HashMap<>();
+        dsMap.put("driver", env.getProperty("spring.datasource.driver-class-name"));
+        dsMap.put("url", env.getProperty("spring.datasource.url"));
+        dsMap.put("username", env.getProperty("spring.datasource.username"));
+        dsMap.put("password", env.getProperty("spring.datasource.password"));
+        System.out.println("主数据源:" + dsMap);
+        defaultDataSource = buildDataSource(dsMap);
+    }
+
+
+    private void initslaveDataSources(Environment env) {
+        // 读取配置文件获取更多数据源
+        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);
+        }
+    }
+
+    @Override
+    public void registerBeanDefinitions(AnnotationMetadata annotationMetadata, BeanDefinitionRegistry beanDefinitionRegistry) {
+        Map<Object, Object> targetDataSources = new HashMap<Object, Object>();
+        //添加默认数据源
+        targetDataSources.put("dataSource", this.defaultDataSource);
+        DynamicDataSourceContextHolder.dataSourceIds.add("dataSource");
+        //添加其他数据源
+        targetDataSources.putAll(slaveDataSources);
+        for (String key : slaveDataSources.keySet()) {
+            DynamicDataSourceContextHolder.dataSourceIds.add(key);
+        }
+
+        //创建DynamicDataSource
+        GenericBeanDefinition beanDefinition = new GenericBeanDefinition();
+        beanDefinition.setBeanClass(DynamicDataSource.class);
+        beanDefinition.setSynthetic(true);
+        MutablePropertyValues mpv = beanDefinition.getPropertyValues();
+        mpv.addPropertyValue("defaultTargetDataSource", defaultDataSource);
+        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"));
+                // 自定义DataSource配置
+                DataSourceBuilder factory = DataSourceBuilder.create().driverClassName(driverClassName).url(url)
+                        .username(username).password(password).type(dataSourceType);
+                return factory.build();
+            } catch (ClassNotFoundException e) {
+                e.printStackTrace();
+            }
+            return null;
+        }
+}

+ 64 - 0
src/main/java/com/util/BasesSource/DynamicDattaSourceAspect.java

@@ -0,0 +1,64 @@
+package com.util.BasesSource;
+
+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;
+
+    //改变数据源
+    @Before("@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[0]);
+        } catch (JsonProcessingException e) {
+            e.printStackTrace();
+        }
+
+        try {
+            toSql = objectMapper.readValue(joinStr, ToSql.class);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        String baseName = toSql.getBaseName();
+
+        if (!DynamicDataSourceContextHolder.isContainsDataSource(baseName)) {
+            //joinPoint.getSignature() :获取连接点的方法签名对象
+            System.out.println("数据源 " + baseName + " 不存在使用默认的数据源 -> " + joinPoint.getSignature());
+        } else {
+            System.out.println("使用数据源:" + baseName);
+            DynamicDataSourceContextHolder.setDataSourceType(baseName);
+        }
+    }
+
+    @After("@annotation(TargetDataSource)")
+    public void clearDataSource(JoinPoint joinPoint) {
+        System.out.println("清除数据源!");
+        DynamicDataSourceContextHolder.clearDataSourceType();
+    }
+}

+ 13 - 0
src/main/java/com/util/BasesSource/TargetDataSource.java

@@ -0,0 +1,13 @@
+package com.util.BasesSource;
+
+import java.lang.annotation.*;
+
+/**
+ * @Author caiChaoqi
+ * @Date 2018-06-23
+ * @Description 作用于类、接口或者方法上
+ */
+@Target({ElementType.TYPE, ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface TargetDataSource {
+}

+ 16 - 0
src/main/java/com/util/BasesSource/TargetDataSourceCharts.java

@@ -0,0 +1,16 @@
+package com.util.BasesSource;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * @Author caiChaoqi
+ * @Date 2018-06-23
+ * @Description 作用于类、接口或者方法上
+ */
+@Target({ElementType.TYPE, ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface TargetDataSourceCharts {
+}

+ 2 - 1
src/main/java/com/server/CalculationJudgeUtil.java → src/main/java/com/util/CalculationJudgeUtil.java

@@ -1,5 +1,6 @@
-package com.server;
+package com.util;
 
+import com.server.TimeConverterUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 

+ 25 - 6
src/main/resources/application.properties

@@ -1,5 +1,5 @@
 #数据连接池:据说阿里的最好
-#spring.datasource.type=jdbc:com.alibaba.druid.pool.DruidDataSource
+spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
 
 #数据库驱动
 spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
@@ -9,11 +9,30 @@ spring.datasource.username=UAS_DEV
 spring.datasource.password=select!#%*(
 #默认数据源
 
-
-#spring.datasource.database2.driver-class-name=oracle.jdbc.driver.OracleDriver
-#spring.datasource.database2.jdbc-url=jdbc:oracle:thin:@192.168.253.6:1521:orcl
-#spring.datasource.database2.username=UAS_DEV
-#spring.datasource.database2.password=select!#%*(
+slave.datasource.names=UAS,UAS_DEV,YITOA_DATACENTER,N_USOFTSYS
+//UAS标准版
+slave.datasource.UAS.driver-class-name=oracle.jdbc.driver.OracleDriver
+slave.datasource.UAS.url=jdbc:oracle:thin:@218.17.158.219:1521:orcl
+slave.datasource.UAS.username=UAS
+slave.datasource.UAS.password=select!#%*(
+
+//研发
+slave.datasource.UAS_DEV.driver-class-name=oracle.jdbc.driver.OracleDriver
+slave.datasource.UAS_DEV.url=jdbc:oracle:thin:@218.17.158.219:1521:orcl
+slave.datasource.UAS_DEV.username=UAS_DEV
+slave.datasource.UAS_DEV.password=select!#%*(
+
+//英唐资料中心
+slave.datasource.YITOA_DATACENTER.driver-class-name=oracle.jdbc.driver.OracleDriver
+slave.datasource.YITOA_DATACENTER.url=jdbc:oracle:thin:@10.1.1.168:1521:orcl
+slave.datasource.YITOA_DATACENTER.username=YITOA_DATACENTER
+slave.datasource.YITOA_DATACENTER.password=select!#%*(
+
+//优软科技
+slave.datasource.N_USOFTSYS.driver-class-name=oracle.jdbc.driver.OracleDriver
+slave.datasource.N_USOFTSYS.url=jdbc:oracle:thin:@10.1.1.168:1521:orcl
+slave.datasource.N_USOFTSYS.username=N_USOFTSYS
+slave.datasource.N_USOFTSYS.password=select!#%*(
 
 
 spring.jpa.database=oracle