fix(project): 优化大屏项目统计数据查询逻辑
parent
15b3337d9d
commit
53af6abd32
|
|
@ -590,7 +590,14 @@
|
||||||
|
|
||||||
<select id="largeScreenProjectStatistics" resultType="com.zcloud.key.project.persistence.dataobject.project.KeyProjectLargeScreenProjectStatisticsDO">
|
<select id="largeScreenProjectStatistics" resultType="com.zcloud.key.project.persistence.dataobject.project.KeyProjectLargeScreenProjectStatisticsDO">
|
||||||
SELECT
|
SELECT
|
||||||
COUNT(DISTINCT CASE WHEN kp.apply_status IN (1, 2, 3, 4, 5, 6, 7) THEN kp.id END) AS totalProjectCount,
|
COUNT(DISTINCT CASE WHEN kp.apply_status IN (0, 1, 2, 4, 5, 6)
|
||||||
|
AND NOT EXISTS (
|
||||||
|
SELECT 1
|
||||||
|
FROM key_project kp_latest
|
||||||
|
WHERE kp_latest.delete_enum = 'FALSE'
|
||||||
|
AND kp_latest.key_project_id = kp.key_project_id
|
||||||
|
AND kp_latest.id > kp.id
|
||||||
|
) THEN kp.key_project_id END) AS totalProjectCount,
|
||||||
COUNT(DISTINCT CASE WHEN kp.apply_status IN (1, 2)
|
COUNT(DISTINCT CASE WHEN kp.apply_status IN (1, 2)
|
||||||
AND CURDATE() <![CDATA[ < ]]> kp.plan_work_start_date THEN kp.id END) AS waitStartCount,
|
AND CURDATE() <![CDATA[ < ]]> kp.plan_work_start_date THEN kp.id END) AS waitStartCount,
|
||||||
COUNT(DISTINCT CASE WHEN kp.apply_status IN (4, 5)
|
COUNT(DISTINCT CASE WHEN kp.apply_status IN (4, 5)
|
||||||
|
|
@ -630,62 +637,130 @@
|
||||||
|
|
||||||
<select id="largeScreenProjectProgress" resultType="com.zcloud.key.project.persistence.dataobject.project.KeyProjectLargeScreenProjectProgressDO">
|
<select id="largeScreenProjectProgress" resultType="com.zcloud.key.project.persistence.dataobject.project.KeyProjectLargeScreenProjectProgressDO">
|
||||||
SELECT
|
SELECT
|
||||||
p.id AS projectId,
|
progress.projectId,
|
||||||
p.project_name AS projectName,
|
progress.projectName,
|
||||||
p.corpinfo_name AS corpinfoName,
|
progress.corpinfoName,
|
||||||
COALESCE(sei_stat.inspectCount, 0) AS inspectCount,
|
progress.inspectCount,
|
||||||
COALESCE(hidden_stat.hiddenCount, 0) AS hiddenCount,
|
progress.hiddenCount,
|
||||||
COALESCE(penalty_stat.penaltyAmount, 0) AS penaltyAmount
|
progress.penaltyAmount
|
||||||
FROM project_approval_flow paf
|
FROM (
|
||||||
LEFT JOIN project p ON paf.project_id = p.id
|
|
||||||
LEFT JOIN corp_info cp ON p.corpinfo_id = cp.id
|
|
||||||
LEFT JOIN (
|
|
||||||
SELECT
|
SELECT
|
||||||
k.project_id,
|
p.id AS projectId,
|
||||||
COUNT(DISTINCT sei.id) AS inspectCount
|
p.project_name AS projectName,
|
||||||
FROM key_project k
|
p.corpinfo_name AS corpinfoName,
|
||||||
INNER JOIN safety_environmental_inspection sei ON sei.key_project_id = k.key_project_id
|
COALESCE(sei_stat.inspectCount, 0) AS inspectCount,
|
||||||
AND sei.delete_enum = 'FALSE'
|
COALESCE(hidden_stat.hiddenCount, 0) AS hiddenCount,
|
||||||
AND sei.status != 0
|
COALESCE(penalty_stat.penaltyAmount, 0) AS penaltyAmount,
|
||||||
WHERE k.delete_enum = 'FALSE'
|
p.initiation_time AS sortTime
|
||||||
GROUP BY k.project_id
|
FROM project_approval_flow paf
|
||||||
) sei_stat ON sei_stat.project_id = p.id
|
LEFT JOIN project p ON paf.project_id = p.id
|
||||||
LEFT JOIN (
|
LEFT JOIN corp_info cp ON p.corpinfo_id = cp.id
|
||||||
SELECT
|
LEFT JOIN (
|
||||||
k.project_id,
|
SELECT
|
||||||
COUNT(DISTINCT h.id) AS hiddenCount
|
k.project_id,
|
||||||
FROM key_project k
|
COUNT(DISTINCT sei.id) AS inspectCount
|
||||||
INNER JOIN safety_environmental_inspection sei ON sei.key_project_id = k.key_project_id
|
FROM key_project k
|
||||||
AND sei.delete_enum = 'FALSE'
|
INNER JOIN safety_environmental_inspection sei ON sei.key_project_id = k.key_project_id
|
||||||
AND sei.status != 0
|
AND sei.delete_enum = 'FALSE'
|
||||||
INNER JOIN hidden h ON h.foreign_key = sei.inspection_id
|
AND sei.status != 0
|
||||||
AND h.delete_enum = 'FALSE'
|
WHERE k.delete_enum = 'FALSE'
|
||||||
WHERE k.delete_enum = 'FALSE'
|
GROUP BY k.project_id
|
||||||
GROUP BY k.project_id
|
) sei_stat ON sei_stat.project_id = p.id
|
||||||
) hidden_stat ON hidden_stat.project_id = p.id
|
LEFT JOIN (
|
||||||
LEFT JOIN (
|
SELECT
|
||||||
SELECT
|
k.project_id,
|
||||||
k.project_id,
|
COUNT(DISTINCT h.id) AS hiddenCount
|
||||||
SUM(COALESCE(hp.penalty_amount, 0)) AS penaltyAmount
|
FROM key_project k
|
||||||
FROM key_project k
|
INNER JOIN safety_environmental_inspection sei ON sei.key_project_id = k.key_project_id
|
||||||
INNER JOIN hidden_penalty hp ON hp.key_project_id = k.key_project_id
|
AND sei.delete_enum = 'FALSE'
|
||||||
AND hp.delete_enum = 'FALSE'
|
AND sei.status != 0
|
||||||
WHERE k.delete_enum = 'FALSE'
|
INNER JOIN hidden h ON h.foreign_key = sei.inspection_id
|
||||||
GROUP BY k.project_id
|
AND h.delete_enum = 'FALSE'
|
||||||
) penalty_stat ON penalty_stat.project_id = p.id
|
WHERE k.delete_enum = 'FALSE'
|
||||||
WHERE paf.delete_enum = 'FALSE'
|
GROUP BY k.project_id
|
||||||
AND paf.audit_type = 2
|
) hidden_stat ON hidden_stat.project_id = p.id
|
||||||
AND p.delete_enum = 'FALSE'
|
LEFT JOIN (
|
||||||
AND p.project_status = 4
|
SELECT
|
||||||
<if test="corpinfoId != null">
|
k.project_id,
|
||||||
AND paf.corpinfo_id = #{corpinfoId}
|
SUM(COALESCE(hp.penalty_amount, 0)) AS penaltyAmount
|
||||||
</if>
|
FROM key_project k
|
||||||
<if test="portArea != null">
|
INNER JOIN hidden_penalty hp ON hp.key_project_id = k.key_project_id
|
||||||
AND cp.port_area = #{portArea}
|
AND hp.delete_enum = 'FALSE'
|
||||||
</if>
|
WHERE k.delete_enum = 'FALSE'
|
||||||
GROUP BY p.id
|
GROUP BY k.project_id
|
||||||
|
) penalty_stat ON penalty_stat.project_id = p.id
|
||||||
|
WHERE paf.delete_enum = 'FALSE'
|
||||||
|
AND paf.audit_type = 2
|
||||||
|
AND p.delete_enum = 'FALSE'
|
||||||
|
AND p.project_status = 4
|
||||||
|
<if test="corpinfoId != null">
|
||||||
|
AND paf.corpinfo_id = #{corpinfoId}
|
||||||
|
</if>
|
||||||
|
<if test="portArea != null">
|
||||||
|
AND cp.port_area = #{portArea}
|
||||||
|
</if>
|
||||||
|
GROUP BY p.id
|
||||||
|
|
||||||
ORDER BY p.initiation_time DESC
|
UNION ALL
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
NULL AS projectId,
|
||||||
|
kp.project_name AS projectName,
|
||||||
|
xgfci.corp_name AS corpinfoName,
|
||||||
|
COALESCE(sei_stat.inspectCount, 0) AS inspectCount,
|
||||||
|
COALESCE(hidden_stat.hiddenCount, 0) AS hiddenCount,
|
||||||
|
COALESCE(penalty_stat.penaltyAmount, 0) AS penaltyAmount,
|
||||||
|
kp.create_time AS sortTime
|
||||||
|
FROM key_project kp
|
||||||
|
LEFT JOIN corp_info cp ON kp.jurisdiction_corpinfo_id = cp.id
|
||||||
|
LEFT JOIN corp_info xgfci ON kp.xgf_corpinfo_id = xgfci.id
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT
|
||||||
|
sei.key_project_id,
|
||||||
|
COUNT(DISTINCT sei.id) AS inspectCount
|
||||||
|
FROM safety_environmental_inspection sei
|
||||||
|
WHERE sei.delete_enum = 'FALSE'
|
||||||
|
AND sei.status != 0
|
||||||
|
GROUP BY sei.key_project_id
|
||||||
|
) sei_stat ON sei_stat.key_project_id = kp.key_project_id
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT
|
||||||
|
sei.key_project_id,
|
||||||
|
COUNT(DISTINCT h.id) AS hiddenCount
|
||||||
|
FROM safety_environmental_inspection sei
|
||||||
|
INNER JOIN hidden h ON h.foreign_key = sei.inspection_id
|
||||||
|
AND h.delete_enum = 'FALSE'
|
||||||
|
WHERE sei.delete_enum = 'FALSE'
|
||||||
|
AND sei.status != 0
|
||||||
|
GROUP BY sei.key_project_id
|
||||||
|
) hidden_stat ON hidden_stat.key_project_id = kp.key_project_id
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT
|
||||||
|
hp.key_project_id,
|
||||||
|
SUM(COALESCE(hp.penalty_amount, 0)) AS penaltyAmount
|
||||||
|
FROM hidden_penalty hp
|
||||||
|
WHERE hp.delete_enum = 'FALSE'
|
||||||
|
GROUP BY hp.key_project_id
|
||||||
|
) penalty_stat ON penalty_stat.key_project_id = kp.key_project_id
|
||||||
|
WHERE kp.delete_enum = 'FALSE'
|
||||||
|
AND kp.project_work_flag = 0
|
||||||
|
AND (kp.project_id IS NULL OR kp.project_id = '')
|
||||||
|
AND NOT EXISTS (
|
||||||
|
SELECT 1
|
||||||
|
FROM key_project kp_latest
|
||||||
|
WHERE kp_latest.delete_enum = 'FALSE'
|
||||||
|
AND kp_latest.key_project_id = kp.key_project_id
|
||||||
|
AND kp_latest.id > kp.id
|
||||||
|
)
|
||||||
|
<if test="corpinfoId != null">
|
||||||
|
AND kp.jurisdiction_corpinfo_id = #{corpinfoId}
|
||||||
|
</if>
|
||||||
|
<if test="portArea != null">
|
||||||
|
AND cp.port_area = #{portArea}
|
||||||
|
</if>
|
||||||
|
GROUP BY kp.key_project_id
|
||||||
|
) progress
|
||||||
|
ORDER BY progress.sortTime DESC
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="largeScreenXgfStatistics" resultType="com.zcloud.key.project.persistence.dataobject.project.KeyProjectLargeScreenXgfStatisticsDO">
|
<select id="largeScreenXgfStatistics" resultType="com.zcloud.key.project.persistence.dataobject.project.KeyProjectLargeScreenXgfStatisticsDO">
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue