diff --git a/app/Exports/V3/Mission/Report/Tradod/CountryReport.php b/app/Exports/V3/Mission/Report/Tradod/CountryReport.php index c5aef909..425879b5 100644 --- a/app/Exports/V3/Mission/Report/Tradod/CountryReport.php +++ b/app/Exports/V3/Mission/Report/Tradod/CountryReport.php @@ -28,12 +28,16 @@ class CountryReport implements FromView, ShouldAutoSize, WithDrawings, WithEvent if ($pid === -1) { $national = [ 'province_name' => $name, - 'total_missions' => (int) ($r->total_missions ?? 0), - 'taradod_khareg_mahdode' => (int) ($r->taradod_khareg_mahdode ?? 0), - 'bafarayand_saeti' => (int) ($r->bafarayand_saeti ?? 0), - 'bafarayand_rozaneh' => (int) ($r->bafarayand_rozaneh ?? 0), - 'bedon_bafarayand_saeti' => (int) ($r->bedon_bafarayand_saeti ?? 0), - 'bedon_bafarayand_rozaneh' => (int) ($r->bedon_bafarayand_rozaneh ?? 0), + 'total' => (int) ($r->total ?? 0), + 'khareg_mahdode' => (int) ($r->khareg_mahdode ?? 0), + 'gps' => (int) ($r->gps ?? 0), + 'durations' => (int) ($r->durations ?? 0), + 'bafarayand_saeti' => (int) ($r->far_h ?? 0), + 'bafarayand_rozaneh' => (int) ($r->far_d ?? 0), + 'bedon_bafarayand_saeti' => (int) ($r->un_far_h ?? 0), + 'bedon_bafarayand_rozaneh' => (int) ($r->un_far_d ?? 0), + 'item' => (int) ($r->item ?? 0), + 'patrol' => (int) ($r->patrol ?? 0), ]; continue; @@ -45,12 +49,16 @@ class CountryReport implements FromView, ShouldAutoSize, WithDrawings, WithEvent ]; } - $grid[$pid]['total_missions'] = (int) ($r->total_missions ?? 0); - $grid[$pid]['taradod_khareg_mahdode'] = (int) ($r->taradod_khareg_mahdode ?? 0); - $grid[$pid]['bafarayand_saeti'] = (int) ($r->bafarayand_saeti ?? 0); - $grid[$pid]['bafarayand_rozaneh'] = (int) ($r->bafarayand_rozaneh ?? 0); - $grid[$pid]['bedon_bafarayand_saeti'] = (int) ($r->bedon_bafarayand_saeti ?? 0); - $grid[$pid]['bedon_bafarayand_rozaneh'] = (int) ($r->bedon_bafarayand_rozaneh ?? 0); + $grid[$pid]['total'] = (int) ($r->total ?? 0); + $grid[$pid]['khareg_mahdode'] = ($r->khareg_mahdode ?? 0); + $grid[$pid]['gps'] = (int) ($r->gps ?? 0); + $grid[$pid]['durations'] = (int) ($r->durations ?? 0); + $grid[$pid]['bafarayand_saeti'] = (int) ($r->far_h ?? 0); + $grid[$pid]['bafarayand_rozaneh'] = (int) ($r->far_d ?? 0); + $grid[$pid]['bedon_bafarayand_saeti'] = (int) ($r->un_far_h ?? 0); + $grid[$pid]['bedon_bafarayand_rozaneh'] = (int) ($r->un_far_d ?? 0); + $grid[$pid]['item'] = (int) ($r->item ?? 0); + $grid[$pid]['patrol'] = (int) ($r->patrol ?? 0); } $exportRows = []; @@ -95,7 +103,7 @@ class CountryReport implements FromView, ShouldAutoSize, WithDrawings, WithEvent $drawing2->setHeight(50); $drawing2->setOffsetX(5); $drawing2->setOffsetY(5); - $drawing2->setCoordinates('C1'); + $drawing2->setCoordinates('J1'); return [$drawing, $drawing2]; } diff --git a/app/Exports/V3/Mission/Report/Tradod/ProvinceReport.php b/app/Exports/V3/Mission/Report/Tradod/ProvinceReport.php index 256fd5c7..e56d6cef 100644 --- a/app/Exports/V3/Mission/Report/Tradod/ProvinceReport.php +++ b/app/Exports/V3/Mission/Report/Tradod/ProvinceReport.php @@ -29,12 +29,16 @@ class ProvinceReport implements FromView, ShouldAutoSize, WithDrawings, WithEven if ($cid === -1) { $province = [ 'city_name' => $name, - 'total_missions' => (int) ($r->total_missions ?? 0), - 'taradod_khareg_mahdode' => (int) ($r->taradod_khareg_mahdode ?? 0), - 'bafarayand_saeti' => (int) ($r->bafarayand_saeti ?? 0), - 'bafarayand_rozaneh' => (int) ($r->bafarayand_rozaneh ?? 0), - 'bedon_bafarayand_saeti' => (int) ($r->bedon_bafarayand_saeti ?? 0), - 'bedon_bafarayand_rozaneh' => (int) ($r->bedon_bafarayand_rozaneh ?? 0), + 'total' => (int) ($r->total ?? 0), + 'khareg_mahdode' => (int) ($r->khareg_mahdode ?? 0), + 'gps' => (int) ($r->gps ?? 0), + 'durations' => (int) ($r->durations ?? 0), + 'bafarayand_saeti' => (int) ($r->far_h ?? 0), + 'bafarayand_rozaneh' => (int) ($r->far_d ?? 0), + 'bedon_bafarayand_saeti' => (int) ($r->un_far_h ?? 0), + 'bedon_bafarayand_rozaneh' => (int) ($r->un_far_d ?? 0), + 'item' => (int) ($r->item ?? 0), + 'patrol' => (int) ($r->patrol ?? 0), ]; continue; @@ -46,12 +50,16 @@ class ProvinceReport implements FromView, ShouldAutoSize, WithDrawings, WithEven ]; } - $grid[$cid]['total_missions'] = (int) ($r->total_missions ?? 0); - $grid[$cid]['taradod_khareg_mahdode'] = (int) ($r->taradod_khareg_mahdode ?? 0); - $grid[$cid]['bafarayand_saeti'] = (int) ($r->bafarayand_saeti ?? 0); - $grid[$cid]['bafarayand_rozaneh'] = (int) ($r->bafarayand_rozaneh ?? 0); - $grid[$cid]['bedon_bafarayand_saeti'] = (int) ($r->bedon_bafarayand_saeti ?? 0); - $grid[$cid]['bedon_bafarayand_rozaneh'] = (int) ($r->bedon_bafarayand_rozaneh ?? 0); + $grid[$cid]['total'] = (int) ($r->total ?? 0); + $grid[$cid]['khareg_mahdode'] = ($r->khareg_mahdode ?? 0); + $grid[$cid]['gps'] = (int) ($r->gps ?? 0); + $grid[$cid]['durations'] = (int) ($r->durations ?? 0); + $grid[$cid]['bafarayand_saeti'] = (int) ($r->far_h ?? 0); + $grid[$cid]['bafarayand_rozaneh'] = (int) ($r->far_d ?? 0); + $grid[$cid]['bedon_bafarayand_saeti'] = (int) ($r->un_far_h ?? 0); + $grid[$cid]['bedon_bafarayand_rozaneh'] = (int) ($r->un_far_d ?? 0); + $grid[$cid]['item'] = (int) ($r->item ?? 0); + $grid[$cid]['patrol'] = (int) ($r->patrol ?? 0); } @@ -100,7 +108,7 @@ class ProvinceReport implements FromView, ShouldAutoSize, WithDrawings, WithEven $drawing2->setHeight(50); $drawing2->setOffsetX(5); $drawing2->setOffsetY(5); - $drawing2->setCoordinates('C1'); + $drawing2->setCoordinates('J1'); return [$drawing, $drawing2]; } diff --git a/app/Exports/V3/Mission/Report/Violation/CountryReport.php b/app/Exports/V3/Mission/Report/Violation/CountryReport.php index c248c340..59eb65c7 100644 --- a/app/Exports/V3/Mission/Report/Violation/CountryReport.php +++ b/app/Exports/V3/Mission/Report/Violation/CountryReport.php @@ -28,11 +28,12 @@ class CountryReport implements FromView, ShouldAutoSize, WithDrawings, WithEvent if ($pid === -1) { $national = [ 'province_name' => $name, - 'total_violations' => (int) ($r->total_violations ?? 0), - 'egdam_shode' => (int) ($r->egdam_shode ?? 0), - 'bedone_egdam' => (int) ($r->bedone_egdam ?? 0), - 'sabt_gps' => (int) ($r->sabt_gps ?? 0), + 'total' => (int) ($r->total ?? 0), + 'egdam_shode' => (int) ($r->done ?? 0), + 'bedone_egdam' => (int) ($r->undon ?? 0), + 'sabt_gps' => (int) ($r->gps ?? 0), 'sabt_herasat' => (int) ($r->herasat ?? 0), + 'mil_gps' => (int) ($r->mil_gps ?? 0), ]; continue; @@ -43,13 +44,12 @@ class CountryReport implements FromView, ShouldAutoSize, WithDrawings, WithEvent 'province_name' => $name, ]; } - - $grid[$pid]['total_violations'] = (int) ($r->total_violations ?? 0); - $grid[$pid]['egdam_shode'] = (int) ($r->egdam_shode ?? 0); - $grid[$pid]['bedone_egdam'] = (int) ($r->bedone_egdam ?? 0); - $grid[$pid]['sabt_gps'] = (int) ($r->sabt_gps ?? 0); - $grid[$pid]['sabt_herasat'] = (int) ($r->sabt_herasat ?? 0); - + $grid[$pid]['total'] = (int) ($r->total ?? 0); + $grid[$pid]['egdam_shode'] = (int) ($r->done ?? 0); + $grid[$pid]['bedone_egdam'] = (int) ($r->undone ?? 0); + $grid[$pid]['sabt_gps'] = (int) ($r->gps ?? 0); + $grid[$pid]['sabt_herasat'] = (int) ($r->herasat ?? 0); + $grid[$pid]['mil_gps'] = (int) ($r->mil_gps ?? 0); } $exportRows = []; @@ -94,7 +94,7 @@ class CountryReport implements FromView, ShouldAutoSize, WithDrawings, WithEvent $drawing2->setHeight(50); $drawing2->setOffsetX(5); $drawing2->setOffsetY(5); - $drawing2->setCoordinates('C1'); + $drawing2->setCoordinates('E1'); return [$drawing, $drawing2]; } diff --git a/app/Exports/V3/Mission/Report/Violation/ProvinceReport.php b/app/Exports/V3/Mission/Report/Violation/ProvinceReport.php index 4d1b02bf..a4251c64 100644 --- a/app/Exports/V3/Mission/Report/Violation/ProvinceReport.php +++ b/app/Exports/V3/Mission/Report/Violation/ProvinceReport.php @@ -29,12 +29,12 @@ class ProvinceReport implements FromView, ShouldAutoSize, WithDrawings, WithEven if ($cid === -1) { $province = [ 'city_name' => $name, - 'total_violations' => (int) ($r->total_violations ?? 0), - 'egdam_shode' => (int) ($r->egdam_shode ?? 0), - 'bedone_egdam' => (int) ($r->bedone_egdam ?? 0), - 'sabt_gps' => (int) ($r->sabt_gps ?? 0), + 'total' => (int) ($r->total ?? 0), + 'egdam_shode' => (int) ($r->done ?? 0), + 'bedone_egdam' => (int) ($r->undon ?? 0), + 'sabt_gps' => (int) ($r->gps ?? 0), 'sabt_herasat' => (int) ($r->herasat ?? 0), - + 'mil_gps' => (int) ($r->mil_gps ?? 0), ]; continue; @@ -45,13 +45,12 @@ class ProvinceReport implements FromView, ShouldAutoSize, WithDrawings, WithEven 'city_name' => $name, ]; } - - $grid[$cid]['total_violations'] = (int) ($r->total_violations ?? 0); - $grid[$cid]['egdam_shode'] = (int) ($r->egdam_shode ?? 0); - $grid[$cid]['bedone_egdam'] = (int) ($r->bedone_egdam ?? 0); - $grid[$cid]['sabt_gps'] = (int) ($r->sabt_gps ?? 0); - $grid[$cid]['sabt_herasat'] = (int) ($r->sabt_herasat ?? 0); - + $grid[$cid]['total'] = (int) ($r->total ?? 0); + $grid[$cid]['egdam_shode'] = (int) ($r->done ?? 0); + $grid[$cid]['bedone_egdam'] = (int) ($r->undone ?? 0); + $grid[$cid]['sabt_gps'] = (int) ($r->gps ?? 0); + $grid[$cid]['sabt_herasat'] = (int) ($r->herasat ?? 0); + $grid[$cid]['mil_gps'] = (int) ($r->mil_gps ?? 0); } $exportRows = []; @@ -99,7 +98,7 @@ class ProvinceReport implements FromView, ShouldAutoSize, WithDrawings, WithEven $drawing2->setHeight(50); $drawing2->setOffsetX(5); $drawing2->setOffsetY(5); - $drawing2->setCoordinates('C1'); + $drawing2->setCoordinates('E1'); return [$drawing, $drawing2]; } diff --git a/app/Services/Cartables/Mission/Report/ReportTradodService.php b/app/Services/Cartables/Mission/Report/ReportTradodService.php index 86520219..f975662d 100644 --- a/app/Services/Cartables/Mission/Report/ReportTradodService.php +++ b/app/Services/Cartables/Mission/Report/ReportTradodService.php @@ -28,62 +28,75 @@ class ReportTradodService { $from = $request->from_date ?? today()->startOfDay(); $to = Carbon::parse($request->to_date)->endOfDay() ?? today()->endOfDay(); - $sql = " - WITH r AS ( - SELECT - p.id AS province_id, - p.name_fa AS province_name, + SELECT* + FROM( + SELECT + 'کل کشور' AS province_name, + -1 AS province_id, + SUM(t.total) AS total, + SUM(t.khareg_mahdode) AS khareg_mahdode, + SUM(t.gps) AS gps, + SUM(t.durations) AS durations, + SUM(t.far_h) AS far_h, + SUM(t.far_d) AS far_d, + SUM(t.un_far_h) AS un_far_h, + SUM(t.un_far_d) AS un_far_d, + SUM(t.item) AS item, + SUM(t.patrol) AS patrol + FROM ( + SELECT + p.id AS province_id, + COUNT(m.id) AS total, + COALESCE(SUM(m.mission_duration != m.in_area_duration), 0) AS khareg_mahdode, + COALESCE(SUM(m.in_area_duration), 0) AS gps, + COALESCE(SUM(m.mission_duration), 0) AS durations, + COALESCE(SUM(CASE WHEN m.type = 1 THEN 1 ELSE 0 END), 0) AS far_h, + COALESCE(SUM(CASE WHEN m.type = 2 THEN 1 ELSE 0 END), 0) AS far_d, + COALESCE(SUM(CASE WHEN m.type = 3 THEN 1 ELSE 0 END), 0) AS un_far_h, + COALESCE(SUM(CASE WHEN m.type = 4 THEN 1 ELSE 0 END), 0) AS un_far_d, + COALESCE(SUM(CASE WHEN m.category_id = 1 THEN 1 ELSE 0 END), 0) AS item, + COALESCE(SUM(CASE WHEN m.category_id = 2 THEN 1 ELSE 0 END), 0) AS patrol + FROM provinces p + LEFT JOIN missions m + ON m.province_id = p.id + AND m.created_at >= :from_m + AND m.created_at <= :to_m + GROUP BY p.id + ) t - COUNT(DISTINCT m.id) AS total_missions, - SUM(CASE WHEN m.mission_duration != m.in_area_duration THEN 1 ELSE 0 END) AS taradod_khareg_mahdode, - SUM(CASE WHEN m.mission_status = 1 THEN 1 ELSE 0 END) AS bafarayand_saeti, - SUM(CASE WHEN m.mission_status = 2 THEN 1 ELSE 0 END) AS bafarayand_rozaneh, - SUM(CASE WHEN m.mission_status = 3 THEN 1 ELSE 0 END) AS bedon_bafarayand_saeti, - SUM(CASE WHEN m.mission_status = 4 THEN 1 ELSE 0 END) AS bedon_bafarayand_rozaneh, + UNION ALL - FROM provinces + SELECT + p.name_fa AS province_name, + p.id AS province_id, + COUNT(m.id) AS total, + COALESCE(SUM(m.mission_duration != m.in_area_duration), 0) AS khareg_mahdode, + COALESCE(SUM(m.in_area_duration), 0) AS gps, + COALESCE(SUM(m.mission_duration), 0) AS durations, + COALESCE(SUM(CASE WHEN m.type = 1 THEN 1 ELSE 0 END), 0) AS far_h, + COALESCE(SUM(CASE WHEN m.type = 2 THEN 1 ELSE 0 END), 0) AS far_d, + COALESCE(SUM(CASE WHEN m.type = 3 THEN 1 ELSE 0 END), 0) AS un_far_h, + COALESCE(SUM(CASE WHEN m.type = 4 THEN 1 ELSE 0 END), 0) AS un_far_d, + COALESCE(SUM(CASE WHEN m.category_id = 1 THEN 1 ELSE 0 END), 0) AS item, + COALESCE(SUM(CASE WHEN m.category_id = 2 THEN 1 ELSE 0 END), 0) AS patrol + FROM provinces p + LEFT JOIN missions m + ON m.province_id = p.id + AND m.created_at >= :from_m + AND m.created_at <= :to_m + GROUP BY p.id, p.name_fa + )q + ORDER BY + CASE WHEN province_id = -1 THEN 0 ELSE 1 END, + province_name; - LEFT JOIN missions m - ON m.province_id = p.id - AND m.created_at >= :from_m - AND m.created_at <= :to_m - - GROUP BY p.id, p.name_fa - ) - - SELECT - -1 AS province_id, - 'کل کشور' AS province_name, - SUM(total_missions) AS total_missions, - SUM(taradod_khareg_mahdode) AS taradod_khareg_mahdode, - SUM(bafarayand_saeti) AS bafarayand_saeti, - SUM(bafarayand_rozaneh) AS bafarayand_rozaneh, - SUM(bedon_bafarayand_saeti) AS bedon_bafarayand_saeti, - SUM(bedon_bafarayand_rozaneh) AS bedon_bafarayand_rozaneh - FROM r - - UNION ALL - - SELECT - province_id, - province_name, - total_missions, - taradod_khareg_mahdode, - bafarayand_saeti, - bafarayand_rozaneh, - bedon_bafarayand_saeti, - bedon_bafarayand_rozaneh - FROM r - - ORDER BY - CASE WHEN province_id = -1 THEN 0 ELSE 1 END, - province_name - "; + "; + return DB::select($sql, [ - 'from_mv' => $from, - 'to_mv' => $to, + 'from_m' => $from, + 'to_m' => $to, ]); } @@ -94,68 +107,87 @@ class ReportTradodService $to = Carbon::parse($request->to_date)->endOfDay() ?? today()->endOfDay(); $sql = " - WITH r AS ( - SELECT - c.id AS city_id, - c.name_fa AS city_name, - - COUNT(DISTINCT m.id) AS total_missions, - SUM(CASE WHEN m.mission_duration != m.in_area_duration THEN 1 ELSE 0 END) AS taradod_khareg_mahdode, - SUM(CASE WHEN m.mission_status = 1 THEN 1 ELSE 0 END) AS bafarayand_saeti, - SUM(CASE WHEN m.mission_status = 2 THEN 1 ELSE 0 END) AS bafarayand_rozaneh, - SUM(CASE WHEN m.mission_status = 3 THEN 1 ELSE 0 END) AS bedon_bafarayand_saeti, - SUM(CASE WHEN m.mission_status = 4 THEN 1 ELSE 0 END) AS bedon_bafarayand_rozaneh, - - FROM cities c - LEFT JOIN cmms_machines cm - ON cm.city_id = c.id - - LEFT JOIN missions m - ON m.province_id = p.id - AND m.created_at >= :from_m - AND m.created_at <= :to_m - - WHERE c.province_id = :province_id - AND ( - c.type_id = 1 - OR c.name_fa IN ('اداره ماشينآلات', 'اداره نقلیه') - ) - GROUP BY c.id, c.name_fa - ) - - SELECT - -1 AS city_id, - 'کل استان' AS city_name, - SUM(total_missions) AS total_missions, - SUM(taradod_khareg_mahdode) AS taradod_khareg_mahdode, - SUM(bafarayand_saeti) AS bafarayand_saeti, - SUM(bafarayand_rozaneh) AS bafarayand_rozaneh, - SUM(bedon_bafarayand_saeti) AS bedon_bafarayand_saeti, - SUM(bedon_bafarayand_rozaneh) AS bedon_bafarayand_rozaneh - FROM r - - UNION ALL - - SELECT - city_id, - city_name, - total_missions, - taradod_khareg_mahdode, - bafarayand_saeti, - bafarayand_rozaneh, - bedon_bafarayand_saeti, - bedon_bafarayand_rozaneh - FROM r - - ORDER BY - CASE WHEN city_id = -1 THEN 0 ELSE 1 END, - city_name - "; + SELECT* + FROM( + SELECT + 'کل استان' AS city_name, + -1 AS city_id, + SUM(t.total) AS total, + SUM(t.khareg_mahdode) AS khareg_mahdode, + SUM(t.gps) AS gps, + SUM(t.durations) AS durations, + SUM(t.far_h) AS far_h, + SUM(t.far_d) AS far_d, + SUM(t.un_far_h) AS un_far_h, + SUM(t.un_far_d) AS un_far_d, + SUM(t.item) AS item, + SUM(t.patrol) AS patrol + FROM ( + SELECT + c.id AS city_id, + + COUNT(m.id) AS total, + COALESCE(SUM(m.mission_duration != m.in_area_duration), 0) AS khareg_mahdode, + COALESCE(SUM(m.in_area_duration), 0) AS gps, + COALESCE(SUM(m.mission_duration), 0) AS durations, + COALESCE(SUM(m.type = 1), 0) AS far_h, + COALESCE(SUM(m.type = 2), 0) AS far_d, + COALESCE(SUM(m.type = 3), 0) AS un_far_h, + COALESCE(SUM(m.type = 4), 0) AS un_far_d, + COALESCE(SUM(m.category_id = 1), 0) AS item, + COALESCE(SUM(m.category_id = 2), 0) AS patrol + FROM cities c + LEFT JOIN missions m + ON m.city_id = c.id + AND m.created_at >= :from_m + AND m.created_at <= :to_m + WHERE c.province_id = :province_id + AND ( + c.type_id = 1 + OR c.name_fa IN ('اداره ماشينآلات', 'اداره نقلیه') + ) + GROUP BY c.id + ) t + + UNION ALL + + SELECT + c.name_fa AS city_name, + c.id AS city_id, + + COUNT(m.id) AS total, + COALESCE(SUM(m.mission_duration != m.in_area_duration), 0) AS khareg_mahdode, + COALESCE(SUM(m.in_area_duration), 0) AS gps, + COALESCE(SUM(m.mission_duration), 0) AS durations, + COALESCE(SUM(m.type = 1), 0) AS far_h, + COALESCE(SUM(m.type = 2), 0) AS far_d, + COALESCE(SUM(m.type = 3), 0) AS un_far_h, + COALESCE(SUM(m.type = 4), 0) AS un_far_d, + COALESCE(SUM(m.category_id = 1), 0) AS item, + COALESCE(SUM(m.category_id = 2), 0) AS patrol + + FROM cities c + LEFT JOIN missions m + ON m.city_id = c.id + AND m.created_at >= :from_m + AND m.created_at <= :to_m + WHERE c.province_id = :province_id + AND ( + c.type_id = 1 + OR c.name_fa IN ('اداره ماشينآلات', 'اداره نقلیه') + ) + GROUP BY c.id, c.name_fa + ) q + ORDER BY + CASE WHEN q.city_id = -1 THEN 0 ELSE 1 END, + q.city_name; + + "; return DB::select($sql, [ 'province_id' => $provinceId, - 'from_mv' => $from, - 'to_mv' => $to, + 'from_m' => $from, + 'to_m' => $to, ]); } } diff --git a/app/Services/Cartables/Mission/Report/ReportViolationService.php b/app/Services/Cartables/Mission/Report/ReportViolationService.php index 8f56dc65..278868fa 100644 --- a/app/Services/Cartables/Mission/Report/ReportViolationService.php +++ b/app/Services/Cartables/Mission/Report/ReportViolationService.php @@ -30,56 +30,59 @@ class ReportViolationService $to = Carbon::parse($request->to_date)->endOfDay() ?? today()->endOfDay(); $sql = " - WITH r AS ( - SELECT - p.id AS province_id, - p.name_fa AS province_name, - - COUNT(DISTINCT mv.id) AS total_violations, - SUM(CASE WHEN mv.status = 1 THEN 1 ELSE 0 END) AS egdam_shode, - SUM(CASE WHEN mv.status = 2 THEN 1 ELSE 0 END) AS bedone_egdam, - SUM(CASE WHEN mv.gps = 1 THEN 1 ELSE 0 END) AS sabt_gps, - SUM(CASE WHEN mv.gps = 0 THEN 1 ELSE 0 END) AS sabt_herasat - + SELECT* + FROM( + SELECT + 'کل کشور' AS province_name, + -1 AS province_id, + SUM(t.total) AS total, + SUM(t.done) AS done, + SUM(t.undone) AS undone, + SUM(t.gps) AS gps, + SUM(t.herasat) AS herasat, + SUM(t.mil_gps) AS mil_gps + FROM ( + SELECT + p.id AS province_id, + COUNT(mv.id) AS total, + COALESCE(SUM(CASE WHEN mv.status = 1 THEN 1 ELSE 0 END), 0) as done, + COALESCE(SUM(CASE WHEN mv.status = 0 THEN 1 ELSE 0 END), 0) as undone, + COALESCE(SUM(CASE WHEN gps = 1 THEN 1 ELSE 0 END), 0) as gps, + COALESCE(SUM(CASE WHEN gps = 0 THEN 1 ELSE 0 END), 0) as herasat, + COALESCE(SUM(CASE WHEN gps = 1 THEN mileage ELSE 0 END),0) as mil_gps FROM provinces p - - LEFT JOIN cmms_machines cm - ON cm.province_id = p.id - LEFT JOIN mission_violations mv - ON TRIM(cm.machine_code) = TRIM(mv.machine_code) + ON mv.province_id = p.id AND mv.type = 1 AND mv.created_at >= :from_mv AND mv.created_at <= :to_mv - - GROUP BY p.id, p.name_fa - ) - + GROUP BY p.id + ) t + + UNION ALL + SELECT - -1 AS province_id, - 'کل کشور' AS province_name, - SUM(total_violations) AS total_violations, - SUM(egdam_shode) AS egdam_shode, - SUM(bedone_egdam) AS bedone_egdam, - SUM(sabt_gps) AS sabt_gps, - SUM(sabt_herasat) AS sabt_herasat - FROM r - - UNION ALL - - SELECT - province_id, - province_name, - total_violations, - egdam_shode, - bedone_egdam, - sabt_gps, - sabt_herasat - FROM r - + p.name_fa AS province_name, + p.id AS province_id, + COUNT(mv.id) AS total, + COALESCE(SUM(CASE WHEN mv.status = 1 THEN 1 ELSE 0 END), 0) as done, + COALESCE(SUM(CASE WHEN mv.status = 0 THEN 1 ELSE 0 END), 0) as undone, + COALESCE(SUM(CASE WHEN gps = 1 THEN 1 ELSE 0 END), 0) as gps, + COALESCE(SUM(CASE WHEN gps = 0 THEN 1 ELSE 0 END), 0) as herasat, + COALESCE(SUM(CASE WHEN gps = 1 THEN mileage ELSE 0 END),0) as mil_gps + + FROM provinces p + LEFT JOIN mission_violations mv + ON mv.province_id = p.id + AND mv.type = 1 + AND mv.created_at >= :from_mv + AND mv.created_at <= :to_mv + GROUP BY p.id, p.name_fa + )q ORDER BY - CASE WHEN province_id = -1 THEN 0 ELSE 1 END, - province_name + CASE WHEN province_id = -1 THEN 0 ELSE 1 END, + province_name; + "; return DB::select($sql, [ @@ -95,60 +98,68 @@ class ReportViolationService $to = Carbon::parse($request->to_date)->endOfDay() ?? today()->endOfDay(); $sql = " - WITH r AS ( - SELECT - c.id AS city_id, - c.name_fa AS city_name, + SELECT* + FROM( + SELECT + 'کل استان' AS city_name, + -1 AS city_id, + SUM(t.total) AS total, + SUM(t.done) AS done, + SUM(t.undone) AS undone, + SUM(t.gps) AS gps, + SUM(t.herasat) AS herasat, + SUM(t.mil_gps) AS mil_gps + FROM ( + SELECT + c.id AS city_id, + COUNT(mv.id) AS total, + COALESCE(SUM(mv.status = 1), 0) AS done, + COALESCE(SUM(mv.status = 0), 0) AS undone, + COALESCE(SUM(mv.gps = 1), 0) AS gps, + COALESCE(SUM(mv.gps = 0), 0) AS herasat, + COALESCE(SUM(CASE WHEN mv.gps = 1 THEN mv.mileage ELSE 0 END), 0) AS mil_gps + FROM cities c + LEFT JOIN mission_violations mv + ON mv.city_id = c.id + AND mv.type = 1 + AND mv.created_at >= :from_mv + AND mv.created_at <= :to_mv + WHERE c.province_id = :province_id + AND ( + c.type_id = 1 + OR c.name_fa IN ('اداره ماشينآلات', 'اداره نقلیه') + ) + GROUP BY c.id + ) t + + UNION ALL + + SELECT + c.name_fa AS city_name, + c.id AS city_id, + COUNT(mv.id) AS total, + COALESCE(SUM(mv.status = 1), 0) AS done, + COALESCE(SUM(mv.status = 0), 0) AS undone, + COALESCE(SUM(mv.gps = 1), 0) AS gps, + COALESCE(SUM(mv.gps = 0), 0) AS herasat, + COALESCE(SUM(CASE WHEN mv.gps = 1 THEN mv.mileage ELSE 0 END), 0) AS mil_gps + FROM cities c + LEFT JOIN mission_violations mv + ON mv.city_id = c.id + AND mv.type = 1 + AND mv.created_at >= :from_mv + AND mv.created_at <= :to_mv + WHERE c.province_id = :province_id + AND ( + c.type_id = 1 + OR c.name_fa IN ('اداره ماشينآلات', 'اداره نقلیه') + ) + GROUP BY c.id, c.name_fa + ) q + ORDER BY + CASE WHEN q.city_id = -1 THEN 0 ELSE 1 END, + q.city_name; - COUNT(DISTINCT mv.id) AS total_violations, - SUM(CASE WHEN mv.status = 1 THEN 1 ELSE 0 END) AS egdam_shode, - SUM(CASE WHEN mv.status = 2 THEN 1 ELSE 0 END) AS bedone_egdam, - SUM(CASE WHEN mv.gps = 1 THEN 1 ELSE 0 END) AS sabt_gps, - SUM(CASE WHEN mv.gps = 0 THEN 1 ELSE 0 END) AS sabt_herasat - - FROM cities c - LEFT JOIN cmms_machines cm - ON cm.city_id = c.id - - LEFT JOIN mission_violations mv - ON TRIM(cm.machine_code) = TRIM(mv.machine_code) - AND mv.type = 1 - AND mv.created_at >= :from_mv - AND mv.created_at <= :to_mv - - WHERE c.province_id = :province_id - AND ( - c.type_id = 1 - OR c.name_fa IN ('اداره ماشينآلات', 'اداره نقلیه') - ) - GROUP BY c.id, c.name_fa - ) - - SELECT - -1 AS city_id, - 'کل استان' AS city_name, - SUM(total_violations) AS total_violations, - SUM(egdam_shode) AS egdam_shode, - SUM(bedone_egdam) AS bedone_egdam, - SUM(sabt_gps) AS sabt_gps, - SUM(sabt_herasat) AS sabt_herasat - FROM r - - UNION ALL - - SELECT - city_id, - city_name, - total_violations, - egdam_shode, - bedone_egdam, - sabt_gps, - sabt_herasat - FROM r - - ORDER BY - CASE WHEN city_id = -1 THEN 0 ELSE 1 END, - city_name "; return DB::select($sql, [ diff --git a/resources/views/v3/Reports/Mission/Report/CountryActivityReport.blade.php b/resources/views/v3/Reports/Mission/Report/CountryActivityReport.blade.php index dbf58e31..2dbe9f08 100644 --- a/resources/views/v3/Reports/Mission/Report/CountryActivityReport.blade.php +++ b/resources/views/v3/Reports/Mission/Report/CountryActivityReport.blade.php @@ -68,6 +68,10 @@ style="text-align: center;border: 1px solid black;background-color: #EBF1DE;font-weight: bold;"> ثبت حراست +