zy 2 år sedan
incheckning
a698f66299
100 ändrade filer med 7140 tillägg och 0 borttagningar
  1. 25 0
      GumbelmaximumorderstatisticProbabilityPlotOutput.txt
  2. 25 0
      TwoParameterWeibullProbabilityPlotOutput.txt
  3. BIN
      lib/flanagan-1.0.jar
  4. 314 0
      pom.xml
  5. 186 0
      sql/nerp-db.sql
  6. 22 0
      sql/windTowerStatusDataMenu.sql
  7. 22 0
      sql/windTowerStatusInfoMenu.sql
  8. BIN
      systemFile/副本SINYD_SW16004-4.4产品化维护项目测试总结报告(1)(1).xlsx
  9. 25 0
      tpneim-biz/TwoParameterWeibullProbabilityPlotOutput.txt
  10. 235 0
      tpneim-biz/pom.xml
  11. 22 0
      tpneim-biz/src/main/java/com/jiayue/TpneimApplication.java
  12. 17 0
      tpneim-biz/src/main/java/com/jiayue/TpneimServletInitializer.java
  13. 33 0
      tpneim-biz/src/main/java/com/jiayue/biz/api/apiHDY.java
  14. 308 0
      tpneim-biz/src/main/java/com/jiayue/biz/conf/Channel.java
  15. 43 0
      tpneim-biz/src/main/java/com/jiayue/biz/conf/MybatisPlusConfig.java
  16. 47 0
      tpneim-biz/src/main/java/com/jiayue/biz/conf/RequestDataHelper.java
  17. 140 0
      tpneim-biz/src/main/java/com/jiayue/biz/controller/AnalysisLogController.java
  18. 136 0
      tpneim-biz/src/main/java/com/jiayue/biz/controller/CompanyController.java
  19. 44 0
      tpneim-biz/src/main/java/com/jiayue/biz/controller/DataRecalculationController.java
  20. 72 0
      tpneim-biz/src/main/java/com/jiayue/biz/controller/DisplayConfigController.java
  21. 78 0
      tpneim-biz/src/main/java/com/jiayue/biz/controller/ElectricFieIdController.java
  22. 47 0
      tpneim-biz/src/main/java/com/jiayue/biz/controller/ElectricStationController.java
  23. 56 0
      tpneim-biz/src/main/java/com/jiayue/biz/controller/EmailWindTowerInfoController.java
  24. 123 0
      tpneim-biz/src/main/java/com/jiayue/biz/controller/FengJiInfoController.java
  25. 57 0
      tpneim-biz/src/main/java/com/jiayue/biz/controller/FileUploadController.java
  26. 204 0
      tpneim-biz/src/main/java/com/jiayue/biz/controller/HomePageController.java
  27. 96 0
      tpneim-biz/src/main/java/com/jiayue/biz/controller/InverterInfoController.java
  28. 159 0
      tpneim-biz/src/main/java/com/jiayue/biz/controller/ManualEntryController.java
  29. 149 0
      tpneim-biz/src/main/java/com/jiayue/biz/controller/PdfController.java
  30. 195 0
      tpneim-biz/src/main/java/com/jiayue/biz/controller/ProjectController.java
  31. 66 0
      tpneim-biz/src/main/java/com/jiayue/biz/controller/PvModuleModelController.java
  32. 147 0
      tpneim-biz/src/main/java/com/jiayue/biz/controller/RealTimeDisplayController.java
  33. 152 0
      tpneim-biz/src/main/java/com/jiayue/biz/controller/StatisticsSituationController.java
  34. 101 0
      tpneim-biz/src/main/java/com/jiayue/biz/controller/SysFileController.java
  35. 104 0
      tpneim-biz/src/main/java/com/jiayue/biz/controller/TunnelInfoController.java
  36. 92 0
      tpneim-biz/src/main/java/com/jiayue/biz/controller/WeatherStationInfoController.java
  37. 27 0
      tpneim-biz/src/main/java/com/jiayue/biz/controller/WindSpeedController.java
  38. 159 0
      tpneim-biz/src/main/java/com/jiayue/biz/controller/WindTowerCalculationDataController.java
  39. 288 0
      tpneim-biz/src/main/java/com/jiayue/biz/controller/WindTowerInfoController.java
  40. 52 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/AnalysisLog.java
  41. 48 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/Company.java
  42. 18 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/Coordinates.java
  43. 69 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/DisplayConfig.java
  44. 69 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/ElectricField.java
  45. 119 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/ElectricStation.java
  46. 31 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/Email.java
  47. 60 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/EmailWindTowerInfo.java
  48. 99 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/Equipment.java
  49. 54 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/EquipmentAttribute.java
  50. 19 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/FInfo.java
  51. 83 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/FakeDataRecord.java
  52. 55 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/FanJsonInfo.java
  53. 31 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/FanModelData.java
  54. 26 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/FanTower.java
  55. 17 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/GInfo.java
  56. 27 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/HdInfo.java
  57. 68 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/InverterInfo.java
  58. 20 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/OtherStationInfo.java
  59. 22 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/PInfo.java
  60. 33 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/PointAttribute.java
  61. 78 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/Project.java
  62. 32 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/ProjectBasicInfo.java
  63. 31 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/ProjectInfo.java
  64. 23 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/ProjectMenusOne.java
  65. 24 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/ProjectMenusThree.java
  66. 25 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/ProjectMenusTow.java
  67. 27 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/ProjectProgress.java
  68. 72 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/ProphaseAnemometryData.java
  69. 68 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/ProphaseAnemometryDataOrg.java
  70. 88 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/ProphaseWeatherData.java
  71. 84 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/ProphaseWeatherDataOrg.java
  72. 22 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/ProvinceInfo.java
  73. 27 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/ProvincialEnergyStations.java
  74. 68 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/PvModuleModel.java
  75. 25 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/StationBasicInfo.java
  76. 124 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/StationEnvironmentData.java
  77. 29 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/StationInfo.java
  78. 83 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/StationWindData.java
  79. 96 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/StatisticsSituation.java
  80. 25 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/TotalityInfo.java
  81. 30 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/TunnelInfo.java
  82. 50 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/WeatherStationInfo.java
  83. 62 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/WindDirectionStatisticsData.java
  84. 54 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/WindTowerCalculationData.java
  85. 134 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/WindTowerDataChildTable.java
  86. 209 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/WindTowerDataParentTable.java
  87. 127 0
      tpneim-biz/src/main/java/com/jiayue/biz/domain/WindTowerInfo.java
  88. 15 0
      tpneim-biz/src/main/java/com/jiayue/biz/dto/EquipmentDto.java
  89. 32 0
      tpneim-biz/src/main/java/com/jiayue/biz/dto/FanTowerDto.java
  90. 52 0
      tpneim-biz/src/main/java/com/jiayue/biz/dto/FileLogBean.java
  91. 63 0
      tpneim-biz/src/main/java/com/jiayue/biz/dto/InverterInfoDto.java
  92. 40 0
      tpneim-biz/src/main/java/com/jiayue/biz/dto/ProjectDto.java
  93. 26 0
      tpneim-biz/src/main/java/com/jiayue/biz/dto/ProjectEvolveDto.java
  94. 14 0
      tpneim-biz/src/main/java/com/jiayue/biz/dto/ProjectInfoDto.java
  95. 21 0
      tpneim-biz/src/main/java/com/jiayue/biz/dto/SelectLabForVal.java
  96. 12 0
      tpneim-biz/src/main/java/com/jiayue/biz/dto/SpeedAndDensityDto.java
  97. 26 0
      tpneim-biz/src/main/java/com/jiayue/biz/dto/StationInfoDto.java
  98. 15 0
      tpneim-biz/src/main/java/com/jiayue/biz/eunms/ElectricFieldStatrsEnum.java
  99. 20 0
      tpneim-biz/src/main/java/com/jiayue/biz/eunms/ElectricFieldTypeEnum.java
  100. 51 0
      tpneim-biz/src/main/java/com/jiayue/biz/eunms/ProvinceEnum.java

+ 25 - 0
GumbelmaximumorderstatisticProbabilityPlotOutput.txt

@@ -0,0 +1,25 @@
+Gumbel (maximum order statistic) Probability Plot
+
+Tuesday, 20 September 2022, 18.30
+
+Unweighted constrained simplex regression
+
+Gradient:  1.0           s.e. 0.1473
+Intercept: 9.1355E-8     s.e. 3.5125
+
+Correlation Coefficient, r: 0.8051
+Critical Value for r:       0.6694
+Significance level used:    5.0%
+Sum of squares:             11.1542
+
+Best Estimates of the Parameters
+mu:     22.397      'pseudo-linear' s.e. 0.424
+sigma:  2.5638      'pseudo-linear' s.e. 0.3777
+
+The 'pseudo-linear' s.e.s are a lower limit to the s.e. and may significantly underestimate the s.e.
+See documentation, http://www.ee.ucl.ac.uk/~mflanaga/java/ProbabilityPlot.html, for details
+
+'Pseudo-linear' Parameter-Parameter Correlation Coefficients
+        mu          sigma       
+mu      1.0         -0.4533     
+sigma   -0.4533     1.0         

+ 25 - 0
TwoParameterWeibullProbabilityPlotOutput.txt

@@ -0,0 +1,25 @@
+Two Parameter Weibull Probability Plot
+
+Tuesday, 21 February 2023, 10.10
+
+Unweighted constrained simplex regression
+
+Gradient:  1.0479        s.e. 0.0105
+Intercept: -0.4092       s.e. 0.0832
+
+Correlation Coefficient, r: 0.9699
+Critical Value for r:       0.0501
+Significance level used:    5.0%
+Sum of squares:             310.8105
+
+Best Estimates of the Parameters
+sigma:  8.3156      'pseudo-linear' s.e. 0.0328
+gamma:  2.7443      'pseudo-linear' s.e. 0.0312
+
+The 'pseudo-linear' s.e.s are a lower limit to the s.e. and may significantly underestimate the s.e.
+See documentation, http://www.ee.ucl.ac.uk/~mflanaga/java/ProbabilityPlot.html, for details
+
+'Pseudo-linear' Parameter-Parameter Correlation Coefficients
+        sigma       gamma       
+sigma   1.0         0.2401      
+gamma   0.2401      1.0         

BIN
lib/flanagan-1.0.jar


+ 314 - 0
pom.xml

@@ -0,0 +1,314 @@
+<?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">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.jiayue</groupId>
+    <artifactId>tpneim</artifactId>
+    <version>1.0.0</version>
+
+    <name>tpneim</name>
+    <url>www.jiayuepowertech.com</url>
+    <description>嘉越新能源风光资源管理平台</description>
+
+    <properties>
+        <tpneim.version>1.0.0</tpneim.version>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+        <java.version>1.8</java.version>
+        <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
+        <spring-boot.version>2.5.13</spring-boot.version>
+        <druid.version>1.2.16</druid.version>
+        <bitwalker.version>1.21</bitwalker.version>
+        <swagger.version>3.0.0</swagger.version>
+        <kaptcha.version>2.3.2</kaptcha.version>
+        <pagehelper.boot.version>1.4.1</pagehelper.boot.version>
+        <fastjson.version>1.2.80</fastjson.version>
+        <oshi.version>6.1.2</oshi.version>
+        <jna.version>5.10.0</jna.version>
+        <commons.io.version>2.11.0</commons.io.version>
+        <commons.fileupload.version>1.4</commons.fileupload.version>
+        <commons.collections.version>3.2.2</commons.collections.version>
+        <poi.version>4.1.2</poi.version>
+        <velocity.version>2.3</velocity.version>
+        <jwt.version>0.9.1</jwt.version>
+        <mybatis-plus.version>3.4.3.4</mybatis-plus.version>
+        <jasypt.version>2.1.1</jasypt.version>
+        <hutool.version>5.7.18</hutool.version>
+        <dynamic-datasource.version>3.6.1</dynamic-datasource.version>
+    </properties>
+
+    <!-- 依赖声明 -->
+    <dependencyManagement>
+        <dependencies>
+
+            <!-- SpringBoot的依赖配置-->
+            <dependency>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+
+            <!-- 阿里数据库连接池 -->
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>druid-spring-boot-starter</artifactId>
+                <version>${druid.version}</version>
+            </dependency>
+
+            <!-- 解析客户端操作系统、浏览器等 -->
+            <dependency>
+                <groupId>eu.bitwalker</groupId>
+                <artifactId>UserAgentUtils</artifactId>
+                <version>${bitwalker.version}</version>
+            </dependency>
+
+            <!-- pagehelper 分页插件 -->
+            <dependency>
+                <groupId>com.github.pagehelper</groupId>
+                <artifactId>pagehelper-spring-boot-starter</artifactId>
+                <version>${pagehelper.boot.version}</version>
+                <exclusions>
+                    <exclusion>
+                        <groupId>org.mybatis</groupId>
+                        <artifactId>mybatis</artifactId>
+                    </exclusion>
+                </exclusions>
+            </dependency>
+
+            <!-- 获取系统信息 -->
+            <dependency>
+                <groupId>com.github.oshi</groupId>
+                <artifactId>oshi-core</artifactId>
+                <version>${oshi.version}</version>
+            </dependency>
+
+            <!-- 调用dll动态链接库 -->
+            <dependency>
+                <groupId>net.java.dev.jna</groupId>
+                <artifactId>jna</artifactId>
+                <version>${jna.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>net.java.dev.jna</groupId>
+                <artifactId>jna-platform</artifactId>
+                <version>${jna.version}</version>
+            </dependency>
+
+            <!-- Swagger3依赖 -->
+            <dependency>
+                <groupId>io.springfox</groupId>
+                <artifactId>springfox-boot-starter</artifactId>
+                <version>${swagger.version}</version>
+                <exclusions>
+                    <exclusion>
+                        <groupId>io.swagger</groupId>
+                        <artifactId>swagger-models</artifactId>
+                    </exclusion>
+                </exclusions>
+            </dependency>
+
+            <!-- io常用工具类 -->
+            <dependency>
+                <groupId>commons-io</groupId>
+                <artifactId>commons-io</artifactId>
+                <version>${commons.io.version}</version>
+            </dependency>
+
+            <!-- 文件上传工具类 -->
+            <dependency>
+                <groupId>commons-fileupload</groupId>
+                <artifactId>commons-fileupload</artifactId>
+                <version>${commons.fileupload.version}</version>
+            </dependency>
+
+            <!-- excel工具 -->
+            <dependency>
+                <groupId>org.apache.poi</groupId>
+                <artifactId>poi-ooxml</artifactId>
+                <version>${poi.version}</version>
+            </dependency>
+
+            <!-- velocity代码生成使用模板 -->
+            <dependency>
+                <groupId>org.apache.velocity</groupId>
+                <artifactId>velocity-engine-core</artifactId>
+                <version>${velocity.version}</version>
+            </dependency>
+
+            <!-- collections工具类 -->
+            <dependency>
+                <groupId>commons-collections</groupId>
+                <artifactId>commons-collections</artifactId>
+                <version>${commons.collections.version}</version>
+            </dependency>
+
+            <!-- 阿里JSON解析器 -->
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>fastjson</artifactId>
+                <version>${fastjson.version}</version>
+            </dependency>
+
+            <!-- Token生成与解析-->
+            <dependency>
+                <groupId>io.jsonwebtoken</groupId>
+                <artifactId>jjwt</artifactId>
+                <version>${jwt.version}</version>
+            </dependency>
+
+            <!-- 验证码 -->
+            <dependency>
+                <groupId>com.github.penggle</groupId>
+                <artifactId>kaptcha</artifactId>
+                <version>${kaptcha.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>com.baomidou</groupId>
+                <artifactId>mybatis-plus-boot-starter</artifactId>
+                <version>${mybatis-plus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.baomidou</groupId>
+                <artifactId>mybatis-plus-extension</artifactId>
+                <version>${mybatis-plus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>cn.hutool</groupId>
+                <artifactId>hutool-all</artifactId>
+                <version>${hutool.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>com.baomidou</groupId>
+                <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
+                <version>${dynamic-datasource.version}</version>
+            </dependency>
+
+        </dependencies>
+    </dependencyManagement>
+
+    <modules>
+        <module>tpneim-system</module>
+        <module>tpneim-biz</module>
+    </modules>
+    <packaging>pom</packaging>
+
+
+    <dependencies>
+        <!-- 配置文件处理器 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-configuration-processor</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <!-- jasypt配置文件加解密 -->
+        <dependency>
+            <groupId>com.github.ulisesbocchio</groupId>
+            <artifactId>jasypt-spring-boot-starter</artifactId>
+            <version>${jasypt.version}</version>
+        </dependency>
+        <!-- 监控 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
+        <!-- Lombok -->
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <!-- 测试依赖 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.1</version>
+                <configuration>
+                    <source>${java.version}</source>
+                    <target>${java.version}</target>
+                    <encoding>${project.build.sourceEncoding}</encoding>
+                    <compilerArgs>
+                        <!-- 过期方法警告 -->
+                        <arg>-Xlint:deprecation</arg>
+                    </compilerArgs>
+                    <compilerArguments>
+                        <!-- 解决maven命令编译报错,因为rt.jar 和jce.jar在jre的lib下面,不在jdk的lib下面,
+                        导致maven找不到(java7以后会出现这个问题)-->
+                        <bootclasspath>${java.home}\lib\rt.jar;${java.home}\lib\jce.jar;${java.home}\lib\jsse.jar</bootclasspath>
+                    </compilerArguments>
+                </configuration>
+            </plugin>
+        </plugins>
+        <resources>
+            <resource>
+                <!-- 打包该目录下的 application.yml -->
+                <directory>src/main/resources</directory>
+                <!-- 启用过滤 即该资源中的变量将会被过滤器中的值替换 -->
+                <filtering>true</filtering>
+            </resource>
+        </resources>
+    </build>
+
+    <repositories>
+        <repository>
+            <id>public</id>
+            <name>aliyun nexus</name>
+            <url>https://maven.aliyun.com/repository/public</url>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+        </repository>
+    </repositories>
+
+    <pluginRepositories>
+        <pluginRepository>
+            <id>public</id>
+            <name>aliyun nexus</name>
+            <url>https://maven.aliyun.com/repository/public</url>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+        </pluginRepository>
+    </pluginRepositories>
+
+    <profiles>
+        <profile>
+            <id>dev</id>
+            <properties>
+                <!-- 环境标识,需要与配置文件的名称相对应 -->
+                <profiles.active>dev</profiles.active>
+                <logging.level>debug</logging.level>
+            </properties>
+            <activation>
+                <!-- 默认环境 -->
+                <activeByDefault>true</activeByDefault>
+            </activation>
+        </profile>
+        <profile>
+            <id>prod</id>
+            <properties>
+                <profiles.active>prod</profiles.active>
+                <logging.level>warn</logging.level>
+            </properties>
+        </profile>
+    </profiles>
+
+</project>

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 186 - 0
sql/nerp-db.sql


+ 22 - 0
sql/windTowerStatusDataMenu.sql

@@ -0,0 +1,22 @@
+-- 菜单 SQL
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('测风塔数据', '2028', '1', 'windTowerStatusData', 'dataQuery/windTowerStatusData/index', 1, 0, 'C', '0', '0', 'dataQuery:windTowerStatusData:list', '#', 'admin', sysdate(), '', null, '测风塔数据菜单');
+
+-- 按钮父菜单ID
+SELECT @parentId := LAST_INSERT_ID();
+
+-- 按钮 SQL
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('测风塔数据查询', @parentId, '1',  '#', '', 1, 0, 'F', '0', '0', 'dataQuery:windTowerStatusData:query', '#', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('测风塔数据新增', @parentId, '2',  '#', '', 1, 0, 'F', '0', '0', 'dataQuery:windTowerStatusData:add', '#', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('测风塔数据修改', @parentId, '3',  '#', '', 1, 0, 'F', '0', '0', 'dataQuery:windTowerStatusData:edit', '#', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('测风塔数据删除', @parentId, '4',  '#', '', 1, 0, 'F', '0', '0', 'dataQuery:windTowerStatusData:remove', '#', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('测风塔数据导出', @parentId, '5',  '#', '', 1, 0, 'F', '0', '0', 'dataQuery:windTowerStatusData:export', '#', 'admin', sysdate(), '', null, '');

+ 22 - 0
sql/windTowerStatusInfoMenu.sql

@@ -0,0 +1,22 @@
+-- 菜单 SQL
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('测风塔信息', '2028', '1', 'windTowerStatusInfo', 'dataQuery/windTowerStatusInfo/index', 1, 0, 'C', '0', '0', 'dataQuery:windTowerStatusInfo:list', '#', 'admin', sysdate(), '', null, '测风塔信息菜单');
+
+-- 按钮父菜单ID
+SELECT @parentId := LAST_INSERT_ID();
+
+-- 按钮 SQL
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('测风塔信息查询', @parentId, '1',  '#', '', 1, 0, 'F', '0', '0', 'dataQuery:windTowerStatusInfo:query', '#', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('测风塔信息新增', @parentId, '2',  '#', '', 1, 0, 'F', '0', '0', 'dataQuery:windTowerStatusInfo:add', '#', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('测风塔信息修改', @parentId, '3',  '#', '', 1, 0, 'F', '0', '0', 'dataQuery:windTowerStatusInfo:edit', '#', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('测风塔信息删除', @parentId, '4',  '#', '', 1, 0, 'F', '0', '0', 'dataQuery:windTowerStatusInfo:remove', '#', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('测风塔信息导出', @parentId, '5',  '#', '', 1, 0, 'F', '0', '0', 'dataQuery:windTowerStatusInfo:export', '#', 'admin', sysdate(), '', null, '');

BIN
systemFile/副本SINYD_SW16004-4.4产品化维护项目测试总结报告(1)(1).xlsx


+ 25 - 0
tpneim-biz/TwoParameterWeibullProbabilityPlotOutput.txt

@@ -0,0 +1,25 @@
+Two Parameter Weibull Probability Plot
+
+Thursday, 18 August 2022, 9.20
+
+Unweighted constrained simplex regression
+
+Gradient:  1.0259        s.e. 0.001
+Intercept: -0.2705       s.e. 0.0098
+
+Correlation Coefficient, r: 0.9941
+Critical Value for r:       0.0072
+Significance level used:    5.0%
+Sum of squares:             5771.7308
+
+Best Estimates of the Parameters
+sigma:  9.4273      'pseudo-linear' s.e. 0.0049
+gamma:  2.0973      'pseudo-linear' s.e. 0.0025
+
+The 'pseudo-linear' s.e.s are a lower limit to the s.e. and may significantly underestimate the s.e.
+See documentation, http://www.ee.ucl.ac.uk/~mflanaga/java/ProbabilityPlot.html, for details
+
+'Pseudo-linear' Parameter-Parameter Correlation Coefficients
+        sigma       gamma       
+sigma   1.0         0.4239      
+gamma   0.4239      1.0         

+ 235 - 0
tpneim-biz/pom.xml

@@ -0,0 +1,235 @@
+<?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>tpneim</artifactId>
+        <groupId>com.jiayue</groupId>
+        <version>1.0.0</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>tpneim-biz</artifactId>
+
+    <description>
+        tpneim-biz业务模块
+    </description>
+
+    <dependencies>
+        <dependency>
+            <groupId>flanagan</groupId>
+            <artifactId>flanagan</artifactId>
+            <scope>system</scope>
+            <version>1.0</version>
+            <systemPath>${basedir}/../lib/flanagan-1.0.jar</systemPath>
+        </dependency>
+
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.taosdata.jdbc</groupId>
+            <artifactId>taos-jdbcdriver</artifactId>
+            <version>3.0.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>joda-time</groupId>
+            <artifactId>joda-time</artifactId>
+            <version>2.9.9</version>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.mail</groupId>
+            <artifactId>javax.mail</artifactId>
+            <version>1.5.4</version>
+        </dependency>
+        <!-- spring-boot-devtools -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-devtools</artifactId>
+            <optional>true</optional> <!-- 表示依赖不会传递 -->
+        </dependency>
+        <!--        swagger-->
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-boot-starter</artifactId>
+        </dependency>
+        <!--        modbus-->
+        <dependency>
+            <groupId>wei.yigulu</groupId>
+            <artifactId>protocol-modbus</artifactId>
+            <version>1.2.11</version>
+        </dependency>
+        <!--        mongo-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-mongodb</artifactId>
+        </dependency>
+        <!-- 系统服务-->
+        <dependency>
+            <groupId>com.jiayue</groupId>
+            <artifactId>tpneim-system</artifactId>
+            <version>1.0.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-math3</artifactId>
+            <version>3.6.1</version>
+        </dependency>
+
+    </dependencies>
+
+    <profiles>    <!--考虑到window 和linux环境 npm命令格式的问题,使用maven的profile实现动态指定命令-->
+        <profile>
+            <id>window</id>
+            <properties>
+                <npm>npm.cmd</npm>
+            </properties>
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+        </profile>
+        <profile>
+            <id>linux</id>
+            <properties>
+                <npm>npm</npm>
+            </properties>
+        </profile>
+    </profiles>
+
+    <build>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <!--跳过test类-->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <version>2.21.0</version>
+                <configuration>
+                    <skipTests>true</skipTests>
+                </configuration>
+            </plugin>
+
+            <!--             插件maven-clean-plugin,用于在编译前,清除之前编译的文件、文件夹等,避免残留之前的内容 -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-clean-plugin</artifactId>
+                <version>3.1.0</version>
+                <configuration>
+                    <filesets>
+                        <fileset>
+                            <!-- Vue项目打包自动生成的dist目录 -->
+                            <directory>../tpneim-ui/dist</directory>
+                        </fileset>
+                        <fileset>
+                            <!-- 最终项目打包自动生成的package目录 -->
+                            <directory>../package/tpneim/${project.version}</directory>
+                        </fileset>
+                    </filesets>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>exec-maven-plugin</artifactId>
+                <version>1.6.0</version>
+                <executions>
+                    <execution>
+                        <id>exec-npm-install</id>
+                        <phase>validate</phase>
+                        <goals>
+                            <goal>exec</goal>
+                        </goals>
+                        <configuration>
+                            <executable>${npm}</executable>
+                            <arguments>
+                                <argument>install</argument>
+                            </arguments>
+                            <workingDirectory>../tpneim-ui</workingDirectory>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>exec-npm-run-build</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>exec</goal>
+                        </goals>
+                        <configuration>
+                            <executable>${npm}</executable>
+                            <arguments>
+                                <argument>run</argument>
+                                <argument>build:prod</argument>
+                            </arguments>
+                            <workingDirectory>../tpneim-ui</workingDirectory>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-resources-plugin</artifactId>
+                <version>3.1.0</version>
+                <configuration>
+                    <nonFilteredFileExtensions>
+                        <nonFilteredFileExtension>woff</nonFilteredFileExtension>
+                        <nonFilteredFileExtension>ttf</nonFilteredFileExtension>
+                        <nonFilteredFileExtension>woff2</nonFilteredFileExtension>
+                        <nonFilteredFileExtension>eot</nonFilteredFileExtension>
+                        <nonFilteredFileExtension>swf</nonFilteredFileExtension>
+                        <nonFilteredFileExtension>ico</nonFilteredFileExtension>
+                        <nonFilteredFileExtension>png</nonFilteredFileExtension>
+                    </nonFilteredFileExtensions>
+                    <includeEmptyDirs>true</includeEmptyDirs>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>copy static</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals>
+                        <configuration>
+                            <!-- 复制前端打包文件到这里 -->
+                            <outputDirectory>../package/tpneim/${project.version}/vue</outputDirectory>
+                            <overwrite>true</overwrite>
+                            <resources>
+                                <resource>
+                                    <!-- 从前端打包的目录dist进行指定文件、文件夹内容的复制-->
+                                    <directory>../tpneim-ui</directory>
+                                    <includes>
+                                        <!-- 具体根据实际前端代码、及目录结构进行配置-->
+                                        <include>dist/</include>
+                                        <include>nginx.conf</include>
+                                        <include>index.html</include>
+                                        <include>robots.txt</include>
+                                    </includes>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>2.1.7.RELEASE</version>
+                <configuration>
+                    <outputDirectory>../package/tpneim/${project.version}/java</outputDirectory>
+                    <!--控制是否启用支持Linux下service方式运行-->
+                    <executable>true</executable>
+                    <includeSystemScope>true</includeSystemScope>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>build-info</goal>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

+ 22 - 0
tpneim-biz/src/main/java/com/jiayue/TpneimApplication.java

@@ -0,0 +1,22 @@
+package com.jiayue;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.scheduling.annotation.EnableScheduling;
+
+/**
+ * 启动程序
+ *
+ * @author L.ym
+ * @date 2022-05-10
+ **/
+@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
+@EnableScheduling
+public class TpneimApplication {
+    public static void main(String[] args) {
+        System.setProperty("spring.devtools.restart.enabled", "false");
+        SpringApplication.run(TpneimApplication.class, args);
+        System.out.println("(♥◠‿◠)ノ゙  NEIM 启动成功   ლ(´ڡ`ლ)゙");
+    }
+}

+ 17 - 0
tpneim-biz/src/main/java/com/jiayue/TpneimServletInitializer.java

@@ -0,0 +1,17 @@
+package com.jiayue;
+
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
+
+/**
+ * web容器中进行部署
+ *
+ * @author L.ym
+ * @date 2022-05-10
+ **/
+public class TpneimServletInitializer extends SpringBootServletInitializer {
+    @Override
+    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
+        return application.sources(TpneimApplication.class);
+    }
+}

+ 33 - 0
tpneim-biz/src/main/java/com/jiayue/biz/api/apiHDY.java

@@ -0,0 +1,33 @@
+package com.jiayue.biz.api;
+
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.crypto.digest.HMac;
+import cn.hutool.crypto.digest.HmacAlgorithm;
+import cn.hutool.http.HttpUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Component
+public class apiHDY {
+
+//    private static final String KEY = "dcforitilapi321";
+
+    private static final String DC_GET_ACCURACY_COMPARE = "http://10.124.241.4/curl/sctj/post.php";
+
+    public String jsonY(String time){
+        Map<String, Object> multiValueMap = new HashMap<>();
+        multiValueMap.put("rq", time);
+        //签名密钥
+//        byte[] key = KEY.getBytes();
+        // TODO 此处有问题,执行卡顿3分钟
+        HMac mac = new HMac(HmacAlgorithm.HmacMD5);
+        //拼接签名元数据
+        multiValueMap.put("sign", mac.digestHex(StrUtil.builder(time).toString()));
+        String resultStr = HttpUtil.get(DC_GET_ACCURACY_COMPARE, multiValueMap);
+        return resultStr;
+    }
+
+
+}

+ 308 - 0
tpneim-biz/src/main/java/com/jiayue/biz/conf/Channel.java

@@ -0,0 +1,308 @@
+package com.jiayue.biz.conf;
+
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.thread.ThreadFactoryBuilder;
+import com.jiayue.biz.domain.PointAttribute;
+import com.jiayue.biz.domain.TunnelInfo;
+import com.jiayue.biz.domain.WindTowerInfo;
+import com.jiayue.biz.service.PointAttributeService;
+import com.jiayue.biz.service.TunnelInfoService;
+import com.jiayue.biz.service.WindTowerInfoService;
+import com.jiayue.biz.service.impl.PointAttributeServiceImpl;
+import com.jiayue.biz.service.impl.WindTowerDataParentTableServiceImpl;
+import com.jiayue.biz.util.CalculationUtil;
+import com.jiayue.common.annotation.Log;
+import com.jiayue.common.utils.DateUtil;
+import io.netty.channel.ChannelFuture;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.Scheduled;
+import wei.yigulu.modbus.domain.FunctionCode;
+import wei.yigulu.modbus.domain.Obj4RequestRegister;
+import wei.yigulu.modbus.domain.datatype.IModbusDataType;
+import wei.yigulu.modbus.domain.datatype.ModbusDataTypeEnum;
+import wei.yigulu.modbus.domain.datatype.NumericModbusData;
+import wei.yigulu.modbus.exceptiom.ModbusException;
+import wei.yigulu.modbus.netty.ModbusTcpMasterBuilder;
+import wei.yigulu.modbus.utils.ModbusRequestDataUtils;
+
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.SynchronousQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
+
+//@Configuration
+@AllArgsConstructor
+@Slf4j
+public class Channel {
+    private final
+    TunnelInfoService tunnelInfoService;
+
+    private final
+    PointAttributeService pointAttributeService;
+
+    private final
+    WindTowerDataParentTableServiceImpl windTowerDataParentTableService;
+    private final
+    WindTowerInfoService windTowerInfoService;
+
+
+    private final ExecutorService calculatorThread = new ThreadPoolExecutor(15, 1000,
+            60L, TimeUnit.SECONDS, new SynchronousQueue<>(), new ThreadFactoryBuilder().setNamePrefix("MyRecurringTaskThread-").build());
+
+
+    private HashMap<String, ModbusTcpMasterBuilder> masterMap;
+
+
+//    @Bean
+    public void timingTunnel() {
+        List<TunnelInfo> tunnelInfoList = tunnelInfoService.list();
+        tunnelInfoList.clear();
+        TunnelInfo tunnelInfo1 = new TunnelInfo();
+        TunnelInfo tunnelInfo2 = new TunnelInfo();
+        tunnelInfo1.setDataFormat("CDAB");
+//        tunnelInfo1.setIp("192.168.10.75");
+        tunnelInfo1.setIp("192.168.1.206");
+        tunnelInfo1.setPort(502);
+        tunnelInfo1.setStationId("七台河3005");
+        tunnelInfo1.setEquipmentNo("3005");
+//        tunnelInfo1.setStationId("虎林15244");
+//        tunnelInfo1.setEquipmentNo("15244");
+
+        tunnelInfo2.setDataFormat("CDAB");
+        tunnelInfo2.setIp("192.168.10.75");
+        tunnelInfo2.setPort(502);
+        tunnelInfo2.setStationId("虎林15244");
+        tunnelInfo2.setEquipmentNo("15244");
+        tunnelInfoList.add(tunnelInfo1);
+        tunnelInfoList.add(tunnelInfo2);
+        for (TunnelInfo tunnelInfo : tunnelInfoList) {
+            ModbusTcpMasterBuilder master = start(tunnelInfo);
+            masterMap.put(tunnelInfo.getStationId(), master);
+
+        }
+    }
+
+    //创建线程
+    public ModbusTcpMasterBuilder start(TunnelInfo tunnelInfo) {
+        //创建通道后    对通道map 进行  采集数据
+        //获取场站id   形成map
+        ModbusTcpMasterBuilder master = new ModbusTcpMasterBuilder(tunnelInfo.getIp(), tunnelInfo.getPort());
+        master.getConfigInfoMap().put("stationId", tunnelInfo.getStationId());
+        //create  会阻塞线程
+        calculatorThread.execute(master::create);
+        master.isConnected();
+        return master;
+    }
+
+    //关闭通道移除连接
+    public void stop(String stationId) {
+        if (masterMap.get(stationId).isConnected()) {
+            masterMap.get(stationId).stop();
+            masterMap.remove(stationId);
+        }
+    }
+
+//    @Scheduled(cron = "0 0/5 * * * ? ")
+    public void tunnel() {
+        List<TunnelInfo> tunnelInfoList = tunnelInfoService.list();
+        List<PointAttribute> attributeList = pointAttributeService.list();
+        String time = DateUtil.format(DateUtil.date(), "yyyy-MM-dd HH:mm");
+        for (Map.Entry<String, ModbusTcpMasterBuilder> masterBuilderEntry : masterMap.entrySet()) {
+            //获取通道map中的key
+            String stationId = masterBuilderEntry.getKey();
+            //风速层高
+            HashSet<Integer> wsHeightSet = new HashSet<>();
+            //风向层高
+            HashSet<Integer> wdHeightSet = new HashSet<>();
+            //根据通道key获取ip端口号等数据
+            List<TunnelInfo> tunnelist = tunnelInfoList.stream().filter(t -> t.getStationId().equals(stationId)).collect(Collectors.toList());
+            TunnelInfo tunnelInfo;
+            if (!tunnelist.isEmpty()) {
+                tunnelInfo = tunnelist.get(0);
+            } else {
+                //如果此通道不存在 关闭通道
+                this.stop(stationId);
+                continue;
+            }
+            //根据通道key获取点表数据
+            List<PointAttribute> pointAttributeList = attributeList.stream().filter(a -> a.getStationId().equals(stationId)).collect(Collectors.toList());
+            //拿到所有点位
+            List<Integer> points = pointAttributeList.stream().map(PointAttribute::getPoint).collect(Collectors.toList());
+            Map<Integer, ModbusDataTypeEnum> pointTypeMap = new HashMap<>();
+            for (Integer point : points) {
+                //点位以及点位类型存入map
+                pointTypeMap.put(point, ModbusDataTypeEnum.valueOf(tunnelInfo.getDataFormat()));
+            }
+
+            //获取连接
+            ModbusTcpMasterBuilder master = masterBuilderEntry.getValue();
+            //获取点位信息map
+            Map<String, Integer> stringStringBuilderMap = savePoints(pointAttributeList, wsHeightSet, wdHeightSet);
+            WindTowerInfo windTowerInfo = new WindTowerInfo();
+            //判断是否存在此塔
+            boolean emptyOfEntity = windTowerInfoService.lambdaQuery().eq(WindTowerInfo::getEquipmentNo, tunnelInfo.getEquipmentNo()).list().isEmpty();
+            if (emptyOfEntity) {
+                StringBuilder wsHeightStr = new StringBuilder();
+                for (Integer height : wsHeightSet) {
+                    wsHeightStr = wsHeightStr.append(height + ",");
+                }
+                String wsHeight = null;
+                if (wsHeightStr.length() > 0) {
+                    wsHeight = wsHeightStr.substring(0, wsHeightStr.length() - 1);
+                }
+
+                StringBuilder wdHeightStr = new StringBuilder();
+                for (Integer height : wsHeightSet) {
+                    wdHeightStr = wdHeightStr.append(height + ",");
+                }
+                String wdHeight = null;
+                if (wdHeightStr.length() > 0) {
+                    wdHeight = wdHeightStr.substring(0, wdHeightStr.length() - 1);
+                }
+                //存储测风塔信息
+                windTowerInfo.setEquipmentNo(tunnelist.get(0).getEquipmentNo());
+                windTowerInfo.setName(tunnelist.get(0).getStationId());
+                windTowerInfo.setHeights(wsHeight);
+                windTowerInfo.setWdHeights(wdHeight);
+                windTowerInfo.setType("2");
+                windTowerInfoService.save(windTowerInfo);
+            }
+            // 例如: key:wsAve val:数据
+            HashMap<String, BigDecimal> pointMap = new HashMap<>();
+            //分解成Obj4RequestCoil
+            List<Obj4RequestRegister> obj4RequestRegisters = null;
+            try {
+                obj4RequestRegisters = ModbusRequestDataUtils.splitModbusRequest(pointTypeMap, 1, FunctionCode.READ_HOLDING_REGISTERS);
+                for (Obj4RequestRegister obj4RequestRegister : obj4RequestRegisters) {
+                    Map<Integer, IModbusDataType> registerData = ModbusRequestDataUtils.getRegisterData(master, obj4RequestRegister);
+                    if(!registerData.isEmpty()){
+                        for (Map.Entry<Integer, IModbusDataType> typeEntry : registerData.entrySet()) {
+                            for (Map.Entry<String, Integer> entry : stringStringBuilderMap.entrySet()) {
+                                if (typeEntry.getKey().equals(entry.getValue())) {
+                                    log.info("点位:{}-----数值:{}",typeEntry.getKey(),((NumericModbusData) typeEntry.getValue()).getValue());
+                                    //点位一致 置换value
+                                    pointMap.put(entry.getKey(), ((NumericModbusData) typeEntry.getValue()).getValue());
+                                }
+                            }
+                        }
+                    }
+
+                }
+            } catch (ModbusException e) {
+                log.info(e.getMsg());
+                throw new RuntimeException(e);
+            }
+            wsHeightSet.addAll(wdHeightSet);
+            windTowerDataParentTableService.saveDataForTunnel(pointMap, wsHeightSet,tunnelInfo.getEquipmentNo(),time);
+        }
+    }
+
+
+    //获取点表所对应数据
+    public Map<String, Integer> savePoints(List<PointAttribute> channelPoints, HashSet<Integer> wsHeightSet, HashSet<Integer> wdHeightSet) {
+        //如果数据库没有此测风塔 读取点表信息增加塔表
+        HashMap<String, Integer> dataMap = new HashMap<>();
+        for (PointAttribute channelPoint : channelPoints) {
+            if(channelPoint.getUnit() == null){
+                channelPoint.setUnit("");
+            }
+            if ((channelPoint.getUnit().equals("y") || channelPoint.getUnit().equals("Y")) && channelPoint.getMeaning().contains("年")) {
+                dataMap.put("yyyy", channelPoint.getPoint());
+            } else if ((channelPoint.getUnit().equals("y") || channelPoint.getMeaning().equals("Y")) && channelPoint.getMeaning().contains("月")) {
+                dataMap.put("MM", channelPoint.getPoint());
+            } else if (channelPoint.getUnit().equals("d") && channelPoint.getMeaning().contains("日")) {
+                dataMap.put("dd", channelPoint.getPoint());
+            } else if (channelPoint.getUnit().equals("h") && channelPoint.getMeaning().contains("时")) {
+                dataMap.put("HH", channelPoint.getPoint());
+            } else if (channelPoint.getUnit().equals("m") && channelPoint.getMeaning().contains("分")) {
+                dataMap.put("mm", channelPoint.getPoint());
+            }  else if (channelPoint.getMeaning().contains("纬")) {
+                dataMap.put("latitude", channelPoint.getPoint());
+            } else if (channelPoint.getMeaning().contains("经")) {
+                dataMap.put("longitude", channelPoint.getPoint());
+            } else if (channelPoint.getMeaning().contains("海拔")) {
+                dataMap.put("elevation", channelPoint.getPoint());
+            } else if (channelPoint.getMeaning().contains("电压")) {
+                String status = status(channelPoint.getMeaning());
+                dataMap.put("v" + status, channelPoint.getPoint());
+            } else {
+                String dataType = dataType(channelPoint.getMeaning(), wsHeightSet, wdHeightSet);
+                if (!dataType.equals("")) {
+                    dataMap.put(dataType, channelPoint.getPoint());
+                }
+            }
+
+        }
+        return dataMap;
+    }
+
+
+    public String dataType(String str, HashSet<Integer> wsHeightSet, HashSet<Integer> wdHeightSet) {
+        String typeStr = "";
+        int index;
+        if (!str.contains("米") && !str.contains("m")) {
+            return "";
+        }
+        if (str.contains("米")) {
+            index = str.indexOf("米");
+        } else {
+            index = str.indexOf("m");
+        }
+        //截取风速
+        String dataStr = str.substring(0, index);
+        Integer height = Integer.valueOf(CalculationUtil.getNumberFromString(dataStr));
+        String dataType = "";
+        typeStr = status(str);
+
+        if (str.contains("风速") && !str.contains("风向")) {
+            dataType = "ws";
+            wsHeightSet.add(height);
+        } else if (str.contains("风向")) {
+            dataType = "wd";
+            wdHeightSet.add(height);
+        } else if (str.contains("湿度")) {
+            dataType = "rh";
+            return dataType + typeStr;
+        } else if (str.contains("温度")) {
+            dataType = "t";
+            return dataType + typeStr;
+        } else if (str.contains("气压") || str.contains("压力")) {
+            dataType = "pa";
+            return dataType + typeStr;
+        }
+        return dataType + typeStr + height;
+    }
+
+    public String status(String str) {
+        String typeStr = "";
+        if (str.contains("平均值") && !str.contains("G")) {
+            typeStr = "Ave";
+        } else if (str.contains("方差") || str.contains("标准偏差") || str.contains("标准差")) {
+            typeStr = "Sta";
+        } else if (str.contains("最大值") && !str.contains("极大")) {
+            typeStr = "Max";
+        } else if (str.contains("最小值")) {
+            typeStr = "Min";
+        } else if (str.contains("瞬时")) {
+            typeStr = "Inst";
+        } else if (str.contains("极大")) {
+            typeStr = "Great";
+        } else if (str.contains("Gust") || str.contains("GUST")) {
+            typeStr = "Gust";
+        } else if (str.contains("风速") && str.contains("风向")) {
+            typeStr = "OnWs";
+        } else if (str.contains("实时")) {
+            typeStr = "Now";
+        }
+        return typeStr;
+    }
+
+
+}

+ 43 - 0
tpneim-biz/src/main/java/com/jiayue/biz/conf/MybatisPlusConfig.java

@@ -0,0 +1,43 @@
+package com.jiayue.biz.conf;
+
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.handler.TableNameHandler;
+import com.baomidou.mybatisplus.extension.plugins.inner.DynamicTableNameInnerInterceptor;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Random;
+
+@Configuration
+@MapperScan("com.baomidou.mybatisplus.samples.dytablename.mapper")
+public class MybatisPlusConfig {
+    @Bean
+    public MybatisPlusInterceptor mybatisPlusInterceptor() {
+        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+        DynamicTableNameInnerInterceptor dynamicTableNameInnerInterceptor = new DynamicTableNameInnerInterceptor();
+        dynamicTableNameInnerInterceptor.setTableNameHandler((sql, tableName) -> {
+
+            //从sql里截取测风塔id
+            if (tableName.equals("wind_tower_data_child_table")) {
+                Map<String, Object> paramMap = RequestDataHelper.getRequestData();
+                return tableName + "_" + paramMap.get("equipment_id");
+            }
+            if (tableName.equals("wind_tower_calculation_data")) {
+                Map<String, Object> paramMap = RequestDataHelper.getRequestData();
+                return tableName + "_" + paramMap.get("equipment_id");
+            }
+            if (tableName.equals("wind_tower_data_parent_table")) {
+                Map<String, Object> paramMap = RequestDataHelper.getRequestData();
+                return tableName + "_" + paramMap.get("equipment_id");
+            }
+            return tableName;
+        });
+        interceptor.addInnerInterceptor(dynamicTableNameInnerInterceptor);
+        // 3.4.3.2 作废该方式
+        // dynamicTableNameInnerInterceptor.setTableNameHandlerMap(map);
+        return interceptor;
+    }
+}

+ 47 - 0
tpneim-biz/src/main/java/com/jiayue/biz/conf/RequestDataHelper.java

@@ -0,0 +1,47 @@
+package com.jiayue.biz.conf;
+
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+
+import java.util.Map;
+
+/**
+ * 请求参数传递辅助类
+ */
+public class RequestDataHelper {
+    /**
+     * 请求参数存取
+     */
+    private static final ThreadLocal<Map<String, Object>> REQUEST_DATA = new ThreadLocal<>();
+
+    /**
+     * 设置请求参数
+     *
+     * @param requestData 请求参数 MAP 对象
+     */
+    public static void setRequestData(Map<String, Object> requestData) {
+        REQUEST_DATA.set(requestData);
+    }
+
+    /**
+     * 获取请求参数
+     *
+     * @param param 请求参数
+     * @return 请求参数 MAP 对象
+     */
+    public static <T> T getRequestData(String param) {
+        Map<String, Object> dataMap = getRequestData();
+        if (CollectionUtils.isNotEmpty(dataMap)) {
+            return (T) dataMap.get(param);
+        }
+        return null;
+    }
+
+    /**
+     * 获取请求参数
+     *
+     * @return 请求参数 MAP 对象
+     */
+    public static Map<String, Object> getRequestData() {
+        return REQUEST_DATA.get();
+    }
+}

+ 140 - 0
tpneim-biz/src/main/java/com/jiayue/biz/controller/AnalysisLogController.java

@@ -0,0 +1,140 @@
+package com.jiayue.biz.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jiayue.common.annotation.Log;
+import com.jiayue.common.core.controller.BaseController;
+import com.jiayue.common.core.domain.AjaxResult;
+import com.jiayue.common.enums.BusinessType;
+import com.jiayue.common.utils.poi.ExcelUtil;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Arrays;
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import lombok.RequiredArgsConstructor;
+
+import com.jiayue.biz.domain.AnalysisLog;
+import com.jiayue.biz.service.IAnalysisLogService;
+import com.jiayue.common.core.page.TableDataInfo;
+
+/**
+ * 【邮件解析日志】Controller
+ *
+ * @author L.ym
+ * @date 2022-05-23
+ */
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/dataQuery/log")
+public class AnalysisLogController extends BaseController {
+
+    private final IAnalysisLogService iAnalysisLogService;
+
+	/**
+	 * 查询邮件解析日志列表
+	 */
+	@PreAuthorize("@ss.hasPermi('client:log:list')")
+	@GetMapping("/list")
+    public TableDataInfo list(AnalysisLog analysisLog) {
+        startPage();
+        LambdaQueryWrapper<AnalysisLog> queryWrapper = this.buildQueryParams(analysisLog);
+        List<AnalysisLog> list = iAnalysisLogService.list(queryWrapper);
+        return getDataTable(list);
+    }
+    /**
+     * 查询邮件解析日志列表
+     */
+    @GetMapping("/dayLog")
+    public TableDataInfo getDaylist() {
+        return getDataTable(iAnalysisLogService.getAllList());
+    }
+    /**
+     * 导出邮件解析日志列表
+     */
+    @PreAuthorize("@ss.hasPermi('client:log:export')")
+    @Log(title = "【请填写功能名称】", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, AnalysisLog analysisLog) {
+        LambdaQueryWrapper<AnalysisLog> queryWrapper = this.buildQueryParams(analysisLog);
+        List<AnalysisLog> list = iAnalysisLogService.list(queryWrapper);
+        ExcelUtil<AnalysisLog> util = new ExcelUtil<>(AnalysisLog. class);
+        util.exportExcel(response, list, "【请填写功能名称】数据");
+    }
+
+    /**
+     * 获取邮件解析日志详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('client:log:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id) {
+        return AjaxResult.success(iAnalysisLogService.getById(id));
+    }
+
+    /**
+     * 新增邮件解析日志
+     */
+    @PreAuthorize("@ss.hasPermi('client:log:add')")
+    @Log(title = "【请填写功能名称】", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody AnalysisLog analysisLog) {
+        return toAjax(iAnalysisLogService.save(analysisLog) ? 1 : 0);
+    }
+
+    /**
+     * 修改邮件解析日志
+     */
+    @PreAuthorize("@ss.hasPermi('client:log:edit')")
+    @Log(title = "【请填写功能名称】", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody AnalysisLog analysisLog) {
+        return toAjax(iAnalysisLogService.updateById(analysisLog) ? 1 : 0);
+    }
+
+    /**
+     * 删除邮件解析日志
+     */
+    @PreAuthorize("@ss.hasPermi('client:log:remove')")
+    @Log(title = "【请填写功能名称】", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String[]ids) {
+        return toAjax(iAnalysisLogService.removeByIds(Arrays.asList(ids)) ? 1 : 0);
+    }
+    /**
+     * 根据时间邮件解析日志
+     */
+    @GetMapping("/findByTime")
+    public Page findByTime(Integer current, Integer size , Long startTime, Long endTime, String equipmentId) {
+        return iAnalysisLogService.findByTime(current, size, startTime, endTime, equipmentId);
+    }
+    /**
+     * 构建查询条件
+     **/
+    private LambdaQueryWrapper<AnalysisLog> buildQueryParams(AnalysisLog analysisLog) {
+        LambdaQueryWrapper<AnalysisLog> queryWrapper = Wrappers.lambdaQuery();
+                        if (StrUtil.isNotBlank(analysisLog.getEquipmentId())) {
+                        queryWrapper.eq(AnalysisLog::getEquipmentId ,analysisLog.getEquipmentId());
+                    }
+                        if (ObjectUtil.isNotNull(analysisLog.getStatus())) {
+                        queryWrapper.eq(AnalysisLog::getStatus ,analysisLog.getStatus());
+                    }
+                        if (ObjectUtil.isNotNull(analysisLog.getTime())) {
+                        queryWrapper.eq(AnalysisLog::getTime ,analysisLog.getTime());
+                    }
+        return queryWrapper;
+    }
+}

+ 136 - 0
tpneim-biz/src/main/java/com/jiayue/biz/controller/CompanyController.java

@@ -0,0 +1,136 @@
+package com.jiayue.biz.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.jiayue.biz.domain.WindTowerInfo;
+import com.jiayue.biz.service.CompanyService;
+import com.jiayue.common.annotation.Log;
+import com.jiayue.common.core.controller.BaseController;
+import com.jiayue.common.core.domain.AjaxResult;
+import com.jiayue.common.enums.BusinessType;
+import com.jiayue.common.utils.poi.ExcelUtil;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import lombok.RequiredArgsConstructor;
+
+import com.jiayue.biz.domain.Company;
+import com.jiayue.common.core.page.TableDataInfo;
+
+/**
+ * 公司Controller
+ *
+ * @author L.ym
+ * @date 2022-12-27
+ */
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/dataQuery/company")
+public class CompanyController extends BaseController {
+
+    private final CompanyService iCompanyService;
+
+    /**
+     * 查询公司列表
+     */
+    @PreAuthorize("@ss.hasPermi('dataQuery:company:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(Company company) {
+        startPage();
+        LambdaQueryWrapper<Company> queryWrapper = this.buildQueryParams(company);
+        List<Company> list = iCompanyService.list(queryWrapper);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出公司列表
+     */
+    @PreAuthorize("@ss.hasPermi('dataQuery:company:export')")
+    @Log(title = "公司", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, Company company) {
+        LambdaQueryWrapper<Company> queryWrapper = this.buildQueryParams(company);
+        List<Company> list = iCompanyService.list(queryWrapper);
+        ExcelUtil<Company> util = new ExcelUtil<>(Company.class);
+        util.exportExcel(response, list, "公司数据");
+    }
+
+    /**
+     * 获取公司详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dataQuery:company:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id) {
+        return AjaxResult.success(iCompanyService.getById(id));
+    }
+
+    /**
+     * 新增公司
+     */
+    @PreAuthorize("@ss.hasPermi('dataQuery:company:add')")
+    @Log(title = "公司", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody Company company) {
+        return toAjax(iCompanyService.save(company) ? 1 : 0);
+    }
+
+    /**
+     * 修改公司
+     */
+    @PreAuthorize("@ss.hasPermi('dataQuery:company:edit')")
+    @Log(title = "公司", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody Company company) {
+        return toAjax(iCompanyService.updateById(company) ? 1 : 0);
+    }
+
+    /**
+     * 删除公司
+     */
+    @PreAuthorize("@ss.hasPermi('dataQuery:company:remove')")
+    @Log(title = "公司", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String[] ids) {
+        return toAjax(iCompanyService.removeByIds(Arrays.asList(ids)) ? 1 : 0);
+    }
+
+    /**
+     * 构建查询条件
+     **/
+    private LambdaQueryWrapper<Company> buildQueryParams(Company company) {
+        LambdaQueryWrapper<Company> queryWrapper = Wrappers.lambdaQuery();
+        if (StrUtil.isNotBlank(company.getName())) {
+            queryWrapper.like(Company::getName, company.getName());
+        }
+        if (StrUtil.isNotBlank(company.getAddress())) {
+            queryWrapper.eq(Company::getAddress, company.getAddress());
+        }
+        return queryWrapper;
+    }
+
+    /**
+     * 查询测风塔信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('dataQuery:company:list')")
+    @GetMapping("/listAll")
+    public TableDataInfo listAll() {
+        List<Company> companyList = iCompanyService.list();
+        return getDataTable(companyList);
+    }
+}

+ 44 - 0
tpneim-biz/src/main/java/com/jiayue/biz/controller/DataRecalculationController.java

@@ -0,0 +1,44 @@
+package com.jiayue.biz.controller;
+
+import com.jiayue.biz.service.DataRecalculationService;
+import com.jiayue.common.core.domain.AjaxResult;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.Date;
+
+/**
+ * @author wahc
+ * @Date 2022-06-29
+ * 数据上传与重算controller
+ */
+
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/dataManagement/dataRecalculation")
+@Slf4j
+public class DataRecalculationController {
+    @Autowired
+    DataRecalculationService dataRecalculationService;
+
+    @PostMapping("/uploadFileAnalysis")
+    public AjaxResult uploadFileAnalysis(@RequestParam("file") MultipartFile file, @RequestParam("equipmentNo") String equipmentNo, @RequestParam("recorderNo") String recorderNo) {
+        return dataRecalculationService.uploadFileAnalysis(file, equipmentNo, recorderNo);
+    }
+
+    @PostMapping("/dataCheck")
+    public AjaxResult dataCheck(@RequestParam("startTime") Long startTime, @RequestParam("endTime") Long endTime, @RequestParam("equipmentNo") String equipmentNo) {
+        return dataRecalculationService.dataCheck(new Date(startTime), new Date(endTime), equipmentNo);
+    }
+
+    @PostMapping("/statisticsCheck")
+    public AjaxResult statisticsCheck(@RequestParam("startTime") Long startTime, @RequestParam("endTime") Long endTime, @RequestParam("equipmentNo") String equipmentNo) {
+        return dataRecalculationService.statisticsCheck(new Date(startTime), new Date(endTime), equipmentNo);
+    }
+}

+ 72 - 0
tpneim-biz/src/main/java/com/jiayue/biz/controller/DisplayConfigController.java

@@ -0,0 +1,72 @@
+package com.jiayue.biz.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.jiayue.biz.domain.DisplayConfig;
+import com.jiayue.biz.service.IDisplayConfigService;
+import com.jiayue.common.annotation.Log;
+import com.jiayue.common.core.controller.BaseController;
+import com.jiayue.common.core.domain.AjaxResult;
+import com.jiayue.common.core.page.TableDataInfo;
+import com.jiayue.common.enums.BusinessType;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * @author shrstart
+ * @create 2022 - 05 - 18 -
+ */
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/dataQuery/DisplayConfig")
+public class DisplayConfigController extends BaseController {
+
+    private final IDisplayConfigService iDisplayConfigService;
+
+
+    /**
+     * 把穿梭狂的值传入数据库
+     */
+    @Log(title = "展示暂存", businessType = BusinessType.UPDATE)
+    @PostMapping("/shuttle")
+    public AjaxResult insertShuttle(@RequestBody DisplayConfig displayConfig) {
+//        displayConfig.setId(1L);
+        return toAjax(iDisplayConfigService.save(displayConfig) ? 1 : 0);
+    }
+
+    /**
+     * 修改配置
+     */
+    @PutMapping
+    public AjaxResult edit(@RequestBody DisplayConfig displayConfig) {
+        return toAjax(iDisplayConfigService.updateById(displayConfig) ? 1 : 0);
+    }
+
+    /**
+     * 查询showcode值数据列表
+     */
+    @GetMapping("/showT")
+    @ResponseBody
+    public TableDataInfo showTable() {
+        startPage();
+        DisplayConfig displayConfig = new DisplayConfig();
+//        displayConfig.setId(1L);
+        Model model = null;
+        LambdaQueryWrapper<DisplayConfig> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(DisplayConfig::getId, displayConfig.getId());
+
+        List<DisplayConfig> list = iDisplayConfigService.list(queryWrapper);
+
+        return getDataTable(list);
+    }
+
+    /*根据展示标识查询展示配置*/
+    @GetMapping("/findByDisplaySign/{displaySign}")
+    public TableDataInfo showTable(@PathVariable("displaySign") String displaySign) {
+        return getDataTable(iDisplayConfigService.findByDisplaySign(displaySign));
+    }
+}
+

+ 78 - 0
tpneim-biz/src/main/java/com/jiayue/biz/controller/ElectricFieIdController.java

@@ -0,0 +1,78 @@
+package com.jiayue.biz.controller;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.jiayue.biz.domain.ElectricField;
+import com.jiayue.biz.domain.WindTowerInfo;
+import com.jiayue.biz.service.ElectricFieldService;
+import com.jiayue.biz.service.WindTowerInfoService;
+import com.jiayue.common.annotation.Log;
+import com.jiayue.common.core.controller.BaseController;
+import com.jiayue.common.core.domain.AjaxResult;
+import com.jiayue.common.core.page.TableDataInfo;
+import com.jiayue.common.enums.BusinessType;
+import com.jiayue.common.utils.poi.ExcelUtil;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 测风塔信息Controller
+ *
+ * @author L.ym
+ * @date 2022-05-11
+ */
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/dataQuery/electricFieId")
+public class ElectricFieIdController extends BaseController {
+
+    private final ElectricFieldService electricFieldService;
+
+	/**
+	 * 查询场站信息列表
+	 */
+
+	@GetMapping("/list")
+    public TableDataInfo list() {
+        List<ElectricField> list = electricFieldService.list();
+        return getDataTable(list);
+    }
+
+    /**
+     * 新增场站信息
+     */
+
+    @Log(title = "场站信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody ElectricField electricField) {
+        return toAjax(electricFieldService.save(electricField) ? 1 : 0);
+    }
+
+    /**
+     * 修改场站信息
+     */
+
+    @Log(title = "场站信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody ElectricField electricField) {
+        return toAjax(electricFieldService.updateById(electricField) ? 1 : 0);
+    }
+
+    /**
+     * 删除场站信息
+     */
+    @Log(title = "场站信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String[]ids) {
+        return toAjax(electricFieldService.removeByIds(Arrays.asList(ids)) ? 1 : 0);
+    }
+
+}

+ 47 - 0
tpneim-biz/src/main/java/com/jiayue/biz/controller/ElectricStationController.java

@@ -0,0 +1,47 @@
+package com.jiayue.biz.controller;
+
+import com.jiayue.biz.domain.ElectricStation;
+import com.jiayue.biz.dto.StationInfoDto;
+import com.jiayue.biz.service.ElectricStationService;
+import com.jiayue.biz.service.StationInfoService;
+import com.jiayue.common.core.controller.BaseController;
+import com.jiayue.common.core.domain.AjaxResult;
+import lombok.AllArgsConstructor;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/dataQuery/electricStation")
+@AllArgsConstructor
+public class ElectricStationController extends BaseController {
+    private final ElectricStationService electricStationService;
+
+
+    private final StationInfoService stationInfoService;
+
+    @GetMapping("/selectElectricStation")
+    public AjaxResult selectElectricStation(){
+        return AjaxResult.success(stationInfoService.selectStationInfoDto());
+    }
+
+
+    @DeleteMapping
+    public AjaxResult delElectricStation(@RequestBody StationInfoDto stationInfoDto){
+        stationInfoService.delStationInfo(stationInfoDto);
+        return AjaxResult.success("200") ;
+    }
+
+    @PutMapping
+    public AjaxResult updateElectricStation(@RequestBody StationInfoDto stationInfoDto){
+        stationInfoService.updateStationInfo(stationInfoDto);
+        return AjaxResult.success("200") ;
+    }
+
+
+    @PostMapping
+    public AjaxResult saveElectricStation(@RequestBody StationInfoDto stationInfoDto){
+        stationInfoService.saveStationInfo(stationInfoDto);
+        return AjaxResult.success("200") ;
+    }
+
+}

+ 56 - 0
tpneim-biz/src/main/java/com/jiayue/biz/controller/EmailWindTowerInfoController.java

@@ -0,0 +1,56 @@
+package com.jiayue.biz.controller;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.jiayue.biz.domain.EmailWindTowerInfo;
+import com.jiayue.biz.domain.WindTowerInfo;
+import com.jiayue.biz.service.EmailWindTowerInfoService;
+import com.jiayue.biz.service.WindTowerInfoService;
+import com.jiayue.common.annotation.Log;
+import com.jiayue.common.core.controller.BaseController;
+import com.jiayue.common.core.domain.AjaxResult;
+import com.jiayue.common.core.page.TableDataInfo;
+import com.jiayue.common.enums.BusinessType;
+import com.jiayue.common.utils.poi.ExcelUtil;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.List;
+
+/**
+ * 测风塔信息Controller
+ *
+ * @author L.ym
+ * @date 2022-05-11
+ */
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/dataQuery/emailWindTowerStatusInfo")
+public class EmailWindTowerInfoController extends BaseController {
+
+    private final EmailWindTowerInfoService emailWindTowerInfoService;
+
+	/**
+	 * 查询测风塔信息列表
+	 */
+	@GetMapping("/list")
+    public TableDataInfo list() {
+        List<EmailWindTowerInfo> list = emailWindTowerInfoService.list();
+        list.sort(Comparator.comparing(EmailWindTowerInfo::getEquipmentNo));
+        return getDataTable(list);
+    }
+    /**
+     * 修改测风塔信息
+     */
+    @PutMapping
+    public AjaxResult edit(@RequestBody EmailWindTowerInfo emailWindTowerInfo) {
+        return toAjax(emailWindTowerInfoService.updateById(emailWindTowerInfo) ? 1 : 0);
+    }
+}

+ 123 - 0
tpneim-biz/src/main/java/com/jiayue/biz/controller/FengJiInfoController.java

@@ -0,0 +1,123 @@
+package com.jiayue.biz.controller;
+
+import com.jiayue.biz.domain.ProjectInfo;
+import com.jiayue.biz.domain.StationInfo;
+import com.jiayue.biz.dto.FanTowerDto;
+import com.jiayue.biz.service.*;
+
+import com.jiayue.common.core.controller.BaseController;
+import com.jiayue.common.core.domain.AjaxResult;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+/**
+ * 人工录入Controller
+ *
+ * @date 2023-05-9
+ */
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/dataQuery/fengjiInfo")
+public class FengJiInfoController extends BaseController {
+    private final FengJiInfoService fengJiInfoService;
+    private final ProjectInfoService projectInfoService;
+    private final StationInfoService stationInfoService;
+
+    /**
+     * 项目进展获取项目名称+id
+     */
+    @GetMapping("/getProjectInfo")
+    public AjaxResult getProjectInfo() {
+        List<Map<String, String>> list = new ArrayList<>();
+        List<ProjectInfo> projectInfos = projectInfoService.getProjectInfoList();
+        List<ProjectInfo> projectInfoList = projectInfos.stream().filter(w -> w.getProjectBasicInfo().getProjectType().equals("风")).collect(Collectors.toList());
+        for (ProjectInfo projectInfo : projectInfoList) {
+            Map<String, String> map = new HashMap<>();
+            map.put("id", projectInfo.getId());
+            map.put("name", projectInfo.getProjectBasicInfo().getProjectNameEasy());
+            list.add(map);
+        }
+        return AjaxResult.success(list);
+    }
+
+    /**
+     * 获取场站信息
+     */
+    @GetMapping("/getStationInfo")
+    public AjaxResult getStationInfo() {
+        List<Map<String, String>> list = new ArrayList<>();
+        List<StationInfo> stationInfoList = stationInfoService.selectStationInfo();
+        List<StationInfo> stationInfos = stationInfoList.stream().filter(w -> w.getStationBasicInfo().getStationType().equals("风")).collect(Collectors.toList());
+        for (StationInfo stationInfo : stationInfos) {
+            Map<String, String> map = new HashMap<>();
+            map.put("id", stationInfo.getId());
+            map.put("name", stationInfo.getStationBasicInfo().getStationName());
+            list.add(map);
+        }
+        return AjaxResult.success(list);
+    }
+
+    /**
+     * 查询项目风机
+     */
+    @GetMapping("/getFanTowerForProject")
+    public AjaxResult getFanTowerForProject(String id) {
+        return AjaxResult.success(fengJiInfoService.getFanTowerForProject(id));
+    }
+
+    /**
+     * 查询场站风机
+     */
+    @GetMapping("/getFanTowerForStation")
+    public AjaxResult getFanTowerForStation(String id) {
+        return AjaxResult.success(fengJiInfoService.getFanTowerForStation(id));
+    }
+
+    //更新项目风机
+    @PutMapping("/updateFanTowerForProjectInfo")
+    public void updateFanTowerForProjectInfo(@RequestBody FanTowerDto fanTowerDto) {
+        fengJiInfoService.updateFanTowerForProjectInfo(fanTowerDto);
+    }
+
+    //更新场站风机
+    @PutMapping("/updateFanTowerForStationInfo")
+    public void updateFanTowerForStationInfo(@RequestBody FanTowerDto fanTowerDto) {
+        fengJiInfoService.updateFanTowerForStationInfo(fanTowerDto);
+    }
+
+    //新增项目风机
+    @PostMapping("/saveFanTowerForProjectInfo")
+    public void saveFanTowerForProjectInfo(@RequestBody FanTowerDto fanTowerDto) {
+        fengJiInfoService.saveFanTowerForProjectInfo(fanTowerDto);
+    }
+
+    //新增场站风机
+    @PostMapping("/saveFanTowerForStationInfo")
+    public void saveFanTowerForStationInfo(@RequestBody FanTowerDto fanTowerDto) {
+        fengJiInfoService.saveFanTowerForStationInfo(fanTowerDto);
+    }
+
+    //删除项目风机
+    @DeleteMapping("/deleteFanTowerForProjectInfo")
+    public void deleteFanTowerForProjectInfo(@RequestBody FanTowerDto fanTowerDto) {
+        fengJiInfoService.deleteFanTowerForProjectInfo(fanTowerDto);
+    }
+
+    //删除场站风机
+    @DeleteMapping("/deleteFanTowerForStationInfo")
+    public void deleteFanTowerForStationInfo(@RequestBody FanTowerDto fanTowerDto) {
+        fengJiInfoService.deleteFanTowerForStationInfo(fanTowerDto);
+    }
+
+
+
+
+}

+ 57 - 0
tpneim-biz/src/main/java/com/jiayue/biz/controller/FileUploadController.java

@@ -0,0 +1,57 @@
+package com.jiayue.biz.controller;
+
+import com.jiayue.biz.domain.WindTowerInfo;
+import com.jiayue.biz.service.WindTowerInfoService;
+import com.jiayue.biz.util.FileUtil;
+import com.jiayue.common.core.controller.BaseController;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.List;
+
+/**
+ * @author shrstart
+ * @create 2022 - 05 - 31 -
+ */
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/dataQuery/upload")
+public class FileUploadController extends BaseController {
+    WindTowerInfoService windTowerInfoService;
+
+    @PostMapping
+    public String upload(@RequestParam("file") MultipartFile[] equipmentFile, String eqId) {
+
+        if (equipmentFile.length > 0) {
+            for (MultipartFile file : equipmentFile) {
+                String originalFilename = file.getOriginalFilename();
+                File file1 = new File("");
+                try {
+                    FileUtil.getEnclosurePath();
+                    List<WindTowerInfo> windTowerInfoList = windTowerInfoService.getByEquipmentNo(eqId);
+                    //D:\program\enclosure\
+                    String route = FileUtil.getEnclosurePath() + File.separator + windTowerInfoList.get(0).getName() + File.separator;
+                    File folder = new File(route);
+                    //判断文件夹是否存在
+                    if (!folder.exists()) {
+                        folder.mkdirs();
+                    }
+                    file.transferTo(new File(route + originalFilename));
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+
+            }
+        }
+
+
+        return "1";
+    }
+}
+

+ 204 - 0
tpneim-biz/src/main/java/com/jiayue/biz/controller/HomePageController.java

@@ -0,0 +1,204 @@
+package com.jiayue.biz.controller;
+
+import com.jiayue.biz.service.*;
+import com.jiayue.common.core.controller.BaseController;
+import com.jiayue.common.core.domain.AjaxResult;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+
+
+
+/**
+ * 首页Controller
+ *
+ * @author L.ym
+ * @date 2022-05-11
+ */
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/dataQuery/homePage")
+public class HomePageController extends BaseController {
+
+    private final HomePageService homePageService;
+
+
+    /**
+     * 首页风速曲线
+     */
+    @GetMapping("/windChats")
+    public AjaxResult homePageCharts(String equipmentId, String month) {
+
+        return AjaxResult.success(homePageService.homePageCharts(equipmentId, month));
+    }
+
+
+    /**
+     * 首页风向玫瑰图
+     */
+    @GetMapping("/roseChats")
+    public AjaxResult homePageRose(String equipmentId, String height, String month) {
+
+        return AjaxResult.success(homePageService.homePageRose(equipmentId, height, month));
+    }
+
+
+    /**
+     * 首页风功率密度与风速(柱状图)
+     */
+    @GetMapping("/getWsAndWpdForHeight")
+    public AjaxResult getWsAndWpdForHeight(String equipmentId, String month) {
+        return AjaxResult.success(homePageService.getWsAndWpdForHeight(equipmentId, month));
+    }
+
+
+//    /**
+//     * 首页风速占比以及平均风速
+//     */
+//    @GetMapping("/getHeightForAveWs")
+//    public AjaxResult getHeightForAveWs(String equipmentId, String height) {
+//        return AjaxResult.success(homePageService.getHeightForAveWs(equipmentId, height));
+//    }
+
+
+    /**
+     * 首页空气密度、温度、压强平均值
+     */
+    @GetMapping("/selectTForAir")
+    public AjaxResult selectTForAir(String equipmentId, String month) {
+
+        return AjaxResult.success(homePageService.getAirAndPaAndT(equipmentId, month));
+    }
+
+    /**
+     * 首页地图
+     */
+    @GetMapping("/homePageMap")
+    public AjaxResult homePageMap() {
+
+        return AjaxResult.success(homePageService.homePageMap());
+    }
+
+    /**
+     * 首页所有塔地图
+     */
+    @GetMapping("/homePageAllWindMap")
+    public AjaxResult homePageAllWindMap() {
+
+        return AjaxResult.success(homePageService.homePageAllWindMap());
+    }
+
+    @ApiOperation(value = "首页文字", notes = "首页文字")
+    @ApiImplicitParams({})
+    @GetMapping("/provincialEnergyInfo")
+    public AjaxResult provincialEnergy() {
+
+        return AjaxResult.success(homePageService.getResourcesOverview());
+    }
+
+    @ApiOperation(value = "全省资源数据", notes = "全省资源数据")
+    @ApiImplicitParams({})
+    @GetMapping("/hauFuInfo")
+    public AjaxResult hauFuInfo() {
+        return AjaxResult.success(homePageService.getProvincialEnergyStations());
+    }
+
+
+    @ApiOperation(value = "华富前期信息", notes = "华富前期查询")
+    @ApiImplicitParams({})
+    @GetMapping("/projectInfo")
+    public AjaxResult projectInfo() {
+        return AjaxResult.success(homePageService.getProjectSort());
+
+    }
+
+    @ApiOperation(value = "前期项目塔坐标以及周边风机坐标", notes = "前期项目塔坐标以及周边风机坐标查询")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "id", paramType = "query", dataType = "String"),
+    })
+    @GetMapping("/projectMapInfo")
+    public AjaxResult projectMapInfo(String projectId) {
+        return AjaxResult.success(homePageService.projectMapInfo(projectId));
+    }
+
+
+    @ApiOperation(value = "所有项目下拉框", notes = "所有项目下拉框查询")
+    @ApiImplicitParams({
+    })
+    @GetMapping("/projectSelect")
+    public AjaxResult projectSelect() {
+
+        return AjaxResult.success(homePageService.projectSelect());
+    }
+
+    @ApiOperation(value = "项目进展情况", notes = "查询项目进展情况")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "项目编号", value = "projectId", paramType = "query", dataType = "String"),
+    })
+    @GetMapping("/projectEvolve")
+    public AjaxResult projectEvolve(String projectId) {
+        return AjaxResult.success(homePageService.getProjectEvolve(projectId));
+    }
+
+    @ApiOperation(value = "场站总体信息", notes = "查询场站总体信息")
+    @ApiImplicitParams({
+    })
+    @GetMapping("/stationTotalityInfo")
+    public AjaxResult stationTotalityInfo() {
+        return AjaxResult.success(homePageService.getStationTotalityInfo());
+    }
+
+    @ApiOperation(value = "场站信息(杨总数据)", notes = "计算风机台数、风机机型、风机点位坐标、塔坐标")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "场站id", value = "stationId", paramType = "query", dataType = "String"),
+    })
+    @GetMapping("/stationInfo")
+    public AjaxResult stationInfo(String stationId) {
+
+//        ----{杨总数据},计算风机台数、风机机型、风机点位坐标、塔坐标
+
+
+        return AjaxResult.success(homePageService.getStationInfo(stationId));
+    }
+
+
+    @ApiOperation(value = "场站下拉框", notes = "获取场站信息下拉框")
+    @ApiImplicitParams({
+
+    })
+    @GetMapping("/stationSelect")
+    public AjaxResult stationSelect() {
+        return AjaxResult.success(homePageService.stationSelect());
+    }
+
+    @GetMapping("/gStationSelect")
+    public AjaxResult gStationSelect() {
+        return AjaxResult.success(homePageService.gStationSelect());
+    }
+
+    //地图点位坐标 (风机、测风塔、拐点)
+    @GetMapping("/getPointMap")
+    public AjaxResult getPointMap(){
+        return AjaxResult.success(homePageService.getPointMap());
+    }
+
+
+    //查询所有的场站坐标
+    @GetMapping("/getStationSeat")
+    public AjaxResult getStationSeat(){
+        return AjaxResult.success(homePageService.getStationSeat());
+    }
+
+
+    //查询所有的项目坐标
+    @GetMapping("/getProjectSeat")
+    public AjaxResult getProjectSeat(){
+        return AjaxResult.success(homePageService.getProjectSeat());
+    }
+
+
+}

+ 96 - 0
tpneim-biz/src/main/java/com/jiayue/biz/controller/InverterInfoController.java

@@ -0,0 +1,96 @@
+package com.jiayue.biz.controller;
+
+import com.jiayue.biz.domain.InverterInfo;
+import com.jiayue.biz.domain.PvModuleModel;
+import com.jiayue.biz.domain.StationInfo;
+import com.jiayue.biz.domain.WeatherStationInfo;
+import com.jiayue.biz.dto.InverterInfoDto;
+import com.jiayue.biz.service.InverterInfoService;
+import com.jiayue.biz.service.PvModuleModelService;
+import com.jiayue.biz.service.StationInfoService;
+import com.jiayue.biz.service.WeatherStationInfoService;
+import com.jiayue.common.annotation.Log;
+import com.jiayue.common.core.controller.BaseController;
+import com.jiayue.common.core.domain.AjaxResult;
+import com.jiayue.common.core.page.TableDataInfo;
+import com.jiayue.common.enums.BusinessType;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * 逆变器信息Controller
+ *
+ * @author L.ym
+ * @date 2022-05-11
+ */
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/dataQuery/inverterInfo")
+public class InverterInfoController extends BaseController {
+    private final PvModuleModelService pvModuleModelService;
+    private final StationInfoService stationInfoService;
+
+    private final InverterInfoService inverterInfoService;
+    @GetMapping("/getPvModuleModel")
+    public AjaxResult getPvModuleModel() {
+        List<PvModuleModel> pvModuleModels = pvModuleModelService.list();
+        List list = new ArrayList();
+        for(PvModuleModel pvModuleModel : pvModuleModels){
+            HashMap map = new HashMap();
+            map.put("id",pvModuleModel.getId());
+            map.put("model",pvModuleModel.getModelNumber());
+            list.add(map);
+        }
+        return AjaxResult.success(list);
+    }
+
+
+    /**
+     * 获取场站信息
+     */
+    @GetMapping("/getStationInfo")
+    public AjaxResult getStationInfo() {
+        List<Map<String, String>> list = new ArrayList<>();
+        List<StationInfo> stationInfoList = stationInfoService.selectStationInfo();
+        List<StationInfo> stationInfos = stationInfoList.stream().filter(w -> w.getStationBasicInfo().getStationType().equals("光")).collect(Collectors.toList());
+        for (StationInfo stationInfo : stationInfos) {
+            Map<String, String> map = new HashMap<>();
+            map.put("id", stationInfo.getId());
+            map.put("name", stationInfo.getStationBasicInfo().getStationName());
+            list.add(map);
+        }
+        return AjaxResult.success(list);
+    }
+    //查询逆变器
+    @GetMapping("/getInverterInfo")
+    public AjaxResult selectInverterInfo(String id){
+        return AjaxResult.success(inverterInfoService.selectInverterInfo(id));
+    }
+
+
+    //新增逆变器
+    @PostMapping("/addInverterInfo")
+    public void addInverterInfo(@RequestBody InverterInfoDto inverterInfoDto){
+        inverterInfoService.addInverterInfo(inverterInfoDto);
+
+    }
+
+    //修改逆变器
+    @PutMapping("/updateInverterInfo")
+    public void updateInverterInfo(@RequestBody InverterInfoDto inverterInfoDto){
+        inverterInfoService.updateInverterInfo(inverterInfoDto);
+
+    }
+    //删除逆变器
+    @DeleteMapping("/deleteInverterInfo")
+    public void deleteInverterInfo(@RequestBody InverterInfoDto inverterInfoDto){
+        inverterInfoService.deleteInverterInfo(inverterInfoDto);
+    }
+
+
+
+}

+ 159 - 0
tpneim-biz/src/main/java/com/jiayue/biz/controller/ManualEntryController.java

@@ -0,0 +1,159 @@
+package com.jiayue.biz.controller;
+
+import com.jiayue.biz.domain.*;
+import com.jiayue.biz.service.*;
+import com.jiayue.biz.vo.TotalityInfoForPInfoVo;
+import com.jiayue.common.core.controller.BaseController;
+import com.jiayue.common.core.domain.AjaxResult;
+import lombok.AllArgsConstructor;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.parameters.P;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 人工录入Controller
+ *
+ * @date 2023-05-9
+ */
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/manualEntry")
+public class ManualEntryController extends BaseController {
+    private final ManualEntryService manualEntryService;
+    private final TotalityInfoService totalityInfoService;
+    private final ProjectInfoService projectInfoService;
+    private final StationInfoService stationInfoService;
+    private final FanModelDataService fanModelDataService;
+    private final ProjectProgressService projectProgressService;
+
+    /*获取光伏站下拉框,风场站的下拉框*/
+    @GetMapping("/stationInfo")
+    public AjaxResult hauFuInfo() {
+        return AjaxResult.success(manualEntryService.getStationInfo());
+    }
+
+    //获取华电以及全省资源概况
+    @GetMapping("/getProvincialEnergyStations")
+    public AjaxResult getProvincialEnergyStations() {
+        return AjaxResult.success(manualEntryService.getProvincialEnergyStations());
+    }
+
+    //获取项目(场站)总体信息
+    @GetMapping("/getTotalityInfo")
+    public AjaxResult getTotalityInfo() {
+        return AjaxResult.success(totalityInfoService.selectTotalityInfoList());
+    }
+
+    /**
+     * 项目进展获取项目名称+id
+     */
+    @GetMapping("/getProjectInfo")
+    public AjaxResult getProjectInfo() {
+        List<Map<String, String>> list = new ArrayList<>();
+        List<ProjectInfo> projectInfoList = projectInfoService.getProjectInfoList();
+        for (ProjectInfo projectInfo : projectInfoList) {
+            Map<String, String> map = new HashMap<>();
+            map.put("id", projectInfo.getId());
+            map.put("name", projectInfo.getProjectBasicInfo().getProjectName());
+            list.add(map);
+        }
+        return AjaxResult.success(list);
+    }
+
+    /**
+     * 获取场站信息
+     */
+    @GetMapping("/getStationInfo")
+    public AjaxResult getStationInfo() {
+        List<Map<String, String>> list = new ArrayList<>();
+        List<StationInfo> stationInfos = stationInfoService.selectStationInfo();
+        for (StationInfo stationInfo : stationInfos) {
+            Map<String, String> map = new HashMap<>();
+            map.put("id", stationInfo.getId());
+            map.put("name", stationInfo.getStationBasicInfo().getStationName());
+            map.put("easyName", stationInfo.getStationBasicInfo().getAbbreviation());
+            list.add(map);
+        }
+        return AjaxResult.success(list);
+    }
+
+    /**
+     * 资源概况(更新)
+     *
+     * @param provincialEnergyStations 资源概况
+     */
+    @PostMapping("/updateProvincialEnergyStations")
+    public void update(@RequestBody ProvincialEnergyStations provincialEnergyStations) {
+        manualEntryService.updateProvincialEnergyStations(provincialEnergyStations);
+    }
+
+    /*获取风机统计数据*/
+    @GetMapping("/getFanModelDataList")
+    public AjaxResult getFanModelDataList(String id) {
+        return AjaxResult.success(fanModelDataService.queryFanModelDataList(id));
+    }
+
+    // 修改项目的总体信息
+    @PostMapping("/updateProjectTotalityInfoList")
+    public AjaxResult updateStationTotalityInfoList(@RequestBody TotalityInfoForPInfoVo totalityInfoForPInfoVo) {
+        totalityInfoService.updateProjectTotalityInfoList(totalityInfoForPInfoVo);
+        return AjaxResult.success("200");
+    }
+
+    // 修改场站的总体信息
+    @PostMapping("/updateStationTotalityInfoList")
+    public AjaxResult updateStationTotalityInfoList(@RequestBody String data) {
+        totalityInfoService.updateStationTotalityInfoList(data);
+        return AjaxResult.success("200");
+    }
+
+    @DeleteMapping("/deleteFanModelData/{id}")
+    public AjaxResult deleteFanModelData(@PathVariable("id") String id) {
+        fanModelDataService.deleteFanModelData(id);
+        return AjaxResult.success("200");
+    }
+
+    @PostMapping("/saveFanModelData")
+    public AjaxResult updateFanModelData(@RequestBody FanModelData fanModelData) {
+        fanModelDataService.updateFanModelData(fanModelData);
+        return AjaxResult.success("200");
+    }
+
+    //项目进展解析
+    @PostMapping("/projectProgressParse")
+    public AjaxResult projectProgressParse(@RequestParam("file") MultipartFile multipartFile, @RequestParam("id") String eqId, @RequestParam("name") String name) {
+
+        projectProgressService.projectProgressParse(multipartFile, eqId);
+        return AjaxResult.success("200");
+
+    }
+
+    /**
+     * 保存附件
+     *
+     * @param multipartFile 文件
+     * @param id            文件夹名
+     */
+    @PostMapping("/uploadProjectAnnex")
+    public AjaxResult saveAttachment(@RequestParam("file") MultipartFile multipartFile, @RequestParam("id") String id) {
+
+        projectProgressService.saveAttachment(multipartFile, id);
+        return AjaxResult.success("200");
+    }
+
+    //下载文件
+    @GetMapping("/exportProjectEvolve")
+    public void downloadFile(HttpServletResponse response, String equipmentId) {
+        projectProgressService.downloadProjectProgress(response, equipmentId);
+    }
+
+
+}

+ 149 - 0
tpneim-biz/src/main/java/com/jiayue/biz/controller/PdfController.java

@@ -0,0 +1,149 @@
+package com.jiayue.biz.controller;
+
+import com.jiayue.biz.service.HomePageService;
+import com.jiayue.biz.service.PdfService;
+import com.jiayue.common.core.controller.BaseController;
+import com.jiayue.common.core.domain.AjaxResult;
+import com.jiayue.common.core.page.TableDataInfo;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * 首页Controller
+ *
+ * @author L.ym
+ * @date 2022-05-11
+ */
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/dataQuery/pdf")
+public class PdfController extends BaseController {
+    private final PdfService pdfService;
+
+
+    @GetMapping("/generatePDF")
+    public AjaxResult getWindTowerInfo(String equipmentId, String height, Long startDay, Long endDay) {
+        return AjaxResult.success(pdfService.generatePDF(equipmentId, height,new Date(startDay),new Date(endDay)));
+    }
+
+    @GetMapping("/getDataTime")
+    public AjaxResult getDataTime() {
+        return AjaxResult.success(pdfService.getDataTime());
+    }
+    @GetMapping("/getDataTimeForEveryTower")
+    public AjaxResult getDataTimeForEveryTower(){
+        return AjaxResult.success(pdfService.getDataTimeForEveryTower());
+    }
+
+
+    /*测风塔信息概要*/
+	/*@GetMapping("/getWindTowerInfo")
+	public AjaxResult getWindTowerInfo(String equipmentId,Integer height) {
+		return AjaxResult.success(pdfService.getWindTowerInfo(equipmentId,height));
+	}
+
+    *//*测风塔统计概要概要*//*
+    @GetMapping("/statisticsWindTowerStatusData")
+    public AjaxResult statisticsWindTowerStatusData(String equipmentId) {
+        return AjaxResult.success(pdfService.statisticsWindTowerStatusData(equipmentId));
+    }
+
+    *//*风速和风功率密度时间曲线图*//*
+	@GetMapping("/getWsAndWpd")
+	public AjaxResult getWsAndWpd(String equipmentId,Integer height) {
+		return AjaxResult.success(pdfService.getWsAndWpd(equipmentId,height));
+	}
+
+	*//*风速和风速标准差时间曲线图*//*
+	@GetMapping("/getWsAndWsSta")
+	public AjaxResult getWsAndwsSta(String equipmentId,Integer height) {
+		return AjaxResult.success(pdfService.wsAndWsSta(equipmentId,height));
+	}*/
+
+    /* *//*风速和风速密度日变化*//*
+    @GetMapping("/get24WsAndWpd")
+    public AjaxResult getWindPowerDensityAndAverageWindSpeed(String equipmentId, Integer height) {
+        return AjaxResult.success(pdfService.getWindPowerDensityAndAverageWindSpeed(equipmentId, height));
+    }
+
+    *//*风速和风速密度各月日变化*//*
+    @GetMapping("/getMonthWsAndWpd")
+    public AjaxResult getMonthWsAndWpd(String equipmentId, Integer height) {
+        return AjaxResult.success(pdfService.getMonthWsAndWpd(equipmentId, height));
+    }
+
+    *//*风速和风速密度各月日变化表格*//*
+    @GetMapping("/getMonthWpdTable")
+    public AjaxResult getMonthWpdTable(String equipmentId) {
+        return AjaxResult.success(pdfService.getMonthWpdTable(equipmentId));
+    }
+
+    *//*风速和风速密度年变化*//*
+    @GetMapping("/getYearWsAndWpd")
+    public AjaxResult getYearWsAndWpd(String equipmentId, Integer height) {
+        return AjaxResult.success(pdfService.getYearWsAndWpd(equipmentId, height));
+    }
+
+    *//* pdf威布尔*//*
+    @GetMapping("/pdfWeibull")
+    public AjaxResult getPdfWeibull(String equipmentId, Integer height) {
+        return AjaxResult.success(pdfService.pdfWeibull(equipmentId, height));
+    }
+
+    *//*一年玫瑰图*//*
+    @GetMapping("/getRoseCharts")
+    public AjaxResult getRoseCharts(String equipmentId, Integer height) {
+        return AjaxResult.success(pdfService.roseCharts(equipmentId, height));
+    }
+
+    *//*各月玫瑰图*//*
+    @GetMapping("/getMonthRoseCharts")
+    public AjaxResult getMonthRoseCharts(String equipmentId, Integer height) {
+        return AjaxResult.success(pdfService.getMonthRoseCharts(equipmentId, height));
+    }
+
+    *//*空气密度*//*
+    @GetMapping("/getAirDensity")
+    public AjaxResult getAirDensity(String equipmentId) {
+        return AjaxResult.success(pdfService.getAirDensity(equipmentId));
+    }
+
+    *//*风切变幂指数玫瑰图*//*
+    @GetMapping("/getWindShearRose")
+    public AjaxResult getWindShearRose(String equipmentId, Integer height) {
+        return AjaxResult.success(pdfService.getWindShearRose(equipmentId, height));
+    }
+
+    *//*风切变幂指数日/年变化*//*
+    @GetMapping("/getWindShear")
+    public AjaxResult getWindShear(String equipmentId, Integer height) {
+        return AjaxResult.success(pdfService.getWindShear(equipmentId, height));
+    }
+
+    *//*湍流曲线*//*
+    @GetMapping("/getTurIntensityCharts")
+    public AjaxResult getTurIntensityCharts(String equipmentId, Integer height) {
+        return AjaxResult.success(pdfService.getTurIntensityCharts(equipmentId, height));
+    }
+
+    *//*湍流日/年变化*//*
+    @GetMapping("/getTurIntensity")
+    public AjaxResult getTurIntensity(String equipmentId, Integer height) {
+        return AjaxResult.success(pdfService.getTurIntensity(equipmentId, height));
+    }
+
+    *//*湍流玫瑰图*//*
+    @GetMapping("/getTurIntensityRose")
+    public AjaxResult getTurIntensityRose(String equipmentId, Integer height) {
+        return AjaxResult.success(pdfService.getTurIntensityRose(equipmentId, height));
+    }*/
+
+}

+ 195 - 0
tpneim-biz/src/main/java/com/jiayue/biz/controller/ProjectController.java

@@ -0,0 +1,195 @@
+package com.jiayue.biz.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jiayue.biz.domain.Project;
+import com.jiayue.biz.domain.WindTowerInfo;
+import com.jiayue.biz.dto.ProjectDto;
+import com.jiayue.biz.eunms.ProvinceEnum;
+import com.jiayue.biz.service.ProjectService;
+import com.jiayue.biz.service.WindTowerInfoService;
+import com.jiayue.common.annotation.Log;
+import com.jiayue.common.core.controller.BaseController;
+import com.jiayue.common.core.domain.AjaxResult;
+import com.jiayue.common.enums.BusinessType;
+import com.jiayue.common.utils.poi.ExcelUtil;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.security.core.parameters.P;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.*;
+import java.util.stream.Collectors;
+import javax.servlet.http.HttpServletResponse;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import lombok.RequiredArgsConstructor;
+
+import com.jiayue.common.core.page.TableDataInfo;
+
+/**
+ * 项目Controller
+ *
+ * @author L.ym
+ * @date 2022-12-22
+ */
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/dataQuery/project")
+public class ProjectController extends BaseController {
+
+    private final ProjectService iProjectService;
+
+    /**
+     * 查询项目列表
+     */
+    @PreAuthorize("@ss.hasPermi('dataQuery:project:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(Project project) {
+        List<ProjectDto> list = iProjectService.getProject(project);
+        return getDataTable(list);
+    }
+
+    /**
+     * 查询项目列表
+     */
+    @PreAuthorize("@ss.hasPermi('dataQuery:project:list')")
+    @GetMapping("/getDisabeldWindTowerInfo/{id}")
+    public AjaxResult getDisabeldWindTowerInfo(@PathVariable("id") String id) {
+        List<Project> projectList = iProjectService.list();
+        List<Project> collectProjects = projectList.stream().filter(p -> !p.getId().equals(id)).collect(Collectors.toList());
+        String equipmentId = "";
+        for (Project p : collectProjects) {
+            equipmentId = p.getRelationEquipment() + "," + equipmentId;
+        }
+        String str = equipmentId.substring(0, equipmentId.length() - 1 == -1 ? 0 : equipmentId.length() - 1);
+        return AjaxResult.success(str);
+    }
+
+    /**
+     * 导出项目列表
+     */
+    @PreAuthorize("@ss.hasPermi('dataQuery:project:export')")
+    @Log(title = "项目", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, Project project) {
+        LambdaQueryWrapper<Project> queryWrapper = this.buildQueryParams(project);
+        List<Project> list = iProjectService.list(queryWrapper);
+        ExcelUtil<Project> util = new ExcelUtil<>(Project.class);
+        util.exportExcel(response, list, "项目数据");
+    }
+
+    /**
+     * 获取项目详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dataQuery:project:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id) {
+        return AjaxResult.success(iProjectService.getById(id));
+    }
+
+    /**
+     * 新增项目
+     */
+    @PreAuthorize("@ss.hasPermi('dataQuery:project:add')")
+    @Log(title = "项目", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody ProjectDto projectDto) {
+        iProjectService.saveProject(projectDto);
+        return success("200");
+    }
+
+    /**
+     * 修改项目
+     */
+    @PreAuthorize("@ss.hasPermi('dataQuery:project:edit')")
+    @Log(title = "项目", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody ProjectDto projectDto) {
+
+        iProjectService.updateProject(projectDto);
+
+        return success("200");
+    }
+
+    /**
+     * 删除项目
+     */
+    @PreAuthorize("@ss.hasPermi('dataQuery:project:remove')")
+    @Log(title = "项目", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String ids) {
+        iProjectService.delProject(ids);
+        return toAjax(1 );
+    }
+
+    /**
+     * 构建查询条件
+     **/
+    private LambdaQueryWrapper<Project> buildQueryParams(Project project) {
+        LambdaQueryWrapper<Project> queryWrapper = Wrappers.lambdaQuery();
+        if (StrUtil.isNotBlank(project.getProjectName())) {
+            queryWrapper.like(Project::getProjectName, project.getProjectName());
+        }
+        if (StrUtil.isNotBlank(project.getCompany())) {
+            queryWrapper.eq(Project::getCompany, project.getCompany());
+        }
+        if (StrUtil.isNotBlank(project.getProvince())) {
+            queryWrapper.eq(Project::getProvince, project.getProvince());
+        }
+        if (ObjectUtil.isNotNull(project.getStartDate())) {
+            queryWrapper.eq(Project::getStartDate, project.getStartDate());
+        }
+        if (ObjectUtil.isNotNull(project.getEndDate())) {
+            queryWrapper.eq(Project::getEndDate, project.getEndDate());
+        }
+        if (StrUtil.isNotBlank(project.getStatus())) {
+            queryWrapper.eq(Project::getStatus, project.getStatus());
+        }
+        return queryWrapper;
+    }
+
+    /*所有的项目列表*/
+    @GetMapping("/listAll")
+    public TableDataInfo listAll() {
+        List<Project> list = iProjectService.lambdaQuery().orderByAsc(Project::getStartDate).list();
+        return getDataTable(list);
+    }
+
+    /*根据项目名称模糊查询*/
+    @GetMapping("/findByProjectName")
+    public AjaxResult getByProjectName(Integer current, Integer size, String projectName) {
+        Page page = iProjectService.getByProjectName(current, size, projectName);
+        return AjaxResult.success(page);
+    }
+
+    /*获取省份信息*/
+    @GetMapping(value = "/getProvince")
+    public AjaxResult getProvince() {
+        List<Map<String, Object>> provinceType = new ArrayList<>();
+        Map<String, Object> map;
+        try {
+            for (ProvinceEnum e : ProvinceEnum.values()) {
+                map = new HashMap<>();
+                map.put("label", e.getMessage());
+                map.put("value", e.name());
+                provinceType.add(map);
+            }
+            return AjaxResult.success(provinceType);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return AjaxResult.error();
+        }
+
+    }
+}

+ 66 - 0
tpneim-biz/src/main/java/com/jiayue/biz/controller/PvModuleModelController.java

@@ -0,0 +1,66 @@
+package com.jiayue.biz.controller;
+
+import com.jiayue.biz.domain.PvModuleModel;
+import com.jiayue.biz.service.PvModuleModelService;
+import com.jiayue.common.annotation.Log;
+import com.jiayue.common.core.controller.BaseController;
+import com.jiayue.common.core.domain.AjaxResult;
+import com.jiayue.common.core.page.TableDataInfo;
+import com.jiayue.common.enums.BusinessType;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 光伏组件信息Controller
+ *
+ * @author L.ym
+ * @date 2022-05-11
+ */
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/dataQuery/pvModuleModel")
+public class PvModuleModelController extends BaseController {
+    private final PvModuleModelService pvModuleModelService;
+
+    /**
+     * 查询光伏组件信息列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo list() {
+        List<PvModuleModel> pvModuleModels = pvModuleModelService.list();
+        return getDataTable(pvModuleModels);
+    }
+
+
+    /**
+     * 新增光伏组件信息
+     */
+    @Log(title = "光伏组件信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody PvModuleModel pvModuleModel) {
+        return toAjax(pvModuleModelService.save(pvModuleModel) ? 1 : 0);
+    }
+
+    /**
+     * 修改光伏组件信息
+     */
+    @Log(title = "光伏组件信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody PvModuleModel pvModuleModel) {
+        return toAjax(pvModuleModelService.updateById(pvModuleModel) ? 1 : 0);
+    }
+
+    /**
+     * 删除光伏组件信息
+     */
+    @Log(title = "光伏组件信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String ids) {
+        return toAjax(pvModuleModelService.removeById(ids) ? 1 : 0);
+    }
+
+
+}

+ 147 - 0
tpneim-biz/src/main/java/com/jiayue/biz/controller/RealTimeDisplayController.java

@@ -0,0 +1,147 @@
+package com.jiayue.biz.controller;
+
+import com.jiayue.biz.service.*;
+import com.jiayue.common.annotation.Log;
+import com.jiayue.common.core.controller.BaseController;
+import com.jiayue.common.core.domain.AjaxResult;
+import com.jiayue.common.core.page.TableDataInfo;
+import com.jiayue.common.enums.BusinessType;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/dataQuery/RealTimeDisplay")
+public class RealTimeDisplayController extends BaseController {
+
+
+    @Autowired
+    RealTimeDisplayService realTimeDisplayService;
+
+    @Autowired
+    WindTowerDataParentTableService windTowerDataParentTableService;
+
+
+    //湍流
+    @RequestMapping("/turbulence")
+    public TableDataInfo realDisplayTur(Long startTime, Long endTime, String equipmentId, String height) {
+
+        List turbulence = realTimeDisplayService.turbulence(startTime, endTime, equipmentId, height);
+        return getDataTable(turbulence);
+
+    }
+
+
+
+    //威布尔
+    @RequestMapping("/weibull")
+    public TableDataInfo realDisplayWeibull(Long startTime, Long endTime, String equipmentId, String height) {
+
+        List<Object> weibull = realTimeDisplayService.weibull(startTime, endTime, equipmentId, height);
+
+        return getDataTable(weibull);
+
+    }
+
+    /*12个月的测风塔数据完整性*/
+    @GetMapping(value = "/dataIntegrity")
+    public AjaxResult getDataIntegrity(String equipmentId) {
+        return AjaxResult.success(realTimeDisplayService.dataIntegrity(equipmentId));
+    }
+
+
+    /**
+     * 风速风向折线图
+     *
+     * @param startTime   开始时间
+     * @param endTime     结束时间
+     * @param equipmentId 测风塔编号
+     * @param height      层高
+     * @return 风速风向
+     */
+    @GetMapping("/wsAndWd")
+    @ResponseBody
+    public AjaxResult selectAll(Long startTime, Long endTime, String equipmentId, String height) {
+        Map<String, Object> allWs = realTimeDisplayService.selectWsAndWd(startTime, endTime, equipmentId, height);
+        return AjaxResult.success(allWs);
+    }
+
+    //获取测风塔数据最后一条数据时间到前一周数据 时间段内所有时间点
+    @GetMapping("/getStartTimeAndEndTime")
+    public AjaxResult getStartTimeAndEndTime() {
+        return AjaxResult.success(realTimeDisplayService.getStartTimeAndEndTime());
+    }
+
+    //风功率密度(风向玫瑰图)
+    @GetMapping(value = "/getWindEnergyDensity")
+    public AjaxResult getTPAndAirDensity(Long startTime, Long endTime, String equipmentId, String height) throws Exception {
+        return AjaxResult.success(realTimeDisplayService.getWindEnergyDensity(startTime, endTime, equipmentId, height));
+    }
+
+    //获取风切变指数(风向玫瑰图)
+    @GetMapping(value = "/getWindShear")
+    public AjaxResult getWindShear(Long startTime, Long endTime, String equipmentId, String height,String heightMin) {
+
+        return AjaxResult.success(realTimeDisplayService.getWindShear(startTime, endTime, equipmentId, height,heightMin));
+    }
+
+    //获取湍流(风向玫瑰图)
+    @GetMapping(value = "/getTurbulenceIntensity")
+    public AjaxResult getTurbulenceIntensity(Long startTime, Long endTime, String equipmentId, String height) {
+
+        return AjaxResult.success(realTimeDisplayService.getTurbulenceIntensity(startTime, endTime, equipmentId, height));
+    }
+
+
+    //风况对比
+    @GetMapping(value = "/getWindPowerDensityAndAverageWindSpeed")
+    public AjaxResult getWindPowerDensityAndAverageWindSpeed(Long startTime, Long endTime, String height, String eqId) {
+        return AjaxResult.success(realTimeDisplayService.getWindPowerDensityAndAverageWindSpeed(startTime, endTime, height, eqId));
+    }
+
+
+    /*
+     * 风向玫瑰图
+     * */
+    @GetMapping(value = "/getWindRose")
+    public AjaxResult getWindRose(Long startTime, Long endTime, String equipmentId, String height) {
+        return AjaxResult.success(realTimeDisplayService.queryCharts(startTime, endTime, equipmentId, height));
+    }
+
+    //空气密度
+    @GetMapping(value = "/getTPAndAirDensity")
+    public AjaxResult getTPAndAirDensity(Long startTime, Long endTime, String equipmentId) {
+        return AjaxResult.success(realTimeDisplayService.queryTPAndAirDensity(startTime, endTime, equipmentId));
+    }
+
+    /**
+     * 根据时间分页查询测风塔数据
+     */
+    @PostMapping("/time")
+    public AjaxResult selectTime(Integer current, Integer size, Long startTime, Long endTime, String equipmentId) {
+        return AjaxResult.success(windTowerDataParentTableService.selectDataPageByBetweenTimeAndEquipmetId(new Date(startTime), new Date(endTime), equipmentId, current, size));
+    }
+
+    /**
+     * 导出测风塔数据
+     */
+    @Log(title = "测风塔数据", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public void export(HttpServletResponse response, Long startTime, Long endTime, String equipmentId) {
+        windTowerDataParentTableService.export(response, startTime, endTime, equipmentId);
+
+    }
+
+    @Log(title = "测风塔数据文件", businessType = BusinessType.EXPORT)
+    @GetMapping("/exportAll")
+    public void exportAll(HttpServletRequest request, HttpServletResponse response, String equipmentId,Long startTime,Long endTime) {
+        windTowerDataParentTableService.exportAll(request, response, equipmentId,startTime,endTime);
+    }
+}

+ 152 - 0
tpneim-biz/src/main/java/com/jiayue/biz/controller/StatisticsSituationController.java

@@ -0,0 +1,152 @@
+package com.jiayue.biz.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.jiayue.biz.domain.WindTowerInfo;
+import com.jiayue.common.annotation.Log;
+import com.jiayue.common.core.controller.BaseController;
+import com.jiayue.common.core.domain.AjaxResult;
+import com.jiayue.common.enums.BusinessType;
+import com.jiayue.common.utils.poi.ExcelUtil;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.List;
+import java.util.stream.Collectors;
+import javax.servlet.http.HttpServletResponse;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import lombok.RequiredArgsConstructor;
+
+import com.jiayue.biz.domain.StatisticsSituation;
+import com.jiayue.biz.service.StatisticsSituationService;
+import com.jiayue.common.core.page.TableDataInfo;
+
+/**
+ * 【请填写功能名称】Controller
+ *
+ * @author L.ym
+ * @date 2022-08-26
+ */
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/client/situation")
+public class StatisticsSituationController extends BaseController {
+
+    private final StatisticsSituationService iStatisticsSituationService;
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    @PreAuthorize("@ss.hasPermi('client:situation:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(StatisticsSituation statisticsSituation) {
+//        startPage();
+        LambdaQueryWrapper<StatisticsSituation> queryWrapper = this.buildQueryParams(statisticsSituation);
+        List<StatisticsSituation> list = iStatisticsSituationService.list(queryWrapper).stream().sorted(Comparator.comparing(StatisticsSituation::getEquipmentId)).collect(Collectors.toList());
+        ;
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出【请填写功能名称】列表
+     */
+    @PreAuthorize("@ss.hasPermi('client:situation:export')")
+    @Log(title = "【请填写功能名称】", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, StatisticsSituation statisticsSituation) {
+        LambdaQueryWrapper<StatisticsSituation> queryWrapper = this.buildQueryParams(statisticsSituation);
+        List<StatisticsSituation> list = iStatisticsSituationService.list(queryWrapper);
+        ExcelUtil<StatisticsSituation> util = new ExcelUtil<>(StatisticsSituation.class);
+        util.exportExcel(response, list, "【请填写功能名称】数据");
+    }
+
+    /**
+     * 获取【请填写功能名称】详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('client:situation:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id) {
+        return AjaxResult.success(iStatisticsSituationService.getById(id));
+    }
+
+    /**
+     * 新增【请填写功能名称】
+     */
+    @PreAuthorize("@ss.hasPermi('client:situation:add')")
+    @Log(title = "【请填写功能名称】", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody StatisticsSituation statisticsSituation) {
+        return toAjax(iStatisticsSituationService.save(statisticsSituation) ? 1 : 0);
+    }
+
+    /**
+     * 修改【请填写功能名称】
+     */
+    @PreAuthorize("@ss.hasPermi('client:situation:edit')")
+    @Log(title = "【请填写功能名称】", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody StatisticsSituation statisticsSituation) {
+        return toAjax(iStatisticsSituationService.updateById(statisticsSituation) ? 1 : 0);
+    }
+
+    /**
+     * 删除【请填写功能名称】
+     */
+    @PreAuthorize("@ss.hasPermi('client:situation:remove')")
+    @Log(title = "【请填写功能名称】", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String[] ids) {
+        return toAjax(iStatisticsSituationService.removeByIds(Arrays.asList(ids)) ? 1 : 0);
+    }
+
+    /**
+     * 构建查询条件
+     **/
+    private LambdaQueryWrapper<StatisticsSituation> buildQueryParams(StatisticsSituation statisticsSituation) {
+        LambdaQueryWrapper<StatisticsSituation> queryWrapper = Wrappers.lambdaQuery();
+        if (StrUtil.isNotBlank(statisticsSituation.getEquipmentId())) {
+            queryWrapper.eq(StatisticsSituation::getEquipmentId, statisticsSituation.getEquipmentId());
+        }
+        if (StrUtil.isNotBlank(statisticsSituation.getStartTimeAndEndTime())) {
+            queryWrapper.eq(StatisticsSituation::getStartTimeAndEndTime, statisticsSituation.getStartTimeAndEndTime());
+        }
+        if (ObjectUtil.isNotNull(statisticsSituation.getWsAve140())) {
+            queryWrapper.eq(StatisticsSituation::getWsAve140, statisticsSituation.getWsAve140());
+        }
+        if (ObjectUtil.isNotNull(statisticsSituation.getWsAve120())) {
+            queryWrapper.eq(StatisticsSituation::getWsAve120, statisticsSituation.getWsAve120());
+        }
+        if (ObjectUtil.isNotNull(statisticsSituation.getWsAve100())) {
+            queryWrapper.eq(StatisticsSituation::getWsAve100, statisticsSituation.getWsAve100());
+        }
+        if (ObjectUtil.isNotNull(statisticsSituation.getWsAve80())) {
+            queryWrapper.eq(StatisticsSituation::getWsAve80, statisticsSituation.getWsAve80());
+        }
+        if (ObjectUtil.isNotNull(statisticsSituation.getWsAve70())) {
+            queryWrapper.eq(StatisticsSituation::getWsAve70, statisticsSituation.getWsAve70());
+        }
+        if (ObjectUtil.isNotNull(statisticsSituation.getWsAve50())) {
+            queryWrapper.eq(StatisticsSituation::getWsAve50, statisticsSituation.getWsAve50());
+        }
+        if (ObjectUtil.isNotNull(statisticsSituation.getWsAve30())) {
+            queryWrapper.eq(StatisticsSituation::getWsAve30, statisticsSituation.getWsAve30());
+        }
+        if (ObjectUtil.isNotNull(statisticsSituation.getWsAve10())) {
+            queryWrapper.eq(StatisticsSituation::getWsAve10, statisticsSituation.getWsAve10());
+        }
+        return queryWrapper;
+    }
+}

+ 101 - 0
tpneim-biz/src/main/java/com/jiayue/biz/controller/SysFileController.java

@@ -0,0 +1,101 @@
+package com.jiayue.biz.controller;
+
+import com.jiayue.biz.service.SysFileService;
+import com.jiayue.biz.service.impl.SysFileServiceImpl;
+import com.jiayue.common.core.controller.BaseController;
+import com.jiayue.common.core.domain.AjaxResult;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+
+/**
+ * SysFileController
+ *
+ * @author bizy
+ * @version 1.0
+ * @since 2018/12/5 09:37
+ */
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/dataQuery/systemFile")
+@Slf4j
+public class SysFileController extends BaseController {
+    @Autowired
+    SysFileServiceImpl sysFileService;
+
+    /**
+     * 获取文件夹下的所有文件
+     *
+     * @param path 文件夹路径
+     * @return map
+     */
+    @GetMapping(value = "/fileList")
+    public AjaxResult fileList(String path) {
+        return sysFileService.getFileList(path);
+    }
+
+    /**
+     * 文件下载
+     *
+     * @param request  HttpServletRequest
+     * @param response HttpServletResponse
+     * @param path     路径
+     * @param name     文件名
+     * @param type     文件类型
+     */
+    @GetMapping(value = "/downLoadFile")
+    public void downLoadFile(HttpServletRequest request,
+                             HttpServletResponse response,
+                             String path,
+                             String name,
+                             String type) {
+        sysFileService.downLoadFile(request, response, path, name, type);
+    }
+
+    /**
+     * 文件删除
+     *
+     * @param path 路径
+     * @param name 文件名
+     * @return map
+     */
+    @PostMapping(value = "/deleteFile")
+    public AjaxResult deleteFile(String path, String name) {
+        return sysFileService.deleteFile(path, name);
+    }
+
+    /**
+     * 导入数据
+     *
+     * @param file 导入的文件
+     * @return 返回状态结果
+     */
+    @PostMapping("/upload")
+    public AjaxResult upload(@RequestParam("path") String path, @RequestParam("file") MultipartFile file) {
+        return sysFileService.upload(path, file);
+    }
+
+    /**
+     * 下载整个文件夹
+     *
+     * @param request  HttpServletRequest
+     * @param response HttpServletResponse
+     * @param path     路径
+     * @param name     文件名
+     * @param type     文件类型
+     */
+    @GetMapping(value = "/downLoadFolder")
+    public void downLoadFolder(HttpServletRequest request,
+                               HttpServletResponse response,
+                               String path,
+                               String name,
+                               String type) {
+        sysFileService.downLoadFolder(request, response, path, name, type);
+    }
+}

+ 104 - 0
tpneim-biz/src/main/java/com/jiayue/biz/controller/TunnelInfoController.java

@@ -0,0 +1,104 @@
+package com.jiayue.biz.controller;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.jiayue.biz.domain.*;
+import com.jiayue.biz.service.TunnelInfoService;
+import com.jiayue.common.annotation.Log;
+import com.jiayue.common.core.controller.BaseController;
+import com.jiayue.common.core.domain.AjaxResult;
+import com.jiayue.common.core.page.TableDataInfo;
+import com.jiayue.common.enums.BusinessType;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.*;
+
+/**
+ * 通道信息Controller
+ *
+ * @author L.ym
+ * @date 2022-05-11
+ */
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/dataQuery/tunnelInfo")
+public class TunnelInfoController extends BaseController {
+
+    private final TunnelInfoService tunnelInfoService;
+
+    /**
+     * 查询通道信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('dataQuery:windTowerStatusInfo:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TunnelInfo tunnelInfo) {
+        startPage();
+        LambdaQueryWrapper<TunnelInfo> queryWrapper = this.buildQueryParams(tunnelInfo);
+        List<TunnelInfo> list = tunnelInfoService.list(queryWrapper);
+        return getDataTable(list);
+    }
+
+    /**
+     * 查询通道信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('dataQuery:windTowerStatusInfo:list')")
+    @GetMapping("/listAll")
+    public TableDataInfo listAll() {
+        List<TunnelInfo> list = tunnelInfoService.lambdaQuery().orderByAsc(TunnelInfo::getId).list();
+
+        return getDataTable(list);
+    }
+
+    /**
+     * 新增通道信息
+     */
+    @PreAuthorize("@ss.hasPermi('dataQuery:windTowerStatusInfo:add')")
+    @Log(title = "通道信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TunnelInfo tunnelInfo) {
+        return toAjax(tunnelInfoService.save(tunnelInfo));
+    }
+
+    /**
+     * 修改通道信息
+     */
+    @PreAuthorize("@ss.hasPermi('dataQuery:windTowerStatusInfo:edit')")
+    @Log(title = "通道信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TunnelInfo tunnelInfo) {
+        return toAjax(tunnelInfoService.updateById(tunnelInfo) ? 1 : 0);
+    }
+
+    /**
+     * 删除通道信息
+     */
+    @PreAuthorize("@ss.hasPermi('dataQuery:windTowerStatusInfo:remove')")
+    @Log(title = "通道信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String[] ids) {
+        return toAjax(tunnelInfoService.removeByIds(Arrays.asList(ids)) ? 1 : 0);
+    }
+
+
+    /**
+     * 构建查询条件
+     **/
+    private LambdaQueryWrapper<TunnelInfo> buildQueryParams(TunnelInfo tunnelInfo) {
+        LambdaQueryWrapper<TunnelInfo> queryWrapper = Wrappers.lambdaQuery();
+        if (StrUtil.isNotBlank(tunnelInfo.getTunnelName())) {
+            queryWrapper.eq(TunnelInfo::getTunnelName, tunnelInfo.getTunnelName());
+        }
+        if (ObjectUtil.isNotNull(tunnelInfo.getEquipmentNo())) {
+            queryWrapper.eq(TunnelInfo::getEquipmentNo, tunnelInfo.getEquipmentNo());
+        }
+        if (ObjectUtil.isNotNull(tunnelInfo.getStationId())) {
+            queryWrapper.eq(TunnelInfo::getStationId, tunnelInfo.getStationId());
+        }
+        return queryWrapper;
+    }
+}

+ 92 - 0
tpneim-biz/src/main/java/com/jiayue/biz/controller/WeatherStationInfoController.java

@@ -0,0 +1,92 @@
+package com.jiayue.biz.controller;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jiayue.biz.domain.*;
+import com.jiayue.biz.service.ProjectService;
+import com.jiayue.biz.service.StatisticsSituationService;
+import com.jiayue.biz.service.WeatherStationInfoService;
+import com.jiayue.biz.service.WindTowerInfoService;
+import com.jiayue.common.annotation.Log;
+import com.jiayue.common.core.controller.BaseController;
+import com.jiayue.common.core.domain.AjaxResult;
+import com.jiayue.common.core.page.TableDataInfo;
+import com.jiayue.common.enums.BusinessType;
+import com.jiayue.common.utils.poi.ExcelUtil;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * 环境监测仪信息Controller
+ *
+ * @author L.ym
+ * @date 2022-05-11
+ */
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/dataQuery/weatherStationInfo")
+public class WeatherStationInfoController extends BaseController {
+    private final WeatherStationInfoService weatherStationInfoService;
+
+    @GetMapping("/infoList")
+    public AjaxResult infoList() {
+        List<WeatherStationInfo> weatherStationInfos = weatherStationInfoService.list();
+        List list = new ArrayList();
+        for(WeatherStationInfo weatherStationInfo : weatherStationInfos){
+            HashMap map = new HashMap();
+            map.put("id",weatherStationInfo.getId());
+            map.put("name",weatherStationInfo.getName());
+            list.add(map);
+        }
+        return AjaxResult.success(list);
+    }
+
+    /**
+     * 查询环境监测仪信息列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo list() {
+        List<WeatherStationInfo> weatherStationInfos = weatherStationInfoService.list();
+        return getDataTable(weatherStationInfos);
+    }
+
+
+    /**
+     * 新增环境监测仪信息
+     */
+    @Log(title = "环境监测仪信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody WeatherStationInfo weatherStationInfo) {
+        return toAjax(weatherStationInfoService.save(weatherStationInfo) ? 1 : 0);
+    }
+
+    /**
+     * 修改环境监测仪信息
+     */
+    @Log(title = "环境监测仪信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody WeatherStationInfo weatherStationInfo) {
+        return toAjax(weatherStationInfoService.updateById(weatherStationInfo) ? 1 : 0);
+    }
+
+    /**
+     * 删除环境监测仪信息
+     */
+    @Log(title = "环境监测仪信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String ids) {
+        return toAjax(weatherStationInfoService.removeById(ids) ? 1 : 0);
+    }
+
+
+}

+ 27 - 0
tpneim-biz/src/main/java/com/jiayue/biz/controller/WindSpeedController.java

@@ -0,0 +1,27 @@
+package com.jiayue.biz.controller;
+
+
+import com.jiayue.common.core.controller.BaseController;
+import com.jiayue.common.core.domain.AjaxResult;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+
+import java.util.Map;
+
+/**
+ * 风速风向
+ * @author shrstart
+ * @create 2022 - 05 - 31 -
+ */
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/dataQuery/fanSpeed")
+public class WindSpeedController extends BaseController {
+
+
+}

+ 159 - 0
tpneim-biz/src/main/java/com/jiayue/biz/controller/WindTowerCalculationDataController.java

@@ -0,0 +1,159 @@
+package com.jiayue.biz.controller;
+
+import com.jiayue.biz.service.WindTowerCalculationDataService;
+import com.jiayue.common.core.controller.BaseController;
+import com.jiayue.common.core.domain.AjaxResult;
+import com.jiayue.common.core.page.TableDataInfo;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Date;
+
+
+/**
+ * 测风塔计算数据Controller
+ *
+ * @author tl
+ * @date 2022-05-24
+ */
+
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/dataQuery/windTowerCalculationData")
+public class WindTowerCalculationDataController extends BaseController {
+    private final WindTowerCalculationDataService windTowerCalculationDataService;
+
+
+
+    /**
+     * 月平均风切变
+     *
+     * @param time   时间
+     * @param height 层高
+     * @param eqId   设备id
+     * @return
+     * @throws Exception
+     */
+    @GetMapping(value = "/getWindShearByEqidAndAverageAndTime")
+    public AjaxResult getWindShearByEqidAndAverageAndTime(Long startTime,Long endTime, String height, String eqId) {
+        return AjaxResult.success(windTowerCalculationDataService.getWindShearByEqidAndAverageAndTime(startTime,endTime, height, eqId));
+    }
+
+    /**
+     * 平均风速(统计曲线图)
+     *
+     * @param startTime 开始时间
+     * @param endTime 结束时间
+     * @param height 层高
+     * @param eqId 场站编号
+     * @return
+     */
+    @GetMapping(value = "/getWindSpeedByEqidAndTime")
+    public TableDataInfo getWs(Long startTime, Long endTime, String height, String eqId,String uid) {
+
+        return getDataTable(windTowerCalculationDataService.getWindSpeed(startTime, endTime, height, eqId,uid));
+
+
+    }
+    /**
+     * 平均湍流(统计曲线图)
+     *
+     * @param height 层高
+     * @param eqId 场站编号
+     * @return
+     */
+    @GetMapping(value = "/getTurbulenceByEqidAndTime")
+    public TableDataInfo getTurbulence(Long startTime, Long endTime, String height, String eqId) {
+
+        return getDataTable(windTowerCalculationDataService.getTurbulence(startTime,endTime, height, eqId));
+
+
+    }
+    /**
+     * 平均空气密度(统计曲线图)
+     *
+     * @param startTime 开始时间
+     * @param endTime 结束时
+     * @param equipmentId 场站编号
+     * @param uid 年月区分id
+     * @return
+     */
+    @GetMapping(value = "/getAirDensityByEqidAndTime")
+    public TableDataInfo getAirDensity(Long startTime, Long endTime,String equipmentId,String uid) {
+
+        return getDataTable(windTowerCalculationDataService.getAirDensity(startTime, endTime,equipmentId,uid));
+
+
+    }
+    /**
+     * 平均空气密度(统计曲线图)
+     *
+     * @param startTime 开始时间
+     * @param endTime 结束时
+     * @param eqId 场站编号
+     * @param uid 年月区分id
+     * @param height 层高
+     * @return
+     */
+    @GetMapping(value = "/getWpdByEqidAndTime")
+    public TableDataInfo getWpd(Long startTime, Long endTime, String height, String eqId,String uid) {
+
+        return getDataTable(windTowerCalculationDataService.getWpd(startTime, endTime, height, eqId,uid));
+
+
+    }
+    /**
+     * 平均风切变(统计曲线图)
+     *
+     * @param eqId 场站编号
+     * @param height 层高
+     * @return
+     */
+    @GetMapping(value = "/getShearByEqidAndTime")
+    public TableDataInfo getShear(Long startTime, Long endTime,String height, String eqId) {
+        return getDataTable(windTowerCalculationDataService.getShear(startTime,endTime, height, eqId));
+
+    }
+
+    /**
+     * 风资源年统计(风速 + 风功率密度)
+     * @param startTime
+     * @param endTime
+     * @param height
+     * @param eqId
+     * @return
+     */
+    @GetMapping(value = "/getWindResourcesByEqidAndTime")
+    public TableDataInfo getWindResources(Long startTime, Long endTime,String height,String eqId) {
+        return getDataTable(windTowerCalculationDataService.getWindResources(startTime,endTime, height, eqId));
+    }
+    /**
+     * 风资源年统计(空气密度)
+     * @param startTime
+     * @param endTime
+     * @param eqId
+     * @return
+     */
+    @GetMapping(value = "/getDensityByEqIdAndTime")
+    public TableDataInfo getDensity(Long startTime, Long endTime,String eqId) {
+
+        return getDataTable(windTowerCalculationDataService.getDensityYear(startTime,endTime, eqId));
+
+
+    }
+    /**
+     * Gumbel分布概率
+     * @param startTime
+     * @param endTime
+     * @param eqId
+     * @return
+     */
+    @GetMapping(value = "/getGumbelByEqIdAndTime")
+    public TableDataInfo getGumbel(Long startTime, Long endTime,String eqId,String height) {
+
+        return getDataTable(windTowerCalculationDataService.getGumbel(startTime,endTime, eqId,height));
+
+
+    }
+}

+ 288 - 0
tpneim-biz/src/main/java/com/jiayue/biz/controller/WindTowerInfoController.java

@@ -0,0 +1,288 @@
+package com.jiayue.biz.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jiayue.biz.domain.EmailWindTowerInfo;
+import com.jiayue.biz.domain.Project;
+import com.jiayue.biz.domain.StatisticsSituation;
+import com.jiayue.biz.service.ProjectService;
+import com.jiayue.biz.service.StatisticsSituationService;
+import com.jiayue.common.annotation.Log;
+import com.jiayue.common.core.controller.BaseController;
+import com.jiayue.common.core.domain.AjaxResult;
+import com.jiayue.common.enums.BusinessType;
+import com.jiayue.common.utils.DateUtil;
+import com.jiayue.common.utils.poi.ExcelUtil;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.util.*;
+import java.util.stream.Collectors;
+import javax.servlet.http.HttpServletResponse;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import lombok.RequiredArgsConstructor;
+
+import com.jiayue.biz.domain.WindTowerInfo;
+import com.jiayue.biz.service.WindTowerInfoService;
+import com.jiayue.common.core.page.TableDataInfo;
+
+/**
+ * 测风塔信息Controller
+ *
+ * @author L.ym
+ * @date 2022-05-11
+ */
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/dataQuery/windTowerStatusInfo")
+public class WindTowerInfoController extends BaseController {
+
+    private final WindTowerInfoService windTowerInfoService;
+    private final ProjectService projectService;
+    private final StatisticsSituationService statisticsSituationService;
+
+    /**
+     * 查询测风塔信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('dataQuery:windTowerStatusInfo:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(WindTowerInfo windTowerInfo) {
+        startPage();
+        LambdaQueryWrapper<WindTowerInfo> queryWrapper = this.buildQueryParams(windTowerInfo);
+        List<WindTowerInfo> list = windTowerInfoService.list(queryWrapper);
+        return getDataTable(list);
+    }
+
+    /**
+     * 查询测风塔信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('dataQuery:windTowerStatusInfo:list')")
+    @GetMapping("/listAll")
+    public TableDataInfo listAll() {
+//        List<WindTowerInfo> windTowerInfos = windTowerInfoService.list();
+        List<WindTowerInfo> list = windTowerInfoService.lambdaQuery().orderByAsc(WindTowerInfo::getEquipmentNo).list();
+//        List<WindTowerInfo> collect = windTowerInfos.stream().sorted(Comparator.comparing(WindTowerInfo::getEquipmentNo)).collect(Collectors.toList());
+//        List<StatisticsSituation> statisticsSituationList = statisticsSituationService.list();
+//        Map<String, Long> map = new HashMap<>();
+//        for (StatisticsSituation s : statisticsSituationList) {
+//            map.put(s.getEquipmentId(), Long.parseLong(s.getStartTimeAndEndTime().split(",")[1]));
+//        }
+//        List<Map.Entry<String, Long>> lstEntry = new ArrayList<>(map.entrySet());
+//        //根据value 排序 降序
+//        lstEntry.sort(((o1, o2) -> {
+//            return o2.getValue().compareTo(o1.getValue());
+//        }));
+//        List<WindTowerInfo> windTowerInfoList = new ArrayList<>();
+//        lstEntry.forEach(o -> {
+//            //lstEntry 已经是排完序的了 for循环对比设备编号 添加到windTowerInfoList里  结果就是根据统计概述的数据截止时间从大到小的结果
+//            for (WindTowerInfo w : windTowerInfos) {
+//                if (w.getEquipmentNo().equals(o.getKey())) {
+//                    windTowerInfoList.add(w);
+//                }
+//            }
+//        });
+//        if(windTowerInfoList.size() != windTowerInfos.size()){
+//            for(WindTowerInfo w : windTowerInfos){
+//                if(windTowerInfoList.stream().filter(wt -> wt.getId().equals(w.getId())).collect(Collectors.toList()).isEmpty()){
+//                    windTowerInfoList.add(w);
+//                }
+//            }
+//        }
+        return getDataTable(list);
+    }
+
+    /**
+     * 查询测风塔信息列表 带禁选
+     */
+    @PreAuthorize("@ss.hasPermi('dataQuery:windTowerStatusInfo:list')")
+    @GetMapping("/listAllDisabled")
+    public AjaxResult listAllDisabled() {
+        List<WindTowerInfo> windTowerInfos = windTowerInfoService.list();
+        windTowerInfos.sort(Comparator.comparing(WindTowerInfo::getEquipmentNo));
+        List<Map<String, Object>> mapList = new ArrayList<>();
+        Map<String, Object> map = null;
+        for (WindTowerInfo w : windTowerInfos) {
+            map = new HashMap<>();
+            map.put("value", w.getEquipmentNo());
+            map.put("label", w.getName());
+            map.put("disabled", false);
+            mapList.add(map);
+        }
+        return AjaxResult.success(mapList);
+    }
+
+    /**
+     * 查询测风塔信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('dataQuery:windTowerStatusInfo:list')")
+    @GetMapping("/listEquipmentIdAndDataTime")
+    public AjaxResult listEquipmentIdAndDataTime() {
+        try {
+            return AjaxResult.success(windTowerInfoService.listEquipmentIdAndDataTime());
+        } catch (Exception e) {
+            return AjaxResult.error("获取测风塔列表失败:" + e);
+        }
+
+    }
+
+    /**
+     * 导出测风塔信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('dataQuery:windTowerStatusInfo:export')")
+    @Log(title = "测风塔信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, WindTowerInfo windTowerInfo) {
+        LambdaQueryWrapper<WindTowerInfo> queryWrapper = this.buildQueryParams(windTowerInfo);
+        List<WindTowerInfo> list = windTowerInfoService.list(queryWrapper);
+        ExcelUtil<WindTowerInfo> util = new ExcelUtil<>(WindTowerInfo.class);
+        util.exportExcel(response, list, "测风塔信息数据");
+    }
+
+    /**
+     * 获取测风塔信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dataQuery:windTowerStatusInfo:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id) {
+        return AjaxResult.success(windTowerInfoService.getById(id));
+    }
+
+    /**
+     * 新增测风塔信息
+     */
+    @PreAuthorize("@ss.hasPermi('dataQuery:windTowerStatusInfo:add')")
+    @Log(title = "测风塔信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody WindTowerInfo windTowerInfo) {
+        return toAjax(windTowerInfoService.saveWindTowerInfo(windTowerInfo) ? 1 : 0);
+    }
+
+    /**
+     * 修改测风塔信息
+     */
+    @PreAuthorize("@ss.hasPermi('dataQuery:windTowerStatusInfo:edit')")
+    @Log(title = "测风塔信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody WindTowerInfo windTowerInfo) {
+        windTowerInfoService.updateWindTowerInfo(windTowerInfo);
+        return toAjax(windTowerInfoService.updateById(windTowerInfo) ? 1 : 0);
+    }
+
+    /**
+     * 删除测风塔信息
+     */
+    @PreAuthorize("@ss.hasPermi('dataQuery:windTowerStatusInfo:remove')")
+    @Log(title = "测风塔信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String[] ids) {
+        return toAjax(windTowerInfoService.deleteWindTowerInfo(Arrays.asList(ids)) ? 1 : 0);
+    }
+
+    /*首页获取测风塔信息*/
+    @GetMapping("/dashAllWindInfo")
+    public TableDataInfo getDashAllWindInfo() {
+        return getDataTable(windTowerInfoService.getDashAllWindInfo());
+    }
+
+
+    /*分页查询设备编号查询测风塔信息*/
+    @GetMapping("/pageByEquipmentNo")
+    public Page pageByEquipmentNo(Integer current, Integer size, String equipmentNo) {
+        return windTowerInfoService.pageByEquipmentNo(current, size, equipmentNo);
+    }
+
+
+    /**
+     * 构建查询条件
+     **/
+    private LambdaQueryWrapper<WindTowerInfo> buildQueryParams(WindTowerInfo windTowerInfo) {
+        LambdaQueryWrapper<WindTowerInfo> queryWrapper = Wrappers.lambdaQuery();
+        if (StrUtil.isNotBlank(windTowerInfo.getName())) {
+            queryWrapper.like(WindTowerInfo::getName, windTowerInfo.getName());
+        }
+        if (StrUtil.isNotBlank(windTowerInfo.getModelNumber())) {
+            queryWrapper.eq(WindTowerInfo::getModelNumber, windTowerInfo.getModelNumber());
+        }
+        if (StrUtil.isNotBlank(windTowerInfo.getEquipmentNo())) {
+            queryWrapper.eq(WindTowerInfo::getEquipmentNo, windTowerInfo.getEquipmentNo());
+        }
+        if (ObjectUtil.isNotNull(windTowerInfo.getInstallationTime())) {
+            queryWrapper.eq(WindTowerInfo::getInstallationTime, windTowerInfo.getInstallationTime());
+        }
+        if (StrUtil.isNotBlank(windTowerInfo.getManufacturer())) {
+            queryWrapper.eq(WindTowerInfo::getManufacturer, windTowerInfo.getManufacturer());
+        }
+        if (ObjectUtil.isNotNull(windTowerInfo.getLongitude())) {
+            queryWrapper.eq(WindTowerInfo::getLongitude, windTowerInfo.getLongitude());
+        }
+        if (ObjectUtil.isNotNull(windTowerInfo.getLatitude())) {
+            queryWrapper.eq(WindTowerInfo::getLatitude, windTowerInfo.getLatitude());
+        }
+        return queryWrapper;
+    }
+
+
+    @PreAuthorize("@ss.hasPermi('dataQuery:windTowerStatusInfo:list')")
+    @GetMapping("/dashListAll")
+    public AjaxResult dashListAll(String projectId) {
+        HashMap<String, Object> finalMap = new HashMap<>();
+        List<HashMap<String, Object>> windTowerInfoList = new ArrayList<>();
+        // 过滤信息概述用于排序
+        List<StatisticsSituation> statisticsSituations = new ArrayList<>();
+        Project project = projectService.getById(projectId);
+        List<WindTowerInfo> windTowerInfos = windTowerInfoService.list();
+        List<StatisticsSituation> statisticsSituationList = statisticsSituationService.list();
+
+        // 分割获取设备编号集合
+        String[] strings = project.getRelationEquipment().split(",");
+        Arrays.sort(strings);
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        for(String str : strings){
+            /*找到设备编号*/
+            List<WindTowerInfo> filterWindTowerInfoList = windTowerInfos.stream().filter(w -> w.getEquipmentNo().equals(str)).collect(Collectors.toList());
+            WindTowerInfo windTowerInfo = filterWindTowerInfoList.get(0);
+            List<StatisticsSituation> collect2 = statisticsSituationList.stream().filter(s -> s.getEquipmentId().equals(windTowerInfo.getEquipmentNo())).collect(Collectors.toList());
+            if(!collect2.isEmpty()){
+                HashMap<String, Object> hashMap = new HashMap<>();
+                hashMap.put("label",windTowerInfo.getName());
+                hashMap.put("value",windTowerInfo.getEquipmentNo());
+                String[] split = collect2.get(0).getStartTimeAndEndTime().split(",");
+                String startTime = sdf.format(new Date(Long.parseLong(split[0])));
+                String endTime = sdf.format(new Date(Long.parseLong(split[1])));
+                hashMap.put("date",startTime + " - " + endTime);
+                windTowerInfoList.add(hashMap);
+                statisticsSituations.add(collect2.get(0));
+            }
+        }
+
+        // 针对接入最新时间排序获取最新接入数据的测风塔编号
+        Map<String, Long> map = new HashMap<>();
+        for (StatisticsSituation s : statisticsSituations) {
+            map.put(s.getEquipmentId(), Long.parseLong(s.getStartTimeAndEndTime().split(",")[1]));
+        }
+        List<Map.Entry<String, Long>> lstEntry = new ArrayList<>(map.entrySet());
+        //根据value 排序 降序
+        lstEntry.sort(((o1, o2) -> {
+            return o2.getValue().compareTo(o1.getValue());
+        }));
+        finalMap.put("list",windTowerInfoList);
+        finalMap.put("equipmentNo",lstEntry.get(0).getKey());
+        return AjaxResult.success(finalMap);
+    }
+
+
+}

+ 52 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/AnalysisLog.java

@@ -0,0 +1,52 @@
+package com.jiayue.biz.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jiayue.common.annotation.Excel;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 【请填写功能名称】对象 display_config
+ *
+ * @author L.ym
+ * @date 2022-05-17
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("analysis_log")
+public class AnalysisLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.ASSIGN_UUID)
+    private String id;
+
+    /**
+     * 设备编号
+     */
+    @Excel(name = "设备编号")
+    private String equipmentId;
+
+    /**
+     * 解析状态 0:未解析,1:解析,2:解析异常,3:上传解析
+     */
+    @Excel(name = "解析状态")
+    private String status;
+
+    /**
+     * 解析时间
+     */
+    @Excel(name = "解析时间")
+    private Date time;
+}

+ 48 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/Company.java

@@ -0,0 +1,48 @@
+package com.jiayue.biz.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import com.jiayue.common.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+/**
+ * 公司对象 company
+ *
+ * @author L.ym
+ * @date 2022-12-27
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("company")
+public class Company implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 主键id
+     */
+    @TableId(type = IdType.ASSIGN_UUID)
+    private String id;
+
+    /**
+     * 公司名称
+     */
+    @Excel(name = "公司名称")
+    private String name;
+
+    /**
+     * 公司地址
+     */
+    @Excel(name = "公司地址")
+    private String address;
+}

+ 18 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/Coordinates.java

@@ -0,0 +1,18 @@
+package com.jiayue.biz.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 项目拐点坐标
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class Coordinates {
+    //经度
+    private String longitude;
+    //纬度
+    private String latitude;
+}

+ 69 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/DisplayConfig.java

@@ -0,0 +1,69 @@
+package com.jiayue.biz.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import com.jiayue.common.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+/**
+ * 【请填写功能名称】对象 display_config
+ *
+ * @author L.ym
+ * @date 2022-05-17
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("display_config")
+public class DisplayConfig implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+
+    /** $column.columnComment */
+    @TableId(type = IdType.ASSIGN_UUID)
+    private String id;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}" , readConverterExp = "$column.readConverterExp()")
+    private String displaySign;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}" , readConverterExp = "$column.readConverterExp()")
+    private String showCode;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}" , readConverterExp = "$column.readConverterExp()")
+    private String hiddenCode;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}" , readConverterExp = "$column.readConverterExp()")
+    private String backupa;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}" , readConverterExp = "$column.readConverterExp()")
+    private String backupb;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}" , readConverterExp = "$column.readConverterExp()")
+    private String backupc;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}" , readConverterExp = "$column.readConverterExp()")
+    private String backupd;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}" , readConverterExp = "$column.readConverterExp()")
+    private String backupe;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}" , readConverterExp = "$column.readConverterExp()")
+    private String backupf;
+}

