| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408 |
- <?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="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
- from
- anomaly_windfarm
- where 1=1
- <if test="fieldId!=null">
- and field_id = #{fieldId}
- </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>
- </select>
- <!-- 柱状图 -->
- <select id="selectAnomalyModelCount" resultType="com.energy.manage.analyse.domain.vo.anomaly.BarChartVO">
- SELECT
- COUNT(DISTINCT CASE WHEN model1_windpwr_is_anomaly = 1 THEN engine_id END) AS windpwrCount,
- COUNT(DISTINCT CASE WHEN model2_yaw_is_anomaly = 1 THEN engine_id END) AS yawCount,
- COUNT(DISTINCT CASE WHEN model3_pitch_is_anomaly = 1 THEN engine_id END) AS pitchCount,
- COUNT(DISTINCT CASE WHEN model4_is_anomaly = 1 THEN engine_id END) AS ctrlparamCount
- FROM
- anomaly_model_${year}
- WHERE
- <if test="fieldId!=null">
- field_id = #{fieldId}
- </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>
- </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 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"/>
- <result column="sensor_anomaly_wind_ratio" property="sensorAnomalyWindRatio" jdbcType="DECIMAL"/>
- <result column="sensor_anomaly_pitch" property="sensorAnomalyPitch" jdbcType="INTEGER"/>
- <result column="sensor_anomaly_pitch_ratio" property="sensorAnomalyPitchRatio" jdbcType="DECIMAL"/>
- <result column="sensor_anomaly_speed" property="sensorAnomalySpeed" jdbcType="INTEGER"/>
- <result column="sensor_anomaly_speed_ratio" property="sensorAnomalySpeedRatio" jdbcType="DECIMAL"/>
- <result column="sensor_anomaly_torque" property="sensorAnomalyTorque" jdbcType="INTEGER"/>
- <result column="sensor_anomaly_torque_ratio" property="sensorAnomalyTorqueRatio" jdbcType="DECIMAL"/>
- <result column="sensor_anomaly_wind_pwr" property="sensorAnomalyWindPwr" jdbcType="INTEGER"/>
- <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"/>
- <result column="model1_windpwr_anomaly_rate" property="model1WindpwrAnomalyRate" jdbcType="DECIMAL"/>
- <result column="model1_windpwr_powercurve" property="model1WindpwrPowercurve" jdbcType="INTEGER"/>
- <result column="model1_windpwr_powercurve_ratio" property="model1WindpwrPowercurveRatio" jdbcType="DECIMAL"/>
- <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"/>
- <result column="model2_yaw_anomaly_rate" property="model2YawAnomalyRate" jdbcType="DECIMAL"/>
- <result column="model2_yaw_staticyaw" property="model2YawStaticyaw" jdbcType="INTEGER"/>
- <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"/>
- <result column="model3_pitch_anomaly_rate" property="model3PitchAnomalyRate" jdbcType="DECIMAL"/>
- <result column="model3_pitch_pitchregulation" property="model3PitchPitchregulation" jdbcType="INTEGER"/>
- <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"/>
- <result column="model4_ctrlparam_anomaly_count" property="model4CtrlparamAnomalyCount" jdbcType="INTEGER"/>
- <result column="model4_ctrlparam_anomaly_rate" property="model4CtrlparamAnomalyRate" jdbcType="DECIMAL"/>
- <result column="model4_ctrlparam_powerquality" property="model4CtrlparamPowerquality" jdbcType="INTEGER"/>
- <result column="model4_ctrlparam_powerquality_ratio" property="model4CtrlparamPowerqualityRatio" jdbcType="DECIMAL"/>
- <result column="model4_ctrlparam_deload" property="model4CtrlparamDeload" jdbcType="INTEGER"/>
- <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"/>
- <result column="model5_aerodynamics_anomaly_ratio" property="model5AerodynamicsAnomalyRatio" jdbcType="DECIMAL"/>
- <result column="model5_aerodynamics_cp" property="model5AerodynamicsCp" jdbcType="INTEGER"/>
- <result column="model5_aerodynamics_cp_ratio" property="model5AerodynamicsCpRatio" jdbcType="DECIMAL"/>
- <result column="model5_aerodynamics_tsr" property="model5AerodynamicsTsr" jdbcType="INTEGER"/>
- <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 property="sourceDatetime" column="source_datetime"/>
- <result property="createTime" column="create_time"/>
- </resultMap>
- <!-- 查询所有记录 -->
- <select id="selectAllAnomalyModel" resultMap="AnomalyModelResultMap">
- SELECT
- id,
- field_id,
- engine_id,
- sensor_anomaly_power,
- sensor_anomaly_power_ratio,
- sensor_anomaly_wind,
- sensor_anomaly_wind_ratio,
- sensor_anomaly_pitch,
- sensor_anomaly_pitch_ratio,
- sensor_anomaly_speed,
- sensor_anomaly_speed_ratio,
- sensor_anomaly_torque,
- sensor_anomaly_torque_ratio,
- sensor_anomaly_wind_pwr,
- sensor_anomaly_wind_pwr_ratio,
- sensor_anomaly_spd_trq,
- sensor_anomaly_spd_trq_ratio,
- model1_windpwr_is_anomaly,
- model1_windpwr_normal_count,
- model1_windpwr_anomaly_count,
- model1_windpwr_anomaly_rate,
- model1_windpwr_powercurve,
- model1_windpwr_powercurve_ratio,
- model1_windpwr_scatter,
- model1_windpwr_scatter_ratio,
- model1_windpwr_simulink,
- model2_yaw_is_anomaly,
- model2_yaw_normal_count,
- model2_yaw_anomaly_count,
- model2_yaw_anomaly_rate,
- model2_yaw_staticyaw,
- model2_yaw_staticyaw_ratio,
- model2_yaw_cabletwist,
- model2_yaw_cabletwist_ratio,
- model3_pitch_is_anomaly,
- model3_pitch_normal_count,
- model3_pitch_anomaly_count,
- model3_pitch_anomaly_rate,
- model3_pitch_pitchregulation,
- 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,
- model4_ctrlparam_anomaly_rate,
- model4_ctrlparam_powerquality,
- model4_ctrlparam_powerquality_ratio,
- model4_ctrlparam_deload,
- model4_ctrlparam_deload_ratio,
- model4_ctrlparam_operationstate,
- model4_ctrlparam_operationstate_ratio,
- model5_is_anomaly,
- model5_aerodynamics_normal_count,
- model5_aerodynamics_anomaly_count,
- model5_aerodynamics_anomaly_ratio,
- model5_aerodynamics_cp,
- model5_aerodynamics_cp_ratio,
- model5_aerodynamics_tsr,
- model5_aerodynamics_tsr_ratio,
- model5_aerodynamics_cp_tsr,
- model5_aerodynamics_cp_tsr_ratio,
- create_time,
- source_datetime
- FROM
- anomaly_model_${year}
- where
- <if test="fieldId!=null">
- field_id = #{fieldId}
- </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>
- </select>
- <!-- 基础结果映射 -->
- <resultMap id="BaseResultMap" type="com.energy.manage.analyse.po.anomaly.BaseAnomalyDetectorPO">
- <id column="id" property="id" />
- <result column="field_id" property="fieldId" />
- <result column="engine_id" property="engineId" />
- <result column="anomaly_model_name" property="anomalyModelName" />
- <result column="sensor_is_anomaly" property="sensorIsAnomaly" />
- <result column="detector_is_anomaly" property="detectorIsAnomaly" />
- <result column="sensor_anomaly_type" property="sensorAnomalyType" />
- <result column="sensor_anomaly_count" property="sensorAnomalyCount" />
- <result column="sensor_normally_count" property="sensorNormallyCount" />
- <result column="detector_anomaly_count" property="detectorAnomalyCount" />
- <result column="detector_normally_count" property="detectorNormallyCount" />
- <result column="file_path" property="filePath" />
- <result column="graph_path" property="graphPath" />
- <result column="source_datetime" property="sourceDatetime" />
- <result column="create_time" property="createTime" />
- <result column="detector_anomaly_rate" property="detectorAnomalyRate" />
- </resultMap>
- <!-- 动态查询模块检测器 -->
- <select id="selectAnomalyDetectorAll" resultMap="BaseResultMap">
- SELECT * FROM
- ${tableName}
- where 1=1
- <if test="fieldId!=null">
- and field_id = #{fieldId}
- </if>
- <if test="engineId!=null">
- and engine_id = #{engineId}
- </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>
- </select>
- <!-- ======================================== 子页面曲线图 ======================================== -->
- <!-- 1. 单表统计:指定年度表 -->
- <select id="selectBySingleTable" resultType="com.energy.manage.analyse.domain.vo.anomaly.AnomalyDailyVO">
- SELECT
- source_datetime AS createTime,
- model1_windpwr_powercurve_ratio AS model1WindpwrPowercurveRatio,
- model1_windpwr_scatter_ratio AS model1WindpwrScatterRatio,
- model2_yaw_staticyaw_ratio AS model2YawStaticyawRatio,
- model2_yaw_cabletwist_ratio AS model2YawCabletwistRatio,
- model3_pitch_pitchregulation_ratio AS model3PitchPitchregulationRatio,
- model3_pitch_pitchcoord_ratio AS model3PitchPitchcoordRatio,
- model4_ctrlparam_powerquality_ratio AS model4CtrlparamPowerqualityRatio,
- model4_ctrlparam_deload_ratio AS model4CtrlparamDeloadRatio,
- model4_ctrlparam_operationstate_ratio AS model4CtrlparamOperationstateRatio,
- 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}
- and engine_id = #{engineId}
- 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
- createTime,
- model1WindpwrAnomalyRate,
- model2YawAnomalyRate,
- model3PitchAnomalyRate,
- model4CtrlparamAnomalyRate
- FROM (
- <!-- 第一张表 -->
- SELECT
- create_time AS createTime,
- model1_windpwr_anomaly_rate as model1WindpwrAnomalyRate,
- model2_yaw_anomaly_rate as model2YawAnomalyRate,
- model3_pitch_anomaly_rate as model3PitchAnomalyRate,
- model4_ctrlparam_anomaly_rate as model4CtrlparamAnomalyRate
- FROM ${table1}
- WHERE
- field_id = #{fieldId}
- and engine_id = #{engineId}
- and source_datetime BETWEEN #{startDate} AND #{endDate}
- UNION ALL
- <!-- 第二张表 -->
- SELECT
- create_time AS createTime,
- model1_windpwr_anomaly_rate as model1WindpwrAnomalyRate,
- model2_yaw_anomaly_rate as model2YawAnomalyRate,
- model3_pitch_anomaly_rate as model3PitchAnomalyRate,
- model4_ctrlparam_anomaly_rate as model4CtrlparamAnomalyRate
- FROM ${table2}
- WHERE
- field_id = #{fieldId}
- and engine_id = #{engineId}
- and source_datetime BETWEEN #{startDate} AND #{endDate}
- ) AS union_data
- ORDER BY date ASC
- </select>
- <select id="selectAnomalySensorCountVO" resultType="com.energy.manage.analyse.domain.vo.anomaly.AnomalySensorCountVO">
- SELECT
- field_id,
- COUNT(DISTINCT CASE WHEN sensor_anomaly_power = 1 THEN engine_id END) AS 'sensorAnomalyPowerCount',
- COUNT(DISTINCT CASE WHEN sensor_anomaly_wind = 1 THEN engine_id END) AS 'sensorAnomalyWindCount',
- COUNT(DISTINCT CASE WHEN sensor_anomaly_pitch = 1 THEN engine_id END) AS 'sensorAnomalyPitchCount',
- COUNT(DISTINCT CASE WHEN sensor_anomaly_speed = 1 THEN engine_id END) AS 'sensorAnomalyApeedCount',
- COUNT(DISTINCT CASE WHEN sensor_anomaly_torque = 1 THEN engine_id END) AS 'sensorAnomalyTorqueCount',
- 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'
- FROM anomaly_model_${year}
- where 1=1
- <if test="fieldId!=null">
- and field_id = #{fieldId}
- </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>
- <!-- yichangjianc异常检测统计 -->
- <select id="selectModeCount" resultType="com.energy.manage.analyse.domain.vo.anomaly.AnomalyCount">
- SELECT
- field_id,
- COUNT(DISTINCT CASE WHEN
- model1_windpwr_powercurve = 1
- OR model1_windpwr_scatter = 1
- THEN engine_id END) AS model1Count,
- COUNT(DISTINCT CASE WHEN
- model2_yaw_staticyaw = 1
- OR model2_yaw_cabletwist = 1
- THEN engine_id END) AS model2Count,
- COUNT(DISTINCT CASE WHEN
- model3_pitch_pitchregulation = 1
- OR model3_pitch_pitchcoord = 1
- THEN engine_id END) AS model3Count,
- COUNT(DISTINCT CASE WHEN
- model4_ctrlparam_powerquality = 1
- OR model4_ctrlparam_deload = 1
- OR model4_ctrlparam_operationstate = 1
- THEN engine_id END) AS model4Count,
- COUNT(DISTINCT CASE WHEN
- model5_aerodynamics_cp = 1
- OR model5_aerodynamics_tsr = 1
- OR model5_aerodynamics_cp_tsr = 1
- THEN engine_id END) AS model5Count
- 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>
- GROUP BY field_id;
- </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>
|