瀏覽代碼

删除无用代码

xieshengjie 3 年之前
父節點
當前提交
a38b00d835
共有 100 個文件被更改,包括 4206 次插入131 次删除
  1. 0 19
      eureka-server/eureka-serverU1/src/main/java/com/gyee/eureka/EurekaMain.java
  2. 0 12
      eureka-server/eureka-serverU1/src/main/resources/application.yml
  3. 0 12
      eureka-server/eureka-serverU1/target/classes/application.yml
  4. 0 19
      eureka-server/pom.xml
  5. 53 49
      histroy/analysis-histroy-hb/src/main/java/com/gyee/analysis/init/CacheContext.java
  6. 1 1
      histroy/customization-hb/src/main/java/com/gyee/customization/task/SaticScheduleTask.java
  7. 26 19
      eureka-server/eureka-serverU1/pom.xml
  8. 21 0
      web/monitor-web/src/main/java/com/gyee/monitor/MonitorMain.java
  9. 26 0
      web/monitor-web/src/main/java/com/gyee/monitor/config/CorsConfig.java
  10. 151 0
      web/monitor-web/src/main/java/com/gyee/monitor/config/GeneratorCodeConfig.java
  11. 23 0
      web/monitor-web/src/main/java/com/gyee/monitor/config/MybatisPlusConfig.java
  12. 71 0
      web/monitor-web/src/main/java/com/gyee/monitor/config/R.java
  13. 12 0
      web/monitor-web/src/main/java/com/gyee/monitor/config/ResultCode.java
  14. 17 0
      web/monitor-web/src/main/java/com/gyee/monitor/contant/MatrixContant.java
  15. 20 0
      web/monitor-web/src/main/java/com/gyee/monitor/controller/auto/WindpowerstationController.java
  16. 20 0
      web/monitor-web/src/main/java/com/gyee/monitor/controller/auto/WindpowerstationtestingpointController.java
  17. 20 0
      web/monitor-web/src/main/java/com/gyee/monitor/controller/auto/WindturbineController.java
  18. 20 0
      web/monitor-web/src/main/java/com/gyee/monitor/controller/auto/WindturbinetestingpointaiController.java
  19. 61 0
      web/monitor-web/src/main/java/com/gyee/monitor/init/CacheContext.java
  20. 16 0
      web/monitor-web/src/main/java/com/gyee/monitor/mapper/auto/WindpowerstationMapper.java
  21. 16 0
      web/monitor-web/src/main/java/com/gyee/monitor/mapper/auto/WindpowerstationtestingpointMapper.java
  22. 16 0
      web/monitor-web/src/main/java/com/gyee/monitor/mapper/auto/WindturbineMapper.java
  23. 16 0
      web/monitor-web/src/main/java/com/gyee/monitor/mapper/auto/WindturbinetestingpointaiMapper.java
  24. 86 0
      web/monitor-web/src/main/java/com/gyee/monitor/model/auto/Windpowerstation.java
  25. 74 0
      web/monitor-web/src/main/java/com/gyee/monitor/model/auto/Windpowerstationtestingpoint.java
  26. 67 0
      web/monitor-web/src/main/java/com/gyee/monitor/model/auto/Windturbine.java
  27. 80 0
      web/monitor-web/src/main/java/com/gyee/monitor/model/auto/Windturbinetestingpointai.java
  28. 16 0
      web/monitor-web/src/main/java/com/gyee/monitor/service/auto/IWindpowerstationService.java
  29. 16 0
      web/monitor-web/src/main/java/com/gyee/monitor/service/auto/IWindpowerstationtestingpointService.java
  30. 16 0
      web/monitor-web/src/main/java/com/gyee/monitor/service/auto/IWindturbineService.java
  31. 16 0
      web/monitor-web/src/main/java/com/gyee/monitor/service/auto/IWindturbinetestingpointaiService.java
  32. 20 0
      web/monitor-web/src/main/java/com/gyee/monitor/service/auto/impl/WindpowerstationServiceImpl.java
  33. 20 0
      web/monitor-web/src/main/java/com/gyee/monitor/service/auto/impl/WindpowerstationtestingpointServiceImpl.java
  34. 20 0
      web/monitor-web/src/main/java/com/gyee/monitor/service/auto/impl/WindturbineServiceImpl.java
  35. 20 0
      web/monitor-web/src/main/java/com/gyee/monitor/service/auto/impl/WindturbinetestingpointaiServiceImpl.java
  36. 33 0
      web/monitor-web/src/main/java/com/gyee/monitor/service/matrix/MatrixService.java
  37. 48 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/ApiGolden.java
  38. 1264 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/EdosUtil.java
  39. 27 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/GoldenConfig.java
  40. 233 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/IEdosUtil.java
  41. 34 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/StringUtil.java
  42. 28 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/BaseTsQuery.java
  43. 38 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/BasicTsData.java
  44. 29 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/BasicTsPoint.java
  45. 24 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/BlobTsData.java
  46. 22 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/BlobWriteTsData.java
  47. 24 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/BooleanTsData.java
  48. 19 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/BooleanWriteTsData.java
  49. 18 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/Coordinate.java
  50. 26 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/CoordinateTsData.java
  51. 21 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/CoordinateWriteTsData.java
  52. 30 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/DoubleStatData.java
  53. 25 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/DoubleTsData.java
  54. 19 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/DoubleWriteTsData.java
  55. 38 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/ErrorRequest.java
  56. 27 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/GeneralTsData.java
  57. 8 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/Interpolation.java
  58. 206 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/JsonObjectHelper.java
  59. 24 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/LongTsData.java
  60. 20 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/LongWriteTsData.java
  61. 24 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/StringTsData.java
  62. 34 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/StringUtil.java
  63. 20 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/StringWriteTsData.java
  64. 15 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/TsData.java
  65. 15 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/TsDataType.java
  66. 12 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/TsPoint.java
  67. 36 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/TsPointData.java
  68. 23 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/TsPointDataList.java
  69. 17 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/TsQuery.java
  70. 44 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/redis/RedisAutoConfiguration.java
  71. 47 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/redis/RedisConfig.java
  72. 49 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/redis/RedisService.java
  73. 124 0
      web/monitor-web/src/main/java/com/gyee/monitor/util/redis/RedisServiceImpl.java
  74. 99 0
      web/monitor-web/src/main/resources/application-dev.yml
  75. 99 0
      web/monitor-web/src/main/resources/application-test.yml
  76. 4 0
      web/monitor-web/src/main/resources/application.yml
  77. 二進制
      web/monitor-web/target/classes/META-INF/monitor-web.kotlin_module
  78. 99 0
      web/monitor-web/target/classes/application-dev.yml
  79. 99 0
      web/monitor-web/target/classes/application-test.yml
  80. 4 0
      web/monitor-web/target/classes/application.yml
  81. 二進制
      web/monitor-web/target/classes/com/gyee/monitor/MonitorMain.class
  82. 二進制
      web/monitor-web/target/classes/com/gyee/monitor/config/CorsConfig.class
  83. 二進制
      web/monitor-web/target/classes/com/gyee/monitor/config/GeneratorCodeConfig.class
  84. 二進制
      web/monitor-web/target/classes/com/gyee/monitor/config/MybatisPlusConfig.class
  85. 二進制
      web/monitor-web/target/classes/com/gyee/monitor/config/R.class
  86. 二進制
      web/monitor-web/target/classes/com/gyee/monitor/config/ResultCode.class
  87. 二進制
      web/monitor-web/target/classes/com/gyee/monitor/controller/auto/WindpowerstationtestingpointController.class
  88. 二進制
      web/monitor-web/target/classes/com/gyee/monitor/controller/auto/WindturbinetestingpointaiController.class
  89. 二進制
      web/monitor-web/target/classes/com/gyee/monitor/init/CacheContext$1.class
  90. 二進制
      web/monitor-web/target/classes/com/gyee/monitor/init/CacheContext$2.class
  91. 二進制
      web/monitor-web/target/classes/com/gyee/monitor/init/CacheContext.class
  92. 二進制
      web/monitor-web/target/classes/com/gyee/monitor/mapper/auto/WindpowerstationtestingpointMapper.class
  93. 二進制
      web/monitor-web/target/classes/com/gyee/monitor/mapper/auto/WindturbinetestingpointaiMapper.class
  94. 二進制
      web/monitor-web/target/classes/com/gyee/monitor/model/auto/Windpowerstationtestingpoint.class
  95. 二進制
      web/monitor-web/target/classes/com/gyee/monitor/model/auto/Windturbinetestingpointai.class
  96. 二進制
      web/monitor-web/target/classes/com/gyee/monitor/service/auto/IWindpowerstationtestingpointService.class
  97. 二進制
      web/monitor-web/target/classes/com/gyee/monitor/service/auto/IWindturbinetestingpointaiService.class
  98. 二進制
      web/monitor-web/target/classes/com/gyee/monitor/service/auto/impl/WindpowerstationtestingpointServiceImpl.class
  99. 二進制
      web/monitor-web/target/classes/com/gyee/monitor/service/auto/impl/WindturbinetestingpointaiServiceImpl.class
  100. 0 0
      web/monitor-web/target/classes/com/gyee/monitor/service/matrix/MatrixService.class

+ 0 - 19
eureka-server/eureka-serverU1/src/main/java/com/gyee/eureka/EurekaMain.java

@@ -1,19 +0,0 @@
-package com.gyee.eureka;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
-
-/**
- * @ClassName : EurekaMain
- * @Author : xieshengjie
- * @Date: 2022/1/24 18:23
- * @Description :
- */
-@SpringBootApplication
-@EnableEurekaServer
-public class EurekaMain {
-    public static void main(String[] args) {
-        SpringApplication.run(EurekaMain.class,args);
-    }
-}

+ 0 - 12
eureka-server/eureka-serverU1/src/main/resources/application.yml

@@ -1,12 +0,0 @@
-server:
-  port: 8071
-
-
-eureka:
-  instance:
-    hostname: localhost #eureka服务端的实例名称
-  client:
-    register-with-eureka: false     #false表示不向注册中心注册自己。
-    fetch-registry: false     #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
-    service-url:
-      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

+ 0 - 12
eureka-server/eureka-serverU1/target/classes/application.yml

@@ -1,12 +0,0 @@
-server:
-  port: 8071
-
-
-eureka:
-  instance:
-    hostname: localhost #eureka服务端的实例名称
-  client:
-    register-with-eureka: false     #false表示不向注册中心注册自己。
-    fetch-registry: false     #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
-    service-url:
-      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

+ 0 - 19
eureka-server/pom.xml

@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>sis</artifactId>
-        <groupId>com.gyee</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>eureka-server</artifactId>
-    <packaging>pom</packaging>
-    <modules>
-        <module>eureka-serverU1</module>
-    </modules>
-
-
-</project>

+ 53 - 49
histroy/analysis-histroy-hb/src/main/java/com/gyee/analysis/init/CacheContext.java

@@ -1,8 +1,12 @@
 package com.gyee.analysis.init;
 
 