+ 69 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/ElectricField.java

@@ -0,0 +1,69 @@
+package com.jiayue.biz.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jiayue.common.annotation.Excel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import javax.validation.constraints.Digits;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 场站实体
+ *
+ * @author yh
+ * @version 1.0
+ * @since 2019/7/22 11:16
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("electric_fieId")
+public class ElectricField implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+
+    /** 主键ID */
+    @TableId(type = IdType.ASSIGN_UUID)
+    private String id;
+    /**
+     * 场站编号(运维标识,主键)
+     */
+    private String stationCode;
+
+    /**
+     * 电站名称
+     */
+    @Excel(name = "电站名称")
+    private String name;
+    /**
+     * 场站所属公司
+     */
+    @Excel(name = "场站所属公司")
+    private String company;
+
+    /**
+     * 场站位置
+     */
+    @Excel(name = "场站位置")
+    private String location;
+
+    /**
+     * 场站经度
+     */
+    @Excel(name = "场站经度")
+    @Digits(integer = 10, fraction = 4)
+    private BigDecimal longitude;
+
+    /**
+     * 场站纬度
+     */
+    @Excel(name = "场站纬度")
+    @Digits(integer = 10, fraction = 4)
+    private BigDecimal latitude;
+
+}

+ 119 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/ElectricStation.java

