fix(securityManagement): 修复移动端巡检列表分页查询SQL逻辑
重构该Mapper的分页查询SQL,调整表关联与过滤条件,优化状态计算、搜索匹配及排序规则,修复原查询的数据统计与展示问题。
This commit is contained in:
@@ -8,38 +8,31 @@
|
|||||||
<select id="selectMobilePlanPage"
|
<select id="selectMobilePlanPage"
|
||||||
resultType="com.hotwj.platform.securityManagement.hiddenDangerInspection.domain.vo.HotHiddenDangerInspectionVo">
|
resultType="com.hotwj.platform.securityManagement.hiddenDangerInspection.domain.vo.HotHiddenDangerInspectionVo">
|
||||||
SELECT
|
SELECT
|
||||||
p.id AS id,
|
i.id AS id,
|
||||||
p.company_id AS companyId,
|
i.company_id AS companyId,
|
||||||
p.id AS planId,
|
i.plan_id AS planId,
|
||||||
p.inspect_name AS projectName,
|
i.project_name AS projectName,
|
||||||
|
i.project_id AS projectId,
|
||||||
|
i.project_type AS projectType,
|
||||||
p.plan_name AS planName,
|
p.plan_name AS planName,
|
||||||
p.start_date AS planStartDate,
|
p.start_date AS planStartDate,
|
||||||
p.end_date AS planEndDate,
|
p.end_date AS planEndDate,
|
||||||
CASE
|
CASE
|
||||||
WHEN SUM(CASE WHEN i.status IS NULL OR i.status = 1 OR i.status = 2 THEN 1 ELSE 0 END) > 0 THEN 1
|
WHEN i.status IS NULL OR i.status = 1 OR i.status = 2 THEN 1
|
||||||
ELSE 3
|
WHEN i.status = 10 THEN 1
|
||||||
END AS status,
|
|
||||||
CASE
|
|
||||||
WHEN SUM(CASE WHEN i.status IS NULL OR i.status = 1 OR i.status = 2 THEN 1 ELSE 0 END) > 0 THEN 1
|
|
||||||
ELSE 2
|
ELSE 2
|
||||||
END AS todoSortGroup,
|
END AS todoSortGroup,
|
||||||
CASE
|
CASE
|
||||||
WHEN SUM(CASE WHEN i.status IS NULL OR i.status = 1 OR i.status = 2 THEN 1 ELSE 0 END) > 0 THEN '未做'
|
WHEN i.status IS NULL OR i.status = 1 OR i.status = 2 THEN '未做'
|
||||||
|
WHEN i.status = 10 THEN '驳回'
|
||||||
ELSE '已完成'
|
ELSE '已完成'
|
||||||
END AS todoSortLabel
|
END AS todoSortLabel,
|
||||||
FROM hot_hidden_danger_plan p
|
COALESCE(i.status, 0) AS status
|
||||||
LEFT JOIN hot_hidden_danger_inspection i
|
FROM hot_hidden_danger_inspection i
|
||||||
ON i.plan_id = p.id
|
INNER JOIN hot_hidden_danger_plan p
|
||||||
AND i.is_deleted = 0
|
ON p.id = i.plan_id
|
||||||
<if test="isAdmin == false">
|
AND p.is_deleted = 0
|
||||||
AND (
|
WHERE i.is_deleted = 0
|
||||||
(i.project_type = 3 AND i.project_id = #{driverId})
|
|
||||||
<if test="vehicleId != null and vehicleId != ''">
|
|
||||||
OR (i.project_type = 2 AND i.project_id = #{vehicleId})
|
|
||||||
</if>
|
|
||||||
)
|
|
||||||
</if>
|
|
||||||
WHERE p.is_deleted = 0
|
|
||||||
AND p.company_id = #{companyId}
|
AND p.company_id = #{companyId}
|
||||||
AND (
|
AND (
|
||||||
(NOW() BETWEEN p.start_date AND p.end_date)
|
(NOW() BETWEEN p.start_date AND p.end_date)
|
||||||
@@ -48,39 +41,29 @@
|
|||||||
AND NOW() BETWEEN p.recheck_start_time AND p.recheck_end_time
|
AND NOW() BETWEEN p.recheck_start_time AND p.recheck_end_time
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
<if test="planId != null">
|
<if test="isAdmin == false">
|
||||||
AND p.id = #{planId}
|
AND (
|
||||||
</if>
|
(i.project_type = 3 AND i.project_id = #{driverId})
|
||||||
AND EXISTS (
|
<if test="vehicleId != null and vehicleId != ''">
|
||||||
SELECT 1
|
OR (i.project_type = 2 AND i.project_id = #{vehicleId})
|
||||||
FROM hot_hidden_danger_inspection i2
|
|
||||||
WHERE i2.plan_id = p.id
|
|
||||||
AND i2.is_deleted = 0
|
|
||||||
<if test="isAdmin == false">
|
|
||||||
AND (
|
|
||||||
(i2.project_type = 3 AND i2.project_id = #{driverId})
|
|
||||||
<if test="vehicleId != null and vehicleId != ''">
|
|
||||||
OR (i2.project_type = 2 AND i2.project_id = #{vehicleId})
|
|
||||||
</if>
|
|
||||||
)
|
|
||||||
</if>
|
</if>
|
||||||
)
|
)
|
||||||
|
</if>
|
||||||
|
<if test="planId != null">
|
||||||
|
AND i.plan_id = #{planId}
|
||||||
|
</if>
|
||||||
<if test="keyword != null and keyword != ''">
|
<if test="keyword != null and keyword != ''">
|
||||||
AND (
|
AND (
|
||||||
p.plan_name LIKE CONCAT('%', #{keyword}, '%')
|
p.plan_name LIKE CONCAT('%', #{keyword}, '%')
|
||||||
OR p.inspect_name LIKE CONCAT('%', #{keyword}, '%')
|
OR i.project_name LIKE CONCAT('%', #{keyword}, '%')
|
||||||
|
<if test="isAdmin == false">
|
||||||
|
OR i.project_id LIKE CONCAT('%', #{keyword}, '%')
|
||||||
|
</if>
|
||||||
)
|
)
|
||||||
</if>
|
</if>
|
||||||
GROUP BY
|
|
||||||
p.id,
|
|
||||||
p.company_id,
|
|
||||||
p.inspect_name,
|
|
||||||
p.plan_name,
|
|
||||||
p.start_date,
|
|
||||||
p.end_date
|
|
||||||
ORDER BY
|
ORDER BY
|
||||||
todoSortGroup ASC,
|
todoSortGroup ASC,
|
||||||
COALESCE(p.end_date, p.start_date, MAX(i.create_time)) ASC,
|
COALESCE(p.end_date, p.start_date, i.create_time) ASC,
|
||||||
p.id DESC
|
i.id DESC
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
Reference in New Issue
Block a user