Selaa lähdekoodia

大唐2025年科研项目 整改 ,异常识别接口完善 :增加3个异常检测器等

zhouyang.xie 3 päivää sitten
vanhempi
commit
059752500d

+ 11 - 8
src/main/java/com/energy/manage/analyse/constant/DetectorTableEnum.java

@@ -2,7 +2,6 @@ package com.energy.manage.analyse.constant;
 
 public enum DetectorTableEnum {
 
-
     /**
      * 风速功率功率曲线检测器
      */
@@ -17,6 +16,7 @@ public enum DetectorTableEnum {
      * 风速功率simulink检测器
      */
     SIMULINK("anomaly_simulink", "(风速功率)simulink检测器"),
+
     /**
      * 偏航扭缆角度检测器
      */
@@ -25,6 +25,14 @@ public enum DetectorTableEnum {
      * 偏航偏航角度检测器
      */
     STATIC_YAW("anomaly_staticyaw", "(偏航)偏航角度检测器"),
+    /**
+     * 偏航角度偏差(静态)检测器
+     */
+    YAW_ERROR("anomaly_yawerror", "(偏航)偏航角度偏差(静态)检测器"),
+    /**
+     * 偏航计数检测器
+     */
+    YAW_COUNT("anomaly_yawcount", "(偏航)偏航计数检测器"),
 
     /**
      * 变桨最小桨距角检测器
@@ -50,7 +58,6 @@ public enum DetectorTableEnum {
      */
     POWER_QUALITY("anomaly_powerquality", "(运行状态)电气功率质量检测器"),
 
-
     /**
      * Cp 检测器
      * 对应字段:model5_aerodynamics_cp
@@ -72,10 +79,7 @@ public enum DetectorTableEnum {
     /**
      * 降载检测器-新增
      */
-   ANOMALY_DELOAD_DETECTOR("anomaly_deload", "Cp-TSR联合分布检测器");
-
-
-
+    ANOMALY_DELOAD_DETECTOR("anomaly_deload", "Cp-TSR联合分布检测器");
 
     private final String tableName;
     private final String description;
@@ -110,7 +114,7 @@ public enum DetectorTableEnum {
      * 注意:这里年份2026是硬编码的,如果有动态需求可以调整
      */
     public String getFullTableName(String year) {
-        return tableName +"_"+ year;
+        return tableName + "_" + year;
     }
 
     /**
@@ -130,5 +134,4 @@ public enum DetectorTableEnum {
         return "unknown";
     }
 
-
 }

+ 9 - 2
src/main/java/com/energy/manage/analyse/domain/vo/anomaly/AnomalyDailyVO.java

@@ -34,16 +34,23 @@ public class AnomalyDailyVO {
     @ApiModelProperty("模块2(偏航)扭缆角度检测器--新增")
     private BigDecimal model2YawCabletwistRatio;
 
+    @ApiModelProperty("模块2(偏航)偏航误差检测器--新增")
+    private BigDecimal model2YawYawerrorRatio;
 
+    @ApiModelProperty("模块2(偏航)偏航计数检测器--新增")
+    private BigDecimal model2YawYawcountRatio;
 
-    @ApiModelProperty("模块3(变桨)变桨检测器比例--新增")
-    private BigDecimal model3PitchPitchregulationRatio;
 
 
+    @ApiModelProperty("模块3(变桨)变桨检测器比例--新增")
+    private BigDecimal model3PitchPitchregulationRatio;
 
     @ApiModelProperty("模块3(变桨)变桨-转速-功率检测器--新增")
     private BigDecimal model3PitchPitchcoordRatio;
 
+    @ApiModelProperty("模块3(变桨)最小桨距角检测器--新增")
+    private BigDecimal model3PitchMinpitchRatio;   
+
 
 
     @ApiModelProperty("模块4(运行状态)电气功率质量检测器比例新增")

+ 0 - 4
src/main/java/com/energy/manage/analyse/domain/vo/anomaly/AnomalyPitchVO.java

@@ -25,8 +25,4 @@ public class AnomalyPitchVO {
 
     @ApiModelProperty("最小桨距角检测器")
     private AnomalyMinpitchPO anomalyMinpitchPO;
-
-
-
-
 }

+ 6 - 0
src/main/java/com/energy/manage/analyse/domain/vo/anomaly/AnomalyYawVO.java

@@ -2,6 +2,8 @@ package com.energy.manage.analyse.domain.vo.anomaly;
 
 import com.energy.manage.analyse.po.anomaly.AnomalyCabletwistPO;
 import com.energy.manage.analyse.po.anomaly.AnomalyStaticyawPO;
+import com.energy.manage.analyse.po.anomaly.AnomalyYawCountPO;
+import com.energy.manage.analyse.po.anomaly.AnomalyYawErrorPO;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
@@ -19,6 +21,10 @@ public class AnomalyYawVO {
     @ApiModelProperty("扭缆角度检测器")
     private AnomalyCabletwistPO anomalyCabletwistPO;
 
+    @ApiModelProperty("偏航计数检测器")
+    private AnomalyYawCountPO anomalyYawCountPO;
 
+    @ApiModelProperty("偏航误差检测器")
+    private AnomalyYawErrorPO anomalyYawErrorPO;
 
 }

+ 0 - 4
src/main/java/com/energy/manage/analyse/po/anomaly/AnomalyCabletwistPO.java

@@ -14,8 +14,4 @@ import lombok.experimental.Builder;
 @Data
 public class AnomalyCabletwistPO extends BaseAnomalyDetectorPO {
 
-
-
-
-
 }

+ 1 - 1
src/main/java/com/energy/manage/analyse/po/anomaly/AnomalyMinpitchPO.java

@@ -7,7 +7,7 @@ import lombok.NoArgsConstructor;
 import lombok.experimental.Builder;
 
 /**
- * (变桨)最小桨距角检测器 - 作废
+ * (变桨)最小桨距角检测器 
  * 对应数据库表: anomaly_minpitch
  */
 @EqualsAndHashCode(callSuper = true)

+ 27 - 8
src/main/java/com/energy/manage/analyse/po/anomaly/AnomalyModelPO.java

@@ -1,6 +1,7 @@
 package com.energy.manage.analyse.po.anomaly;
 
 
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -240,12 +241,6 @@ public class AnomalyModelPO {
     private BigDecimal model3PitchPitchcoordRatio;
 
     /**
-     * 模块3(变桨)最小桨距角检测器是否异常(0或1)
-     */
-    @ApiModelProperty("模块3(变桨)最小桨距角检测器是否异常(0或1) -- 作废")
-    private Integer model3PitchMinpitch;
-
-    /**
      * 模块4(运行状态)是否异常(0或1)
      */
     @ApiModelProperty("模块4(运行状态)是否异常(0或1)")
@@ -324,6 +319,32 @@ public class AnomalyModelPO {
     @ApiModelProperty("模块5(气动性能)Cp-TSR联合分布检测器异常比例--新增")
     private BigDecimal model5AerodynamicsCpTsrRatio;
 
+    
+
+    @ApiModelProperty("数据冻结是否异常(0或1)0正常1异常")
+    private Integer sensorAnomalyFreeze;
+
+    @ApiModelProperty("数据冻结异常比例")
+    private BigDecimal sensorAnomalyFreezeRatio;
+
+    @ApiModelProperty("模块2(偏航)静态偏航误差检测器是否异常(0或1)0正常1异常-1 空值")
+    private Integer model2YawYawerror;
+
+    @ApiModelProperty("模块2(偏航)静态偏航误差检测器测量值(偏航误差,单位°)")
+    private BigDecimal model2YawYawerrorRatio;
+
+    @ApiModelProperty("模块2(偏航)偏航次数检测器是否异常(0或1)0正常1异常-1 空值")
+    private Integer model2YawYawcount;
+
+    @ApiModelProperty("模块2(偏航)偏航次数检测器测量值(当日偏航次数)")
+    private BigDecimal model2YawYawcountRatio;
+
+    @ApiModelProperty("模块3(变桨)最小桨距角检测器是否异常(0或1)0正常1异常-1 空值")
+    private Integer model3PitchMinpitch;
+
+    @ApiModelProperty("模块3(变桨)最小桨距角检测器测量值(相对基线漂移,单位°)")
+    private BigDecimal model3PitchMinpitchRatio;
+
     /**
      * 数据来源时间,以天为单位
      */
@@ -336,6 +357,4 @@ public class AnomalyModelPO {
     @ApiModelProperty("入库时间戳 (yyyy-mm-dd hh:mm:ss)")
     private Date createTime;
 
-
-
 }

+ 17 - 0
src/main/java/com/energy/manage/analyse/po/anomaly/AnomalyYawCountPO.java

@@ -0,0 +1,17 @@
+package com.energy.manage.analyse.po.anomaly;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Builder;
+
+/**
+ * (偏航计数)偏航计数检测器
+ * 对应数据库表: anomaly_yawcount
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class AnomalyYawCountPO extends BaseAnomalyDetectorPO {
+}
+

+ 16 - 0
src/main/java/com/energy/manage/analyse/po/anomaly/AnomalyYawErrorPO.java

@@ -0,0 +1,16 @@
+package com.energy.manage.analyse.po.anomaly;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Builder;
+
+/**
+ * (偏航误差)偏航误差检测器
+ * 对应数据库表: anomaly_yawerror
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class AnomalyYawErrorPO extends BaseAnomalyDetectorPO {
+}

+ 37 - 0
src/main/java/com/energy/manage/analyse/service/anomaly/impl/AnomalyServiceImpl.java

@@ -948,6 +948,42 @@ public class AnomalyServiceImpl implements AnomalyService {
             anomalyCabletwistPO.setGraphPath(NetUtils.getFilePath(isIntranet, cabletwistPO.getGraphPath()));
             anomalyYawVO.setAnomalyCabletwistPO(anomalyCabletwistPO);
         }
+
+                // 清除当前
+        DynamicDataSourceContextHolder.poll();
+        // 切换数据源
+        DynamicDataSourceContextHolder.push("slave");
+
+        BaseAnomalyDetectorPO yawErrorPO = anomalyWindfarmMapper.selectAnomalyDetectorAll(
+                anomalyModelDTO.getFieldId(),
+                DetectorTableEnum.YAW_ERROR.getFullTableName(year),
+                anomalyModelDTO.getEngineId(), beginTime, endTime);
+        AnomalyYawErrorPO anomalyYawErrorPO = new AnomalyYawErrorPO();
+        BeanUtil.copyProperties(yawErrorPO, anomalyYawErrorPO);
+        if (yawErrorPO != null) {
+            anomalyYawErrorPO.setFilePath(NetUtils.getFilePath(isIntranet, yawErrorPO.getFilePath()));
+            anomalyYawErrorPO.setGraphPath(NetUtils.getFilePath(isIntranet, yawErrorPO.getGraphPath()));
+            anomalyYawVO.setAnomalyYawErrorPO(anomalyYawErrorPO);
+        }
+
+        // 清除当前
+        DynamicDataSourceContextHolder.poll();
+        // 切换数据源
+        DynamicDataSourceContextHolder.push("slave");
+
+        BaseAnomalyDetectorPO yawCountPO = anomalyWindfarmMapper.selectAnomalyDetectorAll(
+                anomalyModelDTO.getFieldId(),
+                DetectorTableEnum.YAW_COUNT.getFullTableName(year),
+                anomalyModelDTO.getEngineId(), beginTime, endTime);
+        AnomalyYawCountPO anomalyYawCountPO = new AnomalyYawCountPO();
+        BeanUtil.copyProperties(yawCountPO, anomalyYawCountPO);
+        if (yawCountPO != null) {
+            anomalyYawCountPO.setFilePath(NetUtils.getFilePath(isIntranet, yawCountPO.getFilePath()));
+            anomalyYawCountPO.setGraphPath(NetUtils.getFilePath(isIntranet, yawCountPO.getGraphPath()));
+            anomalyYawVO.setAnomalyYawCountPO(anomalyYawCountPO);
+        }
+
+
         return anomalyYawVO;
     }
 
@@ -1024,6 +1060,7 @@ public class AnomalyServiceImpl implements AnomalyService {
             anomalyMinpitchPO.setGraphPath(NetUtils.getFilePath(isIntranet, minpitchPO.getGraphPath()));
             anomalyPitchVO.setAnomalyMinpitchPO(anomalyMinpitchPO);
         }
+       
         return anomalyPitchVO;
     }
 

+ 2 - 2
src/main/java/com/energy/manage/analyse/service/healthscores/impl/HealthscoresServiceImpl.java

@@ -52,8 +52,8 @@ public class HealthscoresServiceImpl implements HealthscoresService {
     /**
      * 查询所有风场健康情况信息集合
      * 
-     * @param beginTime
-     * @param endTime
+     * @param companyCode
+     * @param datatime
      * @return
      */
     @Override

+ 2 - 2
src/main/resources/bootstrap.properties

@@ -1,6 +1,6 @@
 #============================nacos配置=========================================
-# spring.cloud.nacos.config.server-addr = 192.168.50.234:8848
-spring.cloud.nacos.config.server-addr = 10.172.12.211:8848
+spring.cloud.nacos.config.server-addr = 192.168.50.234:8848
+# spring.cloud.nacos.config.server-addr = 10.172.12.211:8848
 spring.cloud.nacos.config.namespace = 79c42a7a-2c7d-4dcf-8a2c-b334271e2191
 spring.cloud.nacos.config.name=application.properties
 spring.cloud.nacos.config.group = @profiles.active@

+ 23 - 2
src/main/resources/mybatis/anomaly/AnaomalyMapper.xml

@@ -113,7 +113,6 @@
         <result column="model3_pitch_pitchregulation_ratio" property="model3PitchPitchregulationRatio" jdbcType="DECIMAL"/>
         <result column="model3_pitch_pitchcoord" property="model3PitchPitchcoord" jdbcType="INTEGER"/>
         <result column="model3_pitch_pitchcoord_ratio" property="model3PitchPitchcoordRatio" jdbcType="DECIMAL"/>
-        <result column="model3_pitch_minpitch" property="model3PitchMinpitch" jdbcType="INTEGER"/>
 
         <result column="model4_is_anomaly" property="model4IsAnomaly" jdbcType="INTEGER"/>
         <result column="model4_ctrlparam_normal_count" property="model4CtrlparamNormalCount" jdbcType="INTEGER"/>
@@ -137,6 +136,16 @@
         <result column="model5_aerodynamics_cp_tsr" property="model5AerodynamicsCpTsr" jdbcType="INTEGER"/>
         <result column="model5_aerodynamics_cp_tsr_ratio" property="model5AerodynamicsCpTsrRatio" jdbcType="DECIMAL"/>
 
+        
+        <result column="sensor_anomaly_freeze" property="sensorAnomalyFreeze" jdbcType="INTEGER"/>
+        <result column="sensor_anomaly_freeze_ratio" property="sensorAnomalyFreezeRatio" jdbcType="DECIMAL"/>        
+        <result column="model2_yaw_yawerror" property="model2YawYawerror" jdbcType="INTEGER"/>
+        <result column="model2_yaw_yawerror_ratio" property="model2YawYawerrorRatio" jdbcType="DECIMAL"/>        
+        <result column="model2_yaw_yawcount" property="model2YawYawcount" jdbcType="INTEGER"/>
+        <result column="model2_yaw_yawcount_ratio" property="model2YawYawcountRatio" jdbcType="DECIMAL"/>             
+        <result column="model3_pitch_minpitch" property="model3PitchMinpitch" jdbcType="INTEGER"/>
+        <result column="model3_pitch_minpitch_ratio" property="model3PitchMinpitchRatio" jdbcType="DECIMAL"/>
+
         <result property="sourceDatetime" column="source_datetime"/>
         <result property="createTime" column="create_time"/>
     </resultMap>
@@ -187,7 +196,6 @@
         model3_pitch_pitchregulation_ratio,
         model3_pitch_pitchcoord,
         model3_pitch_pitchcoord_ratio,
-        model3_pitch_minpitch,
         model4_is_anomaly,
         model4_ctrlparam_normal_count,
         model4_ctrlparam_anomaly_count,
@@ -208,6 +216,15 @@
         model5_aerodynamics_tsr_ratio,
         model5_aerodynamics_cp_tsr,
         model5_aerodynamics_cp_tsr_ratio,
+
+        sensor_anomaly_freeze,
+        sensor_anomaly_freeze_ratio,
+        model2_yaw_yawerror,
+        model2_yaw_yawerror_ratio,
+        model2_yaw_yawcount,
+        model2_yaw_yawcount_ratio,
+        model3_pitch_minpitch,
+        model3_pitch_minpitch_ratio,
         create_time,
         source_datetime
     FROM
@@ -275,9 +292,12 @@
 
             model2_yaw_staticyaw_ratio AS model2YawStaticyawRatio,
             model2_yaw_cabletwist_ratio AS model2YawCabletwistRatio,
+            model2_yaw_yawerror_ratio AS model2YawYawerrorRatio,
+            model2_yaw_yawcount_ratio AS model2YawYawcountRatio,
 
             model3_pitch_pitchregulation_ratio AS model3PitchPitchregulationRatio,
             model3_pitch_pitchcoord_ratio AS model3PitchPitchcoordRatio,
+            model3_pitch_minpitch_ratio AS model3PitchMinpitchRatio,
 
             model4_ctrlparam_powerquality_ratio AS model4CtrlparamPowerqualityRatio,
             model4_ctrlparam_deload_ratio AS model4CtrlparamDeloadRatio,
@@ -286,6 +306,7 @@
             model5_aerodynamics_cp_ratio AS model5AerodynamicsCpRatio,
             model5_aerodynamics_tsr_ratio AS model5AerodynamicsTsrRatio,
             model5_aerodynamics_cp_tsr_ratio AS model5AerodynamicsCpTsrRatio
+
         FROM ${tableName}
         WHERE
         field_id = #{fieldId}