-import com.gyee.analysis.model.auto.*;
-import com.gyee.analysis.service.*;
+import com.gyee.analysis.model.auto.Meterpoint;
+import com.gyee.analysis.model.auto.Project;
+import com.gyee.analysis.model.auto.Windpowerstation;
+import com.gyee.analysis.service.IMeterpointService;
+import com.gyee.analysis.service.IProjectService;
+import com.gyee.analysis.service.IWindpowerstationService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.boot.CommandLineRunner;
@@ -21,45 +25,45 @@ import java.util.stream.Collectors;
 @Component
 public class CacheContext implements CommandLineRunner {
     private Logger logger= LoggerFactory.getLogger(CacheContext.class);
-    @Resource
-    private IWindturbinetestingpointaiService windturbinetestingpointai2Service;
-    @Resource
-    private IWindpowerstationtestingpointService windpowerstationtestingpoint2Service;
+//    @Resource
+//    private IWindturbinetestingpointaiService windturbinetestingpointai2Service;
+//    @Resource
+//    private IWindpowerstationtestingpointService windpowerstationtestingpoint2Service;
     @Resource
     private IProjectService projectService;
     @Resource
     private IWindpowerstationService windpowerstationService;
     @Resource
     private IMeterpointService meterpoint2Service;
-    @Resource
-    private IAnalysiswindtargetService analysiswindtargetService;
-
-    public static Map<String, Map<String, Windturbinetestingpointai>> wtpointMap = new HashMap<>();
+//    @Resource
+//    private IAnalysiswindtargetService analysiswindtargetService;
 
-    public static Map<String,List<Windturbinetestingpointai>> wtpmap = new HashMap<>();
-
-    public static Map<String,Map<String, Windpowerstationtestingpoint>> wppointmap =new HashMap<>();
+//    public static Map<String, Map<String, Windturbinetestingpointai>> wtpointMap = new HashMap<>();
+//
+//    public static Map<String,List<Windturbinetestingpointai>> wtpmap = new HashMap<>();
+//
+//    public static Map<String,Map<String, Windpowerstationtestingpoint>> wppointmap =new HashMap<>();
 
     public static List<Project> projects = new ArrayList<>();
 
     public static List<Windpowerstation> stations = new ArrayList<>();
 
-    public static Map<String,Windpowerstation> wpmaps = new HashMap<>();
+//    public static Map<String,Windpowerstation> wpmaps = new HashMap<>();
 
-    public static Map<String,String> wpmap = new HashMap<>();
+//    public static Map<String,String> wpmap = new HashMap<>();
 
     public static Map<String,Meterpoint> meterMap = new HashMap<>();
-
+//
     public static Map<String,List<Meterpoint>> wpmeterMap = new HashMap<>();
 
-    public static List<Analysiswindtarget> targetlist = new ArrayList<>();
+//    public static List<Analysiswindtarget> targetlist = new ArrayList<>();
 
-    public static Map<String,Project> projectMap = new HashMap<>();
+//    public static Map<String,Project> projectMap = new HashMap<>();
 
     @Override
     public void run(String... args) throws Exception {
 
-        targetlist = analysiswindtargetService.list();
+//        targetlist = analysiswindtargetService.list();
 
         for (Meterpoint meterpoint2 : meterpoint2Service.list()) {
             meterMap.put(meterpoint2.getId(),meterpoint2);
@@ -73,37 +77,37 @@ public class CacheContext implements CommandLineRunner {
         }
 
         projects = projectService.list().stream().sorted(Comparator.comparing(Project::getOrdernum)).collect(Collectors.toList());
-        for (Project project : projects) {
-            projectMap.put(project.getId(),project);
-        }
+//        for (Project project : projects) {
+//            projectMap.put(project.getId(),project);
+//        }
         stations = windpowerstationService.list();
-        for (Windpowerstation station : stations) {
-            wpmap.put(station.getId(),station.getName());
-            wpmaps.put(station.getId(),station);
-        }
-
-        List<Windturbinetestingpointai> wtplist = windturbinetestingpointai2Service.list();
-        for (Windturbinetestingpointai pointai : wtplist) {
-            if (wtpointMap.containsKey(pointai.getWindturbineid())){
-                wtpointMap.get(pointai.getWindturbineid()).put(pointai.getUniformcode(),pointai);
-            }else{
-                Map<String, Windturbinetestingpointai> map = new HashMap<>();
-                map.put(pointai.getUniformcode(),pointai);
-                wtpointMap.put(pointai.getWindturbineid(),map);
-            }
-        }
-
-        //----------------------------------------------------------------------------------------------------
-        List<Windpowerstationtestingpoint> wplist = windpowerstationtestingpoint2Service.list();
-        for (Windpowerstationtestingpoint windpowerstationtestingpoint2 : wplist) {
-            if (wppointmap.containsKey(windpowerstationtestingpoint2.getWindpowerstationid())){
-                wppointmap.get(windpowerstationtestingpoint2.getWindpowerstationid()).put(windpowerstationtestingpoint2.getUniformcode(),windpowerstationtestingpoint2);
-            }else{
-                Map<String,Windpowerstationtestingpoint> map = new HashMap<>();
-                map.put(windpowerstationtestingpoint2.getUniformcode(),windpowerstationtestingpoint2);
-                wppointmap.put(windpowerstationtestingpoint2.getWindpowerstationid(),map);
-            }
-        }
+//        for (Windpowerstation station : stations) {
+//            wpmap.put(station.getId(),station.getName());
+//            wpmaps.put(station.getId(),station);
+//        }
+
+//        List<Windturbinetestingpointai> wtplist = windturbinetestingpointai2Service.list();
+//        for (Windturbinetestingpointai pointai : wtplist) {
+//            if (wtpointMap.containsKey(pointai.getWindturbineid())){
+//                wtpointMap.get(pointai.getWindturbineid()).put(pointai.getUniformcode(),pointai);
+//            }else{
+//                Map<String, Windturbinetestingpointai> map = new HashMap<>();
+//                map.put(pointai.getUniformcode(),pointai);
+//                wtpointMap.put(pointai.getWindturbineid(),map);
+//            }
+//        }
+//
+//        //----------------------------------------------------------------------------------------------------
+//        List<Windpowerstationtestingpoint> wplist = windpowerstationtestingpoint2Service.list();
+//        for (Windpowerstationtestingpoint windpowerstationtestingpoint2 : wplist) {
+//            if (wppointmap.containsKey(windpowerstationtestingpoint2.getWindpowerstationid())){
+//                wppointmap.get(windpowerstationtestingpoint2.getWindpowerstationid()).put(windpowerstationtestingpoint2.getUniformcode(),windpowerstationtestingpoint2);
+//            }else{
+//                Map<String,Windpowerstationtestingpoint> map = new HashMap<>();
+//                map.put(windpowerstationtestingpoint2.getUniformcode(),windpowerstationtestingpoint2);
+//                wppointmap.put(windpowerstationtestingpoint2.getWindpowerstationid(),map);
+//            }
+//        }
 
 
 

+ 1 - 1
histroy/customization-hb/src/main/java/com/gyee/customization/task/SaticScheduleTask.java

@@ -24,7 +24,7 @@ public class SaticScheduleTask {
 
     //3.添加定时任务
     /**
-     * 风机绩效榜调度
+     * 潮流表
      */
     @Scheduled(cron = "0 0 * * * ?")
     //或直接指定时间间隔,例如:5秒

+ 26 - 19
eureka-server/eureka-serverU1/pom.xml

@@ -3,22 +3,14 @@
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
-        <artifactId>eureka-server</artifactId>
+        <artifactId>web</artifactId>
         <groupId>com.gyee</groupId>
         <version>1.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>eureka-serverU1</artifactId>
-
+    <artifactId>monitor-web</artifactId>
     <dependencies>
-        <!--eureka-server-->
-        <dependency>
-            <groupId>org.springframework.cloud</groupId>
-            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
-        </dependency>
-
-        <!--boot web actuator-->
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
@@ -27,27 +19,42 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-actuator</artifactId>
         </dependency>
-        <!--一般通用配置-->
         <dependency>
             <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-devtools</artifactId>
-            <scope>runtime</scope>
-            <optional>true</optional>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
+            <optional>true</optional>
         </dependency>
         <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-test</artifactId>
-            <scope>test</scope>
+            <groupId>com.gyee</groupId>
+            <artifactId>common</artifactId>
+            <version>${project.version}</version>
         </dependency>
+        <!--nacos 依赖-->
         <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
         </dependency>
     </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
 
 
 </project>

+ 21 - 0
web/monitor-web/src/main/java/com/gyee/monitor/MonitorMain.java

@@ -0,0 +1,21 @@
+package com.gyee.monitor;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+
+/**
+ * @ClassName : MonitorMain
+ * @Author : xieshengjie
+ * @Date: 2022/2/25 11:59
+ * @Description :
+ */
+@SpringBootApplication
+@MapperScan("com.gyee.monitor.mapper")
+@EnableDiscoveryClient
+public class MonitorMain {
+    public static void main(String[] args) {
+        SpringApplication.run(MonitorMain.class,args);
+    }
+}

+ 26 - 0
web/monitor-web/src/main/java/com/gyee/monitor/config/CorsConfig.java

@@ -0,0 +1,26 @@
+package com.gyee.monitor.config;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+/**
+ * @ClassName : CorsConfig
+ * @Author : xieshengjie
+ * @Date: 2021/6/28 20:00
+ * @Description :
+ */
+@Configuration
+public class CorsConfig implements WebMvcConfigurer {
+
+    static final String[] ORIGINS = new String[]{"GET", "POST", "PUT", "DELETE"};  //请求方式
+
+    @Override
+    public void addCorsMappings(CorsRegistry registry) {
+        registry.addMapping("/**") //所有的当前站点的请求地址,都支持跨域访问
+                .allowedOrigins("*")// 所有的外部域都可跨域访问,这里注意2.4.0以后是allowedOriginPatterns,以前是allowedOrigins
+                .allowCredentials(true)  //是否支持跨域用户凭证
+                .allowedMethods(ORIGINS) //当前站点支持的跨域请求类型是什么
+                .maxAge(3600);  //超是时长,单位为秒。
+    }
+}

+ 151 - 0
web/monitor-web/src/main/java/com/gyee/monitor/config/GeneratorCodeConfig.java

@@ -0,0 +1,151 @@
+package com.gyee.monitor.config;
+
+
+import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.generator.AutoGenerator;
+import com.baomidou.mybatisplus.generator.config.*;
+import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
+
+import java.util.Scanner;
+
+/**
+ *@ClassName GeneratorCodeConfig
+ *@Description 自动生成mybatisplus的相关代码
+ *@Author 谢生杰
+ *@Date 2020/9/25 18:26
+ *@Version 1.0
+ **/
+public class GeneratorCodeConfig {
+    public static String scanner(String tip) {
+        Scanner scanner = new Scanner(System.in);
+        StringBuilder help = new StringBuilder();
+        help.append("请输入" + tip + ":");
+        System.out.println(help.toString());
+        if (scanner.hasNext()) {
+            String ipt = scanner.next();
+            if (StringUtils.isNotEmpty(ipt)) {
+                return ipt;
+            }
+        }
+        throw new MybatisPlusException("请输入正确的" + tip + "!");
+    }
+
+    public static void main(String[] args) {
+        // 代码生成器
+        AutoGenerator mpg = new AutoGenerator();
+
+        // 全局配置
+        GlobalConfig gc = new GlobalConfig();
+        String projectPath = System.getProperty("user.dir");
+        gc.setOutputDir(projectPath + "/src/main/java");
+        gc.setAuthor("谢生杰");
+        gc.setOpen(false);
+        //实体属性 Swagger2 注解
+        gc.setSwagger2(false);
+        mpg.setGlobalConfig(gc);
+
+        // 数据源配置
+        DataSourceConfig dsc = new DataSourceConfig();
+
+//        dsc.setUrl("jdbc:mysql://127.0.0.1:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true");
+//        dsc.setDriverName("com.mysql.jdbc.Driver");
+//        dsc.setUsername("root");
+//        dsc.setPassword("root");
+//        mpg.setDataSource(dsc);
+
+        dsc.setDriverName("oracle.jdbc.driver.OracleDriver");
+        dsc.setUsername("gdprod");
+        dsc.setPassword("gd123");
+//        dsc.setUrl("jdbc:oracle:thin:@49.4.50.80:1521:gdnxfd");
+        dsc.setUrl("jdbc:oracle:thin:@10.83.68.165:1521:gdsj");
+        mpg.setDataSource(dsc);
+
+//        dsc.setDriverName("com.cloudera.impala.jdbc41.Driver");
+//        dsc.setUrl("jdbc:impala://192.168.1.67:21050/gyee_test");
+//        mpg.setDataSource(dsc);
+
+
+
+        // 包配置
+        PackageConfig pc = new PackageConfig();
+//        pc.setModuleName(scanner("模块名"));
+        pc.setParent("com.gyee.monitor");
+        pc.setEntity("model.auto");
+        pc.setMapper("mapper.auto");
+        pc.setService("service.auto");
+        pc.setServiceImpl("service.auto.impl");
+        pc.setController("controller.auto");
+        mpg.setPackageInfo(pc);
+
+        // 自定义配置
+//        InjectionConfig cfg = new InjectionConfig() {
+//            @Override
+//            public void initMap() {
+//                // to do nothing
+//            }
+//        };
+
+        // 如果模板引擎是 freemarker
+//        String templatePath = "/templates/mapper.xml.ftl";
+        // 如果模板引擎是 velocity
+        // String templatePath = "/templates/mapper.xml.vm";
+
+        // 自定义输出配置
+//        List<FileOutConfig> focList = new ArrayList<>();
+        // 自定义配置会被优先输出
+//        focList.add(new FileOutConfig(templatePath) {
+//            @Override
+//            public String outputFile(TableInfo tableInfo) {
+//                // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
+//                return projectPath + "/src/main/resources/mapper/" + pc.getModuleName()
+//                        + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
+//            }
+//        });
+        /*
+        cfg.setFileCreate(new IFileCreate() {
+            @Override
+            public boolean isCreate(ConfigBuilder configBuilder, FileType fileType, String filePath) {
+                // 判断自定义文件夹是否需要创建
+                checkDir("调用默认方法创建的目录");
+                return false;
+            }
+        });
+        */
+//        cfg.setFileOutConfigList(focList);
+//        mpg.setCfg(cfg);
+
+        // 配置模板
+        TemplateConfig templateConfig = new TemplateConfig();
+
+        // 配置自定义输出模板
+        //指定自定义模板路径,注意不要带上.ftl/.vm, 会根据使用的模板引擎自动识别
+        // templateConfig.setEntity("templates/entity2.java");
+        // templateConfig.setService();
+        // templateConfig.setController();
+
+        templateConfig.setXml(null);
+        mpg.setTemplate(templateConfig);
+
+        // 策略配置
+        StrategyConfig strategy = new StrategyConfig();
+        strategy.setNaming(NamingStrategy.underline_to_camel);
+        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
+        strategy.setSuperEntityClass("com.baomidou.mybatisplus.extension.activerecord.Model");
+        strategy.setEntityLombokModel(true);
+        strategy.setRestControllerStyle(true);
+
+        strategy.setEntityLombokModel(true);
+        // 公共父类
+//        strategy.setSuperControllerClass("com.baomidou.ant.common.BaseController");
+        // 写于父类中的公共字段
+//        strategy.setSuperEntityColumns("id");
+        strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));
+        strategy.setControllerMappingHyphenStyle(true);
+        strategy.setTablePrefix(pc.getModuleName() + "_");
+        mpg.setStrategy(strategy);
+        mpg.setTemplateEngine(new FreemarkerTemplateEngine());
+        mpg.execute();
+    }
+}

+ 23 - 0
web/monitor-web/src/main/java/com/gyee/monitor/config/MybatisPlusConfig.java

@@ -0,0 +1,23 @@
+package com.gyee.monitor.config;
+
+import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ *@ClassName MybatisPlusConfig
+ *@Description 配置分页插件
+ *@Author 谢生杰
+ *@Date 2020/9/25 18:24
+ *@Version 1.0
+ **/
+@Configuration
+public class MybatisPlusConfig {
+    /**
+     * 分页插件
+     */
+    @Bean
+    public PaginationInterceptor paginationInterceptor() {
+        return new PaginationInterceptor();
+    }
+}

+ 71 - 0
web/monitor-web/src/main/java/com/gyee/monitor/config/R.java

@@ -0,0 +1,71 @@
+package com.gyee.monitor.config;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @ClassName : R
+ * @Author : xieshengjie
+ * @Date: 2021/5/16 16:59
+ * @Description : 结果集
+ */
+@Data
+public class R {
+    @ApiModelProperty(value = "是否成功")
+    private Boolean success;
+    @ApiModelProperty(value = "返回码")
+    private Integer code;
+    @ApiModelProperty(value = "返回消息")
+    private String message;
+    @ApiModelProperty(value = "总数量")
+    private Integer count;
+    @ApiModelProperty(value = "返回数据")
+    private Object data = new Object();
+    private R(){}
+    public static R ok(){
+        R r = new R();
+        r.setSuccess(true);
+        r.setCode(ResultCode.SUCCESS);
+        r.setMessage("成功");
+        return r;
+    }
+    public static R ok(Integer count){
+        R r = new R();
+        r.setSuccess(true);
+        r.setCode(ResultCode.SUCCESS);
+        r.setMessage("成功");
+        r.setCount(count);
+        return r;
+    }
+    public static R error(){
+        R r = new R();
+        r.setSuccess(false);
+        r.setCode(ResultCode.ERROR);
+        r.setMessage("失败");
+        return r;
+    }
+    public R success(Boolean success){
+        this.setSuccess(success);
+        return this;
+    }
+    public R message(String message){
+        this.setMessage(message);
+        return this;
+    }
+    public R code(Integer code){
+        this.setCode(code);
+        return this;
+    }
+//    public R data(String key, Object value){
+//        this.data.put(key, value);
+//        return this;
+//    }
+//    public R data(Map<String, Object> map){
+//        this.setData(map);
+//        return this;
+//    }
+    public R data(Object value){
+        this.setData(value);
+        return this;
+    }
+}

+ 12 - 0
web/monitor-web/src/main/java/com/gyee/monitor/config/ResultCode.java

@@ -0,0 +1,12 @@
+package com.gyee.monitor.config;
+
+/**
+ * @ClassName : ResultCode
+ * @Author : xieshengjie
+ * @Date: 2021/5/16 17:01
+ * @Description : 结果状态
+ */
+public class ResultCode {
+    public static Integer SUCCESS = 200;
+    public static Integer ERROR = 500;
+}

+ 17 - 0
web/monitor-web/src/main/java/com/gyee/monitor/contant/MatrixContant.java

@@ -0,0 +1,17 @@
+package com.gyee.monitor.contant;
+
+/**
+ * @ClassName : MatrixContant
+ * @Author : xieshengjie
+ * @Date: 2022/2/25 13:32
+ * @Description :
+ */
+public class MatrixContant {
+
+    public static final String TPOINT_WT_XDTS = "XDTS";// 限电台数
+    public static final String TPOINT_WT_YXTS = "YXTS";// 运行台数
+    public static final String TPOINT_WT_DJTS = "DJTS"; // 待机台数
+    public static final String TPOINT_WT_WHTJ = "WHTJ";// 维护台数
+    public static final String TPOINT_WT_GZTJ = "GZTJ";// 故障台数
+    public static final String TPOINT_WT_TXZD = "TXZD";// 离线台数
+}

+ 20 - 0
web/monitor-web/src/main/java/com/gyee/monitor/controller/auto/WindpowerstationController.java

@@ -0,0 +1,20 @@
+package com.gyee.monitor.controller.auto;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-02-25
+ */
+@RestController
+@RequestMapping("//windpowerstation")
+public class WindpowerstationController {
+
+}

+ 20 - 0
web/monitor-web/src/main/java/com/gyee/monitor/controller/auto/WindpowerstationtestingpointController.java

@@ -0,0 +1,20 @@
+package com.gyee.monitor.controller.auto;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-02-25
+ */
+@RestController
+@RequestMapping("//windpowerstationtestingpoint")
+public class WindpowerstationtestingpointController {
+
+}

+ 20 - 0
web/monitor-web/src/main/java/com/gyee/monitor/controller/auto/WindturbineController.java

@@ -0,0 +1,20 @@
+package com.gyee.monitor.controller.auto;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-02-25
+ */
+@RestController
+@RequestMapping("//windturbine")
+public class WindturbineController {
+
+}

+ 20 - 0
web/monitor-web/src/main/java/com/gyee/monitor/controller/auto/WindturbinetestingpointaiController.java

@@ -0,0 +1,20 @@
+package com.gyee.monitor.controller.auto;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-02-25
+ */
+@RestController
+@RequestMapping("//windturbinetestingpointai")
+public class WindturbinetestingpointaiController {
+
+}

+ 61 - 0
web/monitor-web/src/main/java/com/gyee/monitor/init/CacheContext.java

@@ -0,0 +1,61 @@
+package com.gyee.monitor.init;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.TypeReference;
+import com.gyee.monitor.model.auto.Windpowerstation;
+import com.gyee.monitor.model.auto.Windpowerstationtestingpoint;
+import com.gyee.monitor.model.auto.Windturbine;
+import com.gyee.monitor.model.auto.Windturbinetestingpointai;
+import com.gyee.monitor.service.auto.IWindpowerstationService;
+import com.gyee.monitor.service.auto.IWindturbineService;
+import com.gyee.monitor.util.redis.RedisService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : CacheContext
+ * @Author : xieshengjie
+ * @Date: 2022/2/21 18:20
+ * @Description :
+ */
+@Component
+public class CacheContext implements CommandLineRunner {
+    private static final Logger log = LoggerFactory.getLogger(CacheContext.class);
+
+    @Resource
+    private RedisService redisService;
+    @Resource
+    private IWindpowerstationService windpowerstationService;
+    @Resource
+    private IWindturbineService windturbineService;
+
+    public static Map<String, Map<String, Windturbinetestingpointai>> wtPointmap = new HashMap<>();// 风电机测点AI表
+    public static Map<String, Map<String, Windpowerstationtestingpoint>> wpPointmap = new HashMap<>();//场站测点
+    public static List<Windpowerstation> wpls = new ArrayList<Windpowerstation>(); // 风电场LIST集合
+    public static List<Windturbine> wtls = new ArrayList<Windturbine>(); // 风电机LIST集合
+    @Override
+    public void run(String... args) throws Exception {
+        log.info("-------------------------------缓存开始--------------------------------------");
+        wpls = windpowerstationService.list();
+
+        wtls = windturbineService.list();
+
+        String wpString = JSON.toJSONString(redisService.get("WP"));
+        wpPointmap = JSONObject.parseObject(wpString, new TypeReference<Map<String, Map<String, Windpowerstationtestingpoint>>>() {
+        });
+
+        String wtString = JSON.toJSONString(redisService.get("WT"));
+        wtPointmap = JSONObject.parseObject(wtString, new TypeReference<Map<String, Map<String, Windturbinetestingpointai>>>() {
+        });
+        log.info("-------------------------------缓存结束--------------------------------------");
+    }
+}

+ 16 - 0
web/monitor-web/src/main/java/com/gyee/monitor/mapper/auto/WindpowerstationMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.monitor.mapper.auto;
+
+import com.gyee.monitor.model.auto.Windpowerstation;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-02-25
+ */
+public interface WindpowerstationMapper extends BaseMapper<Windpowerstation> {
+
+}

+ 16 - 0
web/monitor-web/src/main/java/com/gyee/monitor/mapper/auto/WindpowerstationtestingpointMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.monitor.mapper.auto;
+
+import com.gyee.monitor.model.auto.Windpowerstationtestingpoint;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-02-25
+ */
+public interface WindpowerstationtestingpointMapper extends BaseMapper<Windpowerstationtestingpoint> {
+
+}

+ 16 - 0
web/monitor-web/src/main/java/com/gyee/monitor/mapper/auto/WindturbineMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.monitor.mapper.auto;
+
+import com.gyee.monitor.model.auto.Windturbine;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-02-25
+ */
+public interface WindturbineMapper extends BaseMapper<Windturbine> {
+
+}

+ 16 - 0
web/monitor-web/src/main/java/com/gyee/monitor/mapper/auto/WindturbinetestingpointaiMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.monitor.mapper.auto;
+
+import com.gyee.monitor.model.auto.Windturbinetestingpointai;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-02-25
+ */
+public interface WindturbinetestingpointaiMapper extends BaseMapper<Windturbinetestingpointai> {
+
+}

+ 86 - 0
web/monitor-web/src/main/java/com/gyee/monitor/model/auto/Windpowerstation.java

@@ -0,0 +1,86 @@
+package com.gyee.monitor.model.auto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-02-25
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("WINDPOWERSTATION")
+public class Windpowerstation extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId("ID")
+    private String id;
+
+    @TableField("CODE")
+    private String code;
+
+    @TableField("NAME")
+    private String name;
+
+    @TableField("ADDRESS")
+    private String address;
+
+    @TableField("TELEPHONE")
+    private String telephone;
+
+    @TableField("CAPACITY")
+    private Double capacity;
+
+    @TableField("CAPACITYUNIT")
+    private String capacityunit;
+
+    @TableField("QUANTITY")
+    private Double quantity;
+
+    @TableField("ANAME")
+    private String aname;
+
+    @TableField("LONGITUDE")
+    private Double longitude;
+
+    @TableField("LATITUDE")
+    private Double latitude;
+
+    @TableField("PHOTO")
+    private String photo;
+
+    @TableField("COMPANYID")
+    private String companyid;
+
+    @TableField("SYSTEMMANUFACT")
+    private String systemmanufact;
+
+    @TableField("HEADFARM")
+    private String headfarm;
+
+    @TableField("HEADFARMPHONE")
+    private String headfarmphone;
+
+    @TableField("MODEL")
+    private String model;
+
+    @TableField("ORDERNUM")
+    private Double ordernum;
+
+    @TableField("ALTITUDE")
+    private Double altitude;
+
+    @TableField("HEIGHT")
+    private Double height;
+
+
+}

+ 74 - 0
web/monitor-web/src/main/java/com/gyee/monitor/model/auto/Windpowerstationtestingpoint.java

@@ -0,0 +1,74 @@
+package com.gyee.monitor.model.auto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-02-25
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("WINDPOWERSTATIONTESTINGPOINT")
+public class Windpowerstationtestingpoint extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId("CODE")
+    private String code;
+
+    @TableField("NAME")
+    private String name;
+
+    @TableField("MODEL")
+    private String model;
+
+    @TableField("VALUEUNIT")
+    private String valueunit;
+
+    @TableField("ENGLISHNAME")
+    private String englishname;
+
+    @TableField("TYPEID")
+    private String typeid;
+
+    @TableField("MODELID")
+    private String modelid;
+
+    @TableField("MAXVAL")
+    private Double maxval;
+
+    @TableField("MINVAL")
+    private Double minval;
+
+    @TableField("REASONABLEMAXVAL")
+    private Double reasonablemaxval;
+
+    @TableField("REASONABLEMINVAL")
+    private Double reasonableminval;
+
+    @TableField("UNIFORMCODE")
+    private String uniformcode;
+
+    @TableField("SHORTID")
+    private String shortid;
+
+    @TableField("LONGID")
+    private String longid;
+
+    @TableField("WINDPOWERSTATIONID")
+    private String windpowerstationid;
+
+    @TableField("REALTIMEID")
+    private String realtimeid;
+
+
+}

