From 9bebb372867f49d50a82954e9757b8bfdfcae6c4 Mon Sep 17 00:00:00 2001 From: AJITHKUMAR12 Date: Sat, 7 Feb 2026 16:03:54 +0530 Subject: [PATCH] changed logic for count in bulk booking concept and add status WAITING_FOR_NOC_APPROVAL for hall booking details --- .../service/VphService.java | 148 +++++++++++++++--- 1 file changed, 122 insertions(+), 26 deletions(-) diff --git a/src/main/java/com/gcc/commissionerreview/service/VphService.java b/src/main/java/com/gcc/commissionerreview/service/VphService.java index 3b4b22b..421d4da 100644 --- a/src/main/java/com/gcc/commissionerreview/service/VphService.java +++ b/src/main/java/com/gcc/commissionerreview/service/VphService.java @@ -97,7 +97,7 @@ public class VphService { FROM booking_details bd LEFT JOIN hall_details hd ON bd.hall_details_hall_id=hd.hall_id LEFT JOIN users us ON bd.users_user_id=us.user_id - WHERE bd.booking_status IN ('WAITING_FOR_NOC','APPROVED') + WHERE bd.booking_status IN ('WAITING_FOR_NOC','APPROVED','WAITING_FOR_NOC_APPROVAL') AND DATE(bd.booking_date) BETWEEN '2026-01-01' AND CURDATE() ORDER BY bd.booking_date """; @@ -116,7 +116,7 @@ public class VphService { FROM booking_details bd LEFT JOIN hall_details hd ON bd.hall_details_hall_id=hd.hall_id LEFT JOIN users us ON bd.users_user_id=us.user_id - WHERE bd.booking_status IN ('WAITING_FOR_NOC','APPROVED') + WHERE bd.booking_status IN ('WAITING_FOR_NOC','APPROVED','WAITING_FOR_NOC_APPROVAL') AND DATE(bd.booking_date) BETWEEN '2026-01-01' AND CURDATE() ORDER BY bd.booking_date """; @@ -387,9 +387,9 @@ public class VphService { - SELECT + SELECT d.bookingDate, - COALESCE(r.totalBookingCount,0) AS totalBookingCount, + COALESCE(r.totalBookingCount,0) AS totalBookingCount, d.Adult, d.Children, @@ -406,51 +406,147 @@ public class VphService { FROM ( - -- Visitor counts from visitor_count_details + SELECT DATE(rd.visit_date) AS bookingDate, + COALESCE(SUM( + CASE + WHEN vac.user_type = 'Adult ' THEN + CASE + WHEN rd.bulk_ref_id IS NULL + THEN vcd.no_of_people + ELSE bvcd.no_of_people + END + END + ),0) AS Adult, + + COALESCE(SUM( + CASE + WHEN vac.user_type = 'Children [ below 10 year]' THEN + CASE + WHEN rd.bulk_ref_id IS NULL + THEN vcd.no_of_people + ELSE bvcd.no_of_people + END + END + ),0) AS Children, + + COALESCE(SUM( + CASE + WHEN vac.user_type = 'Senior Citizen [above 60+]' THEN + CASE + WHEN rd.bulk_ref_id IS NULL + THEN vcd.no_of_people + ELSE bvcd.no_of_people + END + END + ),0) AS SeniorCitizen, + + COALESCE(SUM( + CASE + WHEN vac.user_type = 'Students' THEN + CASE + WHEN rd.bulk_ref_id IS NULL + THEN vcd.no_of_people + ELSE bvcd.no_of_people + END + END + ),0) AS Students, + + COALESCE(SUM( + CASE + WHEN vac.user_type = 'Foreigner' THEN + CASE + WHEN rd.bulk_ref_id IS NULL + THEN vcd.no_of_people + ELSE bvcd.no_of_people + END + END + ),0) AS Foreigner, + + COALESCE(SUM( + CASE + WHEN vac.user_type = 'Physically challeged' THEN + CASE + WHEN rd.bulk_ref_id IS NULL + THEN vcd.no_of_people + ELSE bvcd.no_of_people + END + END + ),0) AS PhysicallyChallenged, - COALESCE(SUM(CASE WHEN vac.user_type='Adult ' THEN vcd.no_of_people END),0) AS Adult, - COALESCE(SUM(CASE WHEN vac.user_type='Children [ below 10 year]' THEN vcd.no_of_people END),0) AS Children, - COALESCE(SUM(CASE WHEN vac.user_type='Senior Citizen [above 60+]' THEN vcd.no_of_people END),0) AS SeniorCitizen, - COALESCE(SUM(CASE WHEN vac.user_type='Students' THEN vcd.no_of_people END),0) AS Students, - COALESCE(SUM(CASE WHEN vac.user_type='Foreigner' THEN vcd.no_of_people END),0) AS Foreigner, - COALESCE(SUM(CASE WHEN vac.user_type='Physically challeged' THEN vcd.no_of_people END),0) AS PhysicallyChallenged, - COALESCE(SUM(vcd.no_of_people),0) AS TotalCount, + COALESCE(SUM( + CASE + WHEN rd.bulk_ref_id IS NULL + THEN vcd.no_of_people + ELSE bvcd.no_of_people + END + ),0) AS TotalCount, COALESCE(SUM( CASE - WHEN rd.entry_status IS NULL THEN vcd.no_of_people + WHEN rd.entry_status IS NULL THEN + CASE + WHEN rd.bulk_ref_id IS NULL + THEN vcd.no_of_people + ELSE bvcd.no_of_people + END ELSE 0 END ),0) AS NotVisitedCount FROM reg_details rd - LEFT JOIN visitor_count_details vcd ON rd.ref_id = vcd.ref_id - LEFT JOIN visit_amount_config vac ON vcd.user_type_id = vac.id + + LEFT JOIN visitor_count_details vcd + ON rd.ref_id = vcd.ref_id + + /* Bulk Visitors */ + LEFT JOIN bulk_visitor_count_details bvcd + ON rd.bulk_ref_id = bvcd.ref_id + + /* Config Match for Both Normal + Bulk */ + LEFT JOIN visit_amount_config vac + ON ( + (rd.bulk_ref_id IS NULL AND vcd.user_type_id = vac.id) + OR (rd.bulk_ref_id IS NOT NULL AND bvcd.user_type_id = vac.id) + ) + WHERE rd.booking_flag = 'B' - AND DATE(rd.visit_date) BETWEEN ? AND ? + AND DATE(rd.visit_date) BETWEEN ? AND ? + GROUP BY DATE(rd.visit_date) + ) d + + /* ----------------------------- + Booking Summary Counts + ------------------------------*/ LEFT JOIN ( - -- Accepted / Rejected from reg_details ONLY SELECT - DATE(visit_date) AS bookingDate, - COUNT(DISTINCT ref_id) AS totalBookingCount, - SUM(accepted_people) AS accepted_people, - SUM(rejected_people) AS rejected_people - FROM reg_details - WHERE booking_flag = 'B' - AND DATE(visit_date) BETWEEN ? AND ? - GROUP BY DATE(visit_date) + DATE(rd.visit_date) AS bookingDate, + + COUNT(DISTINCT rd.ref_id) AS totalBookingCount, + + SUM(rd.accepted_people) AS accepted_people, + SUM(rd.rejected_people) AS rejected_people + + FROM reg_details rd + + WHERE rd.booking_flag = 'B' + AND DATE(rd.visit_date) BETWEEN ? AND ? + + GROUP BY DATE(rd.visit_date) + ) r ON d.bookingDate = r.bookingDate + ORDER BY d.bookingDate; - """; + + """; return jdbcTemplate.queryForList(sql, resolveFromDate(fromDate), resolveToDate(toDate),