添加谐波报告功能

This commit is contained in:
wr
2023-04-19 10:26:43 +08:00
parent dc3c4a8321
commit fb60e6c074
25 changed files with 4145 additions and 0 deletions

View File

@@ -0,0 +1,16 @@
package com.njcn.harmonic.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.harmonic.pojo.po.day.RStatDataIDPO;
/**
* <p>
* Mapper 接口
* </p>
*
* @author wr
* @since 2023-04-17
*/
public interface RStatDataIDMapper extends BaseMapper<RStatDataIDPO> {
}

View File

@@ -0,0 +1,130 @@
package com.njcn.harmonic.mapper;
import com.njcn.harmonic.pojo.param.ReportQueryParam;
import com.njcn.harmonic.pojo.vo.ReportValue;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 谐波报告查询
*/
public interface ReportMapper {
/**
* 获取电流有效值
* @return
*/
List<ReportValue> getVirtualDataI(@Param("param") ReportQueryParam param);
/**
* 获取电压有效值
* @return
*/
List<ReportValue> getVirtualDataV(@Param("param") ReportQueryParam param);
/**
* CP95条数
* @param param
* @return
*/
Integer getTotalCP95Day(@Param("param")ReportQueryParam param);
/**
* CP95条数
* @param param
* @return
*/
Integer getTotalPltCP95Day(@Param("param")ReportQueryParam param);
/**
* CP95条数
* @param param
* @return
*/
Integer getTotalPstCP95Day(@Param("param")ReportQueryParam param);
List<ReportValue> getVVirtualData(@Param("param")ReportQueryParam param);
/**
* 获取有功功率
* @param param
* @return
*/
List<ReportValue> getPowerP(@Param("param")ReportQueryParam param);
/**
* 无功功率
* @param param
* @return
*/
List<ReportValue> getPowerQ(@Param("param")ReportQueryParam param);
/**
* 视在功率
* @param param
* @return
*/
List<ReportValue> getPowerS(@Param("param")ReportQueryParam param);
/**
* 功率因数
* @param param
* @return
*/
List<ReportValue> getPF(@Param("param")ReportQueryParam param);
/**
* 短时闪变
* @param param
* @return
*/
List<ReportValue> getFlickerData(@Param("param")ReportQueryParam param);
/**
* 长时闪变
* @param param
* @return
*/
List<ReportValue> getLFlickerData(@Param("param")ReportQueryParam param);
/**
* 电压负偏差
* @param param
* @return
*/
List<ReportValue> getUVdeviationData(@Param("param")ReportQueryParam param);
/**
* 电压正偏差
* @param param
* @return
*/
List<ReportValue> getLVdeviationData(@Param("param")ReportQueryParam param);
/**
* 获取电压畸变率
* @param param
* @return
*/
List<ReportValue> getDistortionDataV(@Param("param")ReportQueryParam param);
/**
* 获取电流畸变率
* @param param
* @return
*/
List<ReportValue> getDistortionDataI(@Param("param")ReportQueryParam param);
/**
*频率
* @param param
* @return
*/
List<ReportValue> getFrequencyData(@Param("param")ReportQueryParam param);
/**
*
* @param param
* @return
*/
List<ReportValue> getDEVFrequencyData(@Param("param")ReportQueryParam param);
}

View File

@@ -0,0 +1,5 @@
<?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.njcn.harmonic.mapper.RStatDataIDMapper">
</mapper>

View File