+ 67 - 0
web/monitor-web/src/main/java/com/gyee/monitor/model/auto/Windturbine.java

@@ -0,0 +1,67 @@
+package com.gyee.monitor.model.auto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-02-25
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("WINDTURBINE")
+public class Windturbine extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId("ID")
+    private String id;
+
+    @TableField("CODE")
+    private String code;
+
+    @TableField("WINDPOWERSTATIONID")
+    private String windpowerstationid;
+
+    @TableField("LONGITUDE")
+    private Double longitude;
+
+    @TableField("LATITUDE")
+    private Double latitude;
+
+    @TableField("MODELID")
+    private String modelid;
+
+    @TableField("STATUS")
+    private String status;
+
+    @TableField("PROJECTID")
+    private String projectid;
+
+    @TableField("LINEID")
+    private String lineid;
+
+    @TableField("FIRSTINTEGRATEDTIME")
+    private Date firstintegratedtime;
+
+    @TableField("PHOTO")
+    private String photo;
+
+    @TableField("NAME")
+    private String name;
+
+    @TableField("STANDARDID")
+    private String standardid;
+
+
+}

+ 80 - 0
web/monitor-web/src/main/java/com/gyee/monitor/model/auto/Windturbinetestingpointai.java

@@ -0,0 +1,80 @@
+package com.gyee.monitor.model.auto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-02-25
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("WINDTURBINETESTINGPOINTAI")
+public class Windturbinetestingpointai extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId("ID")
+    private String id;
+
+    @TableField("CODE")
+    private String code;
+
+    @TableField("NAME")
+    private String name;
+
+    @TableField("MODEL")
+    private String model;
+
+    @TableField("VALUEUNIT")
+    private String valueunit;
+
+    @TableField("ENGLISHNAME")
+    private String englishname;
+
+    @TableField("TYPEID")
+    private String typeid;
+
+    @TableField("MODELID")
+    private String modelid;
+
+    @TableField("MAXVAL")
+    private Double maxval;
+
+    @TableField("MINVAL")
+    private Double minval;
+
+    @TableField("REASONABLEMAXVAL")
+    private Double reasonablemaxval;
+
+    @TableField("REASONABLEMINVAL")
+    private Double reasonableminval;
+
+    @TableField("WINDTURBINEID")
+    private String windturbineid;
+
+    @TableField("UNIFORMCODE")
+    private String uniformcode;
+
+    @TableField("SHORTID")
+    private String shortid;
+
+    @TableField("LONGID")
+    private String longid;
+
+    @TableField("WINDPOWERSTATIONID")
+    private String windpowerstationid;
+
+    @TableField("REALTIMEID")
+    private String realtimeid;
+
+
+}