@@ -0,0 +1,119 @@
+package com.jiayue.biz.domain;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jiayue.biz.eunms.ElectricFieldStatrsEnum;
+import com.jiayue.biz.eunms.ElectricFieldTypeEnum;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.Digits;
+import java.math.BigDecimal;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName("electric_station")
+public class ElectricStation {
+
+    /**
+     * id
+     */
+    @TableId
+    private String id;
+
+
+    /**
+     * 场站编号(运维标识,主键)
+     */
+    private String stationCode;
+
+    /**
+     * 场站状态
+     */
+    private String stationStatus;
+
+    /**
+     * 电站名称
+     */
+    private String name;
+
+    /**
+     * 场站标识
+     */
+    private String sign;
+
+
+    /**
+     * 别名(上网变电站名称)
+     */
+    private String netSubstationName;
+
+    /**
+     * 场站装机容量(MW)
+     */
+    @Digits(integer = 10, fraction = 2)
+    private BigDecimal capacity;
+
+    /**
+     * 并网设备数
+     */
+//    private Integer gridCE;
+
+    /**
+     * 场站经度
+     */
+    @Digits(integer = 10, fraction = 6)
+    private BigDecimal longitude;
+
+    /**
+     * 场站纬度
+     */
+    @Digits(integer = 10, fraction = 6)
+    private BigDecimal latitude;
+
+    /**
+     * 场站海拔
+     */
+    private BigDecimal altitude;
+
+
+    /**
+     * 场站类型
+     */
+    private String electricFieldType;
+
+    /**
+     * 上报省调
+     */
+//    private ProvinceEnum provinceEnum;
+
+    /**
+     * 入库时间间隔  单位 s
+     */
+//    private Integer interval;
+
+
+    /**
+     * 场站所属公司
+     */
+    private String company;
+
+    /**
+     * 场站位置
+     */
+    private String location;
+
+    /**
+     * 场站面积
+     */
+    private BigDecimal area;
+
+    /**
+     * 关联设备
+     */
+    private String relationEquipment;
+
+
+}

