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