pm配网-监测点数据质量统计bug修改

This commit is contained in:
wurui
2023-03-02 16:24:44 +08:00
parent f3e0531738
commit d9d47271a8
8 changed files with 385 additions and 337 deletions

View File

@@ -34,7 +34,7 @@ public class RStatDevSignalD implements Serializable {
/**
* 更新时间
*/
private Date updateTime;
private String updateTime;
private static final long serialVersionUID = 1L;
}

View File

@@ -41,5 +41,5 @@ public class RStatDevSignalVO {
private String port; //端口
@ApiModelProperty(name = "updateTime", value = "最后通讯时间")
private Date updateTime; //最后通讯时间
private String updateTime; //最后通讯时间
}

View File

@@ -39,7 +39,8 @@ public interface PwROperatingIndexMapper {
* @date 2022/11/7
*/
List<PwRDnOperatingVO> getSeasonInfo(@Param(("param")) StatisticsBizBaseParam param,
@Param(("deptIdList")) List<String> deptIdList);
@Param(("deptIdList")) List<String> deptIdList,
@Param(("dates")) List<String> dates);
/**
* 获取配网数据质量-监测指标数据质量统计(月)

View File

@@ -2,357 +2,369 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njcn.device.pms.mapper.distribution.PwROperatingIndexMapper">
<sql id="query_where">
z.org_no IN
<foreach collection="deptIdList" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
<if test="param.startTime != null and param.startTime != ''">
AND DATE_FORMAT(z.data_date, '%Y-%m-%d') &gt;= DATE_FORMAT(#{param.startTime}, '%Y-%m-%d')
</if>
<if test="param.endTime != null and param.endTime != ''">
AND DATE_FORMAT(z.data_date, '%Y-%m-%d') &lt;= DATE_FORMAT(#{param.endTime}, '%Y-%m-%d')
</if>
</sql>
<!--获取配网数据质量-监测指标数据质量统计(年)-->
<select id="getYearInfo" resultType="com.njcn.device.pms.pojo.vo.PwRDnOperatingVO">
SELECT
z.org_no AS orgNo,
z.data_date AS dataDate,
z.measurement_run_points AS measurementCount,
z.effective_access_measurement_count AS effectiveAccessMeasurementCount,
IFNULL((
ta.org_no,
concat( ta.yy, '-', ta.mm ) dateTime,
ta.mrp AS measurementCount,
ta.eamc AS effectiveAccessMeasurementCount,
ifnull( round(( ta.eamc - tb.eamc )/ tb.eamc * 100, 2 ), 3.14159 ) AS effectiveAccessMeasurementCountYearOnYear,
ifnull( round(( ta.eamc - tc.eamc )/ tc.eamc * 100, 2 ), 3.14159 ) AS effectiveAccessMeasurementCountRingRatio,
ta.ear AS effectiveAccessRate,
ifnull( round(( ta.ear - tb.ear )/ tb.ear * 100, 2 ), 3.14159 ) AS effectiveAccessRateYearOnYear,
ifnull( round(( ta.ear - tc.ear )/ tc.ear * 100, 2 ), 3.14159 ) AS effectiveAccessRateRingRatio,
ta.drr AS dataIntegrityRate,
ifnull( round(( ta.drr - tb.drr )/ tb.drr * 100, 2 ), 3.14159 ) AS dataIntegrityRateYearOnYear,
ifnull( round(( ta.drr - tc.drr )/ tc.drr * 100, 2 ), 3.14159 ) AS dataIntegrityRateRingRatio,
ta.iir AS indexIntegrityRate,
ta.is_unusual AS isUnusual
FROM
(
SELECT
a.effective_access_measurement_count
t.org_no,
YEAR ( t.data_date ) AS yy,
MONTH ( t.data_date ) AS mm,
sum( measurement_run_points ) mrp,
sum( transit_measurement_points ) tmp,
sum( effective_access_measurement_count ) eamc,
TRUNCATE ( sum( effective_access_rate ) / count( effective_access_rate ), 2 ) ear,
TRUNCATE ( sum( data_right_rate ) / count( data_right_rate ), 2 ) drr,
TRUNCATE ( sum( index_integrity_rate ) / count( index_integrity_rate ), 2 ) iir,
is_unusual
FROM
r_dn_operating_y AS a
WHERE
a.org_no = z.org_no
AND (
z.data_date &gt;= date(
DATE_ADD( #{param.startTime}, INTERVAL - 1 YEAR )))
AND (
z.data_date &lt;= date(
DATE_ADD( #{param.endTime}, INTERVAL - 1 YEAR )))
),
3.14159
) AS effectiveAccessMeasurementCountYearOnYear,
IFNULL((
r_dn_operating_y t
<where>
t.org_no IN
<foreach collection="deptIdList" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</where>
GROUP BY
t.org_no,
yy,
mm,
is_unusual
) ta -- 同比:上年同月
LEFT JOIN (
SELECT
b.effective_access_measurement_count
t.org_no,
YEAR ( t.data_date ) AS yy,
MONTH ( t.data_date ) AS mm,
sum( measurement_run_points ) mrp,
sum( transit_measurement_points ) tmp,
sum( effective_access_measurement_count ) eamc,
TRUNCATE ( sum( effective_access_rate ) / count( effective_access_rate ), 2 ) ear,
TRUNCATE ( sum( data_right_rate ) / count( data_right_rate ), 2 ) drr,
TRUNCATE ( sum( index_integrity_rate ) / count( index_integrity_rate ), 2 ) iir,
is_unusual
FROM
r_dn_operating_y AS b
WHERE
b.org_no = z.org_no
AND (
z.data_date &gt;= date(
DATE_ADD( #{param.startTime}, INTERVAL - 1 YEAR )))
AND (
z.data_date &lt;= date(
DATE_ADD( #{param.endTime}, INTERVAL - 1 YEAR )))
),
3.14159
) AS effectiveAccessMeasurementCountRingRatio,
TRUNCATE ( z.effective_access_measurement_count / z.measurement_run_points, 2 ) AS effectiveAccessRate,
IFNULL((
SELECT TRUNCATE
( c.effective_access_measurement_count / c.measurement_run_points, 2 )
FROM
r_dn_operating_y AS c
WHERE
c.org_no = z.org_no
AND (
z.data_date &gt;= date(
DATE_ADD( #{param.startTime}, INTERVAL - 1 YEAR )))
AND (
z.data_date &lt;= date(
DATE_ADD( #{param.endTime}, INTERVAL - 1 YEAR )))
),
3.14159
) AS effectiveAccessRateYearOnYear,
IFNULL((
SELECT TRUNCATE
( d.effective_access_measurement_count / d.measurement_run_points, 2 )
FROM
r_dn_operating_y AS d
WHERE
d.org_no = z.org_no
AND (
z.data_date &gt;= date(
DATE_ADD( #{param.startTime}, INTERVAL - 1 YEAR )))
AND (
z.data_date &lt;= date(
DATE_ADD( #{param.endTime}, INTERVAL - 1 YEAR )))
),
3.14159
) AS effectiveAccessRateRingRatio,
z.data_integrity_rate AS dataIntegrityRate,
IFNULL((
r_dn_operating_y t
<where>
t.org_no IN
<foreach collection="deptIdList" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</where>
GROUP BY
t.org_no,
yy,
mm,
is_unusual
) tb ON tb.mm = ta.mm
AND tb.yy = ta.yy - 1
AND tb.org_no = ta.org_no
AND tb.is_unusual = ta.is_unusual -- 环比:上月
LEFT JOIN (
SELECT
e.data_integrity_rate
t.org_no,
YEAR ( t.data_date ) AS yy,
MONTH ( t.data_date ) AS mm,
sum( measurement_run_points ) mrp,
sum( transit_measurement_points ) tmp,
sum( effective_access_measurement_count ) eamc,
TRUNCATE ( sum( effective_access_rate ) / count( effective_access_rate ), 2 ) ear,
TRUNCATE ( sum( data_right_rate ) / count( data_right_rate ), 2 ) drr,
TRUNCATE ( sum( index_integrity_rate ) / count( index_integrity_rate ), 2 ) iir,
is_unusual
FROM
r_dn_operating_y AS e
WHERE
e.org_no = z.org_no
AND (
z.data_date &gt;= date(
DATE_ADD( #{param.startTime}, INTERVAL - 1 YEAR )))
AND (
z.data_date &lt;= date(
DATE_ADD( #{param.endTime}, INTERVAL - 1 YEAR )))
),
3.14159
) AS dataIntegrityRateYearOnYear,
IFNULL((
SELECT
f.data_integrity_rate
FROM
r_dn_operating_y AS f
WHERE
f.org_no = z.org_no
AND (
z.data_date &gt;= date(
DATE_ADD( #{param.startTime}, INTERVAL - 1 YEAR )))
AND (
z.data_date &lt;= date(
DATE_ADD( #{param.endTime}, INTERVAL - 1 YEAR )))
),
3.14159
) AS dataIntegrityRateRingRatio,
z.index_integrity_rate AS indexIntegrityRate,
z.is_unusual AS isUnusual
FROM
r_dn_operating_y AS z
WHERE
<include refid="query_where"></include>
r_dn_operating_y t
<where>
t.org_no IN
<foreach collection="deptIdList" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</where>
GROUP BY
t.org_no,
yy,
mm,
is_unusual
) tc ON (
(
tc.yy = ta.yy
AND tc.mm = ta.mm - 1
AND tb.org_no = ta.org_no
AND tb.is_unusual = ta.is_unusual
)
OR (
tc.yy = ta.yy - 1
AND tc.mm = 12
AND ta.mm = 1
AND tb.org_no = ta.org_no
AND tb.is_unusual = ta.is_unusual
)
)
<where>
ta.yy = year(#{param.startTime})
</where>
</select>
<!--获取配网数据质量-监测指标数据质量统计(季)-->
<select id="getSeasonInfo" resultType="com.njcn.device.pms.pojo.vo.PwRDnOperatingVO">
SELECT
z.org_no AS orgNo,
z.data_date AS dataDate,
z.measurement_run_points AS measurementCount,
z.effective_access_measurement_count AS effectiveAccessMeasurementCount,
IFNULL((
ta.org_no,
concat( ta.yy, '-', ta.mm ) dateTime,
ta.mrp AS measurementCount,
ta.eamc AS effectiveAccessMeasurementCount,
ifnull( round(( ta.eamc - tb.eamc )/ tb.eamc * 100, 2 ), 3.14159 ) AS effectiveAccessMeasurementCountYearOnYear,
ifnull( round(( ta.eamc - tc.eamc )/ tc.eamc * 100, 2 ), 3.14159 ) AS effectiveAccessMeasurementCountRingRatio,
ta.ear AS effectiveAccessRate,
ifnull( round(( ta.ear - tb.ear )/ tb.ear * 100, 2 ), 3.14159 ) AS effectiveAccessRateYearOnYear,
ifnull( round(( ta.ear - tc.ear )/ tc.ear * 100, 2 ), 3.14159 ) AS effectiveAccessRateRingRatio,
ta.drr AS dataIntegrityRate,
ifnull( round(( ta.drr - tb.drr )/ tb.drr * 100, 2 ), 3.14159 ) AS dataIntegrityRateYearOnYear,
ifnull( round(( ta.drr - tc.drr )/ tc.drr * 100, 2 ), 3.14159 ) AS dataIntegrityRateRingRatio,
ta.iir AS indexIntegrityRate,
ta.is_unusual AS isUnusual
FROM
(
SELECT
a.effective_access_measurement_count
t.org_no,
YEAR ( t.data_date ) AS yy,
MONTH ( t.data_date ) AS mm,
sum( measurement_run_points ) mrp,
sum( transit_measurement_points ) tmp,
sum( effective_access_measurement_count ) eamc,
TRUNCATE ( sum( effective_access_rate ) / count( effective_access_rate ), 2 ) ear,
TRUNCATE ( sum( data_right_rate ) / count( data_right_rate ), 2 ) drr,
TRUNCATE ( sum( index_integrity_rate ) / count( index_integrity_rate ), 2 ) iir,
is_unusual
FROM
r_dn_operating_y AS a
WHERE
a.org_no = z.org_no
AND (
z.data_date &gt;= date(
DATE_ADD( #{param.startTime}, INTERVAL - 3 MONTH )))
AND (
z.data_date &lt;= date(
DATE_ADD( #{param.endTime}, INTERVAL - 3 MONTH )))
),
3.14159
) AS effectiveAccessMeasurementCountYearOnYear,
IFNULL((
r_dn_operating_q t
<where>
t.org_no IN
<foreach collection="deptIdList" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</where>
GROUP BY
t.org_no,
yy,
mm,
is_unusual
) ta -- 同比:上年同月
LEFT JOIN (
SELECT
b.effective_access_measurement_count
t.org_no,
YEAR ( t.data_date ) AS yy,
MONTH ( t.data_date ) AS mm,
sum( measurement_run_points ) mrp,
sum( transit_measurement_points ) tmp,
sum( effective_access_measurement_count ) eamc,
TRUNCATE ( sum( effective_access_rate ) / count( effective_access_rate ), 2 ) ear,
TRUNCATE ( sum( data_right_rate ) / count( data_right_rate ), 2 ) drr,
TRUNCATE ( sum( index_integrity_rate ) / count( index_integrity_rate ), 2 ) iir,
is_unusual
FROM
r_dn_operating_y AS b
WHERE
b.org_no = z.org_no
AND (
z.data_date &gt;= date(
DATE_ADD( #{param.startTime}, INTERVAL - 3 MONTH )))
AND (
z.data_date &lt;= date(
DATE_ADD( #{param.endTime}, INTERVAL - 3 MONTH )))
),
3.14159
) AS effectiveAccessMeasurementCountRingRatio,
TRUNCATE ( z.effective_access_measurement_count / z.measurement_run_points, 2 ) AS effectiveAccessRate,
IFNULL((
SELECT TRUNCATE
( c.effective_access_measurement_count / c.measurement_run_points, 2 )
FROM
r_dn_operating_y AS c
WHERE
c.org_no = z.org_no
AND (
z.data_date &gt;= date(
DATE_ADD( #{param.startTime}, INTERVAL - 3 MONTH )))
AND (
z.data_date &lt;= date(
DATE_ADD( #{param.endTime}, INTERVAL - 3 MONTH )))
),
3.14159
) AS effectiveAccessRateYearOnYear,
IFNULL((
SELECT TRUNCATE
( d.effective_access_measurement_count / d.measurement_run_points, 2 )
FROM
r_dn_operating_y AS d
WHERE
d.org_no = z.org_no
AND (
z.data_date &gt;= date(
DATE_ADD( #{param.startTime}, INTERVAL - 3 MONTH )))
AND (
z.data_date &lt;= date(
DATE_ADD( #{param.endTime}, INTERVAL - 3 MONTH )))
),
3.14159
) AS effectiveAccessRateRingRatio,
z.data_integrity_rate AS dataIntegrityRate,
IFNULL((
r_dn_operating_q t
<where>
t.org_no IN
<foreach collection="deptIdList" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</where>
GROUP BY
t.org_no,
yy,
mm,
is_unusual
) tb ON tb.mm = ta.mm
AND tb.yy = ta.yy - 1
AND tb.org_no = ta.org_no
AND tb.is_unusual = ta.is_unusual -- 环比:上月
LEFT JOIN (
SELECT
e.data_integrity_rate
t.org_no,
YEAR ( t.data_date ) AS yy,
MONTH ( t.data_date ) AS mm,
sum( measurement_run_points ) mrp,
sum( transit_measurement_points ) tmp,
sum( effective_access_measurement_count ) eamc,
TRUNCATE ( sum( effective_access_rate ) / count( effective_access_rate ), 2 ) ear,
TRUNCATE ( sum( data_right_rate ) / count( data_right_rate ), 2 ) drr,
TRUNCATE ( sum( index_integrity_rate ) / count( index_integrity_rate ), 2 ) iir,
is_unusual
FROM
r_dn_operating_y AS e
WHERE
e.org_no = z.org_no
AND (
z.data_date &gt;= date(
DATE_ADD( #{param.startTime}, INTERVAL - 3 MONTH )))
AND (
z.data_date &lt;= date(
DATE_ADD( #{param.endTime}, INTERVAL - 3 MONTH )))
),
3.14159
) AS dataIntegrityRateYearOnYear,
IFNULL((
SELECT
f.data_integrity_rate
FROM
r_dn_operating_y AS f
WHERE
f.org_no = z.org_no
AND (
z.data_date &gt;= date(
DATE_ADD( #{param.startTime}, INTERVAL - 3 MONTH )))
AND (
z.data_date &lt;= date(
DATE_ADD( #{param.endTime}, INTERVAL - 3 MONTH )))
),
3.14159
) AS dataIntegrityRateRingRatio,
z.index_integrity_rate AS indexIntegrityRate,
z.is_unusual AS isUnusual
FROM
r_dn_operating_y AS z
WHERE
<include refid="query_where"></include>
r_dn_operating_q t
<where>
t.org_no IN
<foreach collection="deptIdList" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</where>
GROUP BY
t.org_no,
yy,
mm,
is_unusual
) tc ON (
(
tc.yy = ta.yy
AND tc.mm = ta.mm - 1
AND tb.org_no = ta.org_no
AND tb.is_unusual = ta.is_unusual
)
OR (
tc.yy = ta.yy - 1
AND tc.mm = 12
AND ta.mm = 1
AND tb.org_no = ta.org_no
AND tb.is_unusual = ta.is_unusual
)
)
<where>
ta.yy = year(#{param.startTime})
<if test="dates!=null and dates.size()!=0">
AND ta.mm IN
<foreach collection="dates" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
</where>
</select>
<!--获取配网数据质量-监测指标数据质量统计(月)-->
<select id="getMonthInfo" resultType="com.njcn.device.pms.pojo.vo.PwRDnOperatingVO">
SELECT
z.org_no AS orgNo,
z.data_date AS dataDate,
z.measurement_run_points AS measurementCount,
z.effective_access_measurement_count AS effectiveAccessMeasurementCount,
IFNULL((
ta.org_no,
concat( ta.yy, '-', ta.mm ) dateTime,
ta.mrp AS measurementCount,
ta.eamc AS effectiveAccessMeasurementCount,
ifnull( round(( ta.eamc - tb.eamc )/ tb.eamc * 100, 2 ), 3.14159 ) AS effectiveAccessMeasurementCountYearOnYear,
ifnull( round(( ta.eamc - tc.eamc )/ tc.eamc * 100, 2 ), 3.14159 ) AS effectiveAccessMeasurementCountRingRatio,
ta.ear AS effectiveAccessRate,
ifnull( round(( ta.ear - tb.ear )/ tb.ear * 100, 2 ), 3.14159 ) AS effectiveAccessRateYearOnYear,
ifnull( round(( ta.ear - tc.ear )/ tc.ear * 100, 2 ), 3.14159 ) AS effectiveAccessRateRingRatio,
ta.drr AS dataIntegrityRate,
ifnull( round(( ta.drr - tb.drr )/ tb.drr * 100, 2 ), 3.14159 ) AS dataIntegrityRateYearOnYear,
ifnull( round(( ta.drr - tc.drr )/ tc.drr * 100, 2 ), 3.14159 ) AS dataIntegrityRateRingRatio,
ta.iir AS indexIntegrityRate,
ta.is_unusual AS isUnusual
FROM
(
SELECT
a.effective_access_measurement_count
t.org_no,
YEAR ( t.data_date ) AS yy,
MONTH ( t.data_date ) AS mm,
sum( measurement_run_points ) mrp,
sum( transit_measurement_points ) tmp,
sum( effective_access_measurement_count ) eamc,
TRUNCATE ( sum( effective_access_rate ) / count( effective_access_rate ), 2 ) ear,
TRUNCATE ( sum( data_right_rate ) / count( data_right_rate ), 2 ) drr,
TRUNCATE ( sum( index_integrity_rate ) / count( index_integrity_rate ), 2 ) iir,
is_unusual
FROM
r_dn_operating_y AS a
WHERE
a.org_no = z.org_no
AND (
z.data_date &gt;= date(
DATE_ADD( #{param.startTime}, INTERVAL - 1 MONTH )))
AND (
z.data_date &lt;= date(
DATE_ADD( #{param.endTime}, INTERVAL - 1 MONTH )))
),
3.14159
) AS effectiveAccessMeasurementCountYearOnYear,
IFNULL((
r_dn_operating_index_m t
<where>
t.org_no IN
<foreach collection="deptIdList" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</where>
GROUP BY
t.org_no,
yy,
mm,
is_unusual
) ta -- 同比:上年同月
LEFT JOIN (
SELECT
b.effective_access_measurement_count
t.org_no,
YEAR ( t.data_date ) AS yy,
MONTH ( t.data_date ) AS mm,
sum( measurement_run_points ) mrp,
sum( transit_measurement_points ) tmp,
sum( effective_access_measurement_count ) eamc,
TRUNCATE ( sum( effective_access_rate ) / count( effective_access_rate ), 2 ) ear,
TRUNCATE ( sum( data_right_rate ) / count( data_right_rate ), 2 ) drr,
TRUNCATE ( sum( index_integrity_rate ) / count( index_integrity_rate ), 2 ) iir,
is_unusual
FROM
r_dn_operating_y AS b
WHERE
b.org_no = z.org_no
AND (
z.data_date &gt;= date(
DATE_ADD( #{param.startTime}, INTERVAL - 1 MONTH )))
AND (
z.data_date &lt;= date(
DATE_ADD( #{param.endTime}, INTERVAL - 1 MONTH )))
),
3.14159
) AS effectiveAccessMeasurementCountRingRatio,
TRUNCATE ( z.effective_access_measurement_count / z.measurement_run_points, 2 ) AS effectiveAccessRate,
IFNULL((
SELECT TRUNCATE
( c.effective_access_measurement_count / c.measurement_run_points, 2 )
FROM
r_dn_operating_y AS c
WHERE
c.org_no = z.org_no
AND (
z.data_date &gt;= date(
DATE_ADD( #{param.startTime}, INTERVAL - 1 MONTH )))
AND (
z.data_date &lt;= date(
DATE_ADD( #{param.endTime}, INTERVAL - 1 MONTH )))
),
3.14159
) AS effectiveAccessRateYearOnYear,
IFNULL((
SELECT TRUNCATE
( d.effective_access_measurement_count / d.measurement_run_points, 2 )
FROM
r_dn_operating_y AS d
WHERE
d.org_no = z.org_no
AND (
z.data_date &gt;= date(
DATE_ADD( #{param.startTime}, INTERVAL - 1 MONTH )))
AND (
z.data_date &lt;= date(
DATE_ADD( #{param.endTime}, INTERVAL - 1 MONTH )))
),
3.14159
) AS effectiveAccessRateRingRatio,
z.data_integrity_rate AS dataIntegrityRate,
IFNULL((
r_dn_operating_index_m t
<where>
t.org_no IN
<foreach collection="deptIdList" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</where>
GROUP BY
t.org_no,
yy,
mm,
is_unusual
) tb ON tb.mm = ta.mm
AND tb.yy = ta.yy - 1
AND tb.org_no = ta.org_no
AND tb.is_unusual = ta.is_unusual -- 环比:上月
LEFT JOIN (
SELECT
e.data_integrity_rate
t.org_no,
YEAR ( t.data_date ) AS yy,
MONTH ( t.data_date ) AS mm,
sum( measurement_run_points ) mrp,
sum( transit_measurement_points ) tmp,
sum( effective_access_measurement_count ) eamc,
TRUNCATE ( sum( effective_access_rate ) / count( effective_access_rate ), 2 ) ear,
TRUNCATE ( sum( data_right_rate ) / count( data_right_rate ), 2 ) drr,
TRUNCATE ( sum( index_integrity_rate ) / count( index_integrity_rate ), 2 ) iir,
is_unusual
FROM
r_dn_operating_y AS e
WHERE
e.org_no = z.org_no
AND (
z.data_date &gt;= date(
DATE_ADD( #{param.startTime}, INTERVAL - 1 MONTH )))
AND (
z.data_date &lt;= date(
DATE_ADD( #{param.endTime}, INTERVAL - 1 MONTH )))
),
3.14159
) AS dataIntegrityRateYearOnYear,
IFNULL((
SELECT
f.data_integrity_rate
FROM
r_dn_operating_y AS f
WHERE
f.org_no = z.org_no
AND (
z.data_date &gt;= date(
DATE_ADD( #{param.startTime}, INTERVAL - 1 MONTH )))
AND (
z.data_date &lt;= date(
DATE_ADD( #{param.endTime}, INTERVAL - 1 MONTH )))
),
3.14159
) AS dataIntegrityRateRingRatio,
z.index_integrity_rate AS indexIntegrityRate,
z.is_unusual AS isUnusual
FROM
r_dn_operating_y AS z
WHERE
<include refid="query_where"></include>
r_dn_operating_index_m t
<where>
t.org_no IN
<foreach collection="deptIdList" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</where>
GROUP BY
t.org_no,
yy,
mm,
is_unusual
) tc ON (
(
tc.yy = ta.yy
AND tc.mm = ta.mm - 1
AND tb.org_no = ta.org_no
AND tb.is_unusual = ta.is_unusual
)
OR (
tc.yy = ta.yy - 1
AND tc.mm = 12
AND ta.mm = 1
AND tb.org_no = ta.org_no
AND tb.is_unusual = ta.is_unusual
)
)
<where>
ta.yy = year(#{param.startTime})
AND ta.mm = MONTH(#{param.startTime})
</where>
</select>
</mapper>

View File

@@ -1,10 +1,10 @@
package com.njcn.device.pms.service.distribution.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import com.njcn.common.pojo.constant.BizParamConstant;
import com.njcn.common.pojo.dto.SimpleDTO;
import com.njcn.common.pojo.param.StatisticsBizBaseParam;
import com.njcn.device.pms.api.PmsGeneralDeviceInfoClient;
import com.njcn.device.pms.mapper.distribution.PwROperatingIndexMapper;
import com.njcn.device.pms.mapper.majornetwork.RQualityParameterMapper;
import com.njcn.device.pms.pojo.dto.PmsGeneralDeviceDTO;
@@ -25,10 +25,7 @@ import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -135,8 +132,23 @@ public class PwDataQualityStatServiceImpl implements PwDataQualityStatService {
break;
// 季
case BizParamConstant.STAT_BIZ_QUARTER:
//获取时间月
Date startDate=DateUtil.parse(param.getStartTime(),"yyyy-MM-dd");
Date endDate=DateUtil.parse(param.getEndTime(),"yyyy-MM-dd");
// 声明保存日期集合
List<String> dates = new ArrayList<>();
Calendar calendar = Calendar.getInstance();
while (startDate.getTime() <= endDate.getTime()) {
// 设置日期Calendar.YEAR
calendar.setTime(startDate);
dates.add(calendar.get(Calendar.MONTH)+1+"");
//把月数增加 1
calendar.add(Calendar.MONTH, 1);
// 获取增加后的日期
startDate = calendar.getTime();
}
result = rOperatingIndexMapper.getSeasonInfo(param,
deptIdList);
deptIdList,dates);
break;
// 月
case BizParamConstant.STAT_BIZ_MONTH:
@@ -225,4 +237,6 @@ public class PwDataQualityStatServiceImpl implements PwDataQualityStatService {
.stream()
.collect(Collectors.toMap(PmsGeneralDeviceDTO::getIndex, PmsGeneralDeviceDTO -> PmsGeneralDeviceDTO));
}
}

View File

@@ -64,8 +64,7 @@ public class DataQualityStatServiceImpl implements DataQualityStatService {
*/
@Override
public List<RQualityParameterVO> getLedgerDataQualityStat(StatisticsBizBaseParam param) {
// // 获取当前用户的部门的子部门信息
// List<PmsGeneralDeviceDTO> data = getPmsGeneralDeviceDTOList(param);
// 获取当前用户的部门的子部门信息
/*获取下级子部门信息*/
List<DeptDTO> deptDTOList = deptFeignClient.getDepSonDetailByDeptId (param.getId ()).getData ( );

View File

@@ -59,7 +59,7 @@ public class RMpDevSolveDetailServiceImpl extends ServiceImpl<RMpDevSolveDetailM
String endTime = rMpDevAbnormalManageParam.getEndTime(); //结束时间
//获取所有子部门信息
List<DeptDTO> deptDTOList = deptFeignClient.getDeptDescendantIndexes(id, WebUtil.filterDeptType()).getData();
List<DeptDTO> deptDTOList = deptFeignClient.getDepSonDetailByDeptId(id).getData();
/*获取下一级子部门信息*/
// List<DeptDTO> deptDTOList = deptFeignClient.getDepSonDetailByDeptId (id).getData ( );
if (CollUtil.isEmpty(deptDTOList)) {

View File

@@ -1,8 +1,10 @@
package com.njcn.device.pms.service.majornetwork.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.common.pojo.enums.common.DataStateEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.device.pms.pojo.param.RStatDevSignalParam;
@@ -12,6 +14,7 @@ import com.njcn.device.pms.pojo.vo.RStatDevSignalVO;
import com.njcn.device.pms.service.majornetwork.ITerminalService;
import com.njcn.device.pms.service.majornetwork.RStatDevSignalDService;
import com.njcn.device.pms.mapper.majornetwork.RStatDevSignalDMapper;
import com.njcn.event.pojo.po.RStatEventOrgQ;
import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.pojo.dto.DeptDTO;
import com.njcn.web.utils.WebUtil;
@@ -64,6 +67,7 @@ public class RStatDevSignalDServiceImpl extends ServiceImpl<RStatDevSignalDMappe
//查询终端数据
LambdaQueryWrapper<PmsTerminal> terminalWrapper = new LambdaQueryWrapper<>();
terminalWrapper.in(PmsTerminal::getOrgId, orgCodeList)
.eq(PmsTerminal::getStatus, DataStateEnum.ENABLE.getCode())
.like(StringUtils.isNotBlank(deviceName), PmsTerminal::getName, deviceName);
List<PmsTerminal> terminalList = iTerminalService.list(terminalWrapper);
//提取终端id
@@ -85,15 +89,33 @@ public class RStatDevSignalDServiceImpl extends ServiceImpl<RStatDevSignalDMappe
RStatDevSignalVO rStatDevSignalVO = new RStatDevSignalVO();
BeanUtils.copyProperties(item, rStatDevSignalVO); //设备状态、运行状态、最后通讯时间(更新时间)
rStatDevSignalVO.setTerminalId(item.getDeviceId()); //终端id(终端编号)
rStatDevSignalVO.setOrgId(terminalMap.get(item.getDeviceId()).getOrgId()); //单位id
rStatDevSignalVO.setOrgName(terminalMap.get(item.getDeviceId()).getOrgName()); //单位名称
rStatDevSignalVO.setTerminalName(terminalMap.get(item.getDeviceId()).getName()); //终端名称
rStatDevSignalVO.setIp(terminalMap.get(item.getDeviceId()).getIp()); //ip
rStatDevSignalVO.setPort(terminalMap.get(item.getDeviceId()).getPort()); //端口
return rStatDevSignalVO;
}).collect(Collectors.toList());
Map<String, RStatDevSignalD> signalMap = list.stream().collect(Collectors.toMap(RStatDevSignalD::getDeviceId, terminal -> terminal));
List<PmsTerminal> notList = terminalList.stream().filter(r -> !signalMap.containsKey(r.getId()))
.collect(Collectors.toList());
if(CollectionUtil.isNotEmpty(notList)){
RStatDevSignalVO rStatDevSignalVO ;
for (PmsTerminal terminal : notList) {
rStatDevSignalVO = new RStatDevSignalVO();
rStatDevSignalVO.setTerminalId(terminal.getId());
rStatDevSignalVO.setOrgId(terminal.getOrgId());
rStatDevSignalVO.setOrgName(terminal.getOrgName());
rStatDevSignalVO.setTerminalName(terminal.getName());
rStatDevSignalVO.setDeviceStatus("/");
rStatDevSignalVO.setRunStatus("/");
rStatDevSignalVO.setIp(terminal.getIp());
rStatDevSignalVO.setPort(terminal.getPort());
rStatDevSignalVO.setUpdateTime("/");
resultList.add(rStatDevSignalVO);
}
}
return resultList;
}
}