+ 31 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/Email.java

@@ -0,0 +1,31 @@
+package com.jiayue.biz.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jiayue.common.annotation.Excel;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName("email_parameter")
+public class Email implements Serializable {
+    @TableId
+    private String id;
+    
+    private String userName;
+
+    private String password;
+
+    private String host;
+
+    private String path;
+
+
+}

+ 60 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/EmailWindTowerInfo.java

@@ -0,0 +1,60 @@
+package com.jiayue.biz.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jiayue.common.annotation.Excel;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * email备份测风塔信息对象
+ *
+ * @author L.ym
+ * @date 2022-05-11
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("email_wind_tower_info")
+public class EmailWindTowerInfo implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+
+    /** id */
+    @TableId(type = IdType.ASSIGN_UUID)
+    private String id;
+    /** 名称 */
+    @Excel(name = "名称")
+    private String name;
+
+    /** 设备编号 */
+    @Excel(name = "设备编号")
+    private String equipmentNo;
+
+    /** 记录仪编号 */
+    @Excel(name = "记录仪编号")
+    private String recorderNo;
+
+    /** 测风塔层高 */
+    @Excel(name = "测风塔层高")
+    private String heights;
+
+    /** 设备数据密码 */
+    @Excel(name = "设备数据密码")
+    private String password;
+
+    /** 经度 */
+    @Excel(name = "经度")
+    private BigDecimal longitude;
+
+    /** 纬度 */
+    @Excel(name = "纬度")
+    private BigDecimal latitude;
+}

