瀏覽代碼

异常检测 model数据表 ,传感器字段名修改 ,及完善相关接口

zhouyang.xie 4 周之前
父節點
當前提交
11c3a56c9b

+ 2 - 1
src/main/java/com/energy/manage/analyse/constant/AnomalySensorType.java

@@ -19,8 +19,9 @@ public enum AnomalySensorType {
 
     WIND_POWER_LOGIC("sensor_anomaly_wind_pwr", "风速-功率逻辑异常"),
 
-    SPEED_TORQUE_LOGIC("sensor_anomaly_spd_trq", "转速-扭矩逻辑异常");
+    SPEED_TORQUE_LOGIC("sensor_anomaly_spd_trq", "转速-扭矩逻辑异常"),
 
+    FREEZE_SENSOR("sensor_anomaly_freeze", "偏航扭缆传感器是否异常");
 
     private final String fieldName;
     private final String displayName;

+ 5 - 2
src/main/java/com/energy/manage/analyse/controller/anomaly/AnomalyController.java

@@ -47,8 +47,11 @@ public class AnomalyController extends BaseServiceController {
 
     @ApiOperation("查询异常风机概览")
     @PostMapping("/getAnomalyOverview")
-    public ResultResp<List<AnomalyOverviewVO>> getAnomalyOverview(@RequestBody List<AnomalyDTO> anomalyDTOList){
-        List<AnomalyOverviewVO> anomalyOverview= anomalyService.getAnomalyOverview(anomalyDTOList);
+    public ResultResp<List<AnomalyOverviewVO>> getAnomalyOverview(@RequestBody List<AnomalyDTO> anomalyDTOList, HttpServletRequest request){
+        //判断是否是内网
+        boolean isIntranet = NetUtils.isIntranet(IPUtils.getIpAddr(request));
+
+        List<AnomalyOverviewVO> anomalyOverview= anomalyService.getAnomalyOverview(anomalyDTOList, isIntranet);
         return success(anomalyOverview);
     }
 

+ 79 - 0
src/main/java/com/energy/manage/analyse/domain/vo/anomaly/AnomalyOverviewVO.java

@@ -37,6 +37,85 @@ public class AnomalyOverviewVO {
     @ApiModelProperty("检测器异常数")
     private Integer detectorAnomalyCount;
 
+    /**
+     * 模型1 - 风机功率曲线图
+     */
+    @ApiModelProperty("模型1 - 风机功率曲线图")
+    private String model1WindpwrPowercurveGraph ;
+
+    /**
+     * 模型1 - 风机散点图
+     */
+    @ApiModelProperty("模型1 - 风机散点图")
+    private String model1WindpwrScatterGraph;
 
+    /**
+     * 模型2 - 偏航静态偏航图
+     */
+    @ApiModelProperty("模型2 - 偏航静态偏航图")
+    private String model2YawStaticyawGraph;
+
+    /**
+     * 模型2 - 偏航线缆扭转图
+     */
+    @ApiModelProperty("模型2 - 偏航线缆扭转图")
+    private String model2YawCabletwistGraph;
+
+    /**
+     * 模型2 - 偏航偏差图
+     */
+    @ApiModelProperty("模型2 - 偏航偏差图")
+    private String model2YawYawerrorGraph ;
+
+    /**
+     * 模型2 - 偏航计数图
+     */
+    @ApiModelProperty("模型2 - 偏航计数图")
+    private String model2YawYawcountGraph;
+    /**
+     * 模型3 - 风机桨距坐标图
+     */
+    @ApiModelProperty("模型3 - 风机桨距坐标图")
+    private String model3PitchPitchcoordGraph ;
+    /**
+     * 模型3 - 风机桨距调节图
+     */
+    @ApiModelProperty("模型3 - 风机桨距调节图")
+    private String model3PitchPitchregulationGraph ;
+    /**
+     * 模型3 - 风机最小桨距图
+     */
+    @ApiModelProperty("模型3 - 风机最小桨距图")
+    private String model3PitchMinpitchGraph;
+    /**
+     * 模型4 - 控制参数 - 电能质量图
+     */
+    @ApiModelProperty("模型4 - 控制参数 - 电能质量图")
+    private String model4CtrlparamPowerqualityGraph ;
+    /**
+     * 模型4 - 控制参数 - 运行状态图
+     */
+    @ApiModelProperty("模型4 - 控制参数 - 运行状态图")
+    private String model4CtrlparamOperationstateGraph ;
+    /**
+     * 模型4 - 控制参数 - 减载图
+     */
+    @ApiModelProperty("模型4 - 控制参数 - 减载图")
+    private String model4CtrlparamDeloadGraph;
+    /**
+     * 模型5 - 空气动力学 - 功率系数图
+     */
+    @ApiModelProperty("模型5 - 空气动力学 - 功率系数图")
+    private String model5AerodynamicsCpGraph ;
+    /**
+     * 模型5 - 空气动力学 - 空速比图
+     */
+    @ApiModelProperty("模型5 - 空气动力学 - 空速比图")
+    private String model5AerodynamicsTsrGraph ;
+    /**
+     * 模型5 - 空气动力学 - 功率系数-空速比图
+     */
+    @ApiModelProperty("模型5 - 空气动力学 - 功率系数-空速比图")
+    private String model5AerodynamicsCpTsrGraph;
 
 }

+ 2 - 0
src/main/java/com/energy/manage/analyse/domain/vo/anomaly/AnomalySensorCountVO.java

@@ -25,6 +25,8 @@ public class AnomalySensorCountVO {
     private Integer sensorAnomalyWindPwrCount;
     @ApiModelProperty(" 转速-扭矩逻辑异常风机数")
     private Integer sensorAnomalySpdTrqCount;
+    @ApiModelProperty(" 偏航扭缆传感器是否异常风机数")
+    private Integer sensorAnomalyFreezeCount;
 
 
 

+ 2 - 3
src/main/java/com/energy/manage/analyse/po/anomaly/AnomalyModelPO.java

@@ -321,10 +321,9 @@ public class AnomalyModelPO {
 
     
 
-    @ApiModelProperty("数据冻结是否异常(0或1)0正常1异常")
+    @ApiModelProperty("偏航扭缆传感器是否异常(含数据冻结,0或1)")
     private Integer sensorAnomalyFreeze;
-
-    @ApiModelProperty("数据冻结异常比例")
+    @ApiModelProperty("偏航扭缆传感器异常比例")
     private BigDecimal sensorAnomalyFreezeRatio;
 
     @ApiModelProperty("模块2(偏航)静态偏航误差检测器是否异常(0或1)0正常1异常-1 空值")

+ 1 - 1
src/main/java/com/energy/manage/analyse/service/anomaly/AnomalyService.java

@@ -26,7 +26,7 @@ public interface AnomalyService {
      * @return
      */
     // List<AnomalyOverviewVO> getAnomalyOverview(AnomalyDTO anomalyDTO);
-    List<AnomalyOverviewVO> getAnomalyOverview(List<AnomalyDTO> anomalyDTOList);
+    List<AnomalyOverviewVO> getAnomalyOverview(List<AnomalyDTO> anomalyDTOList, boolean isIntranet);
 
     /**
      * 柱状图

+ 28 - 1
src/main/java/com/energy/manage/analyse/service/anomaly/impl/AnomalyServiceImpl.java

@@ -166,7 +166,7 @@ public class AnomalyServiceImpl implements AnomalyService {
     }
 
     @Override
-    public List<AnomalyOverviewVO> getAnomalyOverview(List<AnomalyDTO> anomalyDTOList) {
+    public List<AnomalyOverviewVO> getAnomalyOverview(List<AnomalyDTO> anomalyDTOList, boolean isIntranet) {
 
         List<String> fieldIds = new ArrayList<>();
         for (AnomalyDTO anomalyDTO : anomalyDTOList) {
@@ -211,6 +211,22 @@ public class AnomalyServiceImpl implements AnomalyService {
                     vo.setFieldCode(po.getFieldCode());
                 }
             }
+
+            vo.setModel1WindpwrPowercurveGraph(NetUtils.getFilePath(isIntranet,vo.getModel1WindpwrPowercurveGraph()));
+            vo.setModel1WindpwrScatterGraph(NetUtils.getFilePath(isIntranet, vo.getModel1WindpwrScatterGraph()));
+            vo.setModel2YawStaticyawGraph(NetUtils.getFilePath(isIntranet, vo.getModel2YawStaticyawGraph()));
+            vo.setModel2YawCabletwistGraph(NetUtils.getFilePath(isIntranet, vo.getModel2YawCabletwistGraph()));
+            vo.setModel2YawYawerrorGraph(NetUtils.getFilePath(isIntranet, vo.getModel2YawYawerrorGraph()));
+            vo.setModel2YawYawcountGraph(NetUtils.getFilePath(isIntranet, vo.getModel2YawYawcountGraph()));
+            vo.setModel3PitchPitchcoordGraph(NetUtils.getFilePath(isIntranet, vo.getModel3PitchPitchcoordGraph()));
+            vo.setModel3PitchPitchregulationGraph(NetUtils.getFilePath(isIntranet, vo.getModel3PitchPitchregulationGraph()));
+            vo.setModel3PitchMinpitchGraph(NetUtils.getFilePath(isIntranet, vo.getModel3PitchMinpitchGraph()));
+            vo.setModel4CtrlparamPowerqualityGraph(NetUtils.getFilePath(isIntranet, vo.getModel4CtrlparamPowerqualityGraph()));
+            vo.setModel4CtrlparamOperationstateGraph(NetUtils.getFilePath(isIntranet, vo.getModel4CtrlparamOperationstateGraph()));
+            vo.setModel4CtrlparamDeloadGraph(NetUtils.getFilePath(isIntranet, vo.getModel4CtrlparamDeloadGraph()));
+            vo.setModel5AerodynamicsCpGraph(NetUtils.getFilePath(isIntranet, vo.getModel5AerodynamicsCpGraph()));
+            vo.setModel5AerodynamicsTsrGraph(NetUtils.getFilePath(isIntranet, vo.getModel5AerodynamicsTsrGraph()));
+            vo.setModel5AerodynamicsCpTsrGraph(NetUtils.getFilePath(isIntranet, vo.getModel5AerodynamicsCpTsrGraph()));
         }
         return anomalyOverviewVOList;
     }
@@ -614,6 +630,7 @@ public class AnomalyServiceImpl implements AnomalyService {
         // 逻辑关联异常列表
         List<AnomalyThermodynamicDiagramVO> windPowerLogicAnomalyList = new ArrayList<>();
         List<AnomalyThermodynamicDiagramVO> speedTorqueLogicAnomalyList = new ArrayList<>();
+        List<AnomalyThermodynamicDiagramVO> sensorAnomalyFreezeList = new ArrayList<>();
 
         // 物理传感器异常列表
         AnomalyThermodynamicDiagramVO powerSensorAnomaly = null;
@@ -625,6 +642,8 @@ public class AnomalyServiceImpl implements AnomalyService {
         // 逻辑关联异常列表
         AnomalyThermodynamicDiagramVO windPowerLogicAnomaly = null;
         AnomalyThermodynamicDiagramVO speedTorqueLogicAnomaly = null;
+        
+        AnomalyThermodynamicDiagramVO sensorAnomalyFreeze = null;
 
         for (AnomalyModelPO anomalyModelPO : getAnomalyModelList) {
 
@@ -670,6 +689,13 @@ public class AnomalyServiceImpl implements AnomalyService {
             speedTorqueLogicAnomaly.setRatio(anomalyModelPO.getSensorAnomalySpeedRatio());
             speedTorqueLogicAnomalyList.add(speedTorqueLogicAnomaly);
 
+
+            sensorAnomalyFreeze = new AnomalyThermodynamicDiagramVO();
+            sensorAnomalyFreeze.setEngineName(engineMap.get(anomalyModelPO.getEngineId()));
+            sensorAnomalyFreeze.setIfAbnorma(anomalyModelPO.getSensorAnomalyFreeze());
+            sensorAnomalyFreeze.setRatio(anomalyModelPO.getSensorAnomalyFreezeRatio());
+            sensorAnomalyFreezeList.add(sensorAnomalyFreeze);
+
         }
 
         map.put(AnomalySensorType.POWER_SENSOR.getFieldName(), powerSensorAnomalyList);
@@ -679,6 +705,7 @@ public class AnomalyServiceImpl implements AnomalyService {
         map.put(AnomalySensorType.TORQUE_SENSOR.getFieldName(), torqueSensorAnomalyList);
         map.put(AnomalySensorType.WIND_POWER_LOGIC.getFieldName(), windPowerLogicAnomalyList);
         map.put(AnomalySensorType.SPEED_TORQUE_LOGIC.getFieldName(), speedTorqueLogicAnomalyList);
+        map.put(AnomalySensorType.FREEZE_SENSOR.getFieldName(), sensorAnomalyFreezeList);
 
         return map;
     }

+ 63 - 59
src/main/resources/mybatis/anomaly/AnaomalyMapper.xml

@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.energy.manage.analyse.mappers.anomaly.AnomalyWindfarmMapper">
-
     <!-- 所有风场健康情况信息查询 -->
     <select id="getAnomalyListByFieldIds" resultType="com.energy.manage.analyse.domain.vo.anomaly.AnomalyRegionVO">
         select 
@@ -9,10 +8,12 @@
         from anomaly_windfarm
         where 1=1
         <if test="beginTime != null and beginTime != ''">
-            and source_datetime  <![CDATA[>= ]]> #{beginTime}
+            and source_datetime
+            <![CDATA[>= ]]> #{beginTime}
         </if>
         <if test="endTime != null and endTime != ''">
-            and source_datetime <![CDATA[<= ]]> #{endTime}
+            and source_datetime
+            <![CDATA[<= ]]> #{endTime}
         </if>
         <if test="fieldIds != null and fieldIds.size() > 0">
             and field_id in
@@ -21,14 +22,29 @@
             </foreach>
         </if>
     </select>
-
     <!-- 查询风机异常统计数 -->
     <select id="selectAnomalyWindfarmAndFieldId" resultType="com.energy.manage.analyse.domain.vo.anomaly.AnomalyOverviewVO">
         select
             field_id as fieldId,
             result_anomaly_count as totalAnomalyCount,
             sensor_anomaly_count as sensorAnomalyCount,
-            anomaly_detection_count as detectorAnomalyCount
+            anomaly_detection_count as detectorAnomalyCount,
+
+            model1_windpwr_powercurve_graph as model1WindpwrPowercurveGraph,
+            model1_windpwr_scatter_graph as model1WindpwrScatterGraph,
+            model2_yaw_staticyaw_graph as model2YawStaticyawGraph,
+            model2_yaw_cabletwist_graph as model2YawCabletwistGraph,
+            model2_yaw_yawerror_graph as model2YawYawerrorGraph,
+            model2_yaw_yawcount_graph as model2YawYawcountGraph,
+            model3_pitch_pitchcoord_graph as model3PitchPitchcoordGraph,
+            model3_pitch_pitchregulation_graph as model3PitchPitchregulationGraph,
+            model3_pitch_minpitch_graph as model3PitchMinpitchGraph,
+            model4_ctrlparam_powerquality_graph as model4CtrlparamPowerqualityGraph,
+            model4_ctrlparam_operationstate_graph as model4CtrlparamOperationstateGraph,
+            model4_ctrlparam_deload_graph as model4CtrlparamDeloadGraph,
+            model5_aerodynamics_cp_graph as model5AerodynamicsCpGraph,
+            model5_aerodynamics_tsr_graph as model5AerodynamicsTsrGraph,
+            model5_aerodynamics_cp_tsr_graph as model5AerodynamicsCpTsrGraph
         from
             anomaly_windfarm
         where 1=1
@@ -42,13 +58,14 @@
             </foreach>
         </if>
         <if test="beginTime != null and beginTime != ''">
-            and source_datetime  <![CDATA[>= ]]> #{beginTime}
+            and source_datetime
+            <![CDATA[>= ]]> #{beginTime}
         </if>
         <if test="endTime != null and endTime != ''">
-            and source_datetime <![CDATA[<= ]]> #{endTime}
+            and source_datetime
+            <![CDATA[<= ]]> #{endTime}
         </if>
     </select>
-
     <!-- 柱状图 -->
     <select id="selectAnomalyModelCount" resultType="com.energy.manage.analyse.domain.vo.anomaly.BarChartVO">
     SELECT
@@ -63,20 +80,20 @@
             field_id = #{fieldId}
         </if>
         <if test="beginTime != null and beginTime != ''">
-            and source_datetime  <![CDATA[>= ]]> #{beginTime}
+            and source_datetime
+            <![CDATA[>= ]]> #{beginTime}
         </if>
         <if test="endTime != null and endTime != ''">
-            and source_datetime <![CDATA[<= ]]> #{endTime}
+            and source_datetime
+            <![CDATA[<= ]]> #{endTime}
         </if>
     </select>
-
     <!-- 异常检测模块 -->
     <resultMap id="AnomalyModelResultMap" type="com.energy.manage.analyse.po.anomaly.AnomalyModelPO">
         <id property="id" column="id"/>
         <result property="fieldId" column="field_id"/>
         <result property="engineId" column="engine_id"/>
         <result property="machineTypeCode" column="machine_type_code"/>
-        
         <result column="sensor_anomaly_power" property="sensorAnomalyPower" jdbcType="INTEGER"/>
         <result column="sensor_anomaly_power_ratio" property="sensorAnomalyPowerRatio" jdbcType="DECIMAL"/>
         <result column="sensor_anomaly_wind" property="sensorAnomalyWind" jdbcType="INTEGER"/>
@@ -91,7 +108,6 @@
         <result column="sensor_anomaly_wind_pwr_ratio" property="sensorAnomalyWindPwrRatio" jdbcType="DECIMAL"/>
         <result column="sensor_anomaly_spd_trq" property="sensorAnomalySpdTrq" jdbcType="INTEGER"/>
         <result column="sensor_anomaly_spd_trq_ratio" property="sensorAnomalySpdTrqRatio" jdbcType="DECIMAL"/>
-
         <result column="model1_windpwr_is_anomaly" property="model1WindpwrIsAnomaly" jdbcType="INTEGER"/>
         <result column="model1_windpwr_normal_count" property="model1WindpwrNormalCount" jdbcType="INTEGER"/>
         <result column="model1_windpwr_anomaly_count" property="model1WindpwrAnomalyCount" jdbcType="INTEGER"/>
@@ -101,7 +117,6 @@
         <result column="model1_windpwr_scatter" property="model1WindpwrScatter" jdbcType="INTEGER"/>
         <result column="model1_windpwr_scatter_ratio" property="model1WindpwrScatterRatio" jdbcType="DECIMAL"/>
         <result column="model1_windpwr_simulink" property="model1WindpwrSimulink" jdbcType="INTEGER"/>
-
         <result column="model2_yaw_is_anomaly" property="model2YawIsAnomaly" jdbcType="INTEGER"/>
         <result column="model2_yaw_normal_count" property="model2YawNormalCount" jdbcType="INTEGER"/>
         <result column="model2_yaw_anomaly_count" property="model2YawAnomalyCount" jdbcType="INTEGER"/>
@@ -110,7 +125,6 @@
         <result column="model2_yaw_staticyaw_ratio" property="model2YawStaticyawRatio" jdbcType="DECIMAL"/>
         <result column="model2_yaw_cabletwist" property="model2YawCabletwist" jdbcType="INTEGER"/>
         <result column="model2_yaw_cabletwist_ratio" property="model2YawCabletwistRatio" jdbcType="DECIMAL"/>
-
         <result column="model3_pitch_is_anomaly" property="model3PitchIsAnomaly" jdbcType="INTEGER"/>
         <result column="model3_pitch_normal_count" property="model3PitchNormalCount" jdbcType="INTEGER"/>
         <result column="model3_pitch_anomaly_count" property="model3PitchAnomalyCount" jdbcType="INTEGER"/>
@@ -119,7 +133,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="model4_is_anomaly" property="model4IsAnomaly" jdbcType="INTEGER"/>
         <result column="model4_ctrlparam_normal_count" property="model4CtrlparamNormalCount" jdbcType="INTEGER"/>
         <result column="model4_ctrlparam_anomaly_count" property="model4CtrlparamAnomalyCount" jdbcType="INTEGER"/>
@@ -130,7 +143,6 @@
         <result column="model4_ctrlparam_deload_ratio" property="model4CtrlparamDeloadRatio" jdbcType="DECIMAL"/>
         <result column="model4_ctrlparam_operationstate" property="model4CtrlparamOperationstate" jdbcType="INTEGER"/>
         <result column="model4_ctrlparam_operationstate_ratio" property="model4CtrlparamOperationstateRatio" jdbcType="DECIMAL"/>
-
         <result column="model5_is_anomaly" property="model5IsAnomaly" jdbcType="INTEGER"/>
         <result column="model5_aerodynamics_normal_count" property="model5AerodynamicsNormalCount" jdbcType="INTEGER"/>
         <result column="model5_aerodynamics_anomaly_count" property="model5AerodynamicsAnomalyCount" jdbcType="INTEGER"/>
@@ -141,21 +153,17 @@
         <result column="model5_aerodynamics_tsr_ratio" property="model5AerodynamicsTsrRatio" jdbcType="DECIMAL"/>
         <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="sensor_anomaly_yaw" property="sensorAnomalyFreeze" jdbcType="INTEGER"/>
+        <result column="sensor_anomaly_yaw_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_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="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>
-
     <!-- 查询所有记录 -->
     <select id="selectAllAnomalyModel" resultMap="AnomalyModelResultMap">
     SELECT
@@ -223,8 +231,8 @@
         model5_aerodynamics_cp_tsr,
         model5_aerodynamics_cp_tsr_ratio,
 
-        sensor_anomaly_freeze,
-        sensor_anomaly_freeze_ratio,
+        sensor_anomaly_yaw,
+        sensor_anomaly_yaw_ratio,
         model2_yaw_yawerror,
         model2_yaw_yawerror_ratio,
         model2_yaw_yawcount,
@@ -240,14 +248,14 @@
             field_id = #{fieldId}
         </if>
         <if test="beginTime != null and beginTime != ''">
-            and source_datetime  <![CDATA[>= ]]> #{beginTime}
+            and source_datetime
+            <![CDATA[>= ]]> #{beginTime}
         </if>
         <if test="endTime != null and endTime != ''">
-            and source_datetime <![CDATA[<= ]]> #{endTime}
+            and source_datetime
+            <![CDATA[<= ]]> #{endTime}
         </if>
     </select>
-
-
     <!-- 基础结果映射 -->
     <resultMap id="BaseResultMap" type="com.energy.manage.analyse.po.anomaly.BaseAnomalyDetectorPO">
         <id column="id" property="id" />
@@ -267,7 +275,6 @@
         <result column="create_time" property="createTime" />
         <result column="detector_anomaly_rate" property="detectorAnomalyRate" />
     </resultMap>
-
     <!-- 动态查询模块检测器 -->
     <select id="selectAnomalyDetectorAll" resultMap="BaseResultMap">
         SELECT * FROM
@@ -280,14 +287,14 @@
             and  engine_id = #{engineId}
         </if>
         <if test="beginTime != null and beginTime != ''">
-            and source_datetime  <![CDATA[>= ]]> #{beginTime}
+            and source_datetime
+            <![CDATA[>= ]]> #{beginTime}
         </if>
         <if test="endTime != null and endTime != ''">
-            and source_datetime <![CDATA[<= ]]> #{endTime}
+            and source_datetime
+            <![CDATA[<= ]]> #{endTime}
         </if>
     </select>
-
-
     <!-- ======================================== 子页面曲线图 ======================================== -->
     <!-- 1. 单表统计:指定年度表 -->
     <select id="selectBySingleTable" resultType="com.energy.manage.analyse.domain.vo.anomaly.AnomalyDailyVO">
@@ -320,7 +327,6 @@
         and source_datetime BETWEEN #{startDate} AND #{endDate}
         ORDER BY create_time ASC
     </select>
-
     <!-- 2. 跨表统计:跨年两张表 UNION ALL 合并(核心!) -->
     <select id="selectByUnionTables" resultType="com.energy.manage.analyse.domain.vo.anomaly.AnomalyDailyVO">
         SELECT
@@ -344,7 +350,6 @@
         and  source_datetime BETWEEN #{startDate} AND #{endDate}
 
         UNION ALL
-
         <!-- 第二张表 -->
         SELECT
         create_time AS createTime,
@@ -360,7 +365,6 @@
         ) AS union_data
         ORDER BY date ASC
     </select>
-
     <select id="selectAnomalySensorCountVO" resultType="com.energy.manage.analyse.domain.vo.anomaly.AnomalySensorCountVO">
 
        SELECT
@@ -385,7 +389,9 @@
         COUNT(DISTINCT CASE WHEN sensor_anomaly_wind_pwr = 1 THEN engine_id END) AS 'sensorAnomalyWindPwrCount',
 
 
-        COUNT(DISTINCT CASE WHEN sensor_anomaly_spd_trq = 1 THEN engine_id END) AS 'sensorAnomalySpdTrqCount'
+        COUNT(DISTINCT CASE WHEN sensor_anomaly_spd_trq = 1 THEN engine_id END) AS 'sensorAnomalySpdTrqCount',
+
+        COUNT(DISTINCT CASE WHEN sensor_anomaly_yaw = 1 THEN engine_id END) AS 'sensorAnomalyFreezeCount'
 
         FROM anomaly_model_${year}
         where 1=1
@@ -393,17 +399,17 @@
             and field_id = #{fieldId}
         </if>
         <if test="beginTime != null and beginTime != ''">
-            and source_datetime  <![CDATA[>= ]]> #{beginTime}
+            and source_datetime
+            <![CDATA[>= ]]> #{beginTime}
         </if>
         <if test="endTime != null and endTime != ''">
-            and source_datetime <![CDATA[<= ]]> #{endTime}
+            and source_datetime
+            <![CDATA[<= ]]> #{endTime}
         </if>
         GROUP BY field_id
-        </select>
-
-
-        <!-- yichangjianc异常检测统计  -->
-        <select id="selectModeCount" resultType="com.energy.manage.analyse.domain.vo.anomaly.AnomalyCount">
+    </select>
+    <!-- yichangjianc异常检测统计  -->
+    <select id="selectModeCount" resultType="com.energy.manage.analyse.domain.vo.anomaly.AnomalyCount">
 
 SELECT
     field_id,
@@ -437,22 +443,20 @@ SELECT
 
 FROM anomaly_model_${year}
 WHERE field_id =#{fieldId}
-            <if test="beginTime != null and beginTime != ''">
-                and source_datetime  <![CDATA[>= ]]> #{beginTime}
-            </if>
-            <if test="endTime != null and endTime != ''">
-                and source_datetime <![CDATA[<= ]]> #{endTime}
-            </if>
+        <if test="beginTime != null and beginTime != ''">
+                and source_datetime
+            <![CDATA[>= ]]> #{beginTime}
+        </if>
+        <if test="endTime != null and endTime != ''">
+                and source_datetime
+            <![CDATA[<= ]]> #{endTime}
+        </if>
 GROUP BY field_id;
-        </select>
-
-
+    </select>
     <select id="selectEngineCountByCode" resultType="Integer">
         select count(1) as engineCount
         from wind_field wf
         inner join wind_engine_group weg on wf.field_code = weg.field_code
         where wf.company_code = #{companyCode}
     </select>
-
-
-    </mapper>
+</mapper>