+ 16 - 0
web/monitor-web/src/main/java/com/gyee/monitor/service/auto/IWindpowerstationService.java

@@ -0,0 +1,16 @@
+package com.gyee.monitor.service.auto;
+
+import com.gyee.monitor.model.auto.Windpowerstation;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-02-25
+ */
+public interface IWindpowerstationService extends IService<Windpowerstation> {
+
+}

+ 16 - 0
web/monitor-web/src/main/java/com/gyee/monitor/service/auto/IWindpowerstationtestingpointService.java

@@ -0,0 +1,16 @@
+package com.gyee.monitor.service.auto;
+
+import com.gyee.monitor.model.auto.Windpowerstationtestingpoint;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-02-25
+ */
+public interface IWindpowerstationtestingpointService extends IService<Windpowerstationtestingpoint> {
+
+}

+ 16 - 0
web/monitor-web/src/main/java/com/gyee/monitor/service/auto/IWindturbineService.java

@@ -0,0 +1,16 @@
+package com.gyee.monitor.service.auto;
+
+import com.gyee.monitor.model.auto.Windturbine;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-02-25
+ */
+public interface IWindturbineService extends IService<Windturbine> {
+
+}

+ 16 - 0
web/monitor-web/src/main/java/com/gyee/monitor/service/auto/IWindturbinetestingpointaiService.java

@@ -0,0 +1,16 @@
+package com.gyee.monitor.service.auto;
+
+import com.gyee.monitor.model.auto.Windturbinetestingpointai;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-02-25
+ */
+public interface IWindturbinetestingpointaiService extends IService<Windturbinetestingpointai> {
+
+}

+ 20 - 0
web/monitor-web/src/main/java/com/gyee/monitor/service/auto/impl/WindpowerstationServiceImpl.java

@@ -0,0 +1,20 @@
+package com.gyee.monitor.service.auto.impl;
+
+import com.gyee.monitor.model.auto.Windpowerstation;
+import com.gyee.monitor.mapper.auto.WindpowerstationMapper;
+import com.gyee.monitor.service.auto.IWindpowerstationService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-02-25
+ */
+@Service
+public class WindpowerstationServiceImpl extends ServiceImpl<WindpowerstationMapper, Windpowerstation> implements IWindpowerstationService {
+
+}

+ 20 - 0
web/monitor-web/src/main/java/com/gyee/monitor/service/auto/impl/WindpowerstationtestingpointServiceImpl.java

@@ -0,0 +1,20 @@
+package com.gyee.monitor.service.auto.impl;
+
+import com.gyee.monitor.model.auto.Windpowerstationtestingpoint;
+import com.gyee.monitor.mapper.auto.WindpowerstationtestingpointMapper;
+import com.gyee.monitor.service.auto.IWindpowerstationtestingpointService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-02-25
+ */
+@Service
+public class WindpowerstationtestingpointServiceImpl extends ServiceImpl<WindpowerstationtestingpointMapper, Windpowerstationtestingpoint> implements IWindpowerstationtestingpointService {
+
+}

+ 20 - 0
web/monitor-web/src/main/java/com/gyee/monitor/service/auto/impl/WindturbineServiceImpl.java

@@ -0,0 +1,20 @@
+package com.gyee.monitor.service.auto.impl;
+
+import com.gyee.monitor.model.auto.Windturbine;
+import com.gyee.monitor.mapper.auto.WindturbineMapper;
+import com.gyee.monitor.service.auto.IWindturbineService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-02-25
+ */
+@Service
+public class WindturbineServiceImpl extends ServiceImpl<WindturbineMapper, Windturbine> implements IWindturbineService {
+
+}

+ 20 - 0
web/monitor-web/src/main/java/com/gyee/monitor/service/auto/impl/WindturbinetestingpointaiServiceImpl.java

@@ -0,0 +1,20 @@
+package com.gyee.monitor.service.auto.impl;
+
+import com.gyee.monitor.model.auto.Windturbinetestingpointai;
+import com.gyee.monitor.mapper.auto.WindturbinetestingpointaiMapper;
+import com.gyee.monitor.service.auto.IWindturbinetestingpointaiService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-02-25
+ */
+@Service
+public class WindturbinetestingpointaiServiceImpl extends ServiceImpl<WindturbinetestingpointaiMapper, Windturbinetestingpointai> implements IWindturbinetestingpointaiService {
+
+}

+ 33 - 0
web/monitor-web/src/main/java/com/gyee/monitor/service/matrix/MatrixService.java

@@ -0,0 +1,33 @@
+package com.gyee.monitor.service.matrix;
+
+import com.gyee.monitor.init.CacheContext;
+import com.gyee.monitor.model.auto.Windpowerstationtestingpoint;
+import com.gyee.monitor.model.auto.Windturbinetestingpointai;
+import com.gyee.monitor.util.realtimesource.EdosUtil;
+import com.gyee.monitor.util.realtimesource.IEdosUtil;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+/**
+ * @ClassName : MatrixService
+ * @Author : xieshengjie
+ * @Date: 2022/2/25 12:20
+ * @Description :
+ */
+@Service
+public class MatrixService {
+
+    private IEdosUtil edosUtil = new EdosUtil();
+
+
+    public void matrixDatas(){
+
+
+        Map<String, Map<String, Windpowerstationtestingpoint>> wpPointmap = CacheContext.wpPointmap;
+        Map<String, Map<String, Windturbinetestingpointai>> wtPointmap = CacheContext.wtPointmap;
+
+
+
+    }
+}

+ 48 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/ApiGolden.java

@@ -0,0 +1,48 @@
+/** 
+ * Project Name:nxfd2 
+ * File Name:ApiEdos.java 
+ * Package Name:com.gyee.frame.util
+ * Date:2016-7-25下午12:26:14 
+ * Copyright (c) 2016, chenzhou1025@126.com All Rights Reserved. 
+ * 
+ */
+
+package com.gyee.monitor.util.realtimesource;
+
+import org.springframework.web.client.RestTemplate;
+
+/**
+ * ClassName:ApiEdos <br/>
+ * Function: TODO ADD FUNCTION. <br/>
+ * Reason: TODO ADD REASON. <br/>
+ * Date: 2016-7-25 下午12:26:14 <br/>
+ * 
+ * @author 石林
+ * @version
+ * @since JDK 1.6
+ * @see
+ */
+public class ApiGolden {
+
+    private static RestTemplate restTemplate = null;
+
+  
+    private ApiGolden() {
+
+    }
+
+    public static RestTemplate getInstance() {
+    	
+    	
+
+        if (restTemplate == null) {
+        	
+        	restTemplate = new RestTemplate();
+
+        }
+
+        return restTemplate;
+
+    }
+
+}

文件差異過大導致無法顯示
+ 1264 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/EdosUtil.java


+ 27 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/GoldenConfig.java

@@ -0,0 +1,27 @@
+package com.gyee.monitor.util.realtimesource;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 读取项目相关配置
+ * 
+ * @author gyee
+ */
+
+@Configuration
+@ConfigurationProperties(prefix = "golden")
+public class GoldenConfig
+{
+    private static String baseURL;
+
+    public static String getBaseurl() {
+        return baseURL;
+    }
+
+    public  void setBaseurl(String baseURL) {
+        GoldenConfig.baseURL = baseURL;
+    }
+}
+
+

+ 233 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/IEdosUtil.java