+ 99 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/Equipment.java

@@ -0,0 +1,99 @@
+package com.jiayue.biz.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.jiayue.common.annotation.Excel;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 塔基本信息
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class Equipment {
+
+    //id
+    private String id;
+
+    //测风塔名称
+    private String name;
+
+    /**
+     * 型号
+     */
+    private String modelNumber;
+
+    /**
+     * 设备编号
+     */
+    private String equipmentNo;
+
+    /**
+     * 记录仪编号
+     */
+    private String recorderNo;
+    /**
+     * 测风塔风速层高
+     */
+    private String heights;
+    /**
+     * 测风塔风向层高
+     */
+    private String wdHeights;
+
+    /**
+     * 设备数据密码
+     */
+    private String password;
+    /**
+     * 安装时间
+     */
+    private String installationTime;
+
+    /**
+     * 制造商
+     */
+    private String manufacturer;
+
+    /**
+     * 经度
+     */
+    private String longitude;
+
+    /**
+     * 纬度
+     */
+    private String latitude;
+
+    /**
+     * 海拔
+     */
+    private String altitude;
+
+    /**
+     * 地形复杂程度
+     */
+    private String terrainComplexity;
+    /**
+     * 测风塔状态 停机:0 运行为:1
+     */
+    private String status;
+    /**
+     * 首页展示层高 暂用用于首页风功率曲线
+     */
+    private String displayHeight;
+
+    /**
+     *测风塔的来源 email=>邮件塔  modbus=>实时塔
+     */
+    private String type;
+
+
+
+}

+ 54 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/EquipmentAttribute.java

@@ -0,0 +1,54 @@
+package com.jiayue.biz.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import com.jiayue.common.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+/**
+ * 数据类型对象 equipment_attribute
+ *
+ * @author L.ym
+ * @date 2022-05-23
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("equipment_attribute")
+public class EquipmentAttribute implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+
+    /** 主键ID */
+    @TableId(type = IdType.ASSIGN_UUID)
+    private String id;
+
+    /** 属性的定义 */
+    @Excel(name = "属性的定义")
+    private String explanation;
+
+    /** 属性所对应的的类的属性 */
+    @Excel(name = "属性所对应的的类的属性")
+    private String fieldName;
+
+    /** 计量单位 */
+    @Excel(name = "计量单位")
+    private String measurementUnits;
+
+    /** 设备类型 */
+    @Excel(name = "设备类型")
+    private String equipmentType;
+
+
+    /** 属性作用 */
+    @Excel(name = "属性作用")
+    private String attributeFunction;
+}

+ 19 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/FInfo.java

@@ -0,0 +1,19 @@
+package com.jiayue.biz.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 风电
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class FInfo {
+
+    private String num;
+    private String capacity;
+    private String fjNum;
+
+}

