From 16ca67cb765dd78e8ae4332ff21e8b1b8a02b6e4 Mon Sep 17 00:00:00 2001 From: enlineawork Date: Wed, 9 Sep 2026 15:20:42 -0300 Subject: [PATCH] fix(f6.1): keep act lists and snapshots on visit context --- .../inspection-acts.service.ts | 88 ++++++------------- 1 file changed, 27 insertions(+), 61 deletions(-) diff --git a/api-v3/src/inspection-acts/inspection-acts.service.ts b/api-v3/src/inspection-acts/inspection-acts.service.ts index 262c44d..4de8913 100644 --- a/api-v3/src/inspection-acts/inspection-acts.service.ts +++ b/api-v3/src/inspection-acts/inspection-acts.service.ts @@ -154,41 +154,26 @@ export class InspectionActsService { SELECT 1 FROM inspection_act_assets search_link INNER JOIN assets search_asset ON search_asset.id = search_link.asset_id - LEFT JOIN assets search_company ON search_company.id = search_asset.operator_company_id - LEFT JOIN assets search_area ON search_area.id = search_asset.operational_area_id WHERE search_link.act_id = act.id AND search_link.included = true - AND ( - search_asset.code ILIKE ${search} - OR search_asset.name ILIKE ${search} - OR search_company.name ILIKE ${search} - OR search_area.name ILIKE ${search} - ) + AND (search_asset.code ILIKE ${search} OR search_asset.name ILIKE ${search}) + ) + OR EXISTS ( + SELECT 1 FROM assets search_company + WHERE search_company.id=visit.operator_company_id + AND search_company.name ILIKE ${search} + ) + OR EXISTS ( + SELECT 1 FROM assets search_area + WHERE search_area.id=visit.operational_area_id + AND search_area.name ILIKE ${search} ) )`); } if (query.status) conditions.push(`act.status = ${add(query.status)}`); if (query.year) conditions.push(`act.act_year = ${add(query.year)}`); - if (query.companyId) { - conditions.push(`EXISTS ( - SELECT 1 - FROM inspection_act_assets company_link - INNER JOIN assets company_asset ON company_asset.id = company_link.asset_id - WHERE company_link.act_id = act.id - AND company_link.included = true - AND company_asset.operator_company_id = ${add(query.companyId)}::uuid - )`); - } - if (query.areaId) { - conditions.push(`EXISTS ( - SELECT 1 - FROM inspection_act_assets area_link - INNER JOIN assets area_asset ON area_asset.id = area_link.asset_id - WHERE area_link.act_id = act.id - AND area_link.included = true - AND area_asset.operational_area_id = ${add(query.areaId)}::uuid - )`); - } + if (query.companyId) conditions.push(`visit.operator_company_id = ${add(query.companyId)}::uuid`); + if (query.areaId) conditions.push(`visit.operational_area_id = ${add(query.areaId)}::uuid`); if (query.inspectorId) { const inspector = add(query.inspectorId); conditions.push(`( @@ -245,24 +230,8 @@ export class InspectionActsService { } if (query.status) conditions.push(`act.status = ${add(query.status)}`); if (query.year) conditions.push(`act.act_year = ${add(query.year)}`); - if (query.companyId) { - conditions.push(`EXISTS ( - SELECT 1 FROM inspection_act_assets company_link - INNER JOIN assets company_asset ON company_asset.id = company_link.asset_id - WHERE company_link.act_id = act.id - AND company_link.included = true - AND company_asset.operator_company_id = ${add(query.companyId)}::uuid - )`); - } - if (query.areaId) { - conditions.push(`EXISTS ( - SELECT 1 FROM inspection_act_assets area_link - INNER JOIN assets area_asset ON area_asset.id = area_link.asset_id - WHERE area_link.act_id = act.id - AND area_link.included = true - AND area_asset.operational_area_id = ${add(query.areaId)}::uuid - )`); - } + if (query.companyId) conditions.push(`visit.operator_company_id = ${add(query.companyId)}::uuid`); + if (query.areaId) conditions.push(`visit.operational_area_id = ${add(query.areaId)}::uuid`); if (query.inspectorId) { const inspector = add(query.inspectorId); conditions.push(`( @@ -548,21 +517,16 @@ export class InspectionActsService { LEFT JOIN inspection_reports report ON report.act_id = act.id LEFT JOIN LATERAL ( SELECT - COALESCE(JSONB_AGG(DISTINCT JSONB_BUILD_OBJECT( - 'id', company.id, - 'code', company.code, - 'name', company.name - )) FILTER (WHERE company.id IS NOT NULL), '[]'::jsonb) AS companies, - COALESCE(JSONB_AGG(DISTINCT JSONB_BUILD_OBJECT( - 'id', area.id, - 'code', area.code, - 'name', area.name - )) FILTER (WHERE area.id IS NOT NULL), '[]'::jsonb) AS areas - FROM inspection_act_assets context_link - INNER JOIN assets context_asset ON context_asset.id = context_link.asset_id - LEFT JOIN assets company ON company.id = context_asset.operator_company_id - LEFT JOIN assets area ON area.id = context_asset.operational_area_id - WHERE context_link.act_id = act.id AND context_link.included = true + CASE WHEN company.id IS NULL THEN '[]'::jsonb ELSE JSONB_BUILD_ARRAY( + JSONB_BUILD_OBJECT('id',company.id,'code',company.code,'name',company.name) + ) END AS companies, + CASE WHEN area.id IS NULL THEN '[]'::jsonb ELSE JSONB_BUILD_ARRAY( + JSONB_BUILD_OBJECT('id',area.id,'code',area.code,'name',area.name) + ) END AS areas + FROM inspection_visits context_visit + LEFT JOIN assets company ON company.id=context_visit.operator_company_id + LEFT JOIN assets area ON area.id=context_visit.operational_area_id + WHERE context_visit.id=act.visit_id ) context ON true LEFT JOIN LATERAL ( SELECT COUNT(*) AS total @@ -813,6 +777,8 @@ export class InspectionActsService { 'code', visit.code, 'status', visit.status, 'scopeAssetId', visit.scope_asset_id, + 'operationalAreaId', visit.operational_area_id, + 'operatorCompanyId', visit.operator_company_id, 'actualStartedAt', visit.actual_started_at ), 'assets', COALESCE((