@@ -0,0 +1,905 @@
<?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.njcn.harmonic.mapper.ReportMapper">
<select id="getVirtualDataI" resultType="com.njcn.harmonic.pojo.vo.ReportValue">
SELECT
`phasic_type` AS phaseType,
AVG( CASE WHEN value_type = 'AVG' THEN rms END ) AS meanValue,
MIN( CASE WHEN value_type = 'MIN' THEN rms END ) AS minValue,
MAX( CASE WHEN value_type = 'MAX' THEN rms END ) AS fmaxValue,
MAX( CASE WHEN rank = #{param.count} THEN rms END ) AS cp95Value
FROM
(
SELECT
phasic_type,
value_type,
rms,
rank
FROM
(
SELECT
phasic_type,
value_type,
rms,
@rank := IF( @CI := phasic_type, @rank + 1, 1 ) AS rank,
@CI := phasic_type
FROM
r_stat_data_i_d
<where>
phasic_type IN ( 'A', 'B', 'C' )
and quality_flag = 0
<if test="param.startTime != null and param.startTime != ''">
and `time` >= #{param.startTime}
</if>
<if test="param.endTime != null and param.endTime != ''">
and `time` &lt;= #{param.endTime}
</if>
<if test="param.lineId != null and param.lineId != ''">
and line_id = #{param.lineId}
</if>
</where>
ORDER BY
phasic_type,
(
CASE
WHEN value_type = 'CP95' THEN 1
WHEN value_type = 'MAX' THEN 2
WHEN value_type = 'MIN' THEN 3
WHEN value_type = 'AVG' THEN 4
ELSE 5
END
),
rms DESC
) AS t1
) a
GROUP BY
`phasic_type`;
</select>
<select id="getVirtualDataV" resultType="com.njcn.harmonic.pojo.vo.ReportValue">
SELECT
`phasic_type` AS phaseType,
AVG( CASE WHEN value_type = 'AVG' THEN rms END ) AS meanValue,
MIN( CASE WHEN value_type = 'MIN' THEN rms END ) AS minValue,
MAX( CASE WHEN value_type = 'MAX' THEN rms END ) AS fmaxValue,
MAX( CASE WHEN rank = #{param.count} THEN rms END ) AS cp95Value
FROM
(
SELECT
phasic_type,
value_type,
rms,
rank
FROM
(
SELECT
phasic_type,
value_type,
rms,
@rank := IF( @CI = phasic_type, @rank + 1, 1 ) AS rank,
@CI := phasic_type
FROM
r_stat_data_v_d
<where>
phasic_type IN ( 'A', 'B', 'C' )
and quality_flag = 0
<if test="param.startTime != null and param.startTime != ''">
and `time` >= #{param.startTime}
</if>
<if test="param.endTime != null and param.endTime != ''">
and `time` &lt;= #{param.endTime}
</if>
<if test="param.lineId != null and param.lineId != ''">
and line_id = #{param.lineId}
</if>
</where>
ORDER BY
phasic_type,
(
CASE
WHEN value_type = 'CP95' THEN 1
WHEN value_type = 'MAX' THEN 2
WHEN value_type = 'MIN' THEN 3
WHEN value_type = 'AVG' THEN 4
ELSE 5
END
),
rms DESC
) AS t1
) a
GROUP BY
`phasic_type`
</select>
<select id="getTotalCP95Day" resultType="java.lang.Integer">
SELECT
count( rms ) total
FROM
r_stat_data_v_d
<where>
phasic_type IN ( 'A' )
AND value_type = "CP95"
and quality_flag = 0
<if test="param.startTime != null and param.startTime != ''">
and `time` >= #{param.startTime}
</if>
<if test="param.endTime != null and param.endTime != ''">
and `time` &lt;= #{param.endTime}
</if>
<if test="param.lineId != null and param.lineId != ''">
and line_id = #{param.lineId}
</if>
</where>
</select>
<select id="getTotalPltCP95Day" resultType="java.lang.Integer">
SELECT
count( plt ) total
FROM
r_stat_data_plt_d
<where>
phasic_type IN ( 'A' )
AND value_type = "CP95"
and quality_flag = 0
<if test="param.startTime != null and param.startTime != ''">
and `time` >= #{param.startTime}
</if>
<if test="param.endTime != null and param.endTime != ''">
and `time` &lt;= #{param.endTime}
</if>
<if test="param.lineId != null and param.lineId != ''">
and line_id = #{param.lineId}
</if>
</where>
</select>
<select id="getTotalPstCP95Day" resultType="java.lang.Integer">
SELECT
count( plt ) total
FROM
r_stat_data_flicker_d
<where>
phasic_type IN ( 'A' )
AND value_type = "CP95"
and quality_flag = 0
<if test="param.startTime != null and param.startTime != ''">
and `time` >= #{param.startTime}
</if>
<if test="param.endTime != null and param.endTime != ''">
and `time` &lt;= #{param.endTime}
</if>
<if test="param.lineId != null and param.lineId != ''">
and line_id = #{param.lineId}
</if>
</where>
</select>
<select id="getVVirtualData" resultType="com.njcn.harmonic.pojo.vo.ReportValue">
SELECT
`phasic_type` AS phaseType,
AVG( CASE WHEN value_type = 'AVG' THEN rms END ) AS meanValue,
MIN( CASE WHEN value_type = 'MIN' THEN rms END ) AS minValue,
MAX( CASE WHEN value_type = 'MAX' THEN rms END ) AS fmaxValue,
MAX( CASE WHEN rank = #{param.count} THEN rms END ) AS cp95Value
FROM
(
SELECT
phasic_type,
value_type,
rms,
rank
FROM
(
SELECT
phasic_type,
value_type,
rms_lvr as rms,
@rank := IF( @CI = phasic_type, @rank + 1, 1 ) AS rank,
@CI := phasic_type
FROM
r_stat_data_v_d
<where>
phasic_type IN ( 'A', 'B', 'C' )
and quality_flag = 0
<if test="param.startTime != null and param.startTime != ''">
and `time` >= #{param.startTime}
</if>
<if test="param.endTime != null and param.endTime != ''">
and `time` &lt;= #{param.endTime}
</if>
<if test="param.lineId != null and param.lineId != ''">
and line_id = #{param.lineId}
</if>
</where>
ORDER BY
phasic_type,
(
CASE
WHEN value_type = 'CP95' THEN 1
WHEN value_type = 'MAX' THEN 2
WHEN value_type = 'MIN' THEN 3
WHEN value_type = 'AVG' THEN 4
ELSE 5
END
),
rms_lvr DESC
) AS t1
) a
GROUP BY
`phasic_type`
</select>
<select id="getPowerP" resultType="com.njcn.harmonic.pojo.vo.ReportValue">
SELECT
`phasic_type` AS phaseType,
AVG( CASE WHEN value_type = 'AVG' THEN rms END ) AS meanValue,
MIN( CASE WHEN value_type = 'MIN' THEN rms END ) AS minValue,
MAX( CASE WHEN value_type = 'MAX' THEN rms END ) AS fmaxValue,
MAX( CASE WHEN rank = #{param.count} THEN rms END ) AS cp95Value
FROM
(
SELECT
phasic_type,
value_type,
rms,
rank
FROM
(
SELECT
phasic_type,
value_type,
p as rms,
@rank :=
IF
( @CI = phasic_type, @rank + 1, 1 ) AS rank,
@CI := phasic_type
FROM
r_stat_data_harmpower_p_d
<where>
phasic_type IN ( 'A', 'B', 'C' ,'T')
and quality_flag = 0
<if test="param.startTime != null and param.startTime != ''">
and `time` >= #{param.startTime}
</if>
<if test="param.endTime != null and param.endTime != ''">
and `time` &lt;= #{param.endTime}
</if>
<if test="param.lineId != null and param.lineId != ''">
and line_id = #{param.lineId}
</if>
</where>
ORDER BY
phasic_type,
(
CASE
WHEN value_type = 'CP95' THEN
1
WHEN value_type = 'MAX' THEN
2
WHEN value_type = 'MIN' THEN
3
WHEN value_type = 'AVG' THEN
4 ELSE 5
END
),
p DESC
) AS t1
) a
GROUP BY
`phasic_type`
</select>
<select id="getPF" resultType="com.njcn.harmonic.pojo.vo.ReportValue">
SELECT
`phasic_type` AS phaseType,
AVG( CASE WHEN value_type = 'AVG' THEN rms END ) AS meanValue,
MIN( CASE WHEN value_type = 'MIN' THEN rms END ) AS minValue,
MAX( CASE WHEN value_type = 'MAX' THEN rms END ) AS fmaxValue,
MAX( CASE WHEN rank = #{param.count} THEN rms END ) AS cp95Value
FROM
(
SELECT
phasic_type,
value_type,
rms,
rank
FROM
(
SELECT
phasic_type,
value_type,
pf as rms,
@rank :=
IF
( @CI = phasic_type, @rank + 1, 1 ) AS rank,
@CI := phasic_type
FROM
r_stat_data_harmpower_p_d
<where>
phasic_type IN ( 'A', 'B', 'C' ,'T')
and quality_flag = 0
<if test="param.startTime != null and param.startTime != ''">
and `time` >= #{param.startTime}
</if>
<if test="param.endTime != null and param.endTime != ''">
and `time` &lt;= #{param.endTime}
</if>
<if test="param.lineId != null and param.lineId != ''">
and line_id = #{param.lineId}
</if>
</where>
ORDER BY
phasic_type,
(
CASE
WHEN value_type = 'CP95' THEN
1
WHEN value_type = 'MAX' THEN
2
WHEN value_type = 'MIN' THEN
3
WHEN value_type = 'AVG' THEN
4 ELSE 5
END
),
pf DESC
) AS t1
) a
GROUP BY
`phasic_type`
</select>
<select id="getPowerQ" resultType="com.njcn.harmonic.pojo.vo.ReportValue">
SELECT
`phasic_type` AS phaseType,
AVG( CASE WHEN value_type = 'AVG' THEN rms END ) AS meanValue,
MIN( CASE WHEN value_type = 'MIN' THEN rms END ) AS minValue,
MAX( CASE WHEN value_type = 'MAX' THEN rms END ) AS fmaxValue,
MAX( CASE WHEN rank = #{param.count} THEN rms END ) AS cp95Value
FROM
(
SELECT
phasic_type,
value_type,
rms,
rank
FROM
(
SELECT
phasic_type,
value_type,
q as rms,
@rank :=
IF
( @CI = phasic_type, @rank + 1, 1 ) AS rank,
@CI := phasic_type
FROM
r_stat_data_harmpower_q_d
<where>
phasic_type IN ( 'A', 'B', 'C' ,'T')
and quality_flag = 0
<if test="param.startTime != null and param.startTime != ''">
and `time` >= #{param.startTime}
</if>
<if test="param.endTime != null and param.endTime != ''">
and `time` &lt;= #{param.endTime}
</if>
<if test="param.lineId != null and param.lineId != ''">
and line_id = #{param.lineId}
</if>
</where>
ORDER BY
phasic_type,
(
CASE
WHEN value_type = 'CP95' THEN
1
WHEN value_type = 'MAX' THEN
2
WHEN value_type = 'MIN' THEN
3
WHEN value_type = 'AVG' THEN
4 ELSE 5
END
),
q DESC
) AS t1
) a
GROUP BY
`phasic_type`
</select>
<select id="getPowerS" resultType="com.njcn.harmonic.pojo.vo.ReportValue">
SELECT
`phasic_type` AS phaseType,
AVG( CASE WHEN value_type = 'AVG' THEN rms END ) AS meanValue,
MIN( CASE WHEN value_type = 'MIN' THEN rms END ) AS minValue,
MAX( CASE WHEN value_type = 'MAX' THEN rms END ) AS fmaxValue,
MAX( CASE WHEN rank = #{param.count} THEN rms END ) AS cp95Value
FROM
(
SELECT
phasic_type,
value_type,
rms,
rank
FROM
(
SELECT
phasic_type,
value_type,
s as rms,
@rank :=
IF
( @CI = phasic_type, @rank + 1, 1 ) AS rank,
@CI := phasic_type
FROM
r_stat_data_harmpower_s_d
<where>
phasic_type IN ( 'A', 'B', 'C' ,'T')
and quality_flag = 0
<if test="param.startTime != null and param.startTime != ''">
and `time` >= #{param.startTime}
</if>
<if test="param.endTime != null and param.endTime != ''">
and `time` &lt;= #{param.endTime}
</if>
<if test="param.lineId != null and param.lineId != ''">
and line_id = #{param.lineId}
</if>
</where>
ORDER BY
phasic_type,
(
CASE
WHEN value_type = 'CP95' THEN
1
WHEN value_type = 'MAX' THEN
2
WHEN value_type = 'MIN' THEN
3
WHEN value_type = 'AVG' THEN
4 ELSE 5
END
),
s DESC
) AS t1
) a
GROUP BY
`phasic_type`
</select>
<select id="getFlickerData" resultType="com.njcn.harmonic.pojo.vo.ReportValue">
SELECT
`phasic_type` AS phaseType,
AVG( CASE WHEN value_type = 'AVG' THEN rms END ) AS meanValue,
MIN( CASE WHEN value_type = 'MIN' THEN rms END ) AS minValue,
MAX( CASE WHEN value_type = 'MAX' THEN rms END ) AS fmaxValue,
MAX( CASE WHEN rank = #{param.count} THEN rms END ) AS cp95Value
FROM
(
SELECT
phasic_type,
value_type,
rms,
rank
FROM
(
SELECT
phasic_type,
value_type,
plt as rms,
@rank :=
IF
( @CI = phasic_type, @rank + 1, 1 ) AS rank,
@CI := phasic_type
FROM
r_stat_data_flicker_d
<where>
phasic_type IN ( 'A', 'B', 'C' )
and quality_flag = 0
<if test="param.startTime != null and param.startTime != ''">
and `time` >= #{param.startTime}
</if>
<if test="param.endTime != null and param.endTime != ''">
and `time` &lt;= #{param.endTime}
</if>
<if test="param.lineId != null and param.lineId != ''">
and line_id = #{param.lineId}
</if>
</where>
ORDER BY
phasic_type,
(
CASE
WHEN value_type = 'CP95' THEN
1
WHEN value_type = 'MAX' THEN
2
WHEN value_type = 'MIN' THEN
3
WHEN value_type = 'AVG' THEN
4 ELSE 5
END
),
plt DESC
) AS t1
) a
GROUP BY
`phasic_type`
</select>
<select id="getLFlickerData" resultType="com.njcn.harmonic.pojo.vo.ReportValue">
SELECT
`phasic_type` AS phaseType,
AVG( CASE WHEN value_type = 'AVG' THEN rms END ) AS meanValue,
MIN( CASE WHEN value_type = 'MIN' THEN rms END ) AS minValue,
MAX( CASE WHEN value_type = 'MAX' THEN rms END ) AS fmaxValue,
MAX( CASE WHEN rank = #{param.count} THEN rms END ) AS cp95Value
FROM
(
SELECT
phasic_type,
value_type,
rms,
rank
FROM
(
SELECT
phasic_type,
value_type,
pst as rms,
@rank :=
IF
( @CI = phasic_type, @rank + 1, 1 ) AS rank,
@CI := phasic_type
FROM
r_stat_data_flicker_d
<where>
phasic_type IN ( 'A', 'B', 'C')
and quality_flag = 0
<if test="param.startTime != null and param.startTime != ''">
and `time` >= #{param.startTime}
</if>
<if test="param.endTime != null and param.endTime != ''">
and `time` &lt;= #{param.endTime}
</if>
<if test="param.lineId != null and param.lineId != ''">
and line_id = #{param.lineId}
</if>
</where>
ORDER BY
phasic_type,
(
CASE
WHEN value_type = 'CP95' THEN
1
WHEN value_type = 'MAX' THEN
2
WHEN value_type = 'MIN' THEN
3
WHEN value_type = 'AVG' THEN
4 ELSE 5
END
),
pst DESC
) AS t1
) a
GROUP BY
`phasic_type`
</select>
<select id="getUVdeviationData" resultType="com.njcn.harmonic.pojo.vo.ReportValue">
SELECT
`phasic_type` AS phaseType,
AVG( CASE WHEN value_type = 'AVG' THEN rms END ) AS meanValue,
MIN( CASE WHEN value_type = 'MIN' THEN rms END ) AS minValue,
MAX( CASE WHEN value_type = 'MAX' THEN rms END ) AS fmaxValue,
MAX( CASE WHEN rank = #{param.count} THEN rms END ) AS cp95Value
FROM
(
SELECT
phasic_type,
value_type,
rms,
rank
FROM
(
SELECT
phasic_type,
value_type,
vu_dev as rms,
@rank := IF( @CI := phasic_type, @rank + 1, 1 ) AS rank,
@CI := phasic_type
FROM
r_stat_data_v_d
<where>
phasic_type IN ( 'A', 'B', 'C' )
and quality_flag = 0
<if test="param.startTime != null and param.startTime != ''">
and `time` >= #{param.startTime}
</if>
<if test="param.endTime != null and param.endTime != ''">
and `time` &lt;= #{param.endTime}
</if>
<if test="param.lineId != null and param.lineId != ''">
and line_id = #{param.lineId}
</if>
</where>
ORDER BY
phasic_type,
(
CASE
WHEN value_type = 'CP95' THEN 1
WHEN value_type = 'MAX' THEN 2
WHEN value_type = 'MIN' THEN 3
WHEN value_type = 'AVG' THEN 4
ELSE 5
END
),
vu_dev DESC
) AS t1
) a
GROUP BY
`phasic_type`;
</select>
<select id="getLVdeviationData" resultType="com.njcn.harmonic.pojo.vo.ReportValue">
SELECT
`phasic_type` AS phaseType,
AVG( CASE WHEN value_type = 'AVG' THEN rms END ) AS meanValue,
MIN( CASE WHEN value_type = 'MIN' THEN rms END ) AS minValue,
MAX( CASE WHEN value_type = 'MAX' THEN rms END ) AS fmaxValue,
MAX( CASE WHEN rank = #{param.count} THEN rms END ) AS cp95Value
FROM
(
SELECT
phasic_type,
value_type,
rms,
rank
FROM
(
SELECT
phasic_type,
value_type,
vl_dev as rms,
@rank := IF( @CI := phasic_type, @rank + 1, 1 ) AS rank,
@CI := phasic_type
FROM
r_stat_data_v_d
<where>
phasic_type IN ( 'A', 'B', 'C' )
and quality_flag = 0
<if test="param.startTime != null and param.startTime != ''">
and `time` >= #{param.startTime}
</if>
<if test="param.endTime != null and param.endTime != ''">
and `time` &lt;= #{param.endTime}
</if>
<if test="param.lineId != null and param.lineId != ''">
and line_id = #{param.lineId}
</if>
</where>
ORDER BY
phasic_type,
(
CASE
WHEN value_type = 'CP95' THEN 1
WHEN value_type = 'MAX' THEN 2
WHEN value_type = 'MIN' THEN 3
WHEN value_type = 'AVG' THEN 4
ELSE 5
END
),
vl_dev DESC
) AS t1
) a
GROUP BY
`phasic_type`;
</select>
<select id="getDistortionDataV" resultType="com.njcn.harmonic.pojo.vo.ReportValue">
SELECT
`phasic_type` AS phaseType,
AVG( CASE WHEN value_type = 'AVG' THEN rms END ) AS meanValue,
MIN( CASE WHEN value_type = 'MIN' THEN rms END ) AS minValue,
MAX( CASE WHEN value_type = 'MAX' THEN rms END ) AS fmaxValue,
MAX( CASE WHEN rank = #{param.count} THEN rms END ) AS cp95Value
FROM
(
SELECT
phasic_type,
value_type,
rms,
rank
FROM
(
SELECT
phasic_type,
value_type,
v_thd as rms,
@rank := IF( @CI := phasic_type, @rank + 1, 1 ) AS rank,
@CI := phasic_type
FROM
r_stat_data_v_d
<where>
phasic_type IN ( 'A', 'B', 'C' )
and quality_flag = 0
<if test="param.startTime != null and param.startTime != ''">
and `time` >= #{param.startTime}
</if>
<if test="param.endTime != null and param.endTime != ''">
and `time` &lt;= #{param.endTime}
</if>
<if test="param.lineId != null and param.lineId != ''">
and line_id = #{param.lineId}
</if>
</where>
ORDER BY
phasic_type,
(
CASE
WHEN value_type = 'CP95' THEN 1
WHEN value_type = 'MAX' THEN 2
WHEN value_type = 'MIN' THEN 3
WHEN value_type = 'AVG' THEN 4
ELSE 5
END
),
v_thd DESC
) AS t1
) a
GROUP BY
`phasic_type`;
</select>
<select id="getDistortionDataI" resultType="com.njcn.harmonic.pojo.vo.ReportValue">
SELECT
`phasic_type` AS phaseType,
AVG( CASE WHEN value_type = 'AVG' THEN rms END ) AS meanValue,
MIN( CASE WHEN value_type = 'MIN' THEN rms END ) AS minValue,
MAX( CASE WHEN value_type = 'MAX' THEN rms END ) AS fmaxValue,
MAX( CASE WHEN rank = #{param.count} THEN rms END ) AS cp95Value
FROM
(
SELECT
phasic_type,
value_type,
rms,
rank
FROM
(
SELECT
phasic_type,
value_type,
i_thd as rms,
@rank := IF( @CI := phasic_type, @rank + 1, 1 ) AS rank,
@CI := phasic_type
FROM
r_stat_data_i_d
<where>
phasic_type IN ( 'A', 'B', 'C' )
and quality_flag = 0
<if test="param.startTime != null and param.startTime != ''">
and `time` >= #{param.startTime}
</if>
<if test="param.endTime != null and param.endTime != ''">
and `time` &lt;= #{param.endTime}
</if>
<if test="param.lineId != null and param.lineId != ''">
and line_id = #{param.lineId}
</if>
</where>
ORDER BY
phasic_type,
(
CASE
WHEN value_type = 'CP95' THEN 1
WHEN value_type = 'MAX' THEN 2
WHEN value_type = 'MIN' THEN 3
WHEN value_type = 'AVG' THEN 4
ELSE 5
END
),
i_thd DESC
) AS t1
) a
GROUP BY
`phasic_type`;
</select>
<select id="getFrequencyData" resultType="com.njcn.harmonic.pojo.vo.ReportValue">
SELECT
`phasic_type` AS phaseType,
AVG( CASE WHEN value_type = 'AVG' THEN rms END ) AS meanValue,
MIN( CASE WHEN value_type = 'MIN' THEN rms END ) AS minValue,
MAX( CASE WHEN value_type = 'MAX' THEN rms END ) AS fmaxValue,
MAX( CASE WHEN rank = #{param.count} THEN rms END ) AS cp95Value
FROM
(
SELECT
phasic_type,
value_type,
rms,
rank
FROM
(
SELECT
phasic_type,
value_type,
freq as rms,
@rank := IF( @CI := phasic_type, @rank + 1, 1 ) AS rank,
@CI := phasic_type
FROM
r_stat_data_v_d
<where>
phasic_type = 'T'
and quality_flag = 0
<if test="param.startTime != null and param.startTime != ''">
and `time` >= #{param.startTime}
</if>
<if test="param.endTime != null and param.endTime != ''">
and `time` &lt;= #{param.endTime}
</if>
<if test="param.lineId != null and param.lineId != ''">
and line_id = #{param.lineId}
</if>
</where>
ORDER BY
phasic_type,
(
CASE
WHEN value_type = 'CP95' THEN 1
WHEN value_type = 'MAX' THEN 2
WHEN value_type = 'MIN' THEN 3
WHEN value_type = 'AVG' THEN 4
ELSE 5
END
),
freq DESC
) AS t1
) a
GROUP BY
`phasic_type`;
</select>
<select id="getDEVFrequencyData" resultType="com.njcn.harmonic.pojo.vo.ReportValue">
SELECT
`phasic_type` AS phaseType,
AVG( CASE WHEN value_type = 'AVG' THEN rms END ) AS meanValue,
MIN( CASE WHEN value_type = 'MIN' THEN rms END ) AS minValue,
MAX( CASE WHEN value_type = 'MAX' THEN rms END ) AS fmaxValue,
MAX( CASE WHEN rank = #{param.count} THEN rms END ) AS cp95Value
FROM
(
SELECT
phasic_type,
value_type,
rms,
rank
FROM
(
SELECT
phasic_type,
value_type,
freq_dev as rms,
@rank := IF( @CI := phasic_type, @rank + 1, 1 ) AS rank,
@CI := phasic_type
FROM
r_stat_data_v_d
<where>
phasic_type = 'T'
and quality_flag = 0
<if test="param.startTime != null and param.startTime != ''">
and `time` >= #{param.startTime}
</if>
<if test="param.endTime != null and param.endTime != ''">
and `time` &lt;= #{param.endTime}
</if>
<if test="param.lineId != null and param.lineId != ''">
and line_id = #{param.lineId}
</if>
</where>
ORDER BY
phasic_type,
(
CASE
WHEN value_type = 'CP95' THEN 1
WHEN value_type = 'MAX' THEN 2
WHEN value_type = 'MIN' THEN 3
WHEN value_type = 'AVG' THEN 4
ELSE 5
END
),
freq_dev DESC
) AS t1
) a
GROUP BY
`phasic_type`;
</select>
</mapper>