Browse Source

/*优化selectOilResultValue和select6FsResultValue,将查询速度从17秒左右提升到3秒左右。*/

master
htjcAdmin 2 months ago
parent
commit
076bef092b
1 changed files with 62 additions and 44 deletions
  1. +62
    -44
      inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolResultMapper.xml

+ 62
- 44
inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolResultMapper.xml View File

@ -874,6 +874,7 @@
<result property="lineId" column="line_id"/> <result property="lineId" column="line_id"/>
<result property="createTime" column="create_time"/> <result property="createTime" column="create_time"/>
</resultMap> </resultMap>
<!-- <select id="selectOilResultValue" parameterType="PatrolResult" resultMap="ResultValue">--> <!-- <select id="selectOilResultValue" parameterType="PatrolResult" resultMap="ResultValue">-->
<!-- SELECT--> <!-- SELECT-->
@ -911,8 +912,8 @@
<!-- ORDER BY--> <!-- ORDER BY-->
<!-- d.area_name,--> <!-- d.area_name,-->
<!-- d.patrol_device_name--> <!-- d.patrol_device_name-->
<!-- </select>--> <!-- </select>-->
<select id="selectOilResultValue" parameterType="PatrolResult" resultMap="ResultValue"> <select id="selectOilResultValue" parameterType="PatrolResult" resultMap="ResultValue">
SELECT SELECT
a.patrol_point_id, a.patrol_point_id,
@ -920,41 +921,49 @@
d.patrol_device_name, d.patrol_device_name,
f.patrol_point_name, f.patrol_point_name,
CASE CASE
WHEN e.`value` = 'check image' THEN '0'
ELSE e.`value`
WHEN e.value = 'check image' THEN '0'
ELSE e.value
END AS `value`, END AS `value`,
h.dict_value AS line_id, h.dict_value AS line_id,
e.create_time, e.create_time,
a.channel_code a.channel_code
FROM patrol_preset_pos a FROM patrol_preset_pos a
LEFT JOIN patrol_result e
ON a.patrol_point_id = e.device_id
RIGHT JOIN (
SELECT
MAX(h.line_id) AS line_id
FROM patrol_result h
<where>
<if test="createTime != null">
h.create_time <![CDATA[>=]]> DATE(#{createTime})
AND h.create_time <![CDATA[<]]> DATE_ADD(DATE(#{createTime}), INTERVAL 1 DAY)
</if>
</where>
GROUP BY h.device_id
) i ON e.line_id = i.line_id
RIGHT JOIN (
SELECT g.dict_value, g.dict_label
FROM sys_dict_data g
WHERE g.dict_type = 'oil_api'
INNER JOIN (
SELECT dict_label, dict_value
FROM sys_dict_data
WHERE dict_type = 'oil_api'
) h ON h.dict_label = a.patrol_point_id ) h ON h.dict_label = a.patrol_point_id
LEFT JOIN basedata_eqpbook d LEFT JOIN basedata_eqpbook d
ON a.eqp_book_id = d.eqp_book_id ON a.eqp_book_id = d.eqp_book_id
LEFT JOIN basedata_patrolpoint f LEFT JOIN basedata_patrolpoint f
ON a.patrol_point_id = f.patrol_point_id ON a.patrol_point_id = f.patrol_point_id
LEFT JOIN (
SELECT *
FROM (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY device_id ORDER BY line_id DESC) AS rn
FROM patrol_result
<where>
<if test="createTime != null">
create_time <![CDATA[>=]]> DATE(#{createTime})
AND create_time <![CDATA[<]]> DATE_ADD(DATE(#{createTime}), INTERVAL 1 DAY)
</if>
</where>
) t
WHERE rn = 1
) e ON a.patrol_point_id = e.device_id
ORDER BY ORDER BY
d.area_name, d.area_name,
d.patrol_device_name d.patrol_device_name
</select> </select>
<!-- <select id="select6FsResultValue" parameterType="PatrolResult" resultMap="ResultValue">--> <!-- <select id="select6FsResultValue" parameterType="PatrolResult" resultMap="ResultValue">-->
<!-- SELECT--> <!-- SELECT-->
@ -994,47 +1003,56 @@
<!-- d.patrol_device_name--> <!-- d.patrol_device_name-->
<!-- </select>--> <!-- </select>-->
<select id="select6FsResultValue" parameterType="PatrolResult" resultMap="ResultValue"> <select id="select6FsResultValue" parameterType="PatrolResult" resultMap="ResultValue">
SELECT SELECT
a.patrol_point_id, a.patrol_point_id,
d.area_name, d.area_name,
d.patrol_device_name, d.patrol_device_name,
f.patrol_point_name, f.patrol_point_name,
CASE CASE
WHEN e.`value` = 'check image' THEN
'0' ELSE e.`value`
END `value`,
h.dict_value line_id,
WHEN e.value = 'check image' THEN '0'
ELSE e.value
END AS `value`,
h.dict_value AS line_id,
e.create_time, e.create_time,
a.channel_code a.channel_code
FROM
patrol_preset_pos a
LEFT JOIN patrol_result e ON a.patrol_point_id = e.device_id
RIGHT JOIN (
FROM patrol_preset_pos a
INNER JOIN (
SELECT dict_label, dict_value
FROM sys_dict_data
WHERE dict_type = 'sf6_api'
) h ON h.dict_label = a.patrol_point_id
LEFT JOIN basedata_eqpbook d
ON a.eqp_book_id = d.eqp_book_id
LEFT JOIN basedata_patrolpoint f
ON a.patrol_point_id = f.patrol_point_id
LEFT JOIN (
SELECT *
FROM (
SELECT SELECT
MAX( h.line_id ) line_id
FROM
patrol_result h
*,
ROW_NUMBER() OVER (PARTITION BY device_id ORDER BY line_id DESC) AS rn
FROM patrol_result
<where> <where>
<if test="createTime != null"> <if test="createTime != null">
h.create_time <![CDATA[>=]]> DATE(#{createTime})
AND h.create_time <![CDATA[<]]> DATE_ADD(DATE(#{createTime}), INTERVAL 1 DAY)
create_time <![CDATA[>=]]> DATE(#{createTime})
AND create_time <![CDATA[<]]> DATE_ADD(DATE(#{createTime}), INTERVAL 1 DAY)
</if> </if>
</where> </where>
GROUP BY
h.device_id
) i ON e.line_id = i.line_id
RIGHT JOIN ( SELECT g.dict_value, g.dict_label FROM sys_dict_data g WHERE g.dict_type = 'sf6_api' ) h ON
h.dict_label = a.patrol_point_id
LEFT JOIN basedata_eqpbook d ON a.eqp_book_id = d.eqp_book_id
LEFT JOIN basedata_patrolpoint f ON a.patrol_point_id = f.patrol_point_id
) t
WHERE rn = 1
) e ON a.patrol_point_id = e.device_id
ORDER BY ORDER BY
d.area_name, d.area_name,
d.patrol_device_name d.patrol_device_name
</select> </select>
<select id="queryNumTypeResult" resultMap="PatrolResultResult"> <select id="queryNumTypeResult" resultMap="PatrolResultResult">
select * select *
from patrol_result from patrol_result


Loading…
Cancel
Save