Quellcode durchsuchen

部分实体类修改5

xushili vor 1 Jahr
Ursprung
Commit
5837d8dc6a
85 geänderte Dateien mit 2832 neuen und 367 gelöschten Zeilen
  1. 1 1
      common/data/src/main/java/com/gyee/wisdom/common/data/alarm/WarningClassify.java
  2. 1 1
      common/data/src/main/java/com/gyee/wisdom/common/data/alarm/Warningfj.java
  3. 14 13
      common/data/src/main/java/com/gyee/wisdom/common/data/alarm/Warningrecords.java
  4. 1 1
      common/data/src/main/java/com/gyee/wisdom/common/data/alarm/Warningsyz.java
  5. 19 19
      common/data/src/main/java/com/gyee/wisdom/common/data/alarm/WindturbineTestingpointAi.java
  6. 1 1
      common/data/src/main/java/com/gyee/wisdom/common/data/alarm/WindturbineTestingpointDi.java
  7. 1 1
      common/data/src/main/java/com/gyee/wisdom/common/data/point/WindturbineTestingPoint.java
  8. 1 0
      common/data/src/main/java/com/gyee/wisdom/common/data/power/WindturbinePowerCurvefitting.java
  9. 15 5
      common/data/src/main/java/com/gyee/wisdom/common/data/system/dto/UserCommond.java
  10. 24 8
      common/data/src/main/java/com/gyee/wisdom/common/data/system/dto/UserDto.java
  11. 49 51
      common/data/src/main/java/com/gyee/wisdom/common/data/system/model/TreeModel.java
  12. 52 30
      common/data/src/main/java/com/gyee/wisdom/common/data/system/model/User.java
  13. 3 3
      common/data/src/main/java/com/gyee/wisdom/common/data/system/model/VerifyCode.java
  14. 1 1
      common/data/src/main/java/com/gyee/wisdom/common/data/timeseries/TsData.java
  15. 1 1
      common/data/src/main/java/com/gyee/wisdom/common/data/timeseries/TsDataType.java
  16. 0 3
      common/data/src/main/java/com/gyee/wisdom/common/data/timeseries/TsPoint.java
  17. 9 17
      common/data/src/main/java/com/gyee/wisdom/common/data/timeseries/TsPointData.java
  18. 1 1
      common/data/src/main/java/com/gyee/wisdom/common/data/timeseries/TsPointDataList.java
  19. 396 0
      common/data/src/main/java/com/gyee/wisdom/common/data/windturbine/Equipment.java
  20. 1 1
      common/data/src/main/java/com/gyee/wisdom/common/exception/WisdomException.java
  21. 5 5
      common/data/src/main/java/com/gyee/wisdom/common/exception/WisdomRuntimeException.java
  22. 1 1
      electricity/meter/src/main/java/com/gyee/gaia/meter/entity/TestTb.java
  23. 1 1
      electricity/meter/src/main/java/com/gyee/gaia/meter/mapper/TestTbMapper.java
  24. 5 5
      electricity/meter/src/main/java/com/gyee/gaia/meter/service/TestTbService.java
  25. 2 1
      electricity/meter/src/main/resources/mappers-postgresql/TestTb.xml
  26. 81 0
      state/wind/src/main/java/com/gyee/gaia/state/wind/config/Status8Properties.java
  27. 73 0
      state/wind/src/main/java/com/gyee/gaia/state/wind/config/WindturbineGroup.java
  28. 85 0
      state/wind/src/main/java/com/gyee/gaia/state/wind/entity/StationInfo.java
  29. 17 0
      state/wind/src/main/java/com/gyee/gaia/state/wind/entity/TagInfo.java
  30. 1 1
      state/wind/src/main/java/com/gyee/gaia/state/wind/entity/TestTb.java
  31. 241 0
      state/wind/src/main/java/com/gyee/gaia/state/wind/entity/WindturbineInfo.java
  32. 0 16
      state/wind/src/main/java/com/gyee/gaia/state/wind/mapper/TestTbMapper.java
  33. 64 0
      state/wind/src/main/java/com/gyee/gaia/state/wind/restful/RestfulClient.java
  34. 24 0
      state/wind/src/main/java/com/gyee/gaia/state/wind/runner/ApplicationReadyEventListener.java
  35. 327 0
      state/wind/src/main/java/com/gyee/gaia/state/wind/service/CalculateServer.java
  36. 201 0
      state/wind/src/main/java/com/gyee/gaia/state/wind/service/Status8Service.java
  37. 0 24
      state/wind/src/main/java/com/gyee/gaia/state/wind/service/TestTbService.java
  38. 2 1
      state/wind/src/main/resources/mappers-postgresql/TestTb.xml
  39. 137 0
      timeseries/dao-interface/src/main/java/com/gyee/gaia/dao/hepler/PageVo.java
  40. 16 0
      timeseries/dao-interface/src/main/java/com/gyee/gaia/dao/point/TestingPointMapper.java
  41. 34 0
      timeseries/dao-interface/src/main/java/com/gyee/gaia/dao/system/IUserDao.java
  42. 45 0
      timeseries/dao-interface/src/main/java/com/gyee/gaia/dao/system/IUserDao2.java
  43. 16 0
      timeseries/dao-interface/src/main/java/com/gyee/gaia/dao/windturbine/EquipmentMapper.java
  44. 16 0
      timeseries/dao-interface/src/main/java/com/gyee/gaia/dao/windturbine/LineMapper.java
  45. 16 0
      timeseries/dao-interface/src/main/java/com/gyee/gaia/dao/windturbine/PowerstationMapper.java
  46. 16 0
      timeseries/dao-interface/src/main/java/com/gyee/gaia/dao/windturbine/ProjectMapper.java
  47. 45 0
      timeseries/dao-redis-taos/src/main/java/com/gyee/gaia/dao/redistaos/TaosCovertUtil.java
  48. 33 0
      timeseries/dao-redis/src/main/java/com/gyee/gaia/dao/redis/RedisDataChangeDao.java
  49. 64 0
      timeseries/dao-redis/src/main/java/com/gyee/gaia/dao/redis/TsDataParser.java
  50. 0 68
      timeseries/dao-redis/src/main/java/com/gyee/wisdom/dao/redis/TsDataParser.java
  51. 2 1
      timeseries/dao-redis/src/main/java/com/gyee/wisdom/it235/factory/YamlPropertySourceFactory.java
  52. 158 0
      timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/ModelConstants.java
  53. 19 0
      timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/Windturbine/EquipmentServiceImpl.java
  54. 16 0
      timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/Windturbine/IEquipmentService.java
  55. 16 0
      timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/Windturbine/ILineService.java
  56. 16 0
      timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/Windturbine/IPowerstationService.java
  57. 16 0
      timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/Windturbine/IProjectService.java
  58. 19 0
      timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/Windturbine/LineServiceImpl.java
  59. 19 0
      timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/Windturbine/PowerstationServiceImpl.java
  60. 19 0
      timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/Windturbine/ProjectServiceImpl.java
  61. 74 0
      timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/alarm/Entity/WarningrecordsEntity.java
  62. 66 0
      timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/alarm/Entity/WindturbineTestingpointAiEntity.java
  63. 17 0
      timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/alarm/repository/WarningsyzRepository.java
  64. 31 0
      timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/control/repository/ControlLogRepository.java
  65. 24 0
      timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/control/repository/InputOrOutputSpeedTotalRepository.java
  66. 16 0
      timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/point/ITestingPointService.java
  67. 19 0
      timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/point/TestingPointServiceImpl.java
  68. 12 0
      timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/power/repository/Status8SnapRepository.java
  69. 10 0
      timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/system/repository/MenuRepository.java
  70. 45 0
      timeseries/dao-taos/src/main/java/com/gyee/gaia/dao/taos/TaosCovertUtil.java
  71. 2 1
      timeseries/data-adapter/src/main/java/com/gyee/wisdom/dataadapter/configuration/WebConfig.java
  72. 4 13
      timeseries/data-adapter/src/main/java/com/gyee/wisdom/dataadapter/controller/thing/ThingController.java
  73. 9 11
      timeseries/data-adapter/src/main/java/com/gyee/wisdom/dataadapter/controller/timeseries/TsDataController.java
  74. 0 4
      timeseries/data-adapter/src/main/java/com/gyee/wisdom/dataadapter/domain/thing/WindturbineService.java
  75. 5 3
      timeseries/data-adapter/src/main/java/com/gyee/wisdom/dataadapter/domain/timeseries/TsDataService.java
  76. 17 21
      timeseries/data-adapter/src/main/java/com/gyee/wisdom/dataadapter/domain/timeseries/TsPointService.java
  77. 3 3
      timeseries/data-adapter/src/main/java/com/gyee/wisdom/dataadapter/websocket/WebSocketConfig.java
  78. 9 9
      timeseries/data-adapter/src/main/java/com/gyee/wisdom/dataadapter/websocket/WebSocketTsDataController.java
  79. 0 1
      timeseries/data-adapter/src/main/java/com/gyee/wisdom/dataadapter/websocket/backwork/UniformCodeConfig.java
  80. 3 6
      timeseries/data-adapter/src/main/java/com/gyee/wisdom/dataadapter/websocket/backwork/WindturbineInfoCache.java
  81. 0 2
      timeseries/data-adapter/src/main/java/com/gyee/wisdom/dataadapter/websocket/domain/WindturbineData.java
  82. 3 1
      timeseries/data-adapter/src/main/java/com/gyee/wisdom/dataadapter/websocket/session/WisdomStompSession.java
  83. 0 7
      timeseries/data-adapter/src/main/java/com/gyee/wisdom/dataadapter/write/WriteRedis.java
  84. 4 3
      timeseries/data-adapter/src/main/java/com/gyee/wisdom/traceforbidden/UndertowWebServerCustomizer.java
  85. 0 0
      资源文件/sql/test.sql

+ 1 - 1
common/data/src/main/java/com/gyee/wisdom/common/data/alarm/WarningClassify.java

@@ -5,7 +5,7 @@ import lombok.Data;
 import java.io.Serializable;
 
 @Data