+ 83 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/FakeDataRecord.java

@@ -0,0 +1,83 @@
+package com.jiayue.biz.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jiayue.common.annotation.Excel;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import nonapi.io.github.classgraph.json.Id;
+import org.springframework.core.annotation.Order;
+
+import javax.validation.constraints.Digits;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 组装数据时因数据不合理生成假数据的记录
+ *
+ * @author: xiuwei
+ * @version:
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+public class FakeDataRecord {
+
+	@Id
+	private String id;
+
+
+	/**
+	 * 时间
+	 */
+	@Excel(name = "时间")
+	private Date time;
+
+	/**
+	 * 设备编号
+	 */
+	@Excel(name = "设备编号")
+	private Integer equipmentNo;
+
+
+	/**
+	 * 不合理数据的判定原因
+	 */
+	@Excel(name = "不合理数据的判定原因")
+	private String irrationalDataType;
+
+
+
+	/**
+	 * 原始值
+	 */
+	@Digits(integer = 10, fraction = 2)
+	@Excel(name = "原始值")
+	private BigDecimal originalValue = new BigDecimal(-99);
+
+
+
+	/**
+	 * 修正值
+	 */
+	@Digits(integer = 10, fraction = 2)
+	@Excel(name = "修正值")
+	private BigDecimal correctionValue = new BigDecimal(-99);
+
+	/**
+	 * 不合理数据的判定原因的枚举
+	 */
+	public  enum IrrationalDataType{
+		/**
+		 * 越上限,越下限,死值,突变值, 合理的,其他原因
+		 */
+		OverMax,LowerMin,DeadVal,SuddenChange,Rational,Other
+
+	}
+
+
+
+
+}

+ 55 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/FanJsonInfo.java

@@ -0,0 +1,55 @@
+package com.jiayue.biz.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ *     fdl 发电量
+ *     fd1 发电量1期  ...
+ *     ZFX 主风向 天气
+ *     pjfs 风速 日照强度  平均
+ *     zdfs 风速 日照强度  最大
+ *     zxfs 风速 日照强度  最小
+ *     wdzg 温度 最高
+ *     wdzd 温度 最低
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class FanJsonInfo {
+
+    private String fdl;
+    private String fdly;
+    private String fdln;
+    private String fd1;
+    private String fd1y;
+    private String fd1n;
+    private String fd2;
+    private String fd2y;
+    private String fd2n;
+    private String fd3;
+    private String fd3y;
+    private String fd3n;
+    private String fd4;
+    private String fd4y;
+    private String fd4n;
+    private String fd5;
+    private String fd5y;
+    private String fd5n;
+    private String fd6;
+    private String fd6y;
+    private String fd6n;
+    private String fd7;
+    private String fd7y;
+    private String fd7n;
+    private String fd8;
+    private String fd8y;
+    private String fd8n;
+    private String zfx;
+    private String pjfs;
+    private String zdfs;
+    private String zxfs;
+    private String wdzg;
+    private String wdzd;
+}

+ 31 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/FanModelData.java

@@ -0,0 +1,31 @@
+package com.jiayue.biz.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Document("fan_model_data")
+public class FanModelData {
+    //id
+    private String id;
+    //场站id
+    private String stationId;
+    //场站名称
+    private String stationName;
+    //机型名称
+    private String modelName;
+    //场站简称
+    private String stationNameEasy;
+    //平均风速
+    private String wsAve;
+    //主风向
+    private String wdSum;
+    //发电量年
+    private String generatingCapacity;
+    //满发小时数
+    private String realTimeTotal;
+}

+ 26 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/FanTower.java

@@ -0,0 +1,26 @@
+package com.jiayue.biz.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+//风机/塔
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class FanTower {
+    private String id;
+    //风机名称
+    private String FanName;
+    //风机经度
+    private String longitudeFan;
+    //风机纬度
+    private String latitudeFan;
+    //风机型号
+    private String FanModel;
+    //轮毂高度
+    private String hubHeight;
+    //风机类型,是新风机还是老风机
+    private String type;
+
+}

+ 17 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/GInfo.java

@@ -0,0 +1,17 @@
+package com.jiayue.biz.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 光伏
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class GInfo {
+    private String num;
+    private String capacity;
+    private String nbqNum;
+}

+ 27 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/HdInfo.java

@@ -0,0 +1,27 @@
+package com.jiayue.biz.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 华电基本信息
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class HdInfo {
+   //风场站个数
+   private String fNum;
+   //风小时数
+   private String fHours;
+   //光场站个数
+   private String gNum;
+   //光小时数
+   private String gHours;
+   //风场站名称
+   private String fEName;
+   //光场站名称
+   private String gEName;
+
+}

+ 68 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/InverterInfo.java

@@ -0,0 +1,68 @@
+package com.jiayue.biz.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jiayue.common.annotation.Excel;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.Digits;
+import java.math.BigDecimal;
+
+/**
+ *
+ * 逆变器实体
+ *
+ * */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("inverter_info")
+public class InverterInfo {
+    /**
+     * id
+     */
+    @TableId(type = IdType.ASSIGN_UUID)
+    private String id;
+
+    /**
+     * 名称
+     */
+    @Excel(name = "名称")
+    private String name;
+
+    /**
+     * 型号
+     */
+    @Excel(name = "型号")
+    private String modelNumber;
+    /**
+     * 经度
+     */
+    @Excel(name = "经度")
+    private String longitude;
+
+    /**
+     * 纬度
+     */
+    @Excel(name = "纬度")
+    private String latitude;
+    /**
+     * 额定功率(KW)
+     */
+    @Excel(name = "额定功率")
+    private String capacity;
+    /**
+     * 光伏组件型号
+     */
+    @Excel(name = "光伏组件型号")
+    private String batteryModel;
+
+    /**
+     * 光伏组件数量(个)
+     */
+    @Excel(name = "光伏组件数量")
+    private String batteryNumber;
+}

+ 20 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/OtherStationInfo.java

@@ -0,0 +1,20 @@
+package com.jiayue.biz.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+//全省其他场站信息
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Document("other_station_info")
+public class OtherStationInfo {
+    private String id;
+    private String stationName;
+    private String stationType;
+    private String longitude;
+    private String latitude;
+    private String company;
+}

+ 22 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/PInfo.java

@@ -0,0 +1,22 @@
+package com.jiayue.biz.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 前期项目信息
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class PInfo {
+    //已发起项目数目
+    private String initiatedNum;
+    //已完成核准项目数目
+    private String approvalNum;
+    //正在实施项目数目
+    private String buildNum;
+    //投产发电项目数目
+    private String electricNum;
+}

+ 33 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/PointAttribute.java

@@ -0,0 +1,33 @@
+package com.jiayue.biz.domain;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 点表属性表
+ *
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+//@TableName("point_attribute")
+public class PointAttribute {
+    //ID
+    @TableId
+    private String id;
+    //点位号
+    private Integer point;
+    //点位含义
+    private String meaning;
+    //单位
+    private String unit;
+    //场站Id
+    private String stationId;
+    //设备编号
+    private String equipmentNo;
+
+
+}

+ 78 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/Project.java

@@ -0,0 +1,78 @@
+package com.jiayue.biz.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import com.jiayue.common.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+/**
+ * 项目对象 project
+ *
+ * @author L.ym
+ * @date 2022-12-22
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("project")
+public class Project implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 主键id
+     */
+    @TableId(type = IdType.ASSIGN_UUID)
+    private String id;
+
+    /**
+     * 项目名称
+     */
+    @Excel(name = "项目名称")
+    private String projectName;
+
+    /**
+     * 所属公司
+     */
+    @Excel(name = "所属公司")
+    private String company;
+
+    /**
+     * 省份
+     */
+    @Excel(name = "省份")
+    private String province;
+
+    /**
+     * 开始日期
+     */
+    @Excel(name = "开始日期")
+    private Date startDate;
+
+    /**
+     * 完工日期
+     */
+    @Excel(name = "完工日期")
+    private Date endDate;
+
+    /**
+     * 项目状态 0:立项 1:运行 2:终止 3:结束
+     */
+    @Excel(name = "项目状态")
+    private String status;
+
+    /**
+     * 关联设备
+     */
+    @Excel(name = "关联设备")
+    private String relationEquipment;
+}

+ 32 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/ProjectBasicInfo.java

@@ -0,0 +1,32 @@
+package com.jiayue.biz.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 项目基本信息
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProjectBasicInfo {
+
+    //项目全称
+    private String projectName;
+    //项目简称
+    private String projectNameEasy;
+    //项目状态
+    private String projectState;
+    //项目类别
+    private String projectType;
+    //项目类型
+    private String projectSort;
+    //项目概述
+    private String projectOverview;
+    //项目风力概述
+    private String resourcesOverview;
+    //项目经纬度
+    private String position;
+
+}

+ 31 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/ProjectInfo.java

@@ -0,0 +1,31 @@
+package com.jiayue.biz.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+import java.util.List;
+
+/**
+ * 项目信息
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Document("project_info")
+public class ProjectInfo {
+
+    private String id;
+    //基本信息
+    private ProjectBasicInfo projectBasicInfo;
+    //关联设备
+    private List<Equipment> equipment;
+    //拐点坐标
+    private List<List<Coordinates>> coordinates;
+    //风机信息
+    private List<FanTower> fanTowerList;
+
+
+
+}

+ 23 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/ProjectMenusOne.java

@@ -0,0 +1,23 @@
+package com.jiayue.biz.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+/**
+ * 一级菜单
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProjectMenusOne {
+    private String id;
+    //序号
+    private String index;
+    //工作内容
+    private String workContent;
+    //计划完成时间
+    private String planTime;
+    private List<ProjectMenusTow> projectMenusTows;
+}

+ 24 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/ProjectMenusThree.java

@@ -0,0 +1,24 @@
+package com.jiayue.biz.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 三级菜单
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class ProjectMenusThree {
+    private String id;
+    //序号
+    private String index;
+    //工作内容
+    private String workContent;
+    //计划完成时间
+    private String realTime;
+    //备注
+    private String remark;
+
+}

+ 25 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/ProjectMenusTow.java

@@ -0,0 +1,25 @@
+package com.jiayue.biz.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * 二级菜单
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProjectMenusTow {
+    private String id;
+    //序号
+    private String index;
+    //工作内容
+    private String workContent;
+    //计划完成时间
+    private String planTime;
+    //三级菜单
+    private List<ProjectMenusThree> projectMenusThreeList;
+}

+ 27 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/ProjectProgress.java

@@ -0,0 +1,27 @@
+package com.jiayue.biz.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+import java.util.List;
+
+/**
+ * 项目进展
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Document("project_progress")
+public class ProjectProgress {
+    //id
+    private String id;
+    //项目Id
+    private String projectId;
+
+    private List<ProjectMenusOne> projectMenusOneList;
+
+
+
+}

+ 72 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/ProphaseAnemometryData.java

@@ -0,0 +1,72 @@
+package com.jiayue.biz.domain;
+
+import lombok.Data;
+
+import java.sql.Timestamp;
+
+/**
+ * 前期塔测风数据采集表
+ * TDengine 超级表
+ *
+ * @author L.ym
+ * @date 2023-03-14
+ **/
+@Data
+public class ProphaseAnemometryData {
+    /**
+     * 时间戳
+     **/
+    private Timestamp ts;
+    /**
+     * 风速瞬时值(m/s)
+     **/
+    private Float wsInst;
+    /**
+     * 风速最大值(m/s)
+     **/
+    private Float wsMax;
+    /**
+     * 风速最小值(m/s)
+     **/
+    private Float wsMin;
+    /**
+     * 风速平均值(m/s)
+     **/
+    private Float wsAve;
+    /**
+     * 风速阵风(m/s)
+     **/
+    private Float wsGust;
+    /**
+     * 风速标准差(m/s)
+     **/
+    private Float wsSta;
+    /**
+     * 风向瞬时值(°)
+     **/
+    private Float wdInst;
+    /**
+     * 风向最大值(°)
+     **/
+    private Float wdMax;
+    /**
+     * 风向最小值(°)
+     **/
+    private Float wdMin;
+    /**
+     * 风向平均值(°)
+     **/
+    private Float wdAve;
+    /**
+     * 风向标准差(°)
+     **/
+    private Float wdSta;
+    /**
+     * 设备ID
+     **/
+    private String equipmentId;
+    /**
+     * 层高
+     **/
+    private String layerHeight;
+}

+ 68 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/ProphaseAnemometryDataOrg.java

@@ -0,0 +1,68 @@
+package com.jiayue.biz.domain;
+
+import lombok.Data;
+
+import java.sql.Timestamp;
+
+/**
+ * 原始数据
+ */
+@Data
+public class ProphaseAnemometryDataOrg {
+    /**
+     * 时间戳
+     **/
+    private Timestamp ts;
+    /**
+     * 风速瞬时值(m/s)
+     **/
+    private Float wsInst;
+    /**
+     * 风速最大值(m/s)
+     **/
+    private Float wsMax;
+    /**
+     * 风速最小值(m/s)
+     **/
+    private Float wsMin;
+    /**
+     * 风速平均值(m/s)
+     **/
+    private Float wsAve;
+    /**
+     * 风速阵风(m/s)
+     **/
+    private Float wsGust;
+    /**
+     * 风速标准差(m/s)
+     **/
+    private Float wsSta;
+    /**
+     * 风向瞬时值(°)
+     **/
+    private Float wdInst;
+    /**
+     * 风向最大值(°)
+     **/
+    private Float wdMax;
+    /**
+     * 风向最小值(°)
+     **/
+    private Float wdMin;
+    /**
+     * 风向平均值(°)
+     **/
+    private Float wdAve;
+    /**
+     * 风向标准差(°)
+     **/
+    private Float wdSta;
+    /**
+     * 设备ID
+     **/
+    private String equipmentId;
+    /**
+     * 层高
+     **/
+    private String layerHeight;
+}

+ 88 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/ProphaseWeatherData.java

@@ -0,0 +1,88 @@
+package com.jiayue.biz.domain;
+
+import lombok.Data;
+
+import java.sql.Timestamp;
+
+/**
+ * 前期塔温湿压数据采集表
+ * TDengine 超级表
+ *
+ * @author L.ym
+ * @date 2023-03-14
+ **/
+@Data
+public class ProphaseWeatherData {
+    /**
+     * 时间戳
+     **/
+    private Timestamp ts;
+    /**
+     * 温度瞬时值(℃)
+     **/
+    private Float tInst;
+    /**
+     * 温度最大值(℃)
+     **/
+    private Float tMax;
+    /**
+     * 温度最小值(℃)
+     **/
+    private Float tMin;
+    /**
+     * 温度平均值(℃)
+     **/
+    private Float tAve;
+    /**
+     * 温度标准差(℃)
+     **/
+    private Float tSta;
+    /**
+     * 湿度瞬时值(%)
+     **/
+    private Float rhInst;
+    /**
+     * 湿度最大值(%)
+     **/
+    private Float rhMax;
+    /**
+     * 湿度最小值(%)
+     **/
+    private Float rhMin;
+    /**
+     * 湿度平均值(%)
+     **/
+    private Float rhAve;
+    /**
+     * 湿度标准差(%)
+     **/
+    private Float rhSta;
+    /**
+     * 气压瞬时值(hPa)
+     **/
+    private Float paInst;
+    /**
+     * 气压最大值(hPa)
+     **/
+    private Float paMax;
+    /**
+     * 气压最小值(hPa)
+     **/
+    private Float paMin;
+    /**
+     * 气压平均值(hPa)
+     **/
+    private Float paAve;
+    /**
+     * 气压标准差(hPa)
+     **/
+    private Float paSta;
+    /**
+     * 空气密度(Kg/m³)
+     **/
+    private Float airDensity;
+    /**
+     * 设备ID
+     **/
+    private String equipmentId;
+}

+ 84 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/ProphaseWeatherDataOrg.java

@@ -0,0 +1,84 @@
+package com.jiayue.biz.domain;
+
+import lombok.Data;
+
+import java.sql.Timestamp;
+
+/**
+ * 原始数据
+ */
+@Data
+public class ProphaseWeatherDataOrg {
+    /**
+     * 时间戳
+     **/
+    private Timestamp ts;
+    /**
+     * 温度瞬时值(℃)
+     **/
+    private Float tInst;
+    /**
+     * 温度最大值(℃)
+     **/
+    private Float tMax;
+    /**
+     * 温度最小值(℃)
+     **/
+    private Float tMin;
+    /**
+     * 温度平均值(℃)
+     **/
+    private Float tAve;
+    /**
+     * 温度标准差(℃)
+     **/
+    private Float tSta;
+    /**
+     * 湿度瞬时值(%)
+     **/
+    private Float rhInst;
+    /**
+     * 湿度最大值(%)
+     **/
+    private Float rhMax;
+    /**
+     * 湿度最小值(%)
+     **/
+    private Float rhMin;
+    /**
+     * 湿度平均值(%)
+     **/
+    private Float rhAve;
+    /**
+     * 湿度标准差(%)
+     **/
+    private Float rhSta;
+    /**
+     * 气压瞬时值(hPa)
+     **/
+    private Float paInst;
+    /**
+     * 气压最大值(hPa)
+     **/
+    private Float paMax;
+    /**
+     * 气压最小值(hPa)
+     **/
+    private Float paMin;
+    /**
+     * 气压平均值(hPa)
+     **/
+    private Float paAve;
+    /**
+     * 气压标准差(hPa)
+     **/
+    private Float paSta;
+    /**
+     * 空气密度(Kg/m³)
+     **/
+    private Float airDensity;
+    /**
+     * 设备ID
+     **/
+    private String equipmentId;
+}

+ 22 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/ProvinceInfo.java

@@ -0,0 +1,22 @@
+package com.jiayue.biz.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+
+/**
+ * 省份资源信息
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProvinceInfo{
+    private String fNum;
+    private String fHours;
+    private String gNum;
+    private String gHours;
+
+
+
+}

+ 27 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/ProvincialEnergyStations.java

@@ -0,0 +1,27 @@
+package com.jiayue.biz.domain;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+/**
+ * 全省资源信息
+ */
+@Document("province_info")
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+public class ProvincialEnergyStations {
+    private String id;
+    //黑龙江省风光资源概述
+    private String resourcesOverview;
+    //华电资源概况
+    private HdInfo hdInfo;
+    //全省资源概况
+    private ProvinceInfo provinceInfo;
+
+
+
+}

+ 68 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/PvModuleModel.java

@@ -0,0 +1,68 @@
+package com.jiayue.biz.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jiayue.common.annotation.Excel;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.Digits;
+import java.math.BigDecimal;
+
+/**
+ *
+ * 光伏组件(光伏板)实体
+ *
+ * */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("pv_module_info")
+public class PvModuleModel {
+    /**
+     * id
+     */
+    @TableId(type = IdType.ASSIGN_UUID)
+    private String id;
+    /*型号*/
+    @Excel(name = "型号")
+    private String modelNumber;
+
+    /*单个装机容量*/
+    @Excel(name = "组件容量")
+    private String singleCap;
+
+    /*最大工作电压*/
+    @Excel(name = "最大工作电压")
+    private BigDecimal maximumExcitationVoltage;
+
+    /*最大工作电流*/
+    @Excel(name = "最大工作电流")
+    private BigDecimal maximumPowerCurrent;
+
+    /*开路电压*/
+    @Excel(name = "开路电压")
+    private BigDecimal openCircuitVoltage;
+
+    /*短路电流*/
+    @Excel(name = "短路电流")
+    private BigDecimal shortCircuitCurrent;
+
+    /*组件工作效率*/
+    @Excel(name = "组件工作效率")
+    private BigDecimal efficiencyOfWork;
+
+    /*旋转方式*/
+    @Excel(name = "旋转方式")
+    private String rotationMode;
+
+    /*安装倾斜度*/
+    @Excel(name = "安装倾斜度")
+    private BigDecimal gradient;
+
+    /*单个光伏组件面积*/
+    @Excel(name = "组件面积")
+    private BigDecimal singleArea;
+}

+ 25 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/StationBasicInfo.java

@@ -0,0 +1,25 @@
+package com.jiayue.biz.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 场站基本信息
+ */
+@AllArgsConstructor
+@NoArgsConstructor
+@Data
+public class StationBasicInfo {
+    private String stationName;
+    //简称
+    private String abbreviation;
+    //场站id
+    private String stationId;
+    //场站类型
+    private String stationType;
+    //经度
+    private String longitude;
+    //纬度
+    private String latitude;
+}

+ 124 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/StationEnvironmentData.java

@@ -0,0 +1,124 @@
+package com.jiayue.biz.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.sql.Timestamp;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class StationEnvironmentData {
+
+    /**
+     * 时间戳
+     **/
+    private Timestamp ts;
+    /**
+     * 温度瞬时值(℃)
+     **/
+    private Float tInst;
+    /**
+     * 温度最大值(℃)
+     **/
+    private Float tMax;
+    /**
+     * 温度最小值(℃)
+     **/
+    private Float tMin;
+    /**
+     * 温度平均值(℃)
+     **/
+    private Float tAve;
+    /**
+     * 温度标准差(℃)
+     **/
+    private Float tSta;
+    /**
+     * 温度实时值(℃)
+     **/
+    private Float tNow;
+    /**
+     * 湿度瞬时值(%)
+     **/
+    private Float rhInst;
+    /**
+     * 湿度最大值(%)
+     **/
+    private Float rhMax;
+    /**
+     * 湿度最小值(%)
+     **/
+    private Float rhMin;
+    /**
+     * 湿度平均值(%)
+     **/
+    private Float rhAve;
+    /**
+     * 湿度标准差(%)
+     **/
+    private Float rhSta;
+    /**
+     * 湿度实时值(%)
+     **/
+    private Float rhNow;
+    /**
+     * 气压瞬时值(hPa)
+     **/
+    private Float paInst;
+    /**
+     * 气压最大值(hPa)
+     **/
+    private Float paMax;
+    /**
+     * 气压最小值(hPa)
+     **/
+    private Float paMin;
+    /**
+     * 气压平均值(hPa)
+     **/
+    private Float paAve;
+    /**
+     * 气压标准差(hPa)
+     **/
+    private Float paSta;
+    /**
+     * 电压实时值(hPa)
+     **/
+    private Float paNow;
+    /**
+     * 电压瞬时值(hPa)
+     **/
+    private Float vInst;
+    /**
+     * 电压最大值(hPa)
+     **/
+    private Float vMax;
+    /**
+     * 电压最小值(hPa)
+     **/
+    private Float vMin;
+    /**
+     * 电压平均值(hPa)
+     **/
+    private Float vAve;
+    /**
+     * 电压标准差(hPa)
+     **/
+    private Float vSta;
+    /**
+     * 电压实时值(hPa)
+     **/
+    private Float vNow;
+    /**
+     * 空气密度(Kg/m³)
+     **/
+    private Float airDensity;
+    /**
+     * 设备ID
+     **/
+    private String stationId;
+
+
+}

+ 29 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/StationInfo.java

@@ -0,0 +1,29 @@
+package com.jiayue.biz.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+import java.util.List;
+
+/**
+ * 场站信息
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Document("station_info")
+public class StationInfo {
+    private String id;
+    //基本信息
+    private StationBasicInfo stationBasicInfo;
+    //风机信息
+    private List<FanTower> fanTowerList;
+    //逆变器
+    private List<InverterInfo> inverterInfos;
+    //塔信息
+    private List<Equipment> equipment;
+    //环境检测仪
+    private List<WeatherStationInfo> weatherStationInfos;
+}

+ 83 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/StationWindData.java

@@ -0,0 +1,83 @@
+package com.jiayue.biz.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.sql.Timestamp;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class StationWindData {
+
+    /**
+     * 时间戳
+     **/
+    private Timestamp ts;
+    /**
+     * 风速瞬时值(m/s)
+     **/
+    private Float wsInst;
+    /**
+     * 风速最大值(m/s)
+     **/
+    private Float wsMax;
+    /**
+     * 风速最小值(m/s)
+     **/
+    private Float wsMin;
+    /**
+     * 风速平均值(m/s)
+     **/
+    private Float wsAve;
+    /**
+     * 风速极大值(m/s)
+     **/
+    private Float wsGreat;
+    /**
+     * 风速阵风(m/s)
+     **/
+    private Float wsGust;
+    /**
+     * 风速标准差(m/s)
+     **/
+    private Float wsSta;
+    /**
+     * 风向瞬时值(°)
+     **/
+    private Float wdInst;
+    /**
+     * 风向最大值(°)
+     **/
+    private Float wdMax;
+    /**
+     * 风向最小值(°)
+     **/
+    private Float wdMin;
+    /**
+     * 风向平均值(°)
+     **/
+    private Float wdAve;
+    /**
+     * 风向标准差(°)
+     **/
+    private Float wdSta;
+    /**
+     * 风向实时值(°)
+     **/
+    private Float wdNow;
+    /**
+     * 最大风速时风向(°)
+     **/
+    private Float wdOnWs;
+    /**
+     * 设备ID
+     **/
+    private String stationId;
+    /**
+     * 层高
+     **/
+    private String layerHeight;
+
+}

