diff --git a/lawrisk/services/licensing_repo.py b/lawrisk/services/licensing_repo.py index 596bcd1..5e7f36f 100644 --- a/lawrisk/services/licensing_repo.py +++ b/lawrisk/services/licensing_repo.py @@ -2643,11 +2643,15 @@ def list_all_themes( cur.execute(sql, params) rows = cur.fetchall() columns = tuple(col[0] for col in cur.description) - + items: List[Dict[str, Any]] = [] for row in rows: record = {columns[idx]: row[idx] for idx in range(len(columns))} items.append(_serialize_theme_row(record)) + + # 过滤掉"不涉及"主题 + items = [item for item in items if item.get("name") != "不涉及"] + return items @@ -2699,20 +2703,30 @@ def list_unbound_permits( where_clause = " AND ".join(filters) sql = f""" - SELECT + SELECT r.id AS region_id, r.name AS region_name, p.id AS permit_id, p.name AS permit_name, rpd.unit_name, rpd.updated_at, - COALESCE(rpd.is_v2_visible, true) AS is_v2_visible + COALESCE(rpd.is_v2_visible, true) AS is_v2_visible, + COALESCE(risk_counts.risk_count, 0) AS risk_count FROM region_permit_details rpd JOIN regions r ON r.id = rpd.region_id JOIN permits p ON p.id = rpd.permit_id - LEFT JOIN region_theme_permits rtp - ON rtp.region_id = rpd.region_id + LEFT JOIN region_theme_permits rtp + ON rtp.region_id = rpd.region_id AND rtp.permit_id = rpd.permit_id + LEFT JOIN ( + SELECT + permit_id, + region_id, + COUNT(risk_id) AS risk_count + FROM region_permit_risks + GROUP BY permit_id, region_id + ) risk_counts ON risk_counts.permit_id = rpd.permit_id + AND risk_counts.region_id = rpd.region_id {ps_join} WHERE {where_clause} ORDER BY r.name, p.name