-public class WarningClassify implements Serializable{
+public class WarningClassify implements Serializable {
 
 
     private String id;

+ 1 - 1
common/data/src/main/java/com/gyee/wisdom/common/data/alarm/Warningfj.java

@@ -5,7 +5,7 @@ import lombok.Data;
 import java.io.Serializable;
 
 @Data
-public class Warningfj implements Serializable{
+public class Warningfj implements Serializable {
     private static final long serialVersionUID = 7771114461759044095L;
     private String id;
     private String levelId;

+ 14 - 13
common/data/src/main/java/com/gyee/wisdom/common/data/alarm/Warningrecords.java

@@ -4,21 +4,22 @@ package com.gyee.wisdom.common.data.alarm;
 import lombok.Data;
 
 import java.util.Date;
+
 @Data
 public class Warningrecords {
 
-  private Long id;
-  private String windpowerstationid;
-  private String windturbineid;
-  private String warningid;
-  private Date warningtime;
-  private String isconfirm;
-  private String ishandle;
-  private String handle;
-  private String shutdowneventid;
-  private String levelid;
-  private String wtaiid;
-  private String durationhour;
-  private String isfilter;
+    private Long id;
+    private String windpowerstationid;
+    private String windturbineid;
+    private String warningid;
+    private Date warningtime;
+    private String isconfirm;
+    private String ishandle;
+    private String handle;
+    private String shutdowneventid;
+    private String levelid;
+    private String wtaiid;
+    private String durationhour;
+    private String isfilter;
 
 }

+ 1 - 1
common/data/src/main/java/com/gyee/wisdom/common/data/alarm/Warningsyz.java

@@ -5,7 +5,7 @@ import lombok.Data;
 import java.io.Serializable;
 
 @Data
-public class Warningsyz implements Serializable{
+public class Warningsyz implements Serializable {
 
     private static final long serialVersionUID = 2837638875098082094L;
     private String id;

+ 19 - 19
common/data/src/main/java/com/gyee/wisdom/common/data/alarm/WindturbineTestingpointAi.java

@@ -6,23 +6,23 @@ import java.io.Serializable;
 
 @Data
 public class WindturbineTestingpointAi implements Serializable {
-  private static final long serialVersionUID = -7009408032434108640L;
-  private String id;
-  private String code;
-  private String name;
-  private String model;
-  private String valueunit;
-  private String englishname;
-  private String typeid;
-  private String modelid;
-  private String maxval;
-  private String minval;
-  private String reasonablemaxval;
-  private String reasonableminval;
-  private String windturbineid;
-  private String uniformcode;
-  private String shortid;
-  private String longid;
-  private String windpowerstationid;
-  private String realtimeid;
+    private static final long serialVersionUID = -7009408032434108640L;
+    private String id;
+    private String code;
+    private String name;
+    private String model;
+    private String valueunit;
+    private String englishname;
+    private String typeid;
+    private String modelid;
+    private String maxval;
+    private String minval;
+    private String reasonablemaxval;
+    private String reasonableminval;
+    private String windturbineid;
+    private String uniformcode;
+    private String shortid;
+    private String longid;
+    private String windpowerstationid;
+    private String realtimeid;
 }

+ 1 - 1
common/data/src/main/java/com/gyee/wisdom/common/data/alarm/WindturbineTestingpointDi.java

@@ -5,7 +5,7 @@ import lombok.Data;
 import java.io.Serializable;
 
 @Data
-public class WindturbineTestingpointDi implements Serializable{
+public class WindturbineTestingpointDi implements Serializable {
     private static final long serialVersionUID = -7009408032434108640L;
     private String id;
     private String code;

+ 1 - 1
common/data/src/main/java/com/gyee/wisdom/common/data/point/WindturbineTestingPoint.java

@@ -5,7 +5,7 @@ import lombok.Data;
 import java.io.Serializable;
 
 /**
- *Author:Wanghs
+ * Author:Wanghs
  */
 
 //风机测点

+ 1 - 0
common/data/src/main/java/com/gyee/wisdom/common/data/power/WindturbinePowerCurvefitting.java

@@ -1,6 +1,7 @@
 package com.gyee.wisdom.common.data.power;
 
 import lombok.Data;
+
 import java.io.Serializable;
 
 

+ 15 - 5
common/data/src/main/java/com/gyee/wisdom/common/data/system/dto/UserCommond.java

@@ -7,19 +7,29 @@ package com.gyee.wisdom.common.data.system.dto;
 public class UserCommond {
 
 
-    /** 登录名称 */
+    /**
+     * 登录名称
+     */
     private String userName;
 
-    /** 密码 */
+    /**
+     * 密码
+     */
     private String password;
 
-    /** 邮箱 */
+    /**
+     * 邮箱
+     */
     private String email;
 
-    /** 中文名称 */
+    /**
+     * 中文名称
+     */
     private String chineseName;
 
-    /** 联系电话 */
+    /**
+     * 联系电话
+     */
     private String contractTel;
     private String registionId;//
 

+ 24 - 8
common/data/src/main/java/com/gyee/wisdom/common/data/system/dto/UserDto.java

@@ -8,29 +8,45 @@ import java.util.Date;
  */
 public class UserDto {
 
-    /** 主键ID */
+    /**
+     * 主键ID
+     */
     private String id;
 
-    /** 登录名称 */
+    /**
+     * 登录名称
+     */
     private String userName;
 
 
-    /** 邮箱 */
+    /**
+     * 邮箱
+     */
     private String email;
 
-    /** 是否禁用 */
+    /**
+     * 是否禁用
+     */
     private boolean disabled;
 
-    /** 创建时间 */
+    /**
+     * 创建时间
+     */
     private Date createTime;
 
-    /** 最后登录时间 */
+    /**
+     * 最后登录时间
+     */
     private Date lastTime;
 
-    /** 中文名称 */
+    /**
+     * 中文名称
+     */
     private String chineseName;
 
-    /** 联系电话 */
+    /**
+     * 联系电话
+     */
     private String contractTel;
 
     public String getId() {

+ 49 - 51
common/data/src/main/java/com/gyee/wisdom/common/data/system/model/TreeModel.java

@@ -20,18 +20,20 @@ public class TreeModel {
 
     private String label;
 
-    private String path="0";  //父节点的路径与父节点的id路径,用","分开,0表示父节点是根节点
+    private String path = "0";  //父节点的路径与父节点的id路径,用","分开,0表示父节点是根节点
 
-    private int orderNo=1;  //排序
+    private int orderNo = 1;  //排序
 
     private int type;//扩展字段。菜单类型,供不同业务区分
 
     private String style;//样式,方便ui展现
 
-    /** 状态 是否禁用*/
+    /**
+     * 状态 是否禁用
+     */
     private boolean disabled;
 
-    private List<? extends TreeModel> childNodes=new ArrayList<>();
+    private List<? extends TreeModel> childNodes = new ArrayList<>();
 
     public String getId() {
         return id;
@@ -58,7 +60,7 @@ public class TreeModel {
     }
 
     public int getLayer() {
-        if(path==null){
+        if (path == null) {
             return 1;
         }
         return path.split(",").length;
@@ -97,12 +99,12 @@ public class TreeModel {
         this.type = type;
     }
 
-    public TreeModel newChildNode(String nodeId, String label, int order){
-        TreeModel node=new TreeModel();
-        node.path =this.path +","+this.id;
-        node.id=nodeId;
-        node.orderNo=order;
-        node.label=label;
+    public TreeModel newChildNode(String nodeId, String label, int order) {
+        TreeModel node = new TreeModel();
+        node.path = this.path + "," + this.id;
+        node.id = nodeId;
+        node.orderNo = order;
+        node.label = label;
         return node;
     }
 
@@ -112,7 +114,7 @@ public class TreeModel {
 
     @Override
     public String toString() {
-        return label+"-"+ path +"-"+id+"-"+orderNo;
+        return label + "-" + path + "-" + id + "-" + orderNo;
     }
 
     /***
@@ -120,30 +122,30 @@ public class TreeModel {
      * @param nodes
      * @return
      */
-    public static List<? extends TreeModel> buildTree(List<? extends TreeModel> nodes){
-        if (isEmpty(nodes)){
+    public static List<? extends TreeModel> buildTree(List<? extends TreeModel> nodes) {
+        if (isEmpty(nodes)) {
             return null;
         }
-        List<? extends TreeModel> firstLevels=nodes.stream().filter(node->!node.isDisabled() && node.getLayer()==1).collect(Collectors.toList());
+        List<? extends TreeModel> firstLevels = nodes.stream().filter(node -> !node.isDisabled() && node.getLayer() == 1).collect(Collectors.toList());
         sortByOrder(firstLevels);
-        firstLevels.stream().forEach(node-> setChildren(node,nodes));
+        firstLevels.stream().forEach(node -> setChildren(node, nodes));
         return firstLevels;
     }
 
 
-    private static  void setChildren(TreeModel currentNode, List<? extends TreeModel> nodeList){
-        List<? extends TreeModel> childrens=nodeList.stream().filter(node->(!node.isDisabled() && node.getPath().equals(currentNode.getPath()+","+currentNode.getId()))).collect(Collectors.toList());
-        currentNode.childNodes=childrens;
-        if (isEmpty(childrens)){
+    private static void setChildren(TreeModel currentNode, List<? extends TreeModel> nodeList) {
+        List<? extends TreeModel> childrens = nodeList.stream().filter(node -> (!node.isDisabled() && node.getPath().equals(currentNode.getPath() + "," + currentNode.getId()))).collect(Collectors.toList());
+        currentNode.childNodes = childrens;
+        if (isEmpty(childrens)) {
             return;
         }
         sortByOrder(childrens);
-        childrens.stream().forEach(node-> setChildren(node,nodeList));
+        childrens.stream().forEach(node -> setChildren(node, nodeList));
 
     }
 
     private static void sortByOrder(List<? extends TreeModel> firstLevels) {
-        firstLevels.sort((node1,node2)->Integer.valueOf(node1.getOrderNo()).compareTo(Integer.valueOf(node2.getOrderNo())));
+        firstLevels.sort((node1, node2) -> Integer.valueOf(node1.getOrderNo()).compareTo(Integer.valueOf(node2.getOrderNo())));
     }
 
 
@@ -152,11 +154,11 @@ public class TreeModel {
      * @param nodes
      */
     public static void sortByTree(List<? extends TreeModel> nodes) {
-        if(isEmpty(nodes)){
+        if (isEmpty(nodes)) {
             return;
         }
         sortByOrder(nodes);
-        nodes.sort((o1, o2) -> (o1.getPath()+","+o1.getId()).compareTo(o2.getPath()+","+o2.getId()));
+        nodes.sort((o1, o2) -> (o1.getPath() + "," + o1.getId()).compareTo(o2.getPath() + "," + o2.getId()));
     }
 
     private static boolean isEmpty(List nodes) {
@@ -165,18 +167,18 @@ public class TreeModel {
 
 
     //按节点的父子层次顺序展示
-    private static void printTreeToConsole(List<TreeModel> nodes){
-        if (isEmpty(nodes)){
+    private static void printTreeToConsole(List<TreeModel> nodes) {
+        if (isEmpty(nodes)) {
             return;
         }
 
         sortByTree(nodes);
 
-        nodes.stream().forEach(node->{
-            if(node.isDisabled()){
+        nodes.stream().forEach(node -> {
+            if (node.isDisabled()) {
                 return;
             }
-            for(int i=1;i<node.getLayer();i++){
+            for (int i = 1; i < node.getLayer(); i++) {
                 System.out.print("\t");
             }
             System.out.println(node);
@@ -185,15 +187,15 @@ public class TreeModel {
 
 
     //以第一层为起点,递归方式展示父子层次树
-    private static void printFirstLevelTreeToConsole(List<? extends TreeModel> nodes){
-        if (isEmpty(nodes)){
+    private static void printFirstLevelTreeToConsole(List<? extends TreeModel> nodes) {
+        if (isEmpty(nodes)) {
             return;
         }
-        nodes.forEach(item->{
-            if(item.isDisabled()){
+        nodes.forEach(item -> {
+            if (item.isDisabled()) {
                 return;
             }
-            for(int i=1;i<item.getLayer();i++){
+            for (int i = 1; i < item.getLayer(); i++) {
                 System.out.print("\t");
             }
             System.out.println(item);
@@ -222,42 +224,38 @@ public class TreeModel {
         return id != null ? id.hashCode() : 0;
     }
 
-    public static void main1(String[] arg){
-        List<TreeModel> nodes=new ArrayList<>();
-        TreeModel fruit=new TreeModel();
+    public static void main1(String[] arg) {
+        List<TreeModel> nodes = new ArrayList<>();
+        TreeModel fruit = new TreeModel();
         fruit.setId("1");
         fruit.setLabel("水果");
         fruit.setOrderNo(2);
         nodes.add(fruit);
 
-        TreeModel apple=fruit.newChildNode("7","苹果",2);
+        TreeModel apple = fruit.newChildNode("7", "苹果", 2);
         nodes.add(apple);
-        nodes.add(apple.newChildNode("4","红富士",2));
-        nodes.add(apple.newChildNode("15","山东苹果",1));
+        nodes.add(apple.newChildNode("4", "红富士", 2));
+        nodes.add(apple.newChildNode("15", "山东苹果", 1));
 
-        TreeModel lizi=fruit.newChildNode("e8","梨子",1);
+        TreeModel lizi = fruit.newChildNode("e8", "梨子", 1);
         nodes.add(lizi);
-        nodes.add(lizi.newChildNode("7r7","雪梨",1));
-        nodes.add(lizi.newChildNode("t31o","鸭梨",2));
+        nodes.add(lizi.newChildNode("7r7", "雪梨", 1));
+        nodes.add(lizi.newChildNode("t31o", "鸭梨", 2));
 
-        TreeModel shucai=new TreeModel();
+        TreeModel shucai = new TreeModel();
         shucai.setId("a101");
         shucai.setLabel("蔬菜");
         shucai.setOrderNo(1);
         shucai.setDisabled(true);
-         nodes.add(shucai);
-        nodes.add(shucai.newChildNode("213","白菜",2));
+        nodes.add(shucai);
+        nodes.add(shucai.newChildNode("213", "白菜", 2));
         printTreeToConsole(nodes);
 
         System.out.println("====================");
-        List<? extends TreeModel> tree= TreeModel.buildTree(nodes);
+        List<? extends TreeModel> tree = TreeModel.buildTree(nodes);
         printFirstLevelTreeToConsole(tree);
 
 
-
-
-
-
     }
 
 }

+ 52 - 30
common/data/src/main/java/com/gyee/wisdom/common/data/system/model/User.java

@@ -9,35 +9,57 @@ import java.util.List;
 @Data
 public class User implements Serializable {
 
-	private static final long serialVersionUID = 1L;
-
-	/** 主键ID */
-	private String id ;
-	/** 登录名称 */
-	private String userName;
-	/** 密码 */
-	private String password;
-	/**密码加密的盐*/
-	private String salt;
-	/** 邮箱 */
-	private String email;
-	/** 是否禁用 */
-	private boolean disabled;
-	/** 创建时间 */
-	private Date createTime;
-	/** 最后登录时间 */
-	private Date lastTime;
-	/** 中文名称 */
-	private String chineseName;
-	/** 联系电话 */
-	private String contractTel;
-	/** app注册ID */
-	private String registionId;
-
-	private List<Role> roles;
-
-	public boolean isRoot(){
-		return "admin".equals(userName);
-	}
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    private String id;
+    /**
+     * 登录名称
+     */
+    private String userName;
+    /**
+     * 密码
+     */
+    private String password;
+    /**
+     * 密码加密的盐
+     */
+    private String salt;
+    /**
+     * 邮箱
+     */
+    private String email;
+    /**
+     * 是否禁用
+     */
+    private boolean disabled;
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
+     * 最后登录时间
+     */
+    private Date lastTime;
+    /**
+     * 中文名称
+     */
+    private String chineseName;
+    /**
+     * 联系电话
+     */
+    private String contractTel;
+    /**
+     * app注册ID
+     */
+    private String registionId;
+
+    private List<Role> roles;
+
+    public boolean isRoot() {
+        return "admin".equals(userName);
+    }
 
 }

+ 3 - 3
common/data/src/main/java/com/gyee/wisdom/common/data/system/model/VerifyCode.java

@@ -7,9 +7,9 @@ import java.io.Serializable;
 @Data
 public class VerifyCode implements Serializable {
 
-	private String phone;
-	private String vCode;
-	private long generateTime;
+    private String phone;
+    private String vCode;
+    private long generateTime;
 
 }
 

+ 1 - 1
common/data/src/main/java/com/gyee/wisdom/common/data/timeseries/TsData.java

@@ -1,7 +1,7 @@
 package com.gyee.wisdom.common.data.timeseries;
 
 /**
- * @author songwb<songwb@aliyun.com>
+ * @author songwb<songwb @ aliyun.com>
  */
 public interface TsData {
 

+ 1 - 1
common/data/src/main/java/com/gyee/wisdom/common/data/timeseries/TsDataType.java

@@ -1,7 +1,7 @@
 package com.gyee.wisdom.common.data.timeseries;
 
 /**
- * @author songwb<songwb@aliyun.com>
+ * @author songwb<songwb @ aliyun.com>
  */
 public enum TsDataType {
     LONG,

+ 0 - 3
common/data/src/main/java/com/gyee/wisdom/common/data/timeseries/TsPoint.java

@@ -1,8 +1,5 @@
 package com.gyee.wisdom.common.data.timeseries;
 
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
 /**
  * @author songwb<songwb @ aliyun.com>
  */

+ 9 - 17
common/data/src/main/java/com/gyee/wisdom/common/data/timeseries/TsPointData.java

@@ -5,10 +5,8 @@ import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
-import java.util.Optional;
-
 /**
- * @author songwb<songwb@aliyun.com>
+ * @author songwb<songwb @ aliyun.com>
  */
 @Data
 @AllArgsConstructor
@@ -19,33 +17,27 @@ public class TsPointData {
     private GeneralTsData tsData;
 
     public TsDataType findDataType() {
-        if (tsData.getDoubleValue().isPresent()){
+        if (tsData.getDoubleValue().isPresent()) {
             return TsDataType.DOUBLE;
-        }
-        else if (tsData.getBooleanValue().isPresent()){
+        } else if (tsData.getBooleanValue().isPresent()) {
             return TsDataType.BOOLEAN;
-        }
-        else if (tsData.getLongValue().isPresent()){
+        } else if (tsData.getLongValue().isPresent()) {
             return TsDataType.LONG;
-        }
-
-        else if (tsData.getStringValue().isPresent()){
+        } else if (tsData.getStringValue().isPresent()) {
             return TsDataType.STRING;
-        }
-
-        else if (tsData.getBlobValue().isPresent()){
+        } else if (tsData.getBlobValue().isPresent()) {
             return TsDataType.BLOB;
-        }
-
-        else if (tsData.getCoordinateValue().isPresent()){
+        } else if (tsData.getCoordinateValue().isPresent()) {
             return TsDataType.COORDINATE;
         }
 
 
         return TsDataType.DOUBLE;
     }
+
     /**
      * 获取 double 类型值
+     *
      * @return
      */
     public double getValue() {

+ 1 - 1
common/data/src/main/java/com/gyee/wisdom/common/data/timeseries/TsPointDataList.java

@@ -8,7 +8,7 @@ import lombok.NoArgsConstructor;
 import java.util.List;
 
 /**
- * @author songwb<songwb@aliyun.com>
+ * @author songwb<songwb @ aliyun.com>
  */
 @Data
 @AllArgsConstructor

+ 396 - 0
common/data/src/main/java/com/gyee/wisdom/common/data/windturbine/Equipment.java

@@ -0,0 +1,396 @@
+package com.gyee.wisdom.common.data.windturbine;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+/**
+ * <p>
+ * 风机&光伏
+ * </p>
+ *
+ * @author gfhd
+ * @since 2023-04-23
+ */
+@TableName("pro_basic_equipment")
+public class Equipment implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 编号
+     */
+    private String id;
+
+    /**
+     * 编码
+     */
+    private String nemCode;
+
+    /**
+     * 场站编号(冗余)
+     */
+    private String windpowerstationId;
+
+    /**
+     * 地球经度
+     */
+    private BigDecimal longitude;
+
+    /**
+     * 地球纬度
+     */
+    private BigDecimal latitude;
+
+    /**
+     * 型号编号
+     */
+    private String modelId;
+
+    /**
+     * 状态
+     */
+    private String status;
+
+    /**
+     * 工程编号(冗余)
+     */
+    private String projectId;
+
+    /**
+     * 线路编号
+     */
+    private String lineId;
+
+    /**
+     * 首次并网时间
+     */
+    private LocalDate firstIntegratedTime;
+
+    /**
+     * 图片
+     */
+    private String photo;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 别名
+     */
+    private String aname;
+
+    /**
+     * 是否是标杆设备
+     */
+    private Integer isStandard;
+
+    /**
+     * 区域编号
+     */
+    private String regionId;
+
+    /**
+     * 公司编号
+     */
+    private String companyId;
+
+    /**
+     * 是否可用
+     */
+    private Integer isable;
+
+    /**
+     * 1:陆地;2:海上;3:集中;4:组串
+     */
+    private Integer equipmentCategory;
+
+    private String parentId;
+
+    private String squareId;
+
+    /**
+     * 备用1
+     */
+    private String spare1;
+
+    /**
+     * 备用2
+     */
+    private String spare2;
+
+    /**
+     * 备用3
+     */
+    private String spare3;
+
+    /**
+     * 备用4
+     */
+    private String spare4;
+
+    /**
+     * 排序
+     */
+    private Integer orderNum;
+
+    private String substationId;
+
+    /**
+     * 对应旧表风机编码
+     */
+    private String code;
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getNemCode() {
+        return nemCode;
+    }
+
+    public void setNemCode(String nemCode) {
+        this.nemCode = nemCode;
+    }
+
+    public String getWindpowerstationId() {
+        return windpowerstationId;
+    }
+
+    public void setWindpowerstationId(String windpowerstationId) {
+        this.windpowerstationId = windpowerstationId;
+    }
+
+    public BigDecimal getLongitude() {
+        return longitude;
+    }
+
+    public void setLongitude(BigDecimal longitude) {
+        this.longitude = longitude;
+    }
+
+    public BigDecimal getLatitude() {
+        return latitude;
+    }
+
+    public void setLatitude(BigDecimal latitude) {
+        this.latitude = latitude;
+    }
+
+    public String getModelId() {
+        return modelId;
+    }
+
+    public void setModelId(String modelId) {
+        this.modelId = modelId;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getProjectId() {
+        return projectId;
+    }
+
+    public void setProjectId(String projectId) {
+        this.projectId = projectId;
+    }
+
+    public String getLineId() {
+        return lineId;
+    }
+
+    public void setLineId(String lineId) {
+        this.lineId = lineId;
+    }
+
+    public LocalDate getFirstIntegratedTime() {
+        return firstIntegratedTime;
+    }
+
+    public void setFirstIntegratedTime(LocalDate firstIntegratedTime) {
+        this.firstIntegratedTime = firstIntegratedTime;
+    }
+
+    public String getPhoto() {
+        return photo;
+    }
+
+    public void setPhoto(String photo) {
+        this.photo = photo;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getAname() {
+        return aname;
+    }
+
+    public void setAname(String aname) {
+        this.aname = aname;
+    }
+
+    public Integer getIsStandard() {
+        return isStandard;
+    }
+
+    public void setIsStandard(Integer isStandard) {
+        this.isStandard = isStandard;
+    }
+
+    public String getRegionId() {
+        return regionId;
+    }
+
+    public void setRegionId(String regionId) {
+        this.regionId = regionId;
+    }
+
+    public String getCompanyId() {
+        return companyId;
+    }
+
+    public void setCompanyId(String companyId) {
+        this.companyId = companyId;
+    }
+
+    public Integer getIsable() {
+        return isable;
+    }
+
+    public void setIsable(Integer isable) {
+        this.isable = isable;
+    }
+
+    public Integer getEquipmentCategory() {
+        return equipmentCategory;
+    }
+
+    public void setEquipmentCategory(Integer equipmentCategory) {
+        this.equipmentCategory = equipmentCategory;
+    }
+
+    public String getParentId() {
+        return parentId;
+    }
+
+    public void setParentId(String parentId) {
+        this.parentId = parentId;
+    }
+
+    public String getSquareId() {
+        return squareId;
+    }
+
+    public void setSquareId(String squareId) {
+        this.squareId = squareId;
+    }
+
+    public String getSpare1() {
+        return spare1;
+    }
+
+    public void setSpare1(String spare1) {
+        this.spare1 = spare1;
+    }
+
+    public String getSpare2() {
+        return spare2;
+    }
+
+    public void setSpare2(String spare2) {
+        this.spare2 = spare2;
+    }
+
+    public String getSpare3() {
+        return spare3;
+    }
+
+    public void setSpare3(String spare3) {
+        this.spare3 = spare3;
+    }
+
+    public String getSpare4() {
+        return spare4;
+    }
+
+    public void setSpare4(String spare4) {
+        this.spare4 = spare4;
+    }
+
+    public Integer getOrderNum() {
+        return orderNum;
+    }
+
+    public void setOrderNum(Integer orderNum) {
+        this.orderNum = orderNum;
+    }
+
+    public String getSubstationId() {
+        return substationId;
+    }
+
+    public void setSubstationId(String substationId) {
+        this.substationId = substationId;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    @Override
+    public String toString() {
+        return "Equipment{" +
+                "id = " + id +
+                ", nemCode = " + nemCode +
+                ", windpowerstationId = " + windpowerstationId +
+                ", longitude = " + longitude +
+                ", latitude = " + latitude +
+                ", modelId = " + modelId +
+                ", status = " + status +
+                ", projectId = " + projectId +
+                ", lineId = " + lineId +
+                ", firstIntegratedTime = " + firstIntegratedTime +
+                ", photo = " + photo +
+                ", name = " + name +
+                ", aname = " + aname +
+                ", isStandard = " + isStandard +
+                ", regionId = " + regionId +
+                ", companyId = " + companyId +
+                ", isable = " + isable +
+                ", equipmentCategory = " + equipmentCategory +
+                ", parentId = " + parentId +
+                ", squareId = " + squareId +
+                ", spare1 = " + spare1 +
+                ", spare2 = " + spare2 +
+                ", spare3 = " + spare3 +
+                ", spare4 = " + spare4 +
+                ", orderNum = " + orderNum +
+                ", substationId = " + substationId +
+                ", code = " + code +
+                "}";
+    }
+}

+ 1 - 1
common/data/src/main/java/com/gyee/wisdom/common/exception/WisdomException.java

@@ -1,7 +1,7 @@
 package com.gyee.wisdom.common.exception;
 
 /**
- * @author songwb<songwenbin@gyee-china.com>
+ * @author songwb<songwenbin @ gyee-china.com>
  */
 public class WisdomException extends Exception {
     public WisdomException() {

+ 5 - 5
common/data/src/main/java/com/gyee/wisdom/common/exception/WisdomRuntimeException.java

@@ -1,9 +1,9 @@
 package com.gyee.wisdom.common.exception;
 
 /**
- * @author songwb<songwenbin@gyee-china.com>
+ * @author songwb<songwenbin @ gyee-china.com>
  */
-public class WisdomRuntimeException extends RuntimeException{
+public class WisdomRuntimeException extends RuntimeException {
     public WisdomRuntimeException() {
         super();
     }
@@ -21,9 +21,9 @@ public class WisdomRuntimeException extends RuntimeException{
     }
 
     public WisdomRuntimeException(String message,
-                                 Throwable cause,
-                                 boolean enableSuppression,
-                                 boolean writableStackTrace) {
+                                  Throwable cause,
+                                  boolean enableSuppression,
+                                  boolean writableStackTrace) {
         super(message, cause, enableSuppression, writableStackTrace);
     }
 }

+ 1 - 1
electricity/meter/src/main/java/com/gyee/gaia/meter/entity/TestTb.java

@@ -6,7 +6,7 @@ import java.io.Serializable;
 
 
 @Data
-public class TestTb implements Serializable{
+public class TestTb implements Serializable {
 
     private int id;
     private String description;

+ 1 - 1
electricity/meter/src/main/java/com/gyee/gaia/meter/mapper/TestTbMapper.java

@@ -11,6 +11,6 @@ import java.util.List;
 @Mapper
 public interface TestTbMapper extends BaseMapper<TestTb> {
 
-     List<TestTb> getAll();
+    List<TestTb> getAll();
 
 }

+ 5 - 5
electricity/meter/src/main/java/com/gyee/gaia/meter/service/TestTbService.java

@@ -13,12 +13,12 @@ import java.util.List;
 @Slf4j
 public class TestTbService {
 
-   @Autowired
-   private TestTbMapper testTbMapper;
+    @Autowired
+    private TestTbMapper testTbMapper;
 
 
-   public List<TestTb> getAllTestTb(){
-       return testTbMapper.getAll();
-   }
+    public List<TestTb> getAllTestTb() {
+        return testTbMapper.getAll();
+    }
 
 }

+ 2 - 1
electricity/meter/src/main/resources/mappers-postgresql/TestTb.xml

@@ -4,7 +4,8 @@
 
 
     <select id="getAll" parameterType="java.util.Map" resultType="com.gyee.gaia.meter.entity.TestTb">
-        select * from  testtb a
+        select *
+        from testtb a
     </select>
 
 

+ 81 - 0
state/wind/src/main/java/com/gyee/gaia/state/wind/config/Status8Properties.java

@@ -0,0 +1,81 @@
+package com.gyee.gaia.state.wind.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+@Component
+@ConfigurationProperties("calculate.status8")
+public class Status8Properties {
+
+    //数据适配器websocket服务地址
+    private String serviceUrl;
+
+    //离线判定时间间隔,单位毫秒
+    private long offlineInterval = 600000;
+
+    //扫描实时数据线程轮询时间间隔,单位毫秒
+    private int readThreadInterval = 1000;
+
+    //计算状态线程轮询时间间隔,单位毫秒
+    private int calcThreadInterval = 1000;
+
+    private List<WindturbineGroup> windturbineGroups = new ArrayList<>();
+
+    private String fjztUniformCode;
+    private String gzztUniformCode;
+
+    private String tjtsUniformCode;
+    private String sdtsUniformCode;
+    private String djtsUniformCode;
+    private String qdtsUniformCode;
+    private String bwtsUniformCode;
+    private String gztsUniformCode;
+    private String whtsUniformCode;
+    private String lxtsUniformCode;
+
+    public long getOfflineInterval() {
+        return offlineInterval;
+    }
+
+    public void setOfflineInterval(long value) {
+        this.offlineInterval = value * 1000;
+    }
+
+    private String[] zttsUniformCodes;
+
+    public String[] getZttsUniformCodes() {
+        if (zttsUniformCodes == null) {
+            zttsUniformCodes = new String[]{tjtsUniformCode, sdtsUniformCode, djtsUniformCode, qdtsUniformCode,
+                    bwtsUniformCode, gztsUniformCode, whtsUniformCode, lxtsUniformCode};
+        }
+
+        return zttsUniformCodes;
+    }
+
+    public String convertZttsUniformCodes(String uniformCode) {
+        if (uniformCode.equals(tjtsUniformCode))
+            return "TJTS";
+        if (uniformCode.equals(sdtsUniformCode))
+            return "SDTS";
+        if (uniformCode.equals(djtsUniformCode))
+            return "DJTS";
+        if (uniformCode.equals(qdtsUniformCode))
+            return "QDTS";
+        if (uniformCode.equals(bwtsUniformCode))
+            return "BWTS";
+        if (uniformCode.equals(gztsUniformCode))
+            return "GZTS";
+        if (uniformCode.equals(whtsUniformCode))
+            return "WHTS";
+        if (uniformCode.equals(lxtsUniformCode))
+            return "LXTS";
+
+        return "";
+    }
+
+}

+ 73 - 0
state/wind/src/main/java/com/gyee/gaia/state/wind/config/WindturbineGroup.java

@@ -0,0 +1,73 @@
+package com.gyee.gaia.state.wind.config;
+
+import lombok.Data;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Data
+public class WindturbineGroup {
+    private String station;
+    private String modelid;
+    private String TJ;
+    private String SD;
+    private String DJ;
+    private String QD;
+    private String BW;
+    private String GZ;
+    private String WH;
+    private String LX;
+    private String YGGL;
+
+    //private Map<String, String> allUniformCodes;
+
+    public Map<String, String> getAllUniformCodes() {
+        Map<String, String> result = new HashMap<>();
+
+        String[] arrSD = SD.split(",");
+        if (arrSD != null && arrSD.length > 0) {
+            for (String uc : arrSD)
+                result.put(uc, "SD");
+        }
+
+        String[] arrDJ = DJ.split(",");
+        if (arrDJ != null && arrDJ.length > 0) {
+            for (String uc : arrDJ)
+                result.put(uc, "DJ");
+        }
+
+        String[] arrQD = QD.split(",");
+        if (arrQD != null && arrQD.length > 0) {
+            for (String uc : arrQD)
+                result.put(uc, "QD");
+        }
+
+        String[] arrBW = BW.split(",");
+        if (arrBW != null && arrBW.length > 0) {
+            for (String uc : arrBW)
+                result.put(uc, "BW");
+        }
+
+        String[] arrGZ = GZ.split(",");
+        if (arrGZ != null && arrGZ.length > 0) {
+            for (String uc : arrGZ)
+                result.put(uc, "GZ");
+        }
+
+        String[] arrWH = WH.split(",");
+        if (arrWH != null && arrWH.length > 0) {
+            for (String uc : arrWH)
+                result.put(uc, "WH");
+        }
+
+        String[] arrLX = LX.split(",");
+        if (arrLX != null && arrLX.length > 0) {
+            for (String uc : arrLX)
+                result.put(uc, "LX");
+        }
+
+        result.put(YGGL, "YGGL");
+
+        return result;
+    }
+}

+ 85 - 0
state/wind/src/main/java/com/gyee/gaia/state/wind/entity/StationInfo.java

@@ -0,0 +1,85 @@
+package com.gyee.gaia.state.wind.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.Map;
+
+@Getter
+@Setter
+public class StationInfo {
+
+    private String stationName;
+    private String stationId;
+    //风机的8种原始状态:停机、 上电、待机、启动、并网、故障、维护、 离线
+    private int cntTJ;
+    private int cntSD;
+    private int cntDJ;
+    private int cntQD;
+    private int cntBW;
+    private int cntGZ;
+    private int cntWH;
+    private int cntLX;
+    private int cntAll;
+
+    //key1: modelid, key2: windturbineId
+    private Map<String, WindturbineInfo> windturbineMap;
+
+    //key: tagId
+    private Map<String, TagInfo> readMap;
+
+    //key: 状态索引号
+    private Map<String, TagInfo> zttsMap;
+
+    //key: windturbineId
+    private Map<String, TagInfo> fjztMap;
+
+    //故障状态点
+    //key: windturbineId
+    private Map<String, TagInfo> gzztMap;
+
+    private String readTagKeys;
+
+    public String getReadTagKeys() {
+        if (readTagKeys == null) {
+            String[] arr = new String[readMap.size()];
+            readMap.keySet().toArray(arr);
+            readTagKeys = StringUtils.join(arr, ",");
+        }
+        return readTagKeys;
+    }
+
+    public void resetCntStatus() {
+        cntTJ = 0;
+        cntSD = 0;
+        cntDJ = 0;
+        cntQD = 0;
+        cntBW = 0;
+        cntGZ = 0;
+        cntWH = 0;
+        cntLX = 0;
+    }
+
+    public void updateCntStatus(double value) {
+        // 0-停机、 1-上电、2-待机、3-启动、4-并网、5-故障、6-维护、 7-离线
+        if (value == 0)
+            cntTJ++;
+        else if (value == 1)
+            cntSD++;
+        else if (value == 2)
+            cntDJ++;
+        else if (value == 3)
+            cntQD++;
+        else if (value == 4)
+            cntBW++;
+        else if (value == 5)
+            cntGZ++;
+        else if (value == 6)
+            cntWH++;
+        else if (value == 7)
+            cntLX++;
+
+
+    }
+}

+ 17 - 0
state/wind/src/main/java/com/gyee/gaia/state/wind/entity/TagInfo.java

@@ -0,0 +1,17 @@
+package com.gyee.gaia.state.wind.entity;
+
+import com.gyee.wisdom.common.data.timeseries.DoubleTsData;
+import lombok.Data;
+
+@Data
+public class TagInfo {
+
+    private String id;
+    private String uniformCode;
+    private String relateStatus;
+    private int statusIndex;
+    //private TsDataType tsDataType;
+    private DoubleTsData lastUpdateTsData;
+    //private WindturbineInfo windturbineInfo;
+
+}

+ 1 - 1
state/wind/src/main/java/com/gyee/gaia/state/wind/entity/TestTb.java

@@ -6,7 +6,7 @@ import java.io.Serializable;
 
 
 @Data
-public class TestTb implements Serializable{
+public class TestTb implements Serializable {
 
     private int id;
     private String description;

+ 241 - 0
state/wind/src/main/java/com/gyee/gaia/state/wind/entity/WindturbineInfo.java

@@ -0,0 +1,241 @@
+package com.gyee.gaia.state.wind.entity;
+
+import lombok.Data;
+
+import java.util.Date;
+import java.util.Map;
+
+@Data
+public class WindturbineInfo {
+
+    private StationInfo stationInfo;
+    private String name;
+    private String id;
+    private String modelId;
+    //private int status8;
+    private long lastUpdateTs;
+    private double YGGL;
+
+    /**
+     * 系统时间戳
+     */
+    private long systemTs;
+
+    //风机的8种原始状态:0-停机、 1-上电、2-待机、3-启动、4-并网、5-故障、6-维护、 7-离线
+    private int[] statusArray = new int[8];
+
+    //key: tagId
+    private Map<String, TagInfo> tagMap;
+
+    public double getStatus8(long offlineInterval) {
+        long ts = new Date().getTime();
+        long diff = ts - systemTs;
+        if (diff > offlineInterval)
+            return 7;
+
+        if ("CCWE-1500".equals(modelId)) {
+            //青山华创风机状态判断
+            switch ((int) getYGGL()) {
+                case 1:
+                    return 2;
+                case 2:
+                    return 6;
+                case 3:
+                case 4:
+                case 5:
+                case 10:
+                case 11:
+                case 12:
+                case 21:
+                case 22:
+                case 23:
+                case 24:
+                case 25:
+                case 26:
+                case 27:
+                    return 3;
+                case 6:
+                case 7:
+                case 8:
+                case 9:
+                    return 4;
+                case 30:
+                    return 0;
+                case 50:
+                case 99:
+                case 199:
+                case 200:
+                    return 5;
+            }
+            return 5;
+        } else if ("GW77-1500".equals(modelId) || "GW82-1500".equals(modelId) || "GW109-2500".equals(modelId)) {
+            int statusCode = (int) getYGGL();
+            if (statusCode == 6 || statusCode == 9) return 6;
+            if (statusArray[5] > 0) return 5;
+            /*switch ((int)statusCode) {
+                case 0:
+                case 3:
+                case 4:
+                    return 2;   //待机
+                case 1:
+                case 2:
+                    return 2;
+                case 5:
+                    return 4;
+                case 6:
+                case 9:
+                    return 6;
+            }
+            return 0;*/
+
+            //0	初始化 1停机过程 2停机状态 3待机状态 4启机状态 6维护状态 5发电状态 8自检状态 9维护状态
+            switch (statusCode) {
+                case 0:
+                    return 2;
+                case 1:
+                case 2:
+                    return 2;
+                case 3:
+                    return 2;
+                case 4:
+                    return 2;
+                case 5:
+                    return 4;
+                case 8:
+                    return 2;
+                case 6:
+                case 9:
+                    return 6;
+            }
+            return 2;
+        } else if ("UP2000-105s".equals(modelId) || "UP2000-96".equals(modelId) || "UP2000-121S".equals(modelId) || "UP2000-130S".equals(modelId)
+                || "UP3000-146S".equals(modelId) || "UP2000-115s".equals(modelId) || "UP3000-120".equals(modelId)) {
+            //0是通讯中断,1是故障,2是维护,3是待机,4是启动,5是并网,6是正常停机
+            switch ((int) getYGGL()) {
+                case 0:
+                    return 7;
+                case 1:
+                    return 5;
+                case 2:
+                    return 6;
+                case 3:
+                    return 2;
+                case 4:
+                    return 2;
+                case 5:
+                    return 4;
+                case 6:
+                    return 0;
+            }
+            return 2;
+        } else if ("MY-1.5se".equals(modelId)) {
+            //2、200 启动 也算待机  4 、5是故障,7、8是停机,9、10是待机,11故障,12、13 停机   3 并网。
+            switch ((int) getYGGL()) {
+                case 2:
+                case 200:
+                    return 3;
+                case 9:
+                case 10:
+                case 1:
+                    return 2;
+                case 4:
+                case 11:
+                    return 5;
+                case 7:
+                case 8:
+                case 12:
+                case 13:
+                    return 0;
+                case 3:
+                    return 4;
+                case 5:
+                case 6:
+                    return 6;
+            }
+            return 2;
+        } else if ("SL1500-82".equals(modelId) || "SL1500-77".equals(modelId)) {
+            //风机的8种原始状态:0-停机、 1-上电、2-待机、3-启动、4-并网、5-故障、6-维护、 7-离线
+            // 0, 1, 5, 6, 8, 10, 11, 12, is 待机。3, is 故障。2, 7, is 运行。4, 13, 14, 15 is 维护
+            switch ((int) getYGGL()) {
+                case 0:
+                case 1:
+                case 5:
+                case 6:
+                case 8:
+                case 10:
+                case 11:
+                case 12:
+                    return 2;
+                case 2:
+                case 7:
+                    return 4;
+                case 4:
+                case 13:
+                case 14:
+                case 15:
+                    return 6;
+                case 3:
+                    return 5;
+            }
+            return 0;
+        } else {
+            if (statusArray[6] > 0) {
+                return 6;
+            } else if (statusArray[5] > 0) {
+                return 5;
+            } else if (statusArray[0] > 0) {
+                return 0;
+            } else if (statusArray[4] > 0) {
+                return 4;
+            } else if (statusArray[3] > 0) {
+                return 3;
+            } else if (statusArray[2] > 0) {
+                //            if (getYGGL() > 1) {
+                //                return 4;
+                //            }
+                //            else
+                return 2;
+            } else if (statusArray[1] > 0) {
+                return 1;
+            }
+
+            if (getYGGL() > 1) {
+                System.out.println("yggl=" + getYGGL());
+                return 4;
+            } else
+                return 2;
+
+        }
+    }
+
+    public void resetStatusArray() {
+        for (int i = 0; i < statusArray.length; i++)
+            statusArray[i] = 0;
+    }
+
+    public void updateStatus(String status, double value) {
+        switch (status) {
+            case "TJ":
+                statusArray[0] += value > 0 ? 1 : 0;
+                break;
+            case "SD":
+                statusArray[1] += value > 0 ? 1 : 0;
+                break;
+            case "DJ":
+                statusArray[2] += value > 0 ? 1 : 0;
+                break;
+            case "QD":
+                statusArray[3] += value > 0 ? 1 : 0;
+                break;
+            case "BW":
+                statusArray[4] += value > 0 ? 1 : 0;
+                break;
+            case "GZ":
+                statusArray[5] += value > 0 ? 1 : 0;
+                break;
+            case "WH":
+                statusArray[6] += value > 0 ? 1 : 0;
+                break;
+        }
+    }
+}

+ 0 - 16
state/wind/src/main/java/com/gyee/gaia/state/wind/mapper/TestTbMapper.java

@@ -1,16 +0,0 @@
-package com.gyee.gaia.state.wind.mapper;
-
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.gyee.gaia.state.wind.entity.TestTb;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-
-
-@Mapper
-public interface TestTbMapper extends BaseMapper<TestTb> {
-
-     List<TestTb> getAll();
-
-}

+ 64 - 0
state/wind/src/main/java/com/gyee/gaia/state/wind/restful/RestfulClient.java

@@ -0,0 +1,64 @@
+package com.gyee.gaia.state.wind.restful;
+
+import com.alibaba.fastjson.JSONObject;
+import com.gyee.gaia.state.wind.config.Status8Properties;
+import com.gyee.wisdom.common.data.timeseries.DoubleTsData;
+import com.gyee.wisdom.common.data.timeseries.TsPointData;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+@Component
+public class RestfulClient {
+
+    @Autowired
+    private Status8Properties status8Properties;
+
+    private final RestTemplate restTemplate = new RestTemplate();
+
+    public Map<String, DoubleTsData> getLatest(String keys) throws Exception {
+        String url = status8Properties.getServiceUrl() + "/latest?keys=" + keys;
+        ResponseEntity<JSONObject> resp = restTemplate.getForEntity(url, JSONObject.class);
+        JSONObject jsonObject = resp.getBody();
+        Map<String, DoubleTsData> result = new HashMap<>();
+
+        Iterator<String> sIterator = jsonObject.keySet().iterator();
+        while (sIterator.hasNext()) {
+            // 获得key
+            String key = sIterator.next();
+            // 根据key获得value, value也可以是JSONObject,JSONArray,使用对应的参数接收即可
+            JSONObject jsonData = jsonObject.getJSONObject(key);
+            Long ts = jsonData.getLong("ts");
+            double dValue = 0;
+            if (jsonData.containsKey("doubleValue")) {
+                dValue = jsonData.getDoubleValue("doubleValue");
+            } else if (jsonData.containsKey("booleanValue")) {
+                dValue = jsonData.getBooleanValue("booleanValue") ? 1 : 0;
+            } else if (jsonData.containsKey("longValue")) {
+                dValue = jsonData.getDoubleValue("longValue");
+            } else if (jsonData.containsKey("stringValue")) {
+                dValue = jsonData.getDoubleValue("stringValue");
+            }
+            DoubleTsData tsData = new DoubleTsData(ts, (short) 0, dValue);
+            result.put(key, tsData);
+        }
+
+        return result;
+    }
+
+    public void writeLatestPointList(List<TsPointData> writeList) throws Exception {
+
+        String url = status8Properties.getServiceUrl() + "/latest/batch";
+        restTemplate.postForObject(url, writeList, String.class);
+
+
+    }
+
+
+}

+ 24 - 0
state/wind/src/main/java/com/gyee/gaia/state/wind/runner/ApplicationReadyEventListener.java

@@ -0,0 +1,24 @@
+package com.gyee.gaia.state.wind.runner;
+
+
+import com.gyee.gaia.state.wind.service.CalculateServer;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.context.event.ApplicationReadyEvent;
+import org.springframework.context.ApplicationListener;
+import org.springframework.stereotype.Component;
+
+@Component
+public class ApplicationReadyEventListener implements
+        ApplicationListener<ApplicationReadyEvent> {
+
+    @Autowired
+    private CalculateServer calculateServer;
+
+    @Override
+    public void onApplicationEvent(ApplicationReadyEvent event) {
+        System.out.println("ApplicationReadyEvent  rised!");
+        System.out.println("listener: " + event.toString());
+        calculateServer.start();
+    }
+
+}

+ 327 - 0
state/wind/src/main/java/com/gyee/gaia/state/wind/service/CalculateServer.java

@@ -0,0 +1,327 @@
+package com.gyee.gaia.state.wind.service;
+
+import com.gyee.gaia.state.wind.config.Status8Properties;
+import com.gyee.gaia.state.wind.entity.StationInfo;
+import com.gyee.gaia.state.wind.entity.TagInfo;
+import com.gyee.gaia.state.wind.entity.WindturbineInfo;
+import com.gyee.gaia.state.wind.restful.RestfulClient;
+import com.gyee.wisdom.common.data.timeseries.DoubleTsData;
+import com.gyee.wisdom.common.data.timeseries.GeneralTsData;
+import com.gyee.wisdom.common.data.timeseries.TsPointData;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+
+@Slf4j
+@Component
+public class CalculateServer {
+
+    @Autowired
+    private Status8Properties status8Properties;
+
+    @Autowired
+    private Status8Service status8Service;
+
+    @Autowired
+    private RestfulClient restfulClient;
+
+    private boolean serverStarted = false;
+    private boolean readThreadFlag = false;
+    private boolean calcThreadFlag = false;
+    //只有数据加载线程执行成功一次后,才开始执行计算线程
+    private boolean readRtdbSuccess = false;
+
+    private Map<String, StationInfo> stationInfoMap;
+    private Map<String, DoubleTsData> result;
+
+    public boolean start() {
+        if (serverStarted) {
+            return true;
+        }
+
+        try {
+            log.info("明细状态计算服务正在启动...... ");
+            log.info("开始加载配置及测点数据......");
+            stationInfoMap = status8Service.getStationInfoMap();
+            log.info("配置数据加载完成,场站数:{}", stationInfoMap.size());
+
+            loadCurrentStatus();
+
+            readThreadFlag = true;
+            getReadThread().start();
+            sleep(1000);
+            calcThreadFlag = true;
+            getCalcThread().start();
+
+            serverStarted = true;
+        } catch (Exception ex) {
+            log.error("------------异常---------------", ex.getMessage());
+            serverStarted = false;
+            stop();
+            return false;
+        }
+
+        return true;
+    }
+
+    public void stop() {
+        readThreadFlag = false;
+        calcThreadFlag = false;
+        try {
+            Thread.sleep(3000);
+        } catch (Exception ex) {
+        }
+    }
+
+    public void restart() {
+    }
+
+    Thread getReadThread() {
+        return new Thread(new Runnable() {
+            @Override
+            public void run() {
+                log.info("数据加载线程启动...");
+                while (readThreadFlag) {
+                    try {
+                        for (StationInfo stInfo : stationInfoMap.values()) {
+                            try {
+                                String keys = stInfo.getReadTagKeys();
+                                Map<String, DoubleTsData> result = restfulClient.getLatest(keys);
+                                for (Map.Entry<String, DoubleTsData> entry : result.entrySet()) {
+                                    if (stInfo.getReadMap().containsKey(entry.getKey())) {
+                                        TagInfo tagInfo = stInfo.getReadMap().get(entry.getKey());
+
+                                        if (tagInfo.getLastUpdateTsData() == null ||
+                                                tagInfo.getLastUpdateTsData().getDoubleValue() != entry.getValue().getDoubleValue())
+                                            stInfo.getReadMap().get(entry.getKey()).setLastUpdateTsData(entry.getValue());
+                                    }
+                                }
+                                if (readRtdbSuccess == false)
+                                    readRtdbSuccess = true;
+                            } catch (Exception ex) {
+                                log.error(ex.getMessage());
+                                continue;
+                            }
+
+                        }
+                        System.out.print('.');
+                    } catch (Exception ex) {
+                        log.error(ex.getMessage());
+                    }
+                    sleep(status8Properties.getReadThreadInterval());
+                }
+            }
+        });
+    }
+
+    Thread getCalcThread() {
+        return new Thread(new Runnable() {
+            @Override
+            public void run() {
+                log.info("状态计算线程启动...");
+                while (calcThreadFlag) {
+                    if (readRtdbSuccess == false) {
+                        sleep(status8Properties.getCalcThreadInterval());
+                        continue;
+                    }
+
+                    long startTime = System.currentTimeMillis();
+
+                    try {
+                        for (StationInfo stInfo : stationInfoMap.values()) {
+                            Map<String, WindturbineInfo> wtMap = stInfo.getWindturbineMap();
+                            for (Map.Entry<String, WindturbineInfo> entry : wtMap.entrySet()) {
+                                String wtId = entry.getKey();
+                                WindturbineInfo wtInfo = entry.getValue();
+                                wtInfo.resetStatusArray();
+                                Map<String, TagInfo> tagMap = wtInfo.getTagMap();
+                                for (TagInfo tagInfo : tagMap.values()) {
+                                    if (tagInfo.getLastUpdateTsData() == null) {
+                                        log.info("empty value, tagId = " + tagInfo.getId());
+                                        continue;
+                                    }
+                                    String strStatus = tagInfo.getRelateStatus();
+                                    if (strStatus.equals("YGGL")) {
+                                        wtInfo.setYGGL(tagInfo.getLastUpdateTsData().getDoubleValue());
+                                        if (wtInfo.getLastUpdateTs() < tagInfo.getLastUpdateTsData().getTs()) {
+                                            wtInfo.setLastUpdateTs(tagInfo.getLastUpdateTsData().getTs());
+                                            wtInfo.setSystemTs(System.currentTimeMillis());
+                                        }
+                                    } else if (strStatus.equals("LX")) {
+                                        if (wtInfo.getLastUpdateTs() < tagInfo.getLastUpdateTsData().getTs()) {
+                                            wtInfo.setLastUpdateTs(tagInfo.getLastUpdateTsData().getTs());
+                                            wtInfo.setSystemTs(System.currentTimeMillis());
+                                        }
+                                    } else {
+                                        wtInfo.updateStatus(tagInfo.getRelateStatus(), tagInfo.getLastUpdateTsData().getDoubleValue());
+                                    }
+                                }
+                            }
+
+                            List<TsPointData> writeList = new ArrayList<>();
+                            //List<String> shutdownWtList = new ArrayList<>();
+                            stInfo.resetCntStatus();
+                            long ts = new Date().getTime();
+                            for (WindturbineInfo wtInfo : wtMap.values()) {
+                                String wtId = wtInfo.getId();
+                                double wtStatus = wtInfo.getStatus8(status8Properties.getOfflineInterval());
+                                TagInfo tagInfo = stInfo.getFjztMap().get(wtId);
+                                if (tagInfo.getLastUpdateTsData() == null)
+                                    tagInfo.setLastUpdateTsData(new DoubleTsData(ts, (short) 0, 0));
+
+                                if (tagInfo.getLastUpdateTsData().getDoubleValue() != wtStatus) {
+
+                                    log.info(wtId + "状态变化,N:" + wtStatus + ", O:" + tagInfo.getLastUpdateTsData().getDoubleValue());
+
+                                    TsPointData tsPointData = new TsPointData();
+                                    tsPointData.setTagName(tagInfo.getId());
+                                    GeneralTsData generalTsData = new GeneralTsData();
+                                    generalTsData.setTs(ts);
+                                    generalTsData.setDoubleValue(Optional.ofNullable(wtStatus));
+                                    tsPointData.setTsData(generalTsData);
+                                    writeList.add(tsPointData);
+
+                                    //写故障状态点
+                                    if (wtStatus == 4.0 || wtStatus == 5.0) {
+                                        //log.info("aa");
+                                        TagInfo tagInfo2 = stInfo.getGzztMap().get(wtId);
+                                        TsPointData tsPointData2 = new TsPointData();
+                                        tsPointData2.setTagName(tagInfo2.getId());
+                                        GeneralTsData generalTsData2 = new GeneralTsData();
+                                        generalTsData2.setTs(ts);
+                                        if (wtStatus == 4.0)
+                                            generalTsData2.setDoubleValue(Optional.ofNullable(0.0));
+                                        else
+                                            generalTsData2.setDoubleValue(Optional.ofNullable(1.0));
+                                        tsPointData2.setTsData(generalTsData2);
+                                        writeList.add(tsPointData2);
+                                        //log.info("bb");
+                                    }
+
+                                    //                                    if (wtStatus == 0)
+                                    //                                        shutdownWtList.add(wtId);
+
+                                    tagInfo.setLastUpdateTsData(new DoubleTsData(ts, (short) 0, wtStatus));
+                                }
+
+                                stInfo.updateCntStatus(wtStatus);
+                            }
+
+                            //Map<String, TagInfo> zttsMap = stInfo.getZttsMap();
+                            for (TagInfo tagInfo : stInfo.getZttsMap().values()) {
+                                TsPointData tsPointData = new TsPointData();
+                                tsPointData.setTagName(tagInfo.getId());
+                                GeneralTsData generalTsData = new GeneralTsData();
+                                generalTsData.setTs(ts);
+
+                                switch (tagInfo.getUniformCode()) {
+                                    case "TJTS":
+                                        generalTsData.setDoubleValue(Optional.ofNullable((double) stInfo.getCntTJ()));
+                                        break;
+                                    case "SDTS":
+                                        generalTsData.setDoubleValue(Optional.ofNullable((double) stInfo.getCntSD()));
+                                        break;
+                                    case "DJTS":
+                                        generalTsData.setDoubleValue(Optional.ofNullable((double) stInfo.getCntDJ()));
+                                        break;
+                                    case "QDTS":
+                                        generalTsData.setDoubleValue(Optional.ofNullable((double) stInfo.getCntQD()));
+                                        break;
+                                    case "GZTS":
+                                        generalTsData.setDoubleValue(Optional.ofNullable((double) stInfo.getCntGZ()));
+                                        break;
+                                    case "WHTS":
+                                        generalTsData.setDoubleValue(Optional.ofNullable((double) stInfo.getCntWH()));
+                                        break;
+                                    case "BWTS":
+                                        generalTsData.setDoubleValue(Optional.ofNullable((double) stInfo.getCntBW()));
+                                        break;
+                                    case "LXTS":
+                                        generalTsData.setDoubleValue(Optional.ofNullable((double) stInfo.getCntLX()));
+                                        break;
+                                    //                                        default:
+                                    //                                            generalTsData.setDoubleValue(Optional.ofNullable((double)0));
+
+                                }
+
+                                //变化存
+                                double preValue = tagInfo.getLastUpdateTsData().getDoubleValue();
+                                if (generalTsData.getDoubleValue().get() != preValue) {
+                                    tsPointData.setTsData(generalTsData);
+                                    writeList.add(tsPointData);
+                                    tagInfo.setLastUpdateTsData(new DoubleTsData(ts, (short) 0, generalTsData.getDoubleValue().get()));
+                                }
+                            }
+
+                            if (writeList.size() > 0) {
+                                try {
+                                    restfulClient.writeLatestPointList(writeList);
+                                    log.info("*******状态变化:写入数据库" + writeList.size() + "个点**********");
+                                } catch (Exception ex) {
+                                    log.error(ex.getMessage());
+                                    loadCurrentStatus();
+                                }
+                            }
+
+                            //                            if (shutdownWtList.size() > 0) {
+                            //                                snapService.saveFaultSnaps(shutdownWtList);
+                            //                                log.info("停机风机:" + shutdownWtList.size());
+                            //                            }
+                        }
+
+                    } catch (Exception ex) {
+                        log.info(ex.getMessage());
+                    }
+
+                    sleep(status8Properties.getCalcThreadInterval());
+                }
+            }
+        });
+    }
+
+    private void sleep(int milliseconds) {
+        try {
+            TimeUnit.MILLISECONDS.sleep(milliseconds);
+        } catch (Exception ex) {
+            log.info(ex.getMessage());
+        }
+    }
+
+    private void loadCurrentStatus() {
+        log.info("从实时库读取风机当前状态及状态台数......");
+        for (StationInfo stInfo : stationInfoMap.values()) {
+            try {
+                Map<String, TagInfo> tagMap = new HashMap<>();
+                for (TagInfo tagInfo : stInfo.getFjztMap().values()) {
+                    if (tagMap.containsKey(tagInfo.getId()) == false)
+                        tagMap.put(tagInfo.getId(), tagInfo);
+                }
+                for (TagInfo tagInfo : stInfo.getZttsMap().values()) {
+                    if (tagMap.containsKey(tagInfo.getId()) == false)
+                        tagMap.put(tagInfo.getId(), tagInfo);
+                }
+
+                if (tagMap.size() > 0) {
+                    String[] arr = new String[tagMap.size()];
+                    tagMap.keySet().toArray(arr);
+                    String tagKeys = StringUtils.join(arr, ",");
+                    Map<String, DoubleTsData> result = restfulClient.getLatest(tagKeys);
+                    for (Map.Entry<String, DoubleTsData> entry : result.entrySet()) {
+                        if (tagMap.containsKey(entry.getKey())) {
+                            tagMap.get(entry.getKey()).setLastUpdateTsData(entry.getValue());
+                        }
+                    }
+                    log.info("加载" + stInfo.getStationId() + "风机状态和状态台数完成。");
+                }
+            } catch (Exception ex) {
+                log.error(ex.getMessage());
+            }
+
+        }
+
+    }
+}

+ 201 - 0
state/wind/src/main/java/com/gyee/gaia/state/wind/service/Status8Service.java

@@ -0,0 +1,201 @@
+package com.gyee.gaia.state.wind.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.gyee.gaia.sql.Windturbine.IEquipmentService;
+import com.gyee.gaia.sql.point.ITestingPointService;
+import com.gyee.gaia.state.wind.config.Status8Properties;
+import com.gyee.gaia.state.wind.config.WindturbineGroup;
+import com.gyee.gaia.state.wind.entity.StationInfo;
+import com.gyee.gaia.state.wind.entity.TagInfo;
+import com.gyee.gaia.state.wind.entity.WindturbineInfo;
+import com.gyee.wisdom.common.data.point.TestingPoint;
+import com.gyee.wisdom.common.data.timeseries.DoubleTsData;
+import com.gyee.wisdom.common.data.windturbine.Equipment;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Slf4j
+@Service
+public class Status8Service {
+
+    private Map<String, StationInfo> stationInfoMap;
+
+    @Resource
+    private Status8Properties status8Properties;
+    @Resource
+    private ITestingPointService testingPointService;
+    @Resource
+    private IEquipmentService equipmentService;
+
+    public Map<String, StationInfo> getStationInfoMap() {
+        if (stationInfoMap == null)
+            stationInfoMap = createStationInfoMap();
+
+        return stationInfoMap;
+    }
+
+    private Map<String, StationInfo> createStationInfoMap() {
+        Map<String, StationInfo> result = new HashMap<>();
+        // TODO 配置文件里面读取的参数 不同机型对应的 参数标准
+        List<WindturbineGroup> groupList = status8Properties.getWindturbineGroups();
+        for (WindturbineGroup group : groupList) {
+            String stationId = group.getStation();
+            if (result.containsKey(stationId) == false) {
+                result.put(stationId, createStationInfo(stationId));
+            }
+
+            StationInfo stationInfo = result.get(stationId);
+            UpdateStationInfo(stationInfo, group);
+        }
+
+        return result;
+    }
+
+    /**
+     * 创建风机状态的信息
+     *
+     * @param stationId
+     * @return
+     */
+    private StationInfo createStationInfo(String stationId) {
+        StationInfo result = new StationInfo();
+        result.setStationId(stationId);
+
+        //构造场站状态台数标签点Map
+        Map<String, TagInfo> zttsMap = new HashMap<>();
+        //TODO 风机的8中原始状态
+        String[] zttsUniformCodes = status8Properties.getZttsUniformCodes();
+        QueryWrapper<TestingPoint> tpwrapper = new QueryWrapper<>();
+        tpwrapper.eq("station_id", stationId).in("uniform_code", zttsUniformCodes);
+        List<TestingPoint> list = testingPointService.list(tpwrapper);
+        //List<TsPoint> pointList = sqlService.getTsPointByUniformCodes("station", stationId, zttsUniformCodes);
+        for (TestingPoint tsPoint : list) {
+            if (zttsMap.containsKey(tsPoint.getUniformCode()) == false) {
+                TagInfo tagInfo = new TagInfo();
+                tagInfo.setId(tsPoint.getId());
+                tagInfo.setLastUpdateTsData(new DoubleTsData(0L, (short) 0, -1));
+                String str = status8Properties.convertZttsUniformCodes(tsPoint.getUniformCode());
+                if (str != null && zttsMap.containsKey(str) == false) {
+                    tagInfo.setUniformCode(str);
+                    zttsMap.put(str, tagInfo);
+                }
+            }
+        }
+        result.setZttsMap(zttsMap);
+
+        //构造风机状态标签点Map 根据风场的主键获取 风机机型的ID
+        QueryWrapper<Equipment> emwrapper = new QueryWrapper<>();
+        emwrapper.eq("windpowerstation_id", stationId);
+        List<Equipment> emlist = equipmentService.list(emwrapper);
+        //List<Windturbine> windturbineList = sqlService.findByStationId(stationId);
+        String[] wtIds = emlist.stream().map(Equipment::getId).toArray(String[]::new);
+
+        Map<String, TagInfo> fjztMap = new HashMap<>();
+        String fjztUniformCode = status8Properties.getFjztUniformCode();
+        tpwrapper.clear();
+        tpwrapper.eq("thing_type", "windturbine").eq("uniform_code", fjztUniformCode)
+                .in("thing_id", wtIds);
+        List<TestingPoint> tplist2 = testingPointService.list(tpwrapper);
+        //List<TsPoint> pointList2 = sqlService.getTsPointByThingIds("windturbine", fjztUniformCode, wtIds);
+        for (TestingPoint tsPoint : tplist2) {
+            if (fjztMap.containsKey(tsPoint.getThingId()) == false) {
+                TagInfo tagInfo = new TagInfo();
+                tagInfo.setId(tsPoint.getId());
+                //tagInfo.set
+                tagInfo.setUniformCode(tsPoint.getUniformCode());
+                fjztMap.put(tsPoint.getThingId(), tagInfo);
+            }
+        }
+        result.setFjztMap(fjztMap);
+
+        //加载故障状态点
+        Map<String, TagInfo> gzztMap = new HashMap<>();
+        String gzztUniformCode = status8Properties.getGzztUniformCode();
+        tpwrapper.clear();
+        tpwrapper.eq("thing_type", "windturbine").eq("uniform_code", fjztUniformCode)
+                .in("thing_id", wtIds);
+        List<TestingPoint> tplist3 = testingPointService.list(tpwrapper);
+        //List<TsPoint> pointList3 = sqlService.getTsPointByThingIds("windturbine", gzztUniformCode, wtIds);
+        for (TestingPoint tsPoint : tplist3) {
+            if (gzztMap.containsKey(tsPoint.getThingId()) == false) {
+                TagInfo tagInfo = new TagInfo();
+                tagInfo.setId(tsPoint.getId());
+                //tagInfo.set
+                tagInfo.setUniformCode(tsPoint.getUniformCode());
+                gzztMap.put(tsPoint.getThingId(), tagInfo);
+            }
+        }
+        result.setGzztMap(gzztMap);
+
+
+        result.setWindturbineMap(new HashMap<>());
+        result.setReadMap(new HashMap<>());
+
+        return result;
+    }
+
+    private void UpdateStationInfo(StationInfo stationInfo, WindturbineGroup group) {
+        if (stationInfo.getWindturbineMap() == null)
+            stationInfo.setWindturbineMap(new HashMap<>());
+
+        Map<String, WindturbineInfo> wtMap = stationInfo.getWindturbineMap();
+
+        QueryWrapper<Equipment> emwrapper = new QueryWrapper<>();
+        emwrapper.eq("windpowerstation_id", stationInfo.getStationId());
+        List<Equipment> emlist = equipmentService.list(emwrapper);
+
+        //List<Windturbine> wtList = sqlService.findByStationId(stationInfo.getStationId());
+        String[] wtIds = emlist.stream().filter(t -> t.getModelId().equals(group.getModelid())).map(Equipment::getId).toArray(String[]::new);
+        for (String wtId : wtIds) {
+            WindturbineInfo wtInfo = new WindturbineInfo();
+            wtInfo.setId(wtId);
+            wtInfo.setModelId(group.getModelid());
+            wtInfo.setStationInfo(stationInfo);
+            wtInfo.setTagMap(new HashMap<>());
+
+            UpdateWindturbineInfo(wtInfo, group);
+            wtMap.put(wtId, wtInfo);
+        }
+
+    }
+
+
+    private void UpdateWindturbineInfo(WindturbineInfo wtInfo, WindturbineGroup wtGroup) {
+        Map<String, String> ucMap = wtGroup.getAllUniformCodes();
+        String[] strArr = new String[ucMap.size()];
+        ucMap.keySet().toArray(strArr);
+        log.info("加载风机测点, 风机号:" + wtInfo.getId());
+        QueryWrapper<TestingPoint> tpwrapper = new QueryWrapper<>();
+        tpwrapper.eq("thing_type", "windturbine").eq("station_id", wtInfo.getId())
+                .in("uniform_code", strArr);
+        List<TestingPoint> list = testingPointService.list(tpwrapper);
+
+        //List<TsPoint> tsPointList = sqlService.getTsPointByUniformCodes("windturbine", wtInfo.getId(), strArr);
+        for (TestingPoint tsPoint : list) {
+            try {
+                TagInfo tagInfo = new TagInfo();
+                tagInfo.setUniformCode(tsPoint.getUniformCode());
+                tagInfo.setId(tsPoint.getId());
+                //tagInfo.setTsDataType(tsPoint.getTsDataType());
+                tagInfo.setRelateStatus(ucMap.get(tsPoint.getUniformCode()));
+                //tagInfo.setStatusIndex(statusIndex);
+                //tagInfo.setWindturbineInfo(wtInfo);
+
+                wtInfo.getTagMap().put(tagInfo.getId(), tagInfo);
+                if (wtInfo.getStationInfo().getReadMap().containsKey(tagInfo.getId()) == false) {
+                    wtInfo.getStationInfo().getReadMap().put(tagInfo.getId(), tagInfo);
+                }
+            } catch (Exception ex) {
+                log.info(ex.getMessage());
+            }
+
+        }
+    }
+
+
+}

+ 0 - 24
state/wind/src/main/java/com/gyee/gaia/state/wind/service/TestTbService.java

@@ -1,24 +0,0 @@
-package com.gyee.gaia.state.wind.service;
-
-import com.gyee.gaia.state.wind.entity.TestTb;
-import com.gyee.gaia.state.wind.mapper.TestTbMapper;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-
-@Service
-@Slf4j
-public class TestTbService {
-
-   @Autowired
-   private TestTbMapper testTbMapper;
-
-
-   public List<TestTb> getAllTestTb(){
-       return testTbMapper.getAll();
-   }
-
-}

+ 2 - 1
state/wind/src/main/resources/mappers-postgresql/TestTb.xml

@@ -4,7 +4,8 @@
 
 
     <select id="getAll" parameterType="java.util.Map" resultType="com.gyee.gaia.state.wind.entity.TestTb">
-        select * from  testtb a
+        select *
+        from testtb a
     </select>
 
 

+ 137 - 0
timeseries/dao-interface/src/main/java/com/gyee/gaia/dao/hepler/PageVo.java

@@ -0,0 +1,137 @@
+package com.gyee.gaia.dao.hepler;
+
+public class PageVo {
+
+    private int page;
+    private int rows;
+    private int total;
+    private int count;
+    private int prev;
+    private int next;
+    private boolean isprev;
+    private boolean isnext;
+    private String url;
+    private Object list;
+
+    public PageVo() {
+    }
+
+    public PageVo(int page, int rows, int total, Object list) {
+        this.page = page;
+        this.rows = rows;
+        this.total = total;
+        this.list = list;
+    }
+
+    public int getPage() {
+        page = page < getCount() ? page : getCount();
+        page = page < 1 ? 1 : page;
+        return page;
+    }
+
+    public void setPage(int page) {
+        this.page = page;
+    }
+
+    public int getRows() {
+        return rows;
+    }
+
+    public void setRows(int rows) {
+        this.rows = rows;
+    }
+
+    public int getTotal() {
+        return total;
+    }
+
+    public void setTotal(int total) {
+        this.total = total;
+    }
+
+    public int getCount() {
+        if (rows == 0)
+            return 0;
+        count = total / rows;
+        if (total % rows != 0)
+            count++;
+        count = count == 0 ? 1 : count;
+        return count;
+    }
+
+    public int getPrev() {
+        prev = getPage() - 1;
+        prev = prev < 1 ? 1 : prev;
+        return prev;
+    }
+
+    public void setPrev(int prev) {
+        this.prev = prev;
+    }
+
+    public int getNext() {
+        next = getPage() + 1;
+        next = next > getCount() ? getCount() : next;
+        return next;
+    }
+
+    public void setNext(int next) {
+        this.next = next;
+    }
+
+    public boolean isIsprev() {
+        isprev = false;
+        if ((getCount() > 1) && (page > 1))
+            isprev = true;
+        return isprev;
+    }
+
+    public void setIsprev(boolean isprev) {
+        this.isprev = isprev;
+    }
+
+    public boolean isIsnext() {
+        isnext = false;
+        if ((getCount() > 1) && (getCount() > getPage()))
+            isnext = true;
+        return isnext;
+    }
+
+    public void setIsnext(boolean isnext) {
+        this.isnext = isnext;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public void setCount(int count) {
+        this.count = count;
+    }
+
+    public Object getList() {
+        return list;
+    }
+
+    public void setList(Object list) {
+        this.list = list;
+    }
+
+    public String getPreurl() {
+        if (url != null) {
+            return url.concat("/") + getPrev();
+        }
+        return null;
+    }
+
+    public String getNexturl() {
+        if (url != null) {
+            return url.concat("/") + getNext();
+        }
+        return null;
+    }
+}

+ 16 - 0
timeseries/dao-interface/src/main/java/com/gyee/gaia/dao/point/TestingPointMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.gaia.dao.point;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gyee.wisdom.common.data.point.TestingPoint;
+
+/**
+ * <p>
+ * 逻辑测点 Mapper 接口
+ * </p>
+ *
+ * @author gfhd
+ * @since 2023-04-24
+ */
+public interface TestingPointMapper extends BaseMapper<TestingPoint> {
+
+}

+ 34 - 0
timeseries/dao-interface/src/main/java/com/gyee/gaia/dao/system/IUserDao.java

@@ -0,0 +1,34 @@
+package com.gyee.gaia.dao.system;
+
+import com.gyee.wisdom.common.data.system.model.User;
+
+import java.util.List;
+
+
+public interface IUserDao {
+
+    List<User> getUser(String userName, String telePhone, String email);
+
+    void add(User user);
+
+    void update(User user);
+
+    void updateRoles(String uid, List<String> rids);
+
+    User get(String id);
+
+    boolean contains(String name);
+
+    List<User> list();
+
+    boolean hasResourcePermission(String uid, String resourceCode);
+
+    void remove(String id);
+
+    void switchStatus(String id, boolean disabled);
+
+    User findByUserName(String username);
+
+    User findByPhone(String phone);
+
+}

+ 45 - 0
timeseries/dao-interface/src/main/java/com/gyee/gaia/dao/system/IUserDao2.java

@@ -0,0 +1,45 @@
+package com.gyee.gaia.dao.system;
+
+import com.gyee.wisdom.common.data.system.model.User;
+
+import java.util.List;
+
+
+public interface IUserDao2 {
+
+    List<User> findAll();
+
+    User findByUserName(String userName);
+
+    User findById(String id);
+
+    User save(User t);
+
+    boolean removeById(String id);
+
+    List<User> findByCondition(String userName, String telePhone, String email);
+
+    List<User> getUser(String userName, String telePhone, String email);
+
+    void add(User user);
+
+    void update(User user);
+
+    void updateRoles(String uid, List<String> rids);
+
+    User get(String id);
+
+    boolean contains(String name);
+
+    List<User> list();
+
+    boolean hasResourcePermission(String uid, String resourceCode);
+
+    void remove(String id);
+
+    void switchStatus(String id, boolean disabled);
+
+
+    User findByPhone(String phone);
+
+}

+ 16 - 0
timeseries/dao-interface/src/main/java/com/gyee/gaia/dao/windturbine/EquipmentMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.gaia.dao.windturbine;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gyee.wisdom.common.data.windturbine.Equipment;
+
+/**
+ * <p>
+ * 风机&光伏 Mapper 接口
+ * </p>
+ *
+ * @author gfhd
+ * @since 2023-04-23
+ */
+public interface EquipmentMapper extends BaseMapper<Equipment> {
+
+}

+ 16 - 0
timeseries/dao-interface/src/main/java/com/gyee/gaia/dao/windturbine/LineMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.gaia.dao.windturbine;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gyee.wisdom.common.data.windturbine.Line;
+
+/**
+ * <p>
+ * 集电线路 Mapper 接口
+ * </p>
+ *
+ * @author gfhd
+ * @since 2023-04-23
+ */
+public interface LineMapper extends BaseMapper<Line> {
+
+}

+ 16 - 0
timeseries/dao-interface/src/main/java/com/gyee/gaia/dao/windturbine/PowerstationMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.gaia.dao.windturbine;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gyee.wisdom.common.data.windturbine.Powerstation;
+
+/**
+ * <p>
+ * 场站表 Mapper 接口
+ * </p>
+ *
+ * @author gfhd
+ * @since 2023-04-23
+ */
+public interface PowerstationMapper extends BaseMapper<Powerstation> {
+
+}

+ 16 - 0
timeseries/dao-interface/src/main/java/com/gyee/gaia/dao/windturbine/ProjectMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.gaia.dao.windturbine;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gyee.wisdom.common.data.windturbine.Project;
+
+/**
+ * <p>
+ * 工程表 Mapper 接口
+ * </p>
+ *
+ * @author gfhd
+ * @since 2023-04-23
+ */
+public interface ProjectMapper extends BaseMapper<Project> {
+
+}

+ 45 - 0
timeseries/dao-redis-taos/src/main/java/com/gyee/gaia/dao/redistaos/TaosCovertUtil.java

@@ -0,0 +1,45 @@
+package com.gyee.gaia.dao.redistaos;
+
+public class TaosCovertUtil {
+
+    /**
+     * 根据传过来的点分析出场站名
+     *
+     * @param point
+     * @return
+     */
+    public static String coverStationPrefix(String point) {
+        String station = null;
+
+        if (point.toUpperCase().contains("SBQ"))
+            station = "sbq";
+        else if (point.toUpperCase().contains("MHS"))
+            station = "mhs";
+        else if (point.toUpperCase().contains("NSS"))
+            station = "nss";
+        else if (point.toUpperCase().contains("XS"))
+            station = "xs";
+        else if (point.toUpperCase().contains("QS"))
+            station = "qs";
+        else if (point.toUpperCase().contains("DWK"))
+            station = "dwk";
+        else if (point.toUpperCase().contains("PL"))
+            station = "pl";
+        else if (point.toUpperCase().contains("MCH"))
+            station = "mch";
+        else if (point.toUpperCase().contains("SH"))
+            station = "sh";
+        else if (point.toUpperCase().contains("XH"))
+            station = "xh";
+        else if (point.toUpperCase().contains("NXDQ"))
+            station = "nxdq";
+        else if (point.toUpperCase().contains("JSFW"))
+            station = "jsfw";
+        else if (point.toUpperCase().contains("HZJ"))
+            station = "hzj";
+        else
+            station = "qs";
+
+        return station;
+    }
+}

+ 33 - 0
timeseries/dao-redis/src/main/java/com/gyee/gaia/dao/redis/RedisDataChangeDao.java

@@ -0,0 +1,33 @@
+package com.gyee.gaia.dao.redis;
+
+import com.gyee.gaia.dao.timeseries.IDataChangeDao;
+import com.gyee.gaia.dao.timeseries.RedisDao;
+import com.gyee.wisdom.common.data.timeseries.TsData;
+import com.gyee.wisdom.common.data.timeseries.TsPoint;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+@Component
+@RedisDao
+@Slf4j
+public class RedisDataChangeDao implements IDataChangeDao {
+
+
+    public void registerTopic(String topic, List<TsPoint> tsPoints) {
+
+
+    }
+
+    public void unRegisterTopic(String topic) {
+
+    }
+
+    public Map<String, TsData> getTopicDataChange(String topic) {
+        return null;
+    }
+
+
+}

+ 64 - 0
timeseries/dao-redis/src/main/java/com/gyee/gaia/dao/redis/TsDataParser.java

@@ -0,0 +1,64 @@
+package com.gyee.gaia.dao.redis;
+
+import com.gyee.wisdom.common.data.timeseries.BooleanTsData;
+import com.gyee.wisdom.common.data.timeseries.DoubleTsData;
+import com.gyee.wisdom.common.utils.ByteUtil;
+
+import java.io.UnsupportedEncodingException;
+
+public class TsDataParser {
+
+    //    typedef struct _redis_value_t {
+    //        double          value;
+    //        uint64_t        timestamp;
+    //    } redis_value_t;在redis内存中的结构就是这样的,其实就是16个字节,前8个字节是双精度浮点数,后8个字节是时间戳,网络序。
+    //    public static void main(String[] args) {
+    //编码后内存值是这样的 ae 47 e1 7a 14 ae 28 40 00 00 01 7e 51 e8 57 28
+    // 前面8个字节是double类型,真实值是12.34,
+    // 后面8个字节是时间戳,单位毫秒,值是1642051688232,表示2022-01-13 13:28:08.232
+
+    public static DoubleTsData parseWBString(String wbString)
+            throws UnsupportedEncodingException {
+
+        byte[] barr = wbString.getBytes("ascii");
+        double val = ByteUtil.getDouble(barr, 0);
+        long ts = ByteUtil.getLong2(barr, 8);
+
+        //        String valStr = wbString.substring(0,15);
+        //        String tsStr = wbString.substring(16);
+        //        long ts = Long.parseLong(tsStr,16);
+        //        byte[] barr = Hex.decodeHex(valStr.toCharArray());
+        //        double val = ByteUtil.getDouble(barr,0);
+        return new DoubleTsData(ts, (short) 0, val);
+
+    }
+
+
+    public static DoubleTsData parseZYDoubleString(String zyString) {
+        String s = zyString.trim();  //去除空格
+        s = s.substring(2);
+        s = s.substring(0, s.length() - 1);
+        String ar[] = s.split(":");
+        String tsStr = ar[0].substring(0, ar[0].length() - 1);
+        long ts = Long.parseLong(tsStr) * 1000;
+        double d = Double.parseDouble(ar[1]);
+        return new DoubleTsData(ts, (short) 0, d);
+    }
+
+    public static BooleanTsData parseZYBooleanString(String zyString) {
+        String s = zyString.trim();  //去除空格
+        s = s.substring(2);
+        s = s.substring(0, s.length() - 1);
+        String ar[] = s.split(":");
+        String tsStr = ar[0].substring(0, ar[0].length() - 1);
+        long ts = Long.parseLong(tsStr) * 1000;
+        double d = Double.parseDouble(ar[1]);
+        if (ar[1].startsWith("0")) {
+            return new BooleanTsData(ts, (short) 0, false);
+        } else {
+            return new BooleanTsData(ts, (short) 0, true);
+        }
+    }
+
+
+}

+ 0 - 68
timeseries/dao-redis/src/main/java/com/gyee/wisdom/dao/redis/TsDataParser.java

@@ -1,68 +0,0 @@
-package com.gyee.wisdom.dao.redis;
-
-import com.gyee.wisdom.common.data.timeseries.BooleanTsData;
-import com.gyee.wisdom.common.data.timeseries.DoubleTsData;
-import com.gyee.wisdom.common.data.timeseries.TsDataType;
-import com.gyee.wisdom.common.utils.ByteUtil;
-import com.gyee.wisdom.common.utils.Hex;
-
-import java.io.UnsupportedEncodingException;
-
-public  class TsDataParser {
-
-    //    typedef struct _redis_value_t {
-    //        double          value;
-    //        uint64_t        timestamp;
-    //    } redis_value_t;在redis内存中的结构就是这样的,其实就是16个字节,前8个字节是双精度浮点数,后8个字节是时间戳,网络序。
-    //    public static void main(String[] args) {
-    //编码后内存值是这样的 ae 47 e1 7a 14 ae 28 40 00 00 01 7e 51 e8 57 28
-    // 前面8个字节是double类型,真实值是12.34,
-    // 后面8个字节是时间戳,单位毫秒,值是1642051688232,表示2022-01-13 13:28:08.232
-
-    public static DoubleTsData parseWBString( String wbString)
-            throws UnsupportedEncodingException {
-
-        byte[] barr = wbString.getBytes("ascii");
-        double val = ByteUtil.getDouble(barr,0);
-        long ts = ByteUtil.getLong2(barr,8);
-
-//        String valStr = wbString.substring(0,15);
-//        String tsStr = wbString.substring(16);
-//        long ts = Long.parseLong(tsStr,16);
-//        byte[] barr = Hex.decodeHex(valStr.toCharArray());
-//        double val = ByteUtil.getDouble(barr,0);
-        return new DoubleTsData(ts, (short) 0, val);
-
-    }
-
-
-    public static DoubleTsData parseZYDoubleString( String zyString) {
-            String s = zyString.trim();  //去除空格
-            s = s.substring(2);
-            s = s.substring(0, s.length() - 1);
-            String ar[] = s.split(":");
-            String tsStr = ar[0].substring(0, ar[0].length() - 1);
-            long ts = Long.parseLong(tsStr) * 1000;
-            double d = Double.parseDouble(ar[1]);
-            return new DoubleTsData(ts, (short) 0, d);
-    }
-
-    public static BooleanTsData parseZYBooleanString( String zyString) {
-            String s = zyString.trim();  //去除空格
-            s = s.substring(2);
-            s = s.substring(0, s.length() - 1);
-            String ar[] = s.split(":");
-            String tsStr = ar[0].substring(0, ar[0].length() - 1);
-            long ts = Long.parseLong(tsStr) * 1000;
-            double d = Double.parseDouble(ar[1]);
-            if (ar[1].startsWith("0")) {
-                return new BooleanTsData(ts, (short) 0, false);
-            } else {
-                return new BooleanTsData(ts, (short) 0, true);
-            }
-    }
-
-
-
-
-}

+ 2 - 1
timeseries/dao-redis/src/main/java/com/gyee/wisdom/it235/factory/YamlPropertySourceFactory.java

@@ -12,13 +12,14 @@ import java.util.Properties;
 
 /**
  * https://blog.csdn.net/ron03129596/article/details/108771417
+ *
  * @description:
  * @author: jianjun.ren
  * @date: Created in 2020/9/24 12:05
  */
 public class YamlPropertySourceFactory implements PropertySourceFactory {
 
-    public PropertySource< ? > createPropertySource(String name, EncodedResource resource) throws IOException {
+    public PropertySource<?> createPropertySource(String name, EncodedResource resource) throws IOException {
         Properties propertiesFromYaml = loadYamlIntoProperties(resource);
         String sourceName = name != null ? name : resource.getResource().getFilename();
         assert sourceName != null;

+ 158 - 0
timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/ModelConstants.java

@@ -0,0 +1,158 @@
+package com.gyee.gaia.sql;
+
+/**
+ * 字符串常量池
+ */
+public class ModelConstants {
+
+    private ModelConstants() {
+    }
+
+    public static final String ID_ = "id";
+    public static final String USER_ = "gyee_user";
+    public static final String USER_NAME = "user_Name";
+    public static final String PASSWORD_ = "password";
+    public static final String SALT_ = "salt";
+    public static final String EMAIL_ = "email";
+    public static final String DISABLED_ = "disabled";
+    public static final String CREATE_TIME = "create_Time";
+    public static final String LAST_TIME = "last_Time";
+    public static final String CHINESE_NAME = "chinese_Name";
+    public static final String CONTRACT_TEL = "contract_Tel";
+    public static final String REGISTION_ID = "registion_Id";
+
+    public static final String ROLE_ = "gyee_role";
+    public static final String NAME_ = "name";
+    public static final String DESCRITION_ = "description";
+
+    public static final String USER_ROLE = "gyee_user_role";
+    public static final String USER_ID = "user_id";
+    public static final String ROLE_ID = "role_id";
+
+    /*
+     * author:Wanghs
+     * */
+    public static final String MENU_ = "gyee_menu";//menu表
+    public static final String LABLEL_ = "label";
+    public static final String PAHT_ = "path";
+    public static final String ORDER_NO = "order_no";
+    public static final String LAYER_ = "layer";
+    public static final String URL_ = "url";
+    public static final String TYPE_ = "type";
+    public static final String STYLE_ = "style";
+
+    public static final String ROLE_MENU = "gyee_role_menu";
+    public static final String MENU_ID = "menu_id";
+
+    public static final String POWER_STATION = "power_station";
+    public static final String CODE_ = "code";
+    public static final String STATION_NAME = "station_name";
+    public static final String ADDRESS_ = "address";
+    public static final String TELEPHONE_ = "telephone";
+    public static final String CAPACITY_ = "capacity";
+    public static final String CAPACITY_UNIT = "capacity_unit";
+    public static final String QUANTITY = "quantity";
+    public static final String SHORT_NAME = "short_name";
+    public static final String LONGITUDE_ = "longitude";
+    public static final String LATITUDE_ = "latitude";
+    public static final String COMPANY_ID = "company_id";
+    public static final String SYSTEM_MENU_FACT = "system_manu_fact";
+    public static final String HEAD_FARM = "head_farm";
+    public static final String HEAD_FARM_PHONE = "head_farm_phone";
+    public static final String MODEL_ = "model";
+    public static final String ORDER_NUM = "order_num";
+    public static final String HEIGHT_ = "height";
+    public static final String MODEL_ID = "model_id";
+    public static final String WINDTURBINE_ID = "windturbine_id";
+
+    /*
+     * author:wangjw
+     * */
+    //风机
+    public static final String WINDTURBINE_ = "windturbine";
+    public static final String WINPOWERSATIONID_ = "station_id";
+    public static final String MODELID_ = "model_id";
+    public static final String STATUS_ = "status";
+    public static final String PROJECT_ID = "project_id";
+    public static final String LINEID_ = "line_id";
+    public static final String FIRST_INTEGRATED_TIME = "first_integrated_time";
+    public static final String PHOTO_ = "photo";
+    public static final String IS_STANDARD = "is_standard";
+    //项目
+    public static final String PROJECT_ = "project";
+    public static final String STATION_ID = "station_id";
+    public static final String PRIJECT_ = "project";
+    public static final String ANAME_ = "aname";
+    public static final String COMMISSION_DATE = "commission_date";
+    public static final String MASTER_PHONE = "master_phone";
+    public static final String SHIFT_FOREMAN = "shift_foreman";
+    public static final String SHIFT_FOREMAN_PHONE = "shift_foreman_phone";
+    //线路
+    public static final String EQUIPMENT_MODEL = "equipment_model";
+    public static final String LINE_ = "line";
+    public static final String STATION_CODE = "station_code";
+    //模型
+    public static final String POWER_PRODUCTION = "power_production";
+    public static final String CUTIN_WIND_SPEED = "cutin_wind_speed";
+    public static final String RATED_WIND_SPEED = "rated_wind_speed";
+    public static final String CUTOUT_WIND_SPEED = "cutout_wind_speed";
+    public static final String WINDTURBINE_MANUFACTURER_ID = "windturbine_manufacturer_id";
+    public static final String UNIT_ = "unit";
+    public static final String SWEPT_AREA = "swept_area";
+    public static final String EQUIPMENT_CATEGORY = "equipment_category";
+    public static final String LINE_ID = "line_id";
+    public static final String CATEGORY_ = "category";
+
+    public static final String TESTING_POINT = "testing_point";//测点表
+    public static final String TYPE_ID = "type_id";
+    public static final String MAX_VAL = "max_val";
+    public static final String MIN_VAL = "min_val";
+    public static final String REASONABLE_MAX_VAL = "reasonable_max_val";
+    public static final String REASONABLE_MIN_VAL = "reasonable_min_val";
+    public static final String VALUE_UNIT = "value_unit";
+    public static final String ENGLISH_NAME = "english_name";
+    public static final String UNIFORM_CODE = "uniform_code";
+    public static final String DATA_TYPE = "data_type";
+
+
+    public static final String POWER_STATION_TESTING_POINT = "power_station_testing_point";//风电场测点表
+    public static final String LEVEL_TYPE_TESTING_POINT = "level_type_testing_point";//风电场抽象测点表
+    public static final String ELECTRICAL_TESTING_POINT = "electrical_testing_point";//电气测点
+    public static final String WINDTURBINE_TESTING_POINT = "windturbine_testing_point";//风机测点
+
+    public static final String DATA_DICTIONARY = "data_dictionary";//数据字典
+    public static final String ENABLED_ = "enabled";
+
+    public static final String TOPIC_ = "gyee_topic";//主题表
+    public static final String UNIFORM_CODES = "UNIFORMCODES";
+    public static final String DESCRIPTION_ = "description";
+
+    public static final String THING_TYPE = "thing_type";//主题表
+    public static final String THING_ID = "thing_id";
+
+    public static final String TOPIC_POINT = "gyee_topic_point";
+    public static final String TOPIC_ID = "topic_id";
+    public static final String POINT = "point";
+
+    public static final String VIEW_TOPIC_POINT = "view_topic_point";
+    public static final String POINT_NAME = "point_name";
+    public static final String POINT_TYPE = "point_type";
+    public static final String POINT_ID = "point_id";
+
+
+    public static final String GYEE_POINT = "gyee_point";
+
+
+    public static final String GYCP_CMD_INFO = "gycp_cmd_info";
+    public static final String CMD_ID = "cmd_id";
+    public static final String CMD_VALUE = "cmd_value";
+    public static final String Time = "time";
+    public static final String ISSUCCESS = "is_success";
+    public static final String CONTROL_ERRORS_CODE = "control_errors_code";
+
+    public static final String INPUT_OR_OUTPUT_SPEED_TOTAL = "inputoroutputspeedtotal";
+    public static final String WINDTURBINEID = "windturbineid";
+    public static final String INPUT_SMALL = "inputsmall";
+    public static final String RECORDE_DATE = "recorddate";
+    public static final String CONTROL_INFO = "control_info";
+}

+ 19 - 0
timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/Windturbine/EquipmentServiceImpl.java

@@ -0,0 +1,19 @@
+package com.gyee.gaia.sql.Windturbine;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gyee.gaia.dao.windturbine.EquipmentMapper;
+import com.gyee.wisdom.common.data.windturbine.Equipment;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 风机&光伏 服务实现类
+ * </p>
+ *
+ * @author gfhd
+ * @since 2023-04-23
+ */
+@Service
+public class EquipmentServiceImpl extends ServiceImpl<EquipmentMapper, Equipment> implements IEquipmentService {
+
+}

+ 16 - 0
timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/Windturbine/IEquipmentService.java

@@ -0,0 +1,16 @@
+package com.gyee.gaia.sql.Windturbine;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gyee.wisdom.common.data.windturbine.Equipment;
+
+/**
+ * <p>
+ * 风机&光伏 服务类
+ * </p>
+ *
+ * @author gfhd
+ * @since 2023-04-23
+ */
+public interface IEquipmentService extends IService<Equipment> {
+
+}

+ 16 - 0
timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/Windturbine/ILineService.java

@@ -0,0 +1,16 @@
+package com.gyee.gaia.sql.Windturbine;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gyee.wisdom.common.data.windturbine.Line;
+
+/**
+ * <p>
+ * 集电线路 服务类
+ * </p>
+ *
+ * @author gfhd
+ * @since 2023-04-23
+ */
+public interface ILineService extends IService<Line> {
+
+}

+ 16 - 0
timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/Windturbine/IPowerstationService.java

@@ -0,0 +1,16 @@
+package com.gyee.gaia.sql.Windturbine;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gyee.wisdom.common.data.windturbine.Powerstation;
+
+/**
+ * <p>
+ * 场站表 服务类
+ * </p>
+ *
+ * @author gfhd
+ * @since 2023-04-23
+ */
+public interface IPowerstationService extends IService<Powerstation> {
+
+}

+ 16 - 0
timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/Windturbine/IProjectService.java

@@ -0,0 +1,16 @@
+package com.gyee.gaia.sql.Windturbine;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gyee.wisdom.common.data.windturbine.Project;
+
+/**
+ * <p>
+ * 工程表 服务类
+ * </p>
+ *
+ * @author gfhd
+ * @since 2023-04-23
+ */
+public interface IProjectService extends IService<Project> {
+
+}

+ 19 - 0
timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/Windturbine/LineServiceImpl.java

@@ -0,0 +1,19 @@
+package com.gyee.gaia.sql.Windturbine;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gyee.gaia.dao.windturbine.LineMapper;
+import com.gyee.wisdom.common.data.windturbine.Line;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 集电线路 服务实现类
+ * </p>
+ *
+ * @author gfhd
+ * @since 2023-04-23
+ */
+@Service
+public class LineServiceImpl extends ServiceImpl<LineMapper, Line> implements ILineService {
+
+}

+ 19 - 0
timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/Windturbine/PowerstationServiceImpl.java

@@ -0,0 +1,19 @@
+package com.gyee.gaia.sql.Windturbine;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gyee.gaia.dao.windturbine.PowerstationMapper;
+import com.gyee.wisdom.common.data.windturbine.Powerstation;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 场站表 服务实现类
+ * </p>
+ *
+ * @author gfhd
+ * @since 2023-04-23
+ */
+@Service
+public class PowerstationServiceImpl extends ServiceImpl<PowerstationMapper, Powerstation> implements IPowerstationService {
+
+}

+ 19 - 0
timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/Windturbine/ProjectServiceImpl.java

@@ -0,0 +1,19 @@
+package com.gyee.gaia.sql.Windturbine;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gyee.gaia.dao.windturbine.ProjectMapper;
+import com.gyee.wisdom.common.data.windturbine.Project;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 工程表 服务实现类
+ * </p>
+ *
+ * @author gfhd
+ * @since 2023-04-23
+ */
+@Service
+public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> implements IProjectService {
+
+}

+ 74 - 0
timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/alarm/Entity/WarningrecordsEntity.java

@@ -0,0 +1,74 @@
+package com.gyee.gaia.sql.alarm.Entity;
+
+import com.gyee.wisdom.common.data.ToData;
+import com.gyee.wisdom.common.data.alarm.Warningrecords;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.beans.BeanUtils;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@Entity
+@NoArgsConstructor
+@Table(name = "warningrecords")
+public class WarningrecordsEntity implements ToData<Warningrecords>, Serializable {
+    private static final long serialVersionUID = 7086505699466420713L;
+    @Id
+    @Column(name = "id")
+    //  @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "NXFD_WARNINGRECORDS")
+    //  @SequenceGenerator(name = "NXFD_WARNINGRECORDS", sequenceName = "NXFD_WARNINGRECORDS")
+    private Long id;
+    @Column(name = "windpowerstationid")
+    private String windpowerstationid;
+    @Column(name = "windturbineid")
+    private String windturbineid;
+    @Column(name = "warningid")
+    private String warningid;
+    @Column(name = "warningtime")
+    private Date warningtime;
+    @Column(name = "isconfirm")
+    private String isconfirm;
+    @Column(name = "ishandle")
+    private String ishandle;
+    @Column(name = "handle")
+    private String handle;
+    @Column(name = "shutdowneventid")
+    private String shutdowneventid;
+    @Column(name = "levelid")
+    private String levelid;
+    @Column(name = "wtaiid")
+    private String wtaiid;
+    @Column(name = "durationhour")
+    private String durationhour;
+    @Column(name = "isfilter")
+    private String isfilter;
+
+    @Override
+    public Warningrecords toData() {
+        Warningrecords warningrecords = new Warningrecords();
+        BeanUtils.copyProperties(this, warningrecords);
+        return warningrecords;
+    }
+
+    public WarningrecordsEntity(Warningrecords warningrecords) {
+        //this.id=warningrecords.getId();
+        this.windpowerstationid = warningrecords.getWindpowerstationid();
+        this.windturbineid = warningrecords.getWindturbineid();
+        this.warningid = warningrecords.getWarningid();
+        this.warningtime = warningrecords.getWarningtime();
+        this.isconfirm = warningrecords.getIsconfirm();
+        this.ishandle = warningrecords.getIshandle();
+        this.handle = warningrecords.getHandle();
+        this.shutdowneventid = warningrecords.getShutdowneventid();
+        this.levelid = warningrecords.getLevelid();
+        this.wtaiid = warningrecords.getWtaiid();
+        this.durationhour = warningrecords.getDurationhour();
+        this.isfilter = warningrecords.getIsfilter();
+    }
+}

+ 66 - 0
timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/alarm/Entity/WindturbineTestingpointAiEntity.java

@@ -0,0 +1,66 @@
+package com.gyee.gaia.sql.alarm.Entity;
+
+import com.gyee.wisdom.common.data.ToData;
+import com.gyee.wisdom.common.data.alarm.WindturbineTestingpointAi;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.beans.BeanUtils;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+
+@Data
+@Entity
+@NoArgsConstructor
+@Table(name = "windturbinetestingpointai")
+public class WindturbineTestingpointAiEntity implements ToData<WindturbineTestingpointAi>, Serializable {
+    @Id
+    @Column(name = "id")
+    private String id;
+    @Column(name = "code")
+    private String code;
+    @Column(name = "name")
+    private String name;
+    @Column(name = "model")
+    private String model;
+    @Column(name = "valueunit")
+    private String valueunit;
+    @Column(name = "englishname")
+    private String englishname;
+    @Column(name = "typeid")
+    private String typeid;
+    @Column(name = "modelid")
+    private String modelid;
+    @Column(name = "maxval")
+    private String maxval;
+    @Column(name = "minval")
+    private String minval;
+    @Column(name = "reasonablemaxval")
+    private String reasonablemaxval;
+    @Column(name = "reasonableminval")
+    private String reasonableminval;
+    @Column(name = "windturbineid")
+    private String windturbineid;
+    @Column(name = "uniformcode")
+    private String uniformcode;
+    @Column(name = "shortid")
+    private String shortid;
+    @Column(name = "longid")
+    private String longid;
+    @Column(name = "windpowerstationid")
+    private String windpowerstationid;
+    @Column(name = "realtimeid")
+    private String realtimeid;
+
+    @Override
+    public WindturbineTestingpointAi toData() {
+        WindturbineTestingpointAi windturbineTestingpointAi = new WindturbineTestingpointAi();
+        BeanUtils.copyProperties(this, windturbineTestingpointAi);
+        return windturbineTestingpointAi;
+    }
+
+}

+ 17 - 0
timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/alarm/repository/WarningsyzRepository.java

@@ -0,0 +1,17 @@
+package com.gyee.gaia.sql.alarm.repository;
+
+import com.gyee.gaia.sql.alarm.Entity.WarningsyzEntity;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+
+@Repository
+public interface WarningsyzRepository extends JpaRepository<WarningsyzEntity, String>, JpaSpecificationExecutor {
+    WarningsyzEntity findAllById(String id);
+
+    WarningsyzEntity findByDescription(String description);
+
+    WarningsyzEntity findByPointkey(String pointkey);
+}
+

+ 31 - 0
timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/control/repository/ControlLogRepository.java

@@ -0,0 +1,31 @@
+package com.gyee.gaia.sql.control.repository;
+
+import com.gyee.gaia.sql.control.entity.ControlLogEntity;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author:Wanghs
+ * @date:2019-09-10
+ */
+@Repository
+public interface ControlLogRepository extends JpaRepository<ControlLogEntity, String>, JpaSpecificationExecutor {
+
+    List<ControlLogEntity> getByStationId(String stationId);
+
+    List<ControlLogEntity> getByWindturbineId(String windturbineId);
+
+    List<ControlLogEntity> getByType(int controlType);
+
+    List<ControlLogEntity> getByTimeBetween(Date startTime, Date endTime);
+
+    List<ControlLogEntity> getByStationIdAndWindturbineId(String stationId, String windturbineId);
+
+    List<ControlLogEntity> getByStationIdAndWindturbineIdAndTimeBetween(String stationId, String windturbineId, Date startTime, Date time);
+
+
+}

+ 24 - 0
timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/control/repository/InputOrOutputSpeedTotalRepository.java

@@ -0,0 +1,24 @@
+package com.gyee.gaia.sql.control.repository;
+
+import com.gyee.gaia.sql.control.entity.InputOrOutputSpeedTotalEntity;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author:Wanghs
+ * @date:2019-09-10
+ */
+@Repository
+public interface InputOrOutputSpeedTotalRepository extends JpaRepository<InputOrOutputSpeedTotalEntity, String>, JpaSpecificationExecutor {
+    @Query(value = "select t1 from InputOrOutputSpeedTotalEntity t1 where t1.recordDate =  (select max(t2.recordDate) from InputOrOutputSpeedTotalEntity t2)")
+    List<InputOrOutputSpeedTotalEntity> latest();
+
+    @Query(value = "select max (t1.recordDate) from InputOrOutputSpeedTotalEntity t1 ")
+    Date getMaxDate();
+
+}

+ 16 - 0
timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/point/ITestingPointService.java

@@ -0,0 +1,16 @@
+package com.gyee.gaia.sql.point;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gyee.wisdom.common.data.point.TestingPoint;
+
+/**
+ * <p>
+ * 逻辑测点 服务类
+ * </p>
+ *
+ * @author gfhd
+ * @since 2023-04-24
+ */
+public interface ITestingPointService extends IService<TestingPoint> {
+
+}

+ 19 - 0
timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/point/TestingPointServiceImpl.java

@@ -0,0 +1,19 @@
+package com.gyee.gaia.sql.point;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gyee.gaia.dao.point.TestingPointMapper;
+import com.gyee.wisdom.common.data.point.TestingPoint;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 逻辑测点 服务实现类
+ * </p>
+ *
+ * @author gfhd
+ * @since 2023-04-24
+ */
+@Service
+public class TestingPointServiceImpl extends ServiceImpl<TestingPointMapper, TestingPoint> implements ITestingPointService {
+
+}

+ 12 - 0
timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/power/repository/Status8SnapRepository.java

@@ -0,0 +1,12 @@
+package com.gyee.gaia.sql.power.repository;
+
+import com.gyee.gaia.sql.power.entity.Status8SnapEntity;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+
+@Repository
+public interface Status8SnapRepository extends JpaRepository<Status8SnapEntity, String>, JpaSpecificationExecutor {
+
+}

+ 10 - 0
timeseries/dao-sql/src/main/java/com/gyee/gaia/sql/system/repository/MenuRepository.java

@@ -0,0 +1,10 @@
+package com.gyee.gaia.sql.system.repository;
+
+import com.gyee.gaia.sql.system.entity.MenuEntity;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+
+public interface MenuRepository extends JpaRepository<MenuEntity, String>, JpaSpecificationExecutor {
+
+
+}

+ 45 - 0
timeseries/dao-taos/src/main/java/com/gyee/gaia/dao/taos/TaosCovertUtil.java

@@ -0,0 +1,45 @@
+package com.gyee.gaia.dao.taos;
+
+public class TaosCovertUtil {
+
+    /**
+     * 根据传过来的点分析出场站名
+     *
+     * @param point
+     * @return
+     */
+    public static String coverStationPrefix(String point) {
+        String station = null;
+
+        if (point.toUpperCase().contains("SBQ"))
+            station = "sbq";
+        else if (point.toUpperCase().contains("MHS"))
+            station = "mhs";
+        else if (point.toUpperCase().contains("NSS"))
+            station = "nss";
+        else if (point.toUpperCase().contains("XS"))
+            station = "xs";
+        else if (point.toUpperCase().contains("QS"))
+            station = "qs";
+        else if (point.toUpperCase().contains("DWK"))
+            station = "dwk";
+        else if (point.toUpperCase().contains("PL"))
+            station = "pl";
+        else if (point.toUpperCase().contains("MCH"))
+            station = "mch";
+        else if (point.toUpperCase().contains("SH"))
+            station = "sh";
+        else if (point.toUpperCase().contains("XH"))
+            station = "xh";
+        else if (point.toUpperCase().contains("NXDQ"))
+            station = "nxdq";
+        else if (point.toUpperCase().contains("JSFW"))
+            station = "jsfw";
+        else if (point.toUpperCase().contains("HZJ"))
+            station = "hzj";
+        else
+            station = "qs";
+
+        return station;
+    }
+}

+ 2 - 1
timeseries/data-adapter/src/main/java/com/gyee/wisdom/dataadapter/configuration/WebConfig.java

@@ -6,6 +6,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
 /**
  * 跨域配置
+ *
  * @author xysn
  */
 @Configuration
@@ -14,7 +15,7 @@ public class WebConfig implements WebMvcConfigurer {
     public void addCorsMappings(CorsRegistry registry) {
         registry.addMapping("/**")
                 .allowedOriginPatterns("*")
-                .allowedMethods("GET","HEAD","POST","PUT","DELETE","OPTIONS")
+                .allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS")
                 .allowCredentials(true)
                 .maxAge(3600)
                 .allowedHeaders("*");

+ 4 - 13
timeseries/data-adapter/src/main/java/com/gyee/wisdom/dataadapter/controller/thing/ThingController.java

@@ -1,20 +1,12 @@
 package com.gyee.wisdom.dataadapter.controller.thing;
 
-import com.gyee.wisdom.common.data.alarm.WarningClassify;
-import com.gyee.wisdom.common.data.timeseries.DoubleStatData;
-import com.gyee.wisdom.common.data.timeseries.TsData;
-import com.gyee.wisdom.common.data.timeseries.TsPointData;
-import com.gyee.wisdom.common.data.timeseries.TsPointDataList;
-import com.gyee.wisdom.common.data.windturbine.PowerStation;
-import com.gyee.wisdom.common.data.windturbine.Windturbine;
 import com.gyee.wisdom.dataadapter.domain.thing.StationService;
 import com.gyee.wisdom.dataadapter.domain.thing.WindturbineService;
-import com.gyee.wisdom.dataadapter.domain.timeseries.TsDataService;
-import com.gyee.wisdom.dataadapter.domain.timeseries.TsPointService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.*;
+import java.util.List;
+import java.util.Optional;
 
 /*
  *
@@ -55,7 +47,7 @@ public class ThingController {
     public Windturbine getWindturbine(
             @PathVariable("id") String wtId
     ) {
-        return  windturbineService.findbyid(wtId);
+        return windturbineService.findbyid(wtId);
     }
 
     @GetMapping("/station")
@@ -67,11 +59,10 @@ public class ThingController {
     public PowerStation getStation(
             @PathVariable("id") String stId
     ) {
-        return  stationService.getStationById(stId);
+        return stationService.getStationById(stId);
     }
 
 
-
 }
 
 

+ 9 - 11
timeseries/data-adapter/src/main/java/com/gyee/wisdom/dataadapter/controller/timeseries/TsDataController.java

@@ -1,15 +1,14 @@
 package com.gyee.wisdom.dataadapter.controller.timeseries;
 
-import com.alibaba.fastjson.JSONObject;
-import com.gyee.wisdom.common.data.timeseries.*;
+import com.gyee.wisdom.common.data.timeseries.DoubleStatData;
+import com.gyee.wisdom.common.data.timeseries.TsData;
+import com.gyee.wisdom.common.data.timeseries.TsPointData;
+import com.gyee.wisdom.common.data.timeseries.TsPointDataList;
 import com.gyee.wisdom.dataadapter.domain.timeseries.TsDataService;
 import com.gyee.wisdom.dataadapter.domain.timeseries.TsPointService;
-import org.apache.commons.beanutils.ConvertUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.*;
 
 /*
@@ -30,7 +29,6 @@ public class TsDataController {
     protected TsPointService tsPointService;
 
 
-
     //thingId:具体设施Id
     //thingType:场站(station),风机(windturbine),升压站(electrical)
     //uniformCode:统一编码
@@ -94,13 +92,13 @@ public class TsDataController {
                                        @RequestParam(value = "endTs", required = false) Optional<Long> endTs,
                                        @RequestParam(value = "interval", required = false) Optional<Integer> interval) {
         if (tagName.isPresent() && startTs.isPresent() && endTs.isPresent()) {
-            int intVal = interval.isPresent()?interval.get():60;
+            int intVal = interval.isPresent() ? interval.get() : 60;
             List<TsData> resultMap = tsDataService.getHistorySnap(tagName.get(), startTs.get(), endTs.get(), intVal);
             if (resultMap == null)
                 resultMap = new ArrayList<>();
             return resultMap;
         } else if (thingId.isPresent() && thingType.isPresent() && uniformCode.isPresent() && startTs.isPresent() && endTs.isPresent()) {
-            int intVal = interval.isPresent()?interval.get():60;
+            int intVal = interval.isPresent() ? interval.get() : 60;
             List<TsData> resultMap = tsDataService.getHistorySnap(thingType.get(), thingId.get(), uniformCode.get(), startTs.get(), endTs.get(), intVal);
             if (resultMap == null)
                 resultMap = new ArrayList<>();
@@ -120,13 +118,13 @@ public class TsDataController {
                                                @RequestParam(value = "endTs", required = false) Optional<Long> endTs,
                                                @RequestParam(value = "interval", required = false) Optional<Integer> interval) {
         if (tagName.isPresent() && startTs.isPresent() && endTs.isPresent()) {
-            int intVal = interval.isPresent()?interval.get():60;
+            int intVal = interval.isPresent() ? interval.get() : 60;
             List<DoubleStatData> list = tsDataService.getHistoryStat(tagName.get(), startTs.get(), endTs.get(), intVal);
             if (list == null)
                 list = new ArrayList<>();
             return list;
         } else if (thingType.isPresent() && thingId.isPresent() && uniformCode.isPresent() && startTs.isPresent() && endTs.isPresent()) {
-            int intVal = interval.isPresent()?interval.get():60;
+            int intVal = interval.isPresent() ? interval.get() : 60;
             List<DoubleStatData> list = tsDataService.getHistoryStat(thingType.get(), thingId.get(), uniformCode.get(), startTs.get(), endTs.get(), intVal);
             if (list == null)
                 list = new ArrayList<>();
@@ -180,7 +178,7 @@ public class TsDataController {
     }
 
     @PostMapping("/history")
-   //@ResponseBody
+    //@ResponseBody
     public boolean writeHistory(@RequestBody TsPointData tsData) {
         try {
             List<TsPointData> list = new ArrayList<>();

+ 0 - 4
timeseries/data-adapter/src/main/java/com/gyee/wisdom/dataadapter/domain/thing/WindturbineService.java

@@ -1,7 +1,5 @@
 package com.gyee.wisdom.dataadapter.domain.thing;
 
-import com.gyee.wisdom.common.data.windturbine.Windturbine;
-import com.gyee.wisdom.dao.windturbine.IWindturbineDao;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -59,6 +57,4 @@ public class WindturbineService {
     }
 
 
-
-
 }

+ 5 - 3
timeseries/data-adapter/src/main/java/com/gyee/wisdom/dataadapter/domain/timeseries/TsDataService.java

@@ -1,14 +1,16 @@
 package com.gyee.wisdom.dataadapter.domain.timeseries;
 
+import com.gyee.gaia.dao.timeseries.IHistoryDao;
+import com.gyee.gaia.dao.timeseries.ILatestDao;
 import com.gyee.wisdom.common.data.timeseries.*;
 import com.gyee.wisdom.common.exception.WisdomException;
-import com.gyee.wisdom.dao.timeseries.IHistoryDao;
-import com.gyee.wisdom.dao.timeseries.ILatestDao;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.*;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 
 @Service

+ 17 - 21
timeseries/data-adapter/src/main/java/com/gyee/wisdom/dataadapter/domain/timeseries/TsPointService.java

@@ -1,15 +1,12 @@
 package com.gyee.wisdom.dataadapter.domain.timeseries;
 
-import com.gyee.wisdom.common.data.timeseries.BasicTsPoint;
-import com.gyee.wisdom.common.data.timeseries.TsDataType;
+import com.gyee.gaia.dao.things.IThingsPointDao;
 import com.gyee.wisdom.common.data.timeseries.TsPoint;
-import com.gyee.wisdom.dao.things.IThingsPointDao;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.*;
-import java.util.stream.Collectors;
 
 
 @Service
@@ -33,13 +30,13 @@ public class TsPointService {
                 .filter(s -> tagNameList.contains(s.getKey()))
                 .collect(Collectors.toMap(e -> (String) e.getKey(), e -> e.getValue()));*/
 
-       for (int i=0;i<tagNames.length;i++){
-           if(tagMap.containsKey(tagNames[i])){
+        for (int i = 0; i < tagNames.length; i++) {
+            if (tagMap.containsKey(tagNames[i])) {
 
-               selectList.add(tagMap.get(tagNames[i]));
-           }
+                selectList.add(tagMap.get(tagNames[i]));
+            }
 
-       }
+        }
 
         if (selectList.size() > 0) {
             return selectList;
@@ -99,11 +96,11 @@ public class TsPointService {
         }
         if (thingsUniformCodeMap != null) {
 
-       for (int i=0;i<uniformCodes.length;i++){
-           if(thingsUniformCodeMap.containsKey(uniformCodes[i])){
-               selectList.add(thingsUniformCodeMap.get(uniformCodes[i]));
-           }
-       }
+            for (int i = 0; i < uniformCodes.length; i++) {
+                if (thingsUniformCodeMap.containsKey(uniformCodes[i])) {
+                    selectList.add(thingsUniformCodeMap.get(uniformCodes[i]));
+                }
+            }
         }
         //如果缓存中的数据大于0 则直接返回数据不进行数据库查询
         if (selectList.size() > 0) {
@@ -141,18 +138,17 @@ public class TsPointService {
 
     public TsPoint getTsPoint(String thingsType, String thingsId, String uniformCode) {
 
-        TsPoint tsPoint=null;
+        TsPoint tsPoint = null;
 
-        if(windturbineTagMap.containsKey(thingsId)){
+        if (windturbineTagMap.containsKey(thingsId)) {
 
-            Map<String,TsPoint> mp=windturbineTagMap.get(thingsId);
+            Map<String, TsPoint> mp = windturbineTagMap.get(thingsId);
 
-            if(mp.containsKey(uniformCode)){
-                tsPoint=mp.get(uniformCode);
+            if (mp.containsKey(uniformCode)) {
+                tsPoint = mp.get(uniformCode);
             }
         }
-        if(tsPoint!=null)
-        {
+        if (tsPoint != null) {
             return tsPoint;
         }
 

+ 3 - 3
timeseries/data-adapter/src/main/java/com/gyee/wisdom/dataadapter/websocket/WebSocketConfig.java

@@ -26,15 +26,15 @@ public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
     @Override
     public void registerStompEndpoints(StompEndpointRegistry registry) {
         registry.addEndpoint("/wisdom").setAllowedOrigins("*")
-                ;
-                //.withSockJS();
+        ;
+        //.withSockJS();
     }
 
     @Override
     public void configureWebSocketTransport(WebSocketTransportRegistration registration) {
         registration.setMessageSizeLimit(999 * 1024); // default : 64 * 1024
         registration.setSendTimeLimit(999 * 10000); // default : 10 * 10000
-        registration.setSendBufferSizeLimit(300*1024);
+        registration.setSendBufferSizeLimit(300 * 1024);
     }
 
     @Override

+ 9 - 9
timeseries/data-adapter/src/main/java/com/gyee/wisdom/dataadapter/websocket/WebSocketTsDataController.java

@@ -15,7 +15,8 @@ import org.springframework.messaging.simp.SimpMessageHeaderAccessor;
 import org.springframework.messaging.simp.SimpMessagingTemplate;
 import org.springframework.messaging.simp.annotation.SubscribeMapping;
 import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
 
 import java.util.*;
 
@@ -282,21 +283,20 @@ public class WebSocketTsDataController {
     }
 
     /**
+     * @param distination 广播地址
+     * @param sendMap     消息体
+     * @return void
      * @description websocket广播方法
      * @author wanghs
      * @date 2019-09-23
-     * @param distination 广播地址
-     * @param sendMap 消息体
-     * @return void
      */
-    public void SendWindToAll(String destination, Map<String, WindturbineData> sendMap){
-        simpMessagingTemplate.convertAndSend(destination,sendMap);
+    public void SendWindToAll(String destination, Map<String, WindturbineData> sendMap) {
+        simpMessagingTemplate.convertAndSend(destination, sendMap);
         Constant.dOneLine(" 风 ");
     }
 
-    public void SendPVToAll(String destination, Map<String,InverterBasicData> pvDataMap)
-    {
-        simpMessagingTemplate.convertAndSend(destination,pvDataMap);
+    public void SendPVToAll(String destination, Map<String, InverterBasicData> pvDataMap) {
+        simpMessagingTemplate.convertAndSend(destination, pvDataMap);
         Constant.dOneLine(" 光 ");
     }
 }

+ 0 - 1
timeseries/data-adapter/src/main/java/com/gyee/wisdom/dataadapter/websocket/backwork/UniformCodeConfig.java

@@ -1,6 +1,5 @@
 package com.gyee.wisdom.dataadapter.websocket.backwork;
 
-import lombok.Data;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Configuration;
 

+ 3 - 6
timeseries/data-adapter/src/main/java/com/gyee/wisdom/dataadapter/websocket/backwork/WindturbineInfoCache.java

@@ -1,11 +1,9 @@
 package com.gyee.wisdom.dataadapter.websocket.backwork;
 
+import com.gyee.gaia.dao.things.IThingsPointDao;
 import com.gyee.wisdom.common.data.timeseries.DoubleTsData;
 import com.gyee.wisdom.common.data.timeseries.TsData;
 import com.gyee.wisdom.common.data.timeseries.TsPoint;
-import com.gyee.wisdom.common.data.windturbine.Windturbine;
-import com.gyee.wisdom.dao.things.IThingsPointDao;
-import com.gyee.wisdom.dao.windturbine.IWindturbineDao;
 import com.gyee.wisdom.dataadapter.domain.timeseries.TsDataService;
 import com.gyee.wisdom.dataadapter.domain.timeseries.TsPointService;
 import com.gyee.wisdom.dataadapter.websocket.domain.WindturbineData;
@@ -13,7 +11,6 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-
 import java.util.*;
 
 
@@ -99,8 +96,8 @@ public class WindturbineInfoCache {
                     String[] uniformcodeArray = new String[uniformcodeList.size()];
                     uniformcodeList.toArray(uniformcodeArray);
 
-                   // List<TsPoint> pointList = thingsPointDao.findTsPointByUnformCodes("windturbine", things.getId(), uniformcodeArray);
-                    List<TsPoint> pointList=tsPointService.getTsPoint("windturbine", things.getId(), uniformcodeArray);
+                    // List<TsPoint> pointList = thingsPointDao.findTsPointByUnformCodes("windturbine", things.getId(), uniformcodeArray);
+                    List<TsPoint> pointList = tsPointService.getTsPoint("windturbine", things.getId(), uniformcodeArray);
                     for (int j = 0; j < pointList.size(); j++) {
                         TsPoint point = pointList.get(j);
                         if (point.getUniformCode().equals(uniformCodeConfig.getWindSpeedCode())) {

+ 0 - 2
timeseries/data-adapter/src/main/java/com/gyee/wisdom/dataadapter/websocket/domain/WindturbineData.java

@@ -2,8 +2,6 @@ package com.gyee.wisdom.dataadapter.websocket.domain;
 
 import lombok.Data;
 
-import java.util.Map;
-
 /**
  * @descrition: 风机信息
  * @author:Wanghs

+ 3 - 1
timeseries/data-adapter/src/main/java/com/gyee/wisdom/dataadapter/websocket/session/WisdomStompSession.java

@@ -2,7 +2,9 @@ package com.gyee.wisdom.dataadapter.websocket.session;
 
 import lombok.Data;
 
-import java.util.*;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Set;
 
 @Data
 public class WisdomStompSession {

+ 0 - 7
timeseries/data-adapter/src/main/java/com/gyee/wisdom/dataadapter/write/WriteRedis.java

@@ -1,14 +1,7 @@
 package com.gyee.wisdom.dataadapter.write;
 
-import com.gyee.wisdom.common.data.timeseries.BasicTsPoint;
-import com.gyee.wisdom.common.data.timeseries.TsPoint;
-import com.gyee.wisdom.dao.things.IThingsPointDao;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.util.ArrayList;
-import java.util.List;
-
 @Component
 public class WriteRedis extends Thread {
    /* public IThingsPointDao getThingsPointDao() {

+ 4 - 3
timeseries/data-adapter/src/main/java/com/gyee/wisdom/traceforbidden/UndertowWebServerCustomizer.java

@@ -5,6 +5,7 @@ package com.gyee.wisdom.traceforbidden;
  * @author:Wanghs
  * @date:2020-06-30
  */
+
 import io.undertow.server.HandlerWrapper;
 import io.undertow.server.HttpHandler;
 import io.undertow.server.handlers.DisallowedMethodsHandler;
@@ -14,7 +15,7 @@ import org.springframework.boot.web.server.WebServerFactoryCustomizer;
 import org.springframework.stereotype.Component;
 
 @Component
-public class UndertowWebServerCustomizer  implements WebServerFactoryCustomizer<UndertowServletWebServerFactory> {
+public class UndertowWebServerCustomizer implements WebServerFactoryCustomizer<UndertowServletWebServerFactory> {
 
     @Override
     public void customize(UndertowServletWebServerFactory factory) {
@@ -23,8 +24,8 @@ public class UndertowWebServerCustomizer  implements WebServerFactoryCustomizer<
             deploymentInfo.addInitialHandlerChainWrapper(new HandlerWrapper() {
                 @Override
                 public HttpHandler wrap(HttpHandler handler) {
-                    HttpString[] disallowedHttpMethods = { HttpString.tryFromString("TRACE"),
-                            HttpString.tryFromString("TRACK") };
+                    HttpString[] disallowedHttpMethods = {HttpString.tryFromString("TRACE"),
+                            HttpString.tryFromString("TRACK")};
                     return new DisallowedMethodsHandler(handler, disallowedHttpMethods);
                 }
             });

+ 0 - 0
资源文件/sql/test.sql