+ 96 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/StatisticsSituation.java

@@ -0,0 +1,96 @@
+package com.jiayue.biz.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import com.jiayue.common.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+/**
+ * 【请填写功能名称】对象 statistics_situation
+ *
+ * @author L.ym
+ * @date 2022-08-26
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("statistics_situation")
+public class StatisticsSituation implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 主键id
+     */
+    @TableId(type = IdType.ASSIGN_UUID)
+    private String id;
+
+    /**
+     * 设备iid
+     */
+    @Excel(name = "设备iid")
+    private String equipmentId;
+
+    /**
+     * 数据起止时间
+     */
+    @Excel(name = "数据起止时间")
+    private String startTimeAndEndTime;
+
+    /**
+     * 140m平均风速
+     */
+    @Excel(name = "140m平均风速")
+    private BigDecimal wsAve140;
+
+    /**
+     * 120m平均风速
+     */
+    @Excel(name = "120m平均风速")
+    private BigDecimal wsAve120;
+
+    /**
+     * 100m平均风速
+     */
+    @Excel(name = "100m平均风速")
+    private BigDecimal wsAve100;
+
+    /**
+     * 80m平均风速
+     */
+    @Excel(name = "80m平均风速")
+    private BigDecimal wsAve80;
+
+    /**
+     * 70m平均风速
+     */
+    @Excel(name = "70m平均风速")
+    private BigDecimal wsAve70;
+
+    /**
+     * 50m平均风速
+     */
+    @Excel(name = "50m平均风速")
+    private BigDecimal wsAve50;
+
+    /**
+     * 30m平均风速
+     */
+    @Excel(name = "30m平均风速")
+    private BigDecimal wsAve30;
+
+    /**
+     * 10m平均风速
+     */
+    @Excel(name = "10m平均风速")
+    private BigDecimal wsAve10;
+}

+ 25 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/TotalityInfo.java

@@ -0,0 +1,25 @@
+package com.jiayue.biz.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+/**
+ * 总体信息
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Document("totality_info")
+public class TotalityInfo {
+    private String id;
+    //前期项目信息
+    private PInfo pInfo;
+    //风电场站信息
+    private FInfo fInfo;
+    //光伏场站信息
+    private GInfo gInfo;
+
+
+}

+ 30 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/TunnelInfo.java

@@ -0,0 +1,30 @@
+package com.jiayue.biz.domain;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+/*通道信息表*/
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+//@TableName("tunnel_info")
+public class TunnelInfo {
+    /*通道id*/
+    @TableId
+    private String id;
+    // 通道名称
+    private String tunnelName;
+    //ip
+    private String ip;
+    //端口号
+    private int port;
+    //场站Id
+    private String stationId;
+    //数据类型 CDAB
+    private String dataFormat;
+    //设备编号
+    private String equipmentNo;
+
+}

+ 50 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/WeatherStationInfo.java

@@ -0,0 +1,50 @@
+package com.jiayue.biz.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jiayue.common.annotation.Excel;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.math.BigDecimal;
+/**
+ *
+ * 环境检测仪实体
+ *
+ * */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("weather_station_info")
+public class WeatherStationInfo {
+    /**
+     * id
+     */
+    @TableId(type = IdType.ASSIGN_UUID)
+    private String id;
+
+    /**
+     * 名称
+     */
+    @Excel(name = "名称")
+    private String name;
+
+    /**
+     * 型号
+     */
+    @Excel(name = "型号")
+    private String modelNumber;
+    /**
+     * 经度
+     */
+    @Excel(name = "经度")
+    private BigDecimal longitude;
+
+    /**
+     * 纬度
+     */
+    @Excel(name = "纬度")
+    private BigDecimal latitude;
+}

+ 62 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/WindDirectionStatisticsData.java

@@ -0,0 +1,62 @@
+package com.jiayue.biz.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import com.jiayue.common.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+/**
+ * 【请填写功能名称】对象 wind_direction_statistics_data
+ *
+ * @author L.ym
+ * @date 2022-08-26
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("wind_direction_statistics_data")
+public class WindDirectionStatisticsData implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 主键id
+     */
+    @TableId(type = IdType.ASSIGN_UUID)
+    private String id;
+
+    /**
+     * 设备id
+     */
+    @Excel(name = "设备id")
+    private String equipmentId;
+
+    /**
+     * 属性id
+     */
+    @Excel(name = "属性id")
+    private String ebId;
+    /** 时间 */
+    @Excel(name = "时间")
+    private Date time;
+    /**
+     * 方向
+     */
+    @Excel(name = "方向")
+    private String direction;
+
+    /**
+     * 数值
+     */
+    @Excel(name = "数值")
+    private BigDecimal value;
+}

+ 54 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/WindTowerCalculationData.java

@@ -0,0 +1,54 @@
+package com.jiayue.biz.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jiayue.common.annotation.Excel;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 测风塔计算所得数据对象 wind_tower_calculation_data
+ *
+ * @author L.ym
+ * @date 2022-05-11
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("wind_tower_calculation_data")
+public class WindTowerCalculationData implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+
+    /** 主键ID */
+    @TableId(type = IdType.ASSIGN_UUID)
+    private String id;
+
+    /** 设备主键ID */
+    @Excel(name = "设备主键ID")
+    private String equipmentId;
+
+
+    /** 数据类型ID */
+    @Excel(name = "数据类型ID")
+    private String ebId;
+
+    /** 时间 */
+    @Excel(name = "时间")
+    private Date time;
+
+    /** 数值 */
+    @Excel(name = "数值")
+    private BigDecimal value;
+
+
+
+
+}

+ 134 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/WindTowerDataChildTable.java

@@ -0,0 +1,134 @@
+package com.jiayue.biz.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jiayue.common.annotation.Excel;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 测风塔数据子表
+ *
+ * @author whc
+ * @date 2022-08-02
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("wind_tower_data_child_table")
+public class WindTowerDataChildTable implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 主键ID
+     */
+    @TableId(type = IdType.ASSIGN_UUID)
+    private String id;
+
+    /**
+     * 父表ID
+     */
+    @Excel(name = "父表ID")
+    private String parentId;
+
+    /**
+     * 层高
+     */
+    @Excel(name = "层高")
+    private String layerHeight;
+
+
+    /**
+     * 风速瞬时值(m/s)
+     */
+    @Excel(name = "风速瞬时值", readConverterExp = "m=/s")
+    private BigDecimal wsInst;
+
+    /**
+     * 风速最大值(m/s)
+     */
+    @Excel(name = "风速最大值", readConverterExp = "m=/s")
+    private BigDecimal wsMax;
+
+    /**
+     * 风速最小值(m/s)
+     */
+    @Excel(name = "风速最小值", readConverterExp = "m=/s")
+    private BigDecimal wsMin;
+
+    /**
+     * 风速平均值(m/s)
+     */
+    @Excel(name = "风速平均值", readConverterExp = "m=/s")
+    private BigDecimal wsAve;
+
+    /**
+     * 风速标准偏差(m/s)
+     */
+    @Excel(name = "风速标准偏差", readConverterExp = "m=/s")
+    private BigDecimal wsSta;
+     /**
+     * 风速阵风(m/s)
+     */
+    @Excel(name = "风速阵风", readConverterExp = "m=/s")
+    private BigDecimal wsGust;
+
+    /**
+     * 风速极大值(m/s)
+     */
+    @Excel(name = "风速极大值", readConverterExp = "m=/s")
+    private BigDecimal wsGreat;
+
+    /**
+     * 向瞬时值(°)
+     */
+    @Excel(name = "风向瞬时值", readConverterExp = "°=")
+    private BigDecimal wdInst;
+
+    /**
+     * 风向最大值(°)
+     */
+    @Excel(name = "风向最大值", readConverterExp = "°=")
+    private BigDecimal wdMax;
+
+    /**
+     * 风向最小值(°)
+     */
+    @Excel(name = "风向最小值", readConverterExp = "°=")
+    private BigDecimal wdMin;
+
+    /**
+     * 风向平均值(°)
+     */
+    @Excel(name = "风向平均值", readConverterExp = "°=")
+    private BigDecimal wdAve;
+
+    /**
+     * 风向标准偏差(°)
+     */
+    @Excel(name = "风向标准偏差", readConverterExp = "°=")
+    private BigDecimal wdSta;
+
+    /**
+     * 风向实时值(°)
+     */
+    @Excel(name = "风向实时值", readConverterExp = "°=")
+    private BigDecimal wdNow;
+
+
+    /**
+     * 最大风速时风向(°)
+     */
+    @Excel(name = "最大风速时风向", readConverterExp = "°=")
+    private BigDecimal wdOnWs;
+
+}

+ 209 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/WindTowerDataParentTable.java

@@ -0,0 +1,209 @@
+package com.jiayue.biz.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jiayue.common.annotation.Excel;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 测风塔数据父表
+ *
+ * @author whc
+ * @date 2022-08-02
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("wind_tower_data_parent_table")
+public class WindTowerDataParentTable implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.ASSIGN_UUID)
+    private String id;
+
+    /**
+     * 设备编号
+     */
+    @Excel(name = "设备编号")
+    private String equipmentId;
+
+    /**
+     * 时间
+     */
+    @Excel(name = "时间")
+    private Date time;
+
+    /**
+     * 温度瞬时值
+     */
+    @Excel(name = "温度瞬时值")
+    private BigDecimal tInst;
+
+    /**
+     * 温度最大值(℃)
+     */
+    @Excel(name = "温度最大值", readConverterExp = "℃=")
+    private BigDecimal tMax;
+
+    /**
+     * 温度最小值(℃)
+     */
+    @Excel(name = "温度最小值", readConverterExp = "℃=")
+    private BigDecimal tMin;
+
+    /**
+     * 温度平均值(℃)
+     */
+    @Excel(name = "温度平均值", readConverterExp = "℃=")
+    private BigDecimal tAve;
+
+    /**
+     * 温度标准偏差(℃)
+     */
+    @Excel(name = "温度标准偏差", readConverterExp = "℃=")
+    private BigDecimal tSta;
+    /**
+     * 温度实时值(℃)
+     */
+    @Excel(name = "温度实时值", readConverterExp = "℃=")
+    private BigDecimal tNow;
+
+    /**
+     * 湿度瞬时值(%)
+     */
+    @Excel(name = "湿度瞬时值", readConverterExp = "%=")
+    private BigDecimal rhInst;
+
+    /**
+     * 湿度最大值(%)
+     */
+    @Excel(name = "湿度最大值", readConverterExp = "%=")
+    private BigDecimal rhMax;
+
+    /**
+     * 湿度最小值(%)
+     */
+    @Excel(name = "湿度最小值", readConverterExp = "%=")
+    private BigDecimal rhMin;
+
+    /**
+     * 湿度平均值(%)
+     */
+    @Excel(name = "湿度平均值", readConverterExp = "%=")
+    private BigDecimal rhAve;
+
+    /**
+     * 湿度标准偏差(%)
+     */
+    @Excel(name = "湿度标准偏差", readConverterExp = "%=")
+    private BigDecimal rhSta;
+    /**
+     * 湿度实时值(%)
+     */
+    @Excel(name = "湿度实时值", readConverterExp = "%=")
+    private BigDecimal rhNow;
+
+    /**
+     * 气压瞬时值(KPa)
+     */
+    @Excel(name = "气压瞬时值", readConverterExp = "h=Pa")
+    private BigDecimal paInst;
+
+    /**
+     * 气压最大值(KPa)
+     */
+    @Excel(name = "气压最大值", readConverterExp = "h=Pa")
+    private BigDecimal paMax;
+
+    /**
+     * 气压最小值(KPa)
+     */
+    @Excel(name = "气压最小值", readConverterExp = "h=Pa")
+    private BigDecimal paMin;
+
+    /**
+     * 气压平均值(KPa)
+     */
+    @Excel(name = "气压平均值", readConverterExp = "h=Pa")
+    private BigDecimal paAve;
+
+    /**
+     * 气压标准偏差(KPa)
+     */
+    @Excel(name = "气压标准偏差", readConverterExp = "h=Pa")
+    private BigDecimal paSta;
+    /**
+     * 气压实时值(KPa)
+     */
+    @Excel(name = "电", readConverterExp = "h=Pa")
+    private BigDecimal paNow;
+    /**
+     * 气压瞬时值(KPa)
+     */
+    @Excel(name = "电压瞬时值")
+    private BigDecimal vInst;
+
+    /**
+     * 气压最大值(KPa)
+     */
+    @Excel(name = "电压最大值")
+    private BigDecimal vMax;
+
+    /**
+     * 气压最小值(KPa)
+     */
+    @Excel(name = "电压最小值")
+    private BigDecimal vMin;
+
+    /**
+     * 电压平均值(KPa)
+     */
+    @Excel(name = "电压平均值")
+    private BigDecimal vAve;
+
+    /**
+     * 电压标准偏差(KPa)
+     */
+    @Excel(name = "电压标准偏差")
+    private BigDecimal vSta;
+    /**
+     * 电压实时值(KPa)
+     */
+    @Excel(name = "电压实时值")
+    private BigDecimal vNow;
+
+
+
+    /**
+     * 空气密度  Kg/m³
+     */
+    @Excel(name = "空气密度  Kg/m³")
+    private BigDecimal airDensity;
+
+
+
+    /**
+     * 数据是否异常
+     */
+    @Excel(name = "数据是否异常")
+    private String abnormalData;
+
+    /**
+     * 异常数据类型
+     */
+    @Excel(name = "异常数据类型")
+    private String abnormalType;
+
+}

+ 127 - 0
tpneim-biz/src/main/java/com/jiayue/biz/domain/WindTowerInfo.java

@@ -0,0 +1,127 @@
+package com.jiayue.biz.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import com.jiayue.common.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+/**
+ * 测风塔信息对象 n_wind_tower_info
+ *
+ * @author L.ym
+ * @date 2022-05-11
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("wind_tower_info")
+public class WindTowerInfo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.ASSIGN_UUID)
+    private String id;
+
+    /**
+     * 名称
+     */
+    @Excel(name = "名称")
+    private String name;
+
+    /**
+     * 型号
+     */
+    @Excel(name = "型号")
+    private String modelNumber;
+
+    /**
+     * 设备编号
+     */
+    @Excel(name = "设备编号")
+    private String equipmentNo;
+
+    /**
+     * 记录仪编号
+     */
+    @Excel(name = "记录仪编号")
+    private String recorderNo;
+    /**
+     * 测风塔风速层高
+     */
+    @Excel(name = "测风塔风速层高")
+    private String heights;
+    /**
+     * 测风塔风向层高
+     */
+    @Excel(name = "测风塔风向层高")
+    private String wdHeights;
+
+    /**
+     * 设备数据密码
+     */
+    @Excel(name = "设备数据密码")
+    private String password;
+    /**
+     * 安装时间
+     */
+    @Excel(name = "安装时间")
+    private Date installationTime;
+
+    /**
+     * 制造商
+     */
+    @Excel(name = "制造商")
+    private String manufacturer;
+
+    /**
+     * 经度
+     */
+    @Excel(name = "经度")
+    private BigDecimal longitude;
+
+    /**
+     * 纬度
+     */
+    @Excel(name = "纬度")
+    private BigDecimal latitude;
+
+    /**
+     * 海拔
+     */
+    @Excel(name = "海拔")
+    private String altitude;
+
+    /**
+     * 地形复杂程度
+     */
+    @Excel(name = "地形复杂程度")
+    private String terrainComplexity;
+    /**
+     * 测风塔状态 停机:0 运行为:1
+     */
+    @Excel(name = "测风塔状态")
+    private String status;
+    /**
+     * 首页展示层高 暂用用于首页风功率曲线
+     */
+    @Excel(name = "首页展示层高")
+    private String displayHeight;
+
+    /**
+     *测风塔附属于
+     */
+    private String type;
+
+}

+ 15 - 0
tpneim-biz/src/main/java/com/jiayue/biz/dto/EquipmentDto.java

@@ -0,0 +1,15 @@
+package com.jiayue.biz.dto;
+
+import lombok.Data;
+
+@Data
+public class EquipmentDto {
+    private String label;
+    private String value;
+    // 风向层高
+    private String wdHeight;
+    /**
+     *测风塔的来源 email=>邮件塔  modbus=>实时塔
+     */
+    private String type;
+}

+ 32 - 0
tpneim-biz/src/main/java/com/jiayue/biz/dto/FanTowerDto.java

@@ -0,0 +1,32 @@
+package com.jiayue.biz.dto;
+
+import com.jiayue.biz.domain.FanTower;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class FanTowerDto {
+
+    private String id;
+    private String name;
+    //风机信息
+    private String fanId;
+    //风机名称
+    private String FanName;
+    //风机经度
+    private String longitudeFan;
+    //风机纬度
+    private String latitudeFan;
+    //风机型号
+    private String FanModel;
+    //轮毂高度
+    private String hubHeight;
+    //类型
+    private String type;
+
+}

+ 52 - 0
tpneim-biz/src/main/java/com/jiayue/biz/dto/FileLogBean.java

@@ -0,0 +1,52 @@
+package com.jiayue.biz.dto;
+
+/**
+ * FileLogBean
+ *
+ * @author bizy
+ * @version 1.0
+ * @since 2018/12/5 09:51
+ */
+public class FileLogBean {
+
+    //文件名
+    private String fileName;
+    //文件路径
+    private String filePath;
+    //文件类型(文件或者文件夹)
+    private String fileType;
+    //文件修改时间
+    private String fileTime;
+
+    public String getFileName() {
+        return fileName;
+    }
+
+    public void setFileName(String fileName) {
+        this.fileName = fileName;
+    }
+
+    public String getFilePath() {
+        return filePath;
+    }
+
+    public void setFilePath(String filePath) {
+        this.filePath = filePath;
+    }
+
+    public String getFileType() {
+        return fileType;
+    }
+
+    public void setFileType(String fileType) {
+        this.fileType = fileType;
+    }
+
+    public String getFileTime() {
+        return fileTime;
+    }
+
+    public void setFileTime(String fileTime) {
+        this.fileTime = fileTime;
+    }
+}

+ 63 - 0
tpneim-biz/src/main/java/com/jiayue/biz/dto/InverterInfoDto.java

@@ -0,0 +1,63 @@
+package com.jiayue.biz.dto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.jiayue.biz.domain.InverterInfo;
+import com.jiayue.common.annotation.Excel;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class InverterInfoDto {
+
+    private String id;
+
+    private String stationName;
+
+    /**
+     * id
+     */
+    private String InverterInfoId;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 型号
+     */
+    private String modelNumber;
+    /**
+     * 经度
+     */
+    private String longitude;
+
+    /**
+     * 纬度
+     */
+    private String latitude;
+    /**
+     * 额定功率(KW)
+     */
+    private String capacity;
+    /**
+     * 光伏组件型号
+     */
+    private String batteryModel;
+
+    /**
+     * 光伏组件数量(个)
+     */
+    private String batteryNumber;
+
+
+
+
+}

+ 40 - 0
tpneim-biz/src/main/java/com/jiayue/biz/dto/ProjectDto.java

@@ -0,0 +1,40 @@
+package com.jiayue.biz.dto;
+
+import com.jiayue.biz.domain.Coordinates;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProjectDto {
+
+    private String id;
+    //项目全称
+    private String projectName;
+    //项目简称
+    private String projectNameEasy;
+    //项目状态
+    private String projectState;
+    //项目类别
+    private String projectType;
+    //项目类型
+    private String projectSort;
+    //经度
+    private String longitude;
+    //纬度
+    private String latitude;
+    //项目概述
+    private String projectOverview;
+    //项目风力概述
+    private String resourcesOverview;
+    //关联设备
+    private String equipment;
+
+    private String coordinates;
+
+
+}

+ 26 - 0
tpneim-biz/src/main/java/com/jiayue/biz/dto/ProjectEvolveDto.java

@@ -0,0 +1,26 @@
+package com.jiayue.biz.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 项目进展表格Dto
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProjectEvolveDto {
+    // 序号
+    private String index;
+    // 工作内容
+    private String taskContent;
+    // 计划完成时间
+    private String planTime;
+    // 详细工作内容
+    private String detailedTaskContent;
+    // 实际完成时间
+    private String realTime;
+    // 进展状态
+    private String status;
+}

+ 14 - 0
tpneim-biz/src/main/java/com/jiayue/biz/dto/ProjectInfoDto.java

@@ -0,0 +1,14 @@
+package com.jiayue.biz.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProjectInfoDto {
+    private String id;
+    private String projectSort;
+
+}

+ 21 - 0
tpneim-biz/src/main/java/com/jiayue/biz/dto/SelectLabForVal.java

@@ -0,0 +1,21 @@
+package com.jiayue.biz.dto;
+
+import com.jiayue.biz.domain.WeatherStationInfo;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * 下拉框
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class SelectLabForVal {
+    private String label;
+    private String value;
+    private List<EquipmentDto> equipmentDto;
+    private List<WeatherStationInfo> weatherStationInfo;
+}

+ 12 - 0
tpneim-biz/src/main/java/com/jiayue/biz/dto/SpeedAndDensityDto.java

@@ -0,0 +1,12 @@
+package com.jiayue.biz.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class SpeedAndDensityDto {
+    private BigDecimal windSpeed;
+    private BigDecimal windPowerDensity;
+
+}

+ 26 - 0
tpneim-biz/src/main/java/com/jiayue/biz/dto/StationInfoDto.java

@@ -0,0 +1,26 @@
+package com.jiayue.biz.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class StationInfoDto {
+    private String id;
+    //场站名称
+    private String stationName;
+    //简称
+    private String abbreviation;
+    //场站id
+    private String stationId;
+    //场站类型
+    private String stationType;
+    //经度
+    private String longitude;
+    //纬度
+    private String latitude;
+    //关联设备
+    private String equipment;
+}

+ 15 - 0
tpneim-biz/src/main/java/com/jiayue/biz/eunms/ElectricFieldStatrsEnum.java

@@ -0,0 +1,15 @@
+package com.jiayue.biz.eunms;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum ElectricFieldStatrsEnum {
+    Y1(1, "未运维"),
+
+    Y2(2, "运维中");
+
+    private Integer code;
+    private String message;
+}

+ 20 - 0
tpneim-biz/src/main/java/com/jiayue/biz/eunms/ElectricFieldTypeEnum.java

@@ -0,0 +1,20 @@
+package com.jiayue.biz.eunms;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 场站类型枚举
+ *
+ * @author zzy
+ * @version 1.0
+ * @since 2019/8/2 11:33
+ */
+@Getter
+@AllArgsConstructor
+public enum ElectricFieldTypeEnum {
+    F1(1, "光伏电站"),
+    F2(2, "风力电站");
+    private Integer code;
+    private String message;
+}

+ 51 - 0
tpneim-biz/src/main/java/com/jiayue/biz/eunms/ProvinceEnum.java

@@ -0,0 +1,51 @@
+package com.jiayue.biz.eunms;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 省调度中心枚举
+ *
+ * @author zy
+ * @version 1.0
+ * @since 2023/2/20
+ */
+@Getter
+@AllArgsConstructor
+public enum ProvinceEnum {
+    E11(11, "北京市"),
+    E12(12, "天津市"),
+    E13(13, "河北省-冀北"),
+    E17(17, "河北省-南网"),
+    E14(14, "山西省"),
+    E15(15, "内蒙古自治区-蒙东"),
+    E16(16, "内蒙古自治区-蒙西"),
+    E21(21, "辽宁省"),
+    E22(22, "吉林省"),
+    E23(23, "黑龙江省"),
+    E31(31, "上海市"),
+    E32(32, "江苏省"),
+    E33(33, "浙江省"),
+    E34(34, "安徽省"),
+    E35(35, "福建省"),
+    E36(36, "江西省"),
+    E37(37, "山东省"),
+    E41(41, "河南省"),
+    E42(42, "湖北省"),
+    E43(43, "湖南省"),
+    E44(44, "广东省"),
+    E45(45, "广西壮族自治区"),
+    E46(46, "海南省"),
+    E50(50, "重庆市"),
+    E51(51, "四川省"),
+    E52(52, "贵州省"),
+    E53(53, "云南省"),
+    E54(54, "西藏自治区"),
+    E61(61, "陕西省"),
+    E62(62, "甘肃省"),
+    E63(63, "青海省"),
+    E64(64, "宁夏回族自治区"),
+    E65(65, "新疆维吾尔自治区");
+    private Integer code;
+    private String message;
+}

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