@@ -0,0 +1,233 @@
+package com.gyee.monitor.util.realtimesource;
+
+
+import com.gyee.common.model.DNAStatVal;
+import com.gyee.common.model.DNAVal;
+import com.gyee.common.model.PointData;
+import com.gyee.monitor.model.auto.Windpowerstationtestingpoint;
+import com.gyee.monitor.model.auto.Windturbinetestingpointai;
+
+import java.util.List;
+import java.util.Map;
+
+
+public interface IEdosUtil {
+
+	/**
+	 * 通过风场测点获得测点实时数据
+	 * @param point 只是用了code字段,作为唯一标识
+	 * @return
+	 * @throws Exception
+	 */
+    public PointData getRealData(Windpowerstationtestingpoint point) throws Exception;
+
+    /**
+     * 通过风场测点获得测点历史快照数据
+     * @param point 只是用了code字段,作为唯一标识
+     * @param beginDate 开始时间(秒级)
+     * @param endDate 结束时间(秒级)
+     * @param count  点数
+     * @param pried  时间间隔
+     * @return
+     * @throws Exception
+     */
+    public List<PointData> getHistoryDatasSnap(Windpowerstationtestingpoint point, Long beginDate, Long endDate, Long count, Long pried) throws Exception;
+
+    /**
+     * 通过风场测点获得测点历史存储数据,存多少取多少
+     * @param point 只是用了code字段,作为唯一标识
+     * @param beginDate 开始时间(秒级)
+     * @param endDate 结束时间(秒级)
+     * @return
+     * @throws Exception
+     */
+    public List<PointData> getHistoryDatasRaw(Windpowerstationtestingpoint point, Long beginDate, Long endDate) throws Exception;
+
+    /**
+     * 通过风机测点获得测点实时数据
+     * @param point 只是用了id字段,作为唯一标识
+     * @return
+     * @throws Exception
+     */
+    public PointData getRealData(Windturbinetestingpointai point) throws Exception;
+
+    /**
+     * 通过风机测点获得历史快照
+     * @param point  只是用了id字段,作为唯一标识
+     * @param  beginDate 开始时间(秒级)
+     * @param endDate 结束时间(秒级)
+     * @param count  点数
+     * @param pried  时间间隔
+     * @return
+     * @throws Exception
+     */
+    public List<PointData> getHistoryDatasSnap(Windturbinetestingpointai point, Long beginDate, Long endDate, Long count, Long pried) throws Exception;
+
+    /**
+     * 通过风机测点获得测点历史存储数据,存多少取多少
+     * @param point 只是用了id字段,作为唯一标识
+     * @param  beginDate 开始时间(秒级)
+     * @param endDate 结束时间(秒级)
+     * @return
+     * @throws Exception
+     */
+    public List<PointData> getHistoryDatasRaw(Windturbinetestingpointai point, Long beginDate, Long endDate) throws Exception;
+
+
+    /**
+     * 通过风机测点获得测点实时数据
+     * @param pointid 测点编号
+     * @return
+     * @throws Exception
+     */
+    public PointData getRealData(String pointid) throws Exception;
+
+    /**
+     * 通过全局点名获得测点实时数据 读取多个点
+     * @param pointids 测点的数组
+     * @return 列表集合
+     * @throws Exception
+     */
+    public List<PointData> getRealData(String... pointids) throws Exception;
+    /**
+     * 通过全局点名获得测点实时数据 读取多个点
+     * @param pointids 测点的列表
+     * @return 列表集合
+     * @throws Exception
+     */
+    public List<PointData> getRealData(List<String> pointids) throws Exception;
+    /**
+     * 通过全局点名获得测点实时数据 读取多个点
+     * @param pointids 测点的数组
+     * @return Map集合
+     * @throws Exception
+     */
+    public Map<String,Double> getRealDataMap(String... pointids) throws Exception;
+
+    /**
+     * 通过全局点名获得历史数据快照
+     * @param pointid  全局点名
+     * @param beginDate 开始时间(秒级)
+     * @param endDate 结束时间(秒级)
+     * @param count  点数
+     * @param pried  时间间隔
+     * @return
+     * @throws Exception
+     */
+    public List<PointData> getHistoryDatasSnap(String pointid, Long beginDate, Long endDate, Long count, Long pried) throws Exception;
+
+    /**
+     * 通过风机测点获得测点历史存储数据,存多少取多少
+     * @param pointid 全局点名
+     * @param  beginDate 开始时间(秒级)
+     * @param endDate 结束时间(秒级)
+     * @return
+     * @throws Exception
+     */
+    public List<PointData> getHistoryDatasRaw(String pointid, Long beginDate, Long endDate) throws Exception;
+
+
+    /**
+     * 通过风机测点获得测点指定时间周期的统计数据
+     * @param point 只是用了id字段,作为唯一标识
+     * @param  beginDate 开始时间(秒级)
+     * @param endDate 结束时间(秒级)
+     * @param count  点数
+     * @param pried  时间间隔
+     * @type 0、最大值。1、最小值。、平均值
+     * @return
+     * @throws Exception
+     */
+    public List<PointData> getHistStat(Windturbinetestingpointai point, Long beginDate, Long endDate, Long count, Long pried, int type) throws Exception;
+
+    /**
+     * 通过风场测点获得测点指定时间周期的统计数据
+     * @param point 只是用了code字段,作为唯一标识
+     * @param  beginDate 开始时间(秒级)
+     * @param endDate 结束时间(秒级)
+     * @param count  点数
+     * @param pried  时间间隔
+     * @type 0、最大值。1、最小值。、平均值
+     * @return
+     * @throws Exception
+     */
+    public List<PointData> getHistStat(Windpowerstationtestingpoint point, Long beginDate, Long endDate, Long count, Long pried, int type) throws Exception;
+
+    /**
+     * 通过全局点名获得测点指定时间周期的统计数据
+     * @param pointid 全局点名
+     * @param  beginDate 开始时间(秒级)
+     * @param endDate 结束时间(秒级)
+     * @param count  点数
+     * @param pried  时间间隔
+     * @type 0、最大值。1、最小值。、平均值
+     * @return
+     * @throws Exception
+     */
+    public List<PointData> getHistStat(String pointid, Long beginDate, Long endDate, Long count, Long pried, int type) throws Exception;
+
+    /**
+     * 通过全局点名获得测点指定时间周期的统计数据 同时返回max、min、avg数据
+     * @param point 全局点名
+     * @param  beginDate 开始时间(秒级)
+     * @param endDate 结束时间(秒级)
+     * @param pried  时间间隔
+     * @return
+     * @throws Exception
+     */
+    public DNAStatVal[] getHistStat(String point, Long beginDate, Long endDate, Integer pried) throws Exception;
+    /**
+     * 补录单点历史数据
+     * @param point 测点对象
+     * @return
+     * @throws Exception
+     */
+    public void updatePoint(PointData point) throws Exception;
+
+    /**
+     * 批量查询实时数据
+     * @param tagNames 测点字符串数组
+     * @return
+     * @throws Exception
+     */
+
+    public DNAVal[] getRealtimeTagValues(String... tagNames) throws Exception;
+
+    /**
+     * 批量插入历史数据
+     * @param pointls 测点对象集合
+     * @throws Exception
+     */
+    public void updatePoint(List<PointData> pointls) throws Exception;
+
+    /**
+     * 单点写入实时数据
+     * @param point 测点对象
+     * @throws Exception
+     */
+    public void sendSinglePoint(PointData point) throws Exception ;
+    /**
+     * 批量写入实时数据
+     * @param pointls 测点对象列表
+     * @throws Exception
+     */
+    public void sendMultiPoint(List<PointData> pointls) throws Exception ;
+
+    /**
+     * 通过两个字符串数组对象批量写入实时数据
+     * @param realvalue 插入值字符串数组
+     * @param pointls 存储对象数组对象
+     * @throws Exception
+     */
+
+    public void sendMultiPoint(String[] realvalue,DNAVal[] pointls) throws Exception;
+    /**
+     *
+     * @param nameList 测点名称列表集合
+     * @param tTime  时间点(秒级)
+     * @return
+     * @throws Exception
+     */
+    public DNAVal[] getHistMatrix(String[] nameList, int tTime) throws Exception;
+
+}

+ 34 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/StringUtil.java

@@ -0,0 +1,34 @@
+package com.gyee.monitor.util.realtimesource;
+
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * String辅助类
+ * 
+ */
+public class StringUtil extends StringUtils {
+	
+	/**
+	 * 非空判断
+	 * 
+	 * @param obj
+	 * @return
+	 */
+	public static boolean isNotBlank(Object obj) {
+		return !isBlank(obj);
+	}
+
+	/**
+	 * 为空判断
+	 * 
+	 * @param obj
+	 * @return
+	 */
+	public static boolean isBlank(Object obj) {
+		if (obj == null || StringUtils.isBlank(obj.toString())) {
+			return true;
+		}
+		return false;
+	}
+
+}

+ 28 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/BaseTsQuery.java

@@ -0,0 +1,28 @@
+package com.gyee.monitor.util.realtimesource.timeseries;
+
+import lombok.Data;
+
+@Data
+public class BaseTsQuery implements TsQuery {
+
+    private final TsPoint tsPoint;
+    private final long startTs;
+    private final long endTs;
+    private final int interval;
+    private final int limit;
+    private final Interpolation interpolation;
+
+    public BaseTsQuery(TsPoint tsPoint, long startTs, long endTs, int interval, int limit, Interpolation interpolation) {
+        this.tsPoint = tsPoint;
+        this.startTs = startTs;
+        this.endTs = endTs;
+        this.interval = interval;
+        this.limit = limit;
+        this.interpolation = interpolation;
+    }
+
+    public BaseTsQuery(TsPoint tsPoint, long startTs, long endTs) {
+        this(tsPoint, startTs, endTs, 1, 1, Interpolation.RAW);
+    }
+
+}

+ 38 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/BasicTsData.java

@@ -0,0 +1,38 @@
+package com.gyee.monitor.util.realtimesource.timeseries;
+
+/**
+ * @author songwb<songwb@aliyun.com>
+ */
+public abstract class BasicTsData implements TsData, Comparable<BasicTsData>{
+
+    private final long ts;
+
+    private final short status;
+
+    public BasicTsData(long ts, short status) {
+        this.ts = ts;
+        this.status = status;
+    }
+
+    public long getTs() {
+        return ts;
+    }
+
+    public short getStatus() {
+        return status;
+    }
+
+    @Override
+    public int compareTo(BasicTsData o) {
+        return Long.compare(ts, o.ts);
+    }
+
+    @Override
+    public String toString() {
+        return "BasicTsData{ts='" + ts +
+                "', status='" + this.getStatus() +
+                "'}";
+    }
+
+}
+

+ 29 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/BasicTsPoint.java

@@ -0,0 +1,29 @@
+package com.gyee.monitor.util.realtimesource.timeseries;
+
+/**
+ * @author songwb<songwb@aliyun.com>
+ */
+public class BasicTsPoint implements TsPoint {
+
+    private final String id;
+
+    private final TsDataType tsDataType;
+
+    public BasicTsPoint(String id,  TsDataType tsDataType) {
+        this.id = id;
+        this.tsDataType = tsDataType;
+    }
+
+    public String getId() { return id; }
+
+    public TsDataType getTsDataType() {return tsDataType; }
+
+    @Override
+    public String toString() {
+        return "BasicTsPoint{id='" + id +
+                "', dataType='" + this.getTsDataType() +
+                "'}";
+    }
+
+}
+

+ 24 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/BlobTsData.java

@@ -0,0 +1,24 @@
+package com.gyee.monitor.util.realtimesource.timeseries;
+
+import java.util.Base64;
+
+/**
+ * @author songwb<songwb@aliyun.com>
+ */
+public class BlobTsData extends BasicTsData {
+
+    private final byte[] blob;
+
+    public BlobTsData(long ts, short status, byte[] blob) {
+        super(ts, status);
+        this.blob = blob;
+    }
+
+    //public byte[] getBlob() { return  blob ;}
+
+    public String getBlobValue() {
+        return Base64.getEncoder().encodeToString(blob);
+    }
+
+}
+

+ 22 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/BlobWriteTsData.java

@@ -0,0 +1,22 @@
+package com.gyee.monitor.util.realtimesource.timeseries;
+
+import lombok.Data;
+
+import java.util.Base64;
+
+/**
+ * @descrition:
+ * @author:Wanghs
+ * @date:2018-05-04
+ */
+@Data
+public class BlobWriteTsData {
+    private String tagName;
+    private long ts;
+    private  byte[]blob;
+
+    public String getValue() {
+        return Base64.getEncoder().encodeToString(blob);
+    }
+
+}

+ 24 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/BooleanTsData.java

@@ -0,0 +1,24 @@
+package com.gyee.monitor.util.realtimesource.timeseries;
+
+/**
+ * @author songwb<songwb@aliyun.com>
+ */
+public class BooleanTsData extends BasicTsData {
+
+    private final boolean actualValue;
+
+    public BooleanTsData(long ts, short status, boolean actualValue) {
+        super(ts, status);
+        this.actualValue = actualValue;
+    }
+
+//    public boolean getActualValue() {
+//        return actualValue;
+//    }
+
+    public String getBooleanValue() {
+        return Boolean.toString(actualValue);
+    }
+
+}
+

+ 19 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/BooleanWriteTsData.java

@@ -0,0 +1,19 @@
+package com.gyee.monitor.util.realtimesource.timeseries;
+
+import lombok.Data;
+
+/**
+ * @descrition:
+ * @author:Wanghs
+ * @date:2018-05-04
+ */
+@Data
+public class BooleanWriteTsData  {
+    private String tagName;
+    private long ts;
+    private boolean actualValue;
+
+    public boolean getValue() {
+        return this.actualValue;
+    }
+}

+ 18 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/Coordinate.java

@@ -0,0 +1,18 @@
+package com.gyee.monitor.util.realtimesource.timeseries;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+/**
+ * @author songwb<songwb@aliyun.com>
+ */
+@Data
+@AllArgsConstructor
+public class Coordinate {
+
+    private double latitude;
+
+    private double longitude;
+
+}
+

+ 26 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/CoordinateTsData.java

@@ -0,0 +1,26 @@
+package com.gyee.monitor.util.realtimesource.timeseries;
+
+/**
+ * @author songwb<songwb@aliyun.com>
+ */
+public class CoordinateTsData extends BasicTsData {
+
+    private final Coordinate coordinate;
+
+    public CoordinateTsData(long ts, short status, double latitude, double longitude) {
+        super(ts, status);
+        this.coordinate = new Coordinate(latitude, longitude);
+    }
+
+    public CoordinateTsData(long ts, short status, Coordinate coordinate) {
+        super(ts, status);
+        this.coordinate = coordinate;
+    }
+
+    public Coordinate getCoordinateValue() {
+        return coordinate;
+        //return String.format("{\"longitude\":%f,\"latitude\":\"%f\"}", longitude, latitude);
+    }
+
+}
+

+ 21 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/CoordinateWriteTsData.java

@@ -0,0 +1,21 @@
+package com.gyee.monitor.util.realtimesource.timeseries;
+
+import lombok.Data;
+
+/**
+ * @descrition:
+ * @author:Wanghs
+ * @date:2018-05-04
+ */
+@Data
+public class CoordinateWriteTsData  {
+
+    private String tagName;
+    private long ts;
+    private  double latitude;
+    private  double longitude;
+
+    public double getLatitude() { return  latitude ;}
+    public double getLongitude() {return  longitude; }
+
+}

+ 30 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/DoubleStatData.java

@@ -0,0 +1,30 @@
+package com.gyee.monitor.util.realtimesource.timeseries;
+
+/**
+ * @author songwb<songwb@aliyun.com>
+ */
+public class DoubleStatData {
+
+    private DoubleTsData avg;
+    private DoubleTsData max;
+    private DoubleTsData min;
+
+    public DoubleStatData(DoubleTsData avg, DoubleTsData max, DoubleTsData min) {
+        this.avg = avg;
+        this.max = max;
+        this.min = min;
+    }
+
+    public DoubleTsData getAvg() {
+        return avg;
+    }
+
+    public DoubleTsData getMax() {
+        return max;
+    }
+
+    public DoubleTsData getMin() {
+        return min;
+    }
+}
+

+ 25 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/DoubleTsData.java

@@ -0,0 +1,25 @@
+package com.gyee.monitor.util.realtimesource.timeseries;
+
+/**
+ * @author songwb<songwb@aliyun.com>
+ */
+public class DoubleTsData extends BasicTsData {
+
+    private final double actualValue;
+
+    public DoubleTsData(long ts, short status, double actualValue) {
+        super(ts, status);
+        this.actualValue = actualValue;
+    }
+
+
+    public double getDoubleValue() {
+        return actualValue;
+    }
+
+//    public String getValue() {
+//        return Double.toString(actualValue);
+//    }
+
+}
+

+ 19 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/DoubleWriteTsData.java

@@ -0,0 +1,19 @@
+package com.gyee.monitor.util.realtimesource.timeseries;
+
+import lombok.Data;
+
+/**
+ * @descrition:
+ * @author:Wanghs
+ * @date:2018-05-04
+ */
+@Data
+public class DoubleWriteTsData  {
+    private String tagName;
+    private long ts;
+    private double actualValue;
+
+    public double getValue() {
+        return this.actualValue;
+    }
+}

+ 38 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/ErrorRequest.java

@@ -0,0 +1,38 @@
+package com.gyee.monitor.util.realtimesource.timeseries;
+
+import com.gyee.common.model.PointData;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @descrition:接口请求失败返回操作类
+ * @author:Wanghs
+ * @date:2018-05-21
+ */
+public class ErrorRequest {
+
+    public static List<PointData> RequestListError(String pointId) {
+        List<PointData> dataList = new ArrayList<>();
+        return dataList;
+    }
+
+    public static List<PointData> RequestListError(String... pointId) {
+        List<PointData> dataList = new ArrayList<>();
+        return dataList;
+    }
+
+    public static PointData RequestError(String pointId) {
+        PointData data = new PointData();
+        data.setPointValueInDouble(0);
+        data.setPointName("0");
+        return data;
+    }
+
+    public static Map<String, Double> RequestMapError() {
+        Map<String, Double> resultMap = new HashMap();
+        return resultMap;
+    }
+}

+ 27 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/GeneralTsData.java

@@ -0,0 +1,27 @@
+package com.gyee.monitor.util.realtimesource.timeseries;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Optional;
+
+/**
+ * @author songwb<songwb@aliyun.com>
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class GeneralTsData implements TsData {
+
+    private long ts;
+    private short status;
+    private Optional<Double> doubleValue;
+    private Optional<Long> longValue;
+    private Optional<Boolean> booleanValue;
+    private Optional<String> stringValue;
+    private Optional<String> blobValue;
+    private Optional<Coordinate> coordinateValue;
+
+}
+

+ 8 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/Interpolation.java

@@ -0,0 +1,8 @@
+
+package com.gyee.monitor.util.realtimesource.timeseries;
+
+public enum Interpolation {
+    SNAP,   // 历史快照数据
+    INTERPOLATION, //插值
+    RAW    //原始数据
+}

+ 206 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/JsonObjectHelper.java

@@ -0,0 +1,206 @@
+package com.gyee.monitor.util.realtimesource.timeseries;
+
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.gyee.common.model.DNAStatVal;
+import com.gyee.common.model.DNAVal;
+import com.gyee.common.model.PointData;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+
+/**
+ * @descrition:JSONObject转实体辅助类
+ * @author:Wanghs
+ * @date:2018-05-10
+ */
+public class JsonObjectHelper {
+    public static List<PointData> phrasePointData(JSONArray jsonArray, String tagName) {
+        List<PointData> result = new ArrayList<>();
+
+        for (int i = 0; i < jsonArray.size(); i++) {
+            JSONObject tsData = jsonArray.getJSONObject(i);
+
+            Long ts = tsData.getLong("ts");
+            String pointValue = null;
+            if (tsData.containsKey("doubleValue")) {
+                pointValue = tsData.getString("doubleValue");
+            } else if (tsData.containsKey("booleanValue")) {
+                pointValue = tsData.getString("booleanValue");
+            } else if (tsData.containsKey("longValue")) {
+                pointValue = tsData.getString("longValue");
+            } else if (tsData.containsKey("stringValue")) {
+                pointValue = tsData.getString("stringValue");
+            }
+            PointData pointData = new PointData();
+            pointData.setEdnaId(tagName);
+            pointData.setPointName("1");
+            pointData.setPointTime(ts / 1000);
+            pointData.setPointValue(pointValue);
+            pointData.setPointValueInDouble(Double.parseDouble(pointValue));
+            //System.out.println("key= " + tagName + ", ts = " + ts + ", value = " + pointValue);
+            result.add(pointData);
+        }
+        return result;
+    }
+
+
+    public static List<PointData> phrasePointData(JSONObject jsonObject) {
+        List<PointData> result = new ArrayList<>();
+        Iterator<String> sIterator = jsonObject.keySet().iterator();
+        while (sIterator.hasNext()) {
+            // 获得key
+            String key = sIterator.next();
+            // 根据key获得value, value也可以是JSONObject,JSONArray,使用对应的参数接收即可
+            JSONObject jsonData = jsonObject.getJSONObject(key);
+            Long ts = 0l;
+
+            if (jsonData!=null){
+                ts  = jsonData.getLong("ts");
+                String pointValue = null;
+                if (jsonData.containsKey("doubleValue")) {
+                    pointValue = jsonData.getString("doubleValue");
+                } else if (jsonData.containsKey("booleanValue")) {
+                    pointValue = jsonData.getString("booleanValue");
+                } else if (jsonData.containsKey("longValue")) {
+                    pointValue = jsonData.getString("longValue");
+                } else if (jsonData.containsKey("stringValue")) {
+                    pointValue = jsonData.getString("stringValue");
+                }
+                PointData pointData = new PointData();
+                pointData.setEdnaId(key);
+                pointData.setPointName("1");
+                pointData.setPointValue(pointValue);
+                pointData.setPointTime(ts/1000);
+                if(pointValue.equals("false")  )
+                {
+                    pointData.setPointValueInDouble(0.0);
+                }else  if(pointValue.equals("true") )
+                {
+                    pointData.setPointValueInDouble(1.0);
+                }else
+                {
+                    pointData.setPointValueInDouble(Double.parseDouble(pointValue));
+                }
+
+                //  System.out.println("key= " + key + ", ts = " + ts + ", value = " + pointValue);
+                result.add(pointData);
+            }
+        }
+        return result;
+    }
+    /**
+     * @param arry    DoubleStatData集合
+     * @param tagName 标签点名
+     * @param type    0、最大值。1、最小值。2、平均值
+     */
+    public static List<PointData> GeneralTsDataToPointDataByStat(JSONArray arry, String tagName, int type) {
+        List<PointData> result = new ArrayList<>();
+        for (int i = 0; i < arry.size(); i++) {
+            JSONObject jsonData = arry.getJSONObject(i);
+            PointData data = new PointData();
+            data.setEdnaId(tagName);
+            data.setPointName("1");
+            JSONObject avgData = null;
+            JSONObject maxData = null;
+            JSONObject minData = null;
+            if (jsonData.containsKey("avg")) {
+                avgData = jsonData.getJSONObject("avg");
+            }
+            if (jsonData.containsKey("max")) {
+                maxData = jsonData.getJSONObject("max");
+            }
+            if (jsonData.containsKey("min")) {
+                minData = jsonData.getJSONObject("min");
+            }
+            switch (type) {
+                case 0:
+                    data.setPointValue(String.valueOf(maxData.getString("doubleValue")));
+                    data.setPointValueInDouble(Double.valueOf(maxData.getString("doubleValue")));
+                    data.setPointTime(Long.valueOf(maxData.getString("ts")) / 1000);
+                    break;
+                case 1:
+                    data.setPointValue(String.valueOf(minData.getString("doubleValue")));
+                    data.setPointValueInDouble(Double.valueOf(minData.getString("doubleValue")));
+                    data.setPointTime(Long.valueOf(minData.getString("ts")) / 1000);
+                    break;
+                case 2:
+                    data.setPointValue(String.valueOf(avgData.getString("doubleValue")));
+                    data.setPointValueInDouble(Double.valueOf(avgData.getString("doubleValue")));
+                    data.setPointTime(Long.valueOf(avgData.getString("ts")) / 1000);
+                    break;
+                default:
+                    break;
+            }
+            result.add(data);
+        }
+        return result;
+    }
+
+    public static DNAVal[] phraseDNAVal(JSONObject jsonObject, String[] tagName) {
+        DNAVal[] arr = new DNAVal[jsonObject.size()];
+        List<DNAVal> list = new ArrayList<>();
+        Iterator<String> sIterator = jsonObject.keySet().iterator();
+
+        for (int i = 0; i < tagName.length; i++) {
+            // 获得key
+            String key = tagName[i];
+            // 根据key获得value, value也可以是JSONObject,JSONArray,使用对应的参数接收即可
+            JSONObject jsonData = jsonObject.getJSONObject(key);
+            DNAVal data = new DNAVal();
+            data.Time = Integer.parseInt(String.valueOf(Long.valueOf(jsonData.getString("ts")) / 1000));
+            data.Status = (short) jsonData.getShortValue("status");
+            data.DValue = (Double.valueOf(jsonData.getDoubleValue("doubleValue")));
+            list.add(data);
+        }
+
+        return list.toArray(arr);
+    }
+
+    public static DNAStatVal[] phraseDNAVal(JSONArray jsonArray) {
+
+        DNAStatVal[] arr = new DNAStatVal[jsonArray.size()];
+        List<DNAStatVal> list = new ArrayList<>();
+        for (int i = 0; i < jsonArray.size(); i++) {
+            JSONObject jsonData = jsonArray.getJSONObject(i);
+            JSONObject avgData = null;
+            JSONObject maxData = null;
+            JSONObject minData = null;
+            if (jsonData.containsKey("avg")) {
+                avgData = jsonData.getJSONObject("avg");
+            }
+            if (jsonData.containsKey("max")) {
+                maxData = jsonData.getJSONObject("max");
+            }
+            if (jsonData.containsKey("min")) {
+                minData = jsonData.getJSONObject("min");
+            }
+            DNAStatVal statVal = new DNAStatVal();
+
+            DNAVal avgVal = new DNAVal();
+            DNAVal maxVal = new DNAVal();
+            DNAVal minVal = new DNAVal();
+
+            avgVal.Time = Integer.valueOf(String.valueOf(Long.valueOf(avgData.getString("ts")) / 1000));
+            avgVal.DValue = Double.valueOf(avgData.getString("doubleValue"));
+
+            maxVal.Time =  Integer.valueOf(String.valueOf(Long.valueOf(maxData.getString("ts")) / 1000));
+            maxVal.DValue = Double.valueOf(maxData.getString("doubleValue"));
+
+            minVal.Time =  Integer.valueOf(String.valueOf(Long.valueOf(minData.getString("ts")) / 1000));
+            minVal.DValue = Double.valueOf(minData.getString("doubleValue"));
+
+            statVal.max = maxVal;
+            statVal.min = minVal;
+            statVal.avg = avgVal;
+
+            list.add(statVal);
+        }
+
+        return list.toArray(arr);
+    }
+
+}

+ 24 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/LongTsData.java

@@ -0,0 +1,24 @@
+package com.gyee.monitor.util.realtimesource.timeseries;
+
+/**
+ * @author songwb<songwb@aliyun.com>
+ */
+public class LongTsData extends BasicTsData {
+
+    private final long actualValue;
+
+    public LongTsData(long ts, short status, long actualValue) {
+        super(ts, status);
+        this.actualValue = actualValue;
+    }
+
+    public long getLongValue() {
+        return actualValue;
+    }
+
+//    public String getValue() {
+//        return Long.toString(actualValue);
+//    }
+
+}
+

+ 20 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/LongWriteTsData.java

@@ -0,0 +1,20 @@
+package com.gyee.monitor.util.realtimesource.timeseries;
+
+import lombok.Data;
+
+/**
+ * @descrition:
+ * @author:Wanghs
+ * @date:2018-05-04
+ */
+@Data
+public class LongWriteTsData  {
+
+    private String tagName;
+    private long ts;
+    private long actualValue;
+
+    public long getValue() {
+        return this.actualValue;
+    }
+}

+ 24 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/StringTsData.java

@@ -0,0 +1,24 @@
+package com.gyee.monitor.util.realtimesource.timeseries;
+
+/**
+ * @author songwb<songwb@aliyun.com>
+ */
+public class StringTsData extends BasicTsData {
+
+    private final String actualValue;
+
+    public StringTsData(long ts, short status, String actualValue) {
+        super(ts, status);
+        this.actualValue = actualValue;
+    }
+
+//    public String getActualValue() {
+//        return actualValue;
+//    }
+
+    public String getStringValue() {
+        return actualValue;
+    }
+
+}
+

+ 34 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/StringUtil.java

@@ -0,0 +1,34 @@
+package com.gyee.monitor.util.realtimesource.timeseries;
+
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * String辅助类
+ * 
+ */
+public class StringUtil extends StringUtils {
+	
+	/**
+	 * 非空判断
+	 * 
+	 * @param obj
+	 * @return
+	 */
+	public static boolean isNotBlank(Object obj) {
+		return !isBlank(obj);
+	}
+
+	/**
+	 * 为空判断
+	 * 
+	 * @param obj
+	 * @return
+	 */
+	public static boolean isBlank(Object obj) {
+		if (obj == null || StringUtils.isBlank(obj.toString())) {
+			return true;
+		}
+		return false;
+	}
+
+}

+ 20 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/StringWriteTsData.java

@@ -0,0 +1,20 @@
+package com.gyee.monitor.util.realtimesource.timeseries;
+
+import lombok.Data;
+
+/**
+ * @descrition:String类型写入实体类
+ * @author:Wanghs
+ * @date:2018-05-04
+ */
+@Data
+public class StringWriteTsData  {
+    private String tagName;
+    private long ts;
+    private String actualValue;
+
+    public String getValue() {
+        return this.actualValue;
+    }
+
+}

+ 15 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/TsData.java

@@ -0,0 +1,15 @@
+package com.gyee.monitor.util.realtimesource.timeseries;
+
+/**
+ * @author songwb<songwb@aliyun.com>
+ */
+public interface TsData {
+
+    long getTs();
+
+    short getStatus();
+
+    //double getValue();
+
+}
+

+ 15 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/TsDataType.java

@@ -0,0 +1,15 @@
+package com.gyee.monitor.util.realtimesource.timeseries;
+
+/**
+ * @author songwb<songwb@aliyun.com>
+ */
+public enum TsDataType {
+    LONG,
+    DOUBLE,
+    BOOLEAN,
+    STRING,
+    BLOB,
+    COORDINATE
+
+}
+

+ 12 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/TsPoint.java

@@ -0,0 +1,12 @@
+package com.gyee.monitor.util.realtimesource.timeseries;
+
+/**
+ * @author songwb<songwb@aliyun.com>
+ */
+public interface TsPoint {
+
+    String getId();
+
+    TsDataType getTsDataType();
+}
+

+ 36 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/TsPointData.java

@@ -0,0 +1,36 @@
+package com.gyee.monitor.util.realtimesource.timeseries;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author songwb<songwb@aliyun.com>
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class TsPointData {
+
+    private String tagName;
+    private GeneralTsData tsData;
+
+    public TsDataType findDataType() {
+        if (tsData.getDoubleValue().isPresent())
+            return TsDataType.DOUBLE;
+        else if (tsData.getBooleanValue().isPresent())
+            return TsDataType.BOOLEAN;
+        else if (tsData.getLongValue().isPresent())
+            return TsDataType.LONG;
+        else if (tsData.getStringValue().isPresent())
+            return TsDataType.STRING;
+        else if (tsData.getBlobValue().isPresent())
+            return TsDataType.BLOB;
+        else if (tsData.getCoordinateValue().isPresent())
+            return TsDataType.COORDINATE;
+
+        return TsDataType.DOUBLE;
+    }
+}
+

+ 23 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/TsPointDataList.java

@@ -0,0 +1,23 @@
+package com.gyee.monitor.util.realtimesource.timeseries;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @author songwb<songwb@aliyun.com>
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class TsPointDataList {
+
+    private String tagName;
+
+    private List<GeneralTsData> tsDataList;
+
+}
+

+ 17 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/realtimesource/timeseries/TsQuery.java

@@ -0,0 +1,17 @@
+package com.gyee.monitor.util.realtimesource.timeseries;
+
+public interface TsQuery {
+
+    TsPoint getTsPoint();
+
+    long getStartTs();
+
+    long getEndTs();
+
+    int getInterval();
+
+    int getLimit();
+
+    Interpolation getInterpolation();
+
+}

+ 44 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/redis/RedisAutoConfiguration.java

@@ -0,0 +1,44 @@
+package com.gyee.monitor.util.redis;
+
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisOperations;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.StringRedisTemplate;
+
+import java.net.UnknownHostException;
+
+@Configuration
+@ConditionalOnClass(RedisOperations.class)
+@EnableConfigurationProperties(RedisProperties.class)
+public class RedisAutoConfiguration {
+
+
+    @Bean
+    @ConditionalOnMissingBean(name = "redisTemplate")
+    public RedisTemplate<Object, Object> redisTemplate(
+            RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
+        RedisTemplate<Object, Object> template = new RedisTemplate<>();
+        template.setConnectionFactory(redisConnectionFactory);
+        return template;
+
+    }
+
+
+    @Bean
+    @ConditionalOnMissingBean
+    public StringRedisTemplate stringRedisTemplate(
+            RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
+        StringRedisTemplate template = new StringRedisTemplate();
+        template.setConnectionFactory(redisConnectionFactory);
+        return template;
+
+    }
+
+
+}

+ 47 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/redis/RedisConfig.java

@@ -0,0 +1,47 @@
+package com.gyee.monitor.util.redis;
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+
+
+/**
+
+/**
+ *@ClassName RedisConfig
+ *@Description TODO
+ *@Author 谢生杰
+ *@Date 2020/9/14 10:42
+ *@Version 1.0
+ **/
+@Configuration
+public class RedisConfig {
+    @Bean
+    @SuppressWarnings("all")
+    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
+        RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
+        template.setConnectionFactory(factory);
+        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
+        ObjectMapper om = new ObjectMapper();
+        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
+        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
+        jackson2JsonRedisSerializer.setObjectMapper(om);
+        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
+        // key采用String的序列化方式
+        template.setKeySerializer(stringRedisSerializer);
+        // hash的key也采用String的序列化方式
+        template.setHashKeySerializer(stringRedisSerializer);
+        // value序列化方式采用jackson
+        template.setValueSerializer(jackson2JsonRedisSerializer);
+        // hash的value序列化方式采用jackson
+        template.setHashValueSerializer(jackson2JsonRedisSerializer);
+        template.afterPropertiesSet();
+        return template;
+    }
+}

+ 49 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/redis/RedisService.java

@@ -0,0 +1,49 @@
+package com.gyee.monitor.util.redis;
+
+public interface RedisService {
+
+    /**
+     * set存数据
+     * @param key
+     * @param value
+     * @return
+     */
+    boolean set(String key, String value);
+
+    /**
+     * get获取数据
+     * @param key
+     * @return
+     */
+    String get(String key);
+
+//    void getList(String key,int start,int end);
+
+    /**
+     * 设置有效天数
+     * @param key
+     * @param expire
+     * @return
+     */
+    boolean expire(String key, long expire);
+
+    /**
+     * 移除数据
+     * @param key
+     * @return
+     */
+    boolean remove(String key);
+
+
+    /**
+     * 插入对象
+     */
+    void setObject(Object o);
+
+
+    boolean hasKey(String key);
+
+
+    void select(Integer dbIndex);
+
+}

+ 124 - 0
web/monitor-web/src/main/java/com/gyee/monitor/util/redis/RedisServiceImpl.java

@@ -0,0 +1,124 @@
+package com.gyee.monitor.util.redis;
+
+import org.springframework.dao.DataAccessException;
+import org.springframework.data.redis.connection.RedisConnection;
+import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
+import org.springframework.data.redis.core.RedisCallback;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.RedisSerializer;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.lang.reflect.Field;
+import java.util.concurrent.TimeUnit;
+
+@Service("redisService")
+public class RedisServiceImpl implements RedisService {
+
+    @Resource
+    private RedisTemplate<String, ?> redisTemplate;
+
+    @Override
+    public boolean set(final String key, final String value) {
+        boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {
+            @Override
+            public Boolean doInRedis(RedisConnection connection) throws DataAccessException {
+                RedisSerializer<String> serializer = redisTemplate.getStringSerializer();
+                connection.set(serializer.serialize(key), serializer.serialize(value));
+                return true;
+            }
+        });
+        return result;
+    }
+
+    @Override
+    public String get(final String key) {
+        String result = redisTemplate.execute(new RedisCallback<String>() {
+            @Override
+            public String doInRedis(RedisConnection connection) throws DataAccessException {
+                RedisSerializer<String> serializer = redisTemplate.getStringSerializer();
+                byte[] value = connection.get(serializer.serialize(key));
+                return serializer.deserialize(value);
+            }
+        });
+        return result;
+    }
+
+
+
+    @Override
+    public boolean expire(final String key, long expire) {
+        return redisTemplate.expire(key, expire, TimeUnit.SECONDS);
+    }
+
+    @Override
+    public boolean remove(final String key) {
+        boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {
+            @Override
+            public Boolean doInRedis(RedisConnection connection) throws DataAccessException {
+                RedisSerializer<String> serializer = redisTemplate.getStringSerializer();
+                connection.del(key.getBytes());
+                return true;
+            }
+        });
+        return result;
+    }
+
+    @Override
+    public boolean hasKey(final String key) {
+        try {
+            return redisTemplate.hasKey(key);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    @Override
+    public void setObject(Object obj) {
+        Field[] fields = obj.getClass().getDeclaredFields();
+        for(int i = 0 , len = fields.length; i < len; i++) {
+            // 对于每个属性,获取属性名
+            String varName = fields[i].getName();
+            try {
+                // 获取原来的访问控制权限
+                boolean accessFlag = fields[i].isAccessible();
+                // 修改访问控制权限
+                fields[i].setAccessible(true);
+                // 获取在对象f中属性fields[i]对应的对象中的变量
+                Object o;
+                try {
+                    o = fields[i].get(obj);
+                    if (o!=null){
+                        set(varName, String.valueOf(o));
+                    }else {
+                        set(varName,"");
+                    }
+
+                    //System.err.println("传入的对象中包含一个如下的变量:" + varName + " = " + o);
+                } catch (IllegalAccessException e) {
+                    // TODO Auto-generated catch block
+                    e.printStackTrace();
+                }
+                // 恢复访问控制权限
+                fields[i].setAccessible(accessFlag);
+            } catch (IllegalArgumentException ex) {
+                ex.printStackTrace();
+            }
+        }
+
+    }
+
+    public void select(Integer dbIndex) {
+        if (dbIndex == null || dbIndex > 15 || dbIndex < 0) {
+            dbIndex = 0;
+        }
+        LettuceConnectionFactory jedisConnectionFactory = (LettuceConnectionFactory) redisTemplate
+                .getConnectionFactory();
+        jedisConnectionFactory.setDatabase(dbIndex);
+        redisTemplate.setConnectionFactory(jedisConnectionFactory);
+        jedisConnectionFactory.afterPropertiesSet();
+//        jedisConnectionFactory.resetConnection();
+
+    }
+}

+ 99 - 0
web/monitor-web/src/main/resources/application-dev.yml

@@ -0,0 +1,99 @@
+server:
+  port: 8086
+  servlet:
+    context-path: /
+
+
+spring:
+  application:
+    name: monitor-provider
+  main:
+    allow-bean-definition-overriding: true #当遇到同样名字的时候,是否允许覆盖注册
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 192.168.2.216:8848
+        #指定yaml格式的配置
+        file-extension: yaml
+        cluster-name: master
+      username: nacos
+      password: nacos
+  #redis集群
+  redis:
+#    host: 10.83.68.94
+    host: 192.168.2.202
+    port: 6379
+    timeout: 100000
+    #    集群环境打开下面注释,单机不需要打开
+    #    cluster:
+    #      集群信息
+    #      nodes: xxx.xxx.xxx.xxx:xxxx,xxx.xxx.xxx.xxx:xxxx,xxx.xxx.xxx.xxx:xxxx
+    #      #默认值是5 一般当此值设置过大时,容易报:Too many Cluster redirections
+    #      maxRedirects: 3
+    password:
+    application:
+      name: test
+    jedis:
+      pool:
+        max-active: 8
+        min-idle: 0
+        max-idle: 8
+        max-wait: -1
+    database: 1
+  autoconfigure:
+    exclude: org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration
+  datasource:
+    type: com.alibaba.druid.pool.DruidDataSource
+    driver-class-name: oracle.jdbc.OracleDriver
+    #外网
+    url: jdbc:oracle:thin:@192.168.2.215:1521:gdsj
+#    url: jdbc:oracle:thin:@10.83.68.165:1521:gdsj
+    username: gdprod
+    password: gd123
+    oracle-schema=:
+    #    type: com.alibaba.druid.pool.DruidDataSource
+    #    url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&serverTimezone=UTC
+    #    username: root
+    #    password: root
+    #    driver-class-name: com.mysql.jdbc.Driver
+    druid:
+      max-active: 20
+      initial-size: 1
+      min-idle: 3
+      max-wait: 60000
+      time-between-eviction-runs-millis: 60000
+      min-evictable-idle-time-millis: 300000
+      test-while-idle: true
+      test-on-borrow: false
+      test-on-return: false
+  servlet:
+    multipart:
+      # 开启 multipart 上传功能
+      enabled: true
+      # 文件写入磁盘的阈值
+      file-size-threshold: 2KB
+      # 最大文件大小
+      max-file-size: 200MB
+      # 最大请求大小
+      max-request-size: 215MB
+
+mybatis-plus:
+  configuration:
+    map-underscore-to-camel-case: true
+    auto-mapping-behavior: full
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+  mapper-locations: classpath*:mapper/**/*Mapper.xml
+  global-config:
+    # 逻辑删除配置
+    db-config:
+      id-type: auto
+      # 删除前
+      logic-not-delete-value: 1
+      # 删除后
+      logic-delete-value: 0
+logging:
+  level:
+    root: info
+    com.example: debug
+
+

+ 99 - 0
web/monitor-web/src/main/resources/application-test.yml

@@ -0,0 +1,99 @@
+server:
+  port: 8086
+  servlet:
+    context-path: /
+
+
+spring:
+  application:
+    name: monitor-provider
+  main:
+    allow-bean-definition-overriding: true #当遇到同样名字的时候,是否允许覆盖注册
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 10.83.68.97:8848
+        #指定yaml格式的配置
+        file-extension: yaml
+        cluster-name: master
+      username: nacos
+      password: nacos
+  #redis集群
+  redis:
+    host: 10.83.68.94
+#    host: 192.168.2.202
+    port: 6379
+    timeout: 100000
+    #    集群环境打开下面注释,单机不需要打开
+    #    cluster:
+    #      集群信息
+    #      nodes: xxx.xxx.xxx.xxx:xxxx,xxx.xxx.xxx.xxx:xxxx,xxx.xxx.xxx.xxx:xxxx
+    #      #默认值是5 一般当此值设置过大时,容易报:Too many Cluster redirections
+    #      maxRedirects: 3
+    password:
+    application:
+      name: test
+    jedis:
+      pool:
+        max-active: 8
+        min-idle: 0
+        max-idle: 8
+        max-wait: -1
+    database: 1
+  autoconfigure:
+    exclude: org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration
+  datasource:
+    type: com.alibaba.druid.pool.DruidDataSource
+    driver-class-name: oracle.jdbc.OracleDriver
+    #外网
+#    url: jdbc:oracle:thin:@192.168.2.215:1521:gdsj
+    url: jdbc:oracle:thin:@10.83.68.165:1521:gdsj
+    username: gdprod
+    password: gd123
+    oracle-schema=:
+    #    type: com.alibaba.druid.pool.DruidDataSource
+    #    url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&serverTimezone=UTC
+    #    username: root
+    #    password: root
+    #    driver-class-name: com.mysql.jdbc.Driver
+    druid:
+      max-active: 20
+      initial-size: 1
+      min-idle: 3
+      max-wait: 60000
+      time-between-eviction-runs-millis: 60000
+      min-evictable-idle-time-millis: 300000
+      test-while-idle: true
+      test-on-borrow: false
+      test-on-return: false
+  servlet:
+    multipart:
+      # 开启 multipart 上传功能
+      enabled: true
+      # 文件写入磁盘的阈值
+      file-size-threshold: 2KB
+      # 最大文件大小
+      max-file-size: 200MB
+      # 最大请求大小
+      max-request-size: 215MB
+
+mybatis-plus:
+  configuration:
+    map-underscore-to-camel-case: true
+    auto-mapping-behavior: full
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+  mapper-locations: classpath*:mapper/**/*Mapper.xml
+  global-config:
+    # 逻辑删除配置
+    db-config:
+      id-type: auto
+      # 删除前
+      logic-not-delete-value: 1
+      # 删除后
+      logic-delete-value: 0
+logging:
+  level:
+    root: info
+    com.example: debug
+
+

+ 4 - 0
web/monitor-web/src/main/resources/application.yml

@@ -0,0 +1,4 @@
+spring:
+  profiles:
+    active: dev
+#    active: test

二進制
web/monitor-web/target/classes/META-INF/monitor-web.kotlin_module


+ 99 - 0
web/monitor-web/target/classes/application-dev.yml

@@ -0,0 +1,99 @@
+server:
+  port: 8086
+  servlet:
+    context-path: /
+
+
+spring:
+  application:
+    name: monitor-provider
+  main:
+    allow-bean-definition-overriding: true #当遇到同样名字的时候,是否允许覆盖注册
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 192.168.2.216:8848
+        #指定yaml格式的配置
+        file-extension: yaml
+        cluster-name: master
+      username: nacos
+      password: nacos
+  #redis集群
+  redis:
+#    host: 10.83.68.94
+    host: 192.168.2.202
+    port: 6379
+    timeout: 100000
+    #    集群环境打开下面注释,单机不需要打开
+    #    cluster:
+    #      集群信息
+    #      nodes: xxx.xxx.xxx.xxx:xxxx,xxx.xxx.xxx.xxx:xxxx,xxx.xxx.xxx.xxx:xxxx
+    #      #默认值是5 一般当此值设置过大时,容易报:Too many Cluster redirections
+    #      maxRedirects: 3
+    password:
+    application:
+      name: test
+    jedis:
+      pool:
+        max-active: 8
+        min-idle: 0
+        max-idle: 8
+        max-wait: -1
+    database: 1
+  autoconfigure:
+    exclude: org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration
+  datasource:
+    type: com.alibaba.druid.pool.DruidDataSource
+    driver-class-name: oracle.jdbc.OracleDriver
+    #外网
+    url: jdbc:oracle:thin:@192.168.2.215:1521:gdsj
+#    url: jdbc:oracle:thin:@10.83.68.165:1521:gdsj
+    username: gdprod
+    password: gd123
+    oracle-schema=:
+    #    type: com.alibaba.druid.pool.DruidDataSource
+    #    url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&serverTimezone=UTC
+    #    username: root
+    #    password: root
+    #    driver-class-name: com.mysql.jdbc.Driver
+    druid:
+      max-active: 20
+      initial-size: 1
+      min-idle: 3
+      max-wait: 60000
+      time-between-eviction-runs-millis: 60000
+      min-evictable-idle-time-millis: 300000
+      test-while-idle: true
+      test-on-borrow: false
+      test-on-return: false
+  servlet:
+    multipart:
+      # 开启 multipart 上传功能
+      enabled: true
+      # 文件写入磁盘的阈值
+      file-size-threshold: 2KB
+      # 最大文件大小
+      max-file-size: 200MB
+      # 最大请求大小
+      max-request-size: 215MB
+
+mybatis-plus:
+  configuration:
+    map-underscore-to-camel-case: true
+    auto-mapping-behavior: full
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+  mapper-locations: classpath*:mapper/**/*Mapper.xml
+  global-config:
+    # 逻辑删除配置
+    db-config:
+      id-type: auto
+      # 删除前
+      logic-not-delete-value: 1
+      # 删除后
+      logic-delete-value: 0
+logging:
+  level:
+    root: info
+    com.example: debug
+
+

+ 99 - 0
web/monitor-web/target/classes/application-test.yml

@@ -0,0 +1,99 @@
+server:
+  port: 8086
+  servlet:
+    context-path: /
+
+
+spring:
+  application:
+    name: monitor-provider
+  main:
+    allow-bean-definition-overriding: true #当遇到同样名字的时候,是否允许覆盖注册
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 10.83.68.97:8848
+        #指定yaml格式的配置
+        file-extension: yaml
+        cluster-name: master
+      username: nacos
+      password: nacos
+  #redis集群
+  redis:
+    host: 10.83.68.94
+#    host: 192.168.2.202
+    port: 6379
+    timeout: 100000
+    #    集群环境打开下面注释,单机不需要打开
+    #    cluster:
+    #      集群信息
+    #      nodes: xxx.xxx.xxx.xxx:xxxx,xxx.xxx.xxx.xxx:xxxx,xxx.xxx.xxx.xxx:xxxx
+    #      #默认值是5 一般当此值设置过大时,容易报:Too many Cluster redirections
+    #      maxRedirects: 3
+    password:
+    application:
+      name: test
+    jedis:
+      pool:
+        max-active: 8
+        min-idle: 0
+        max-idle: 8
+        max-wait: -1
+    database: 1
+  autoconfigure:
+    exclude: org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration
+  datasource:
+    type: com.alibaba.druid.pool.DruidDataSource
+    driver-class-name: oracle.jdbc.OracleDriver
+    #外网
+#    url: jdbc:oracle:thin:@192.168.2.215:1521:gdsj
+    url: jdbc:oracle:thin:@10.83.68.165:1521:gdsj
+    username: gdprod
+    password: gd123
+    oracle-schema=:
+    #    type: com.alibaba.druid.pool.DruidDataSource
+    #    url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&serverTimezone=UTC
+    #    username: root
+    #    password: root
+    #    driver-class-name: com.mysql.jdbc.Driver
+    druid:
+      max-active: 20
+      initial-size: 1
+      min-idle: 3
+      max-wait: 60000
+      time-between-eviction-runs-millis: 60000
+      min-evictable-idle-time-millis: 300000
+      test-while-idle: true
+      test-on-borrow: false
+      test-on-return: false
+  servlet:
+    multipart:
+      # 开启 multipart 上传功能
+      enabled: true
+      # 文件写入磁盘的阈值
+      file-size-threshold: 2KB
+      # 最大文件大小
+      max-file-size: 200MB
+      # 最大请求大小
+      max-request-size: 215MB
+
+mybatis-plus:
+  configuration:
+    map-underscore-to-camel-case: true
+    auto-mapping-behavior: full
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+  mapper-locations: classpath*:mapper/**/*Mapper.xml
+  global-config:
+    # 逻辑删除配置
+    db-config:
+      id-type: auto
+      # 删除前
+      logic-not-delete-value: 1
+      # 删除后
+      logic-delete-value: 0
+logging:
+  level:
+    root: info
+    com.example: debug
+
+

+ 4 - 0
web/monitor-web/target/classes/application.yml

@@ -0,0 +1,4 @@
+spring:
+  profiles:
+    active: dev
+#    active: test

二進制
web/monitor-web/target/classes/com/gyee/monitor/MonitorMain.class


二進制
web/monitor-web/target/classes/com/gyee/monitor/config/CorsConfig.class


二進制
web/monitor-web/target/classes/com/gyee/monitor/config/GeneratorCodeConfig.class


二進制
web/monitor-web/target/classes/com/gyee/monitor/config/MybatisPlusConfig.class


二進制
web/monitor-web/target/classes/com/gyee/monitor/config/R.class


二進制
web/monitor-web/target/classes/com/gyee/monitor/config/ResultCode.class


二進制
web/monitor-web/target/classes/com/gyee/monitor/controller/auto/WindpowerstationtestingpointController.class


二進制
web/monitor-web/target/classes/com/gyee/monitor/controller/auto/WindturbinetestingpointaiController.class


二進制
web/monitor-web/target/classes/com/gyee/monitor/init/CacheContext$1.class


二進制
web/monitor-web/target/classes/com/gyee/monitor/init/CacheContext$2.class


二進制
web/monitor-web/target/classes/com/gyee/monitor/init/CacheContext.class


二進制
web/monitor-web/target/classes/com/gyee/monitor/mapper/auto/WindpowerstationtestingpointMapper.class


二進制
web/monitor-web/target/classes/com/gyee/monitor/mapper/auto/WindturbinetestingpointaiMapper.class


二進制
web/monitor-web/target/classes/com/gyee/monitor/model/auto/Windpowerstationtestingpoint.class


二進制
web/monitor-web/target/classes/com/gyee/monitor/model/auto/Windturbinetestingpointai.class


二進制
web/monitor-web/target/classes/com/gyee/monitor/service/auto/IWindpowerstationtestingpointService.class


二進制
web/monitor-web/target/classes/com/gyee/monitor/service/auto/IWindturbinetestingpointaiService.class


二進制
web/monitor-web/target/classes/com/gyee/monitor/service/auto/impl/WindpowerstationtestingpointServiceImpl.class


二進制
web/monitor-web/target/classes/com/gyee/monitor/service/auto/impl/WindturbinetestingpointaiServiceImpl.class


+ 0 - 0
web/monitor-web/target/classes/com/gyee/monitor/service/matrix/MatrixService.class


部分文件因文件數量過多而無法顯示