diff --git a/src/main/java/com/gcc/commissionerreview/controller/BulkWasteApicontroller.java b/src/main/java/com/gcc/commissionerreview/controller/BulkWasteApicontroller.java index bc94a20..cf05654 100644 --- a/src/main/java/com/gcc/commissionerreview/controller/BulkWasteApicontroller.java +++ b/src/main/java/com/gcc/commissionerreview/controller/BulkWasteApicontroller.java @@ -1,7 +1,6 @@ package com.gcc.commissionerreview.controller; import com.gcc.commissionerreview.service.BulkWasteService; -import com.gcc.commissionerreview.service.GreenCommitteeService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -102,6 +101,43 @@ public class BulkWasteApicontroller { return response; } + @GetMapping("/getRequestDetailsByZoneWard") + public Map getRequestDetailsByZoneWard( + @RequestParam String zone, + @RequestParam String ward, + @RequestParam(required = false) String startDate, + @RequestParam(required = false) String endDate, + @RequestParam(required = false) String category) { + + Map response = new HashMap<>(); + + try { + + List> data = + gcservice.getRequestDetailsByZoneWard( + zone, + ward, + startDate, + endDate, + category + ); + + response.put("data", data); + response.put("message", "Request details fetched successfully"); + response.put("status", "Success"); + + } catch (Exception e) { + + e.printStackTrace(); + + response.put("data", Collections.emptyList()); + response.put("message", "Failed to fetch request details"); + response.put("status", "Error"); + } + + return response; + } + @GetMapping("/getCategoryList") public List> getCategoryList() { @@ -119,6 +155,17 @@ public class BulkWasteApicontroller { return List.of(res); } - + + @GetMapping("/getMinDate") + public Map getMinDate() { + + String date = gcservice.getMinDate(); + + Map map = new HashMap<>(); + map.put("status","Success"); + map.put("date",date); + + return map; + } } diff --git a/src/main/java/com/gcc/commissionerreview/service/BulkWasteService.java b/src/main/java/com/gcc/commissionerreview/service/BulkWasteService.java index dd1509a..f4edc28 100644 --- a/src/main/java/com/gcc/commissionerreview/service/BulkWasteService.java +++ b/src/main/java/com/gcc/commissionerreview/service/BulkWasteService.java @@ -7,11 +7,11 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.core.env.Environment; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; -import org.springframework.web.bind.annotation.RequestParam; import javax.sql.DataSource; -import java.util.*; -import java.util.stream.Collectors; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; @Service public class BulkWasteService { @@ -31,9 +31,7 @@ public class BulkWasteService { private String fileBaseUrl; public BulkWasteService(Environment environment) { - this.environment = environment; - this.fileBaseUrl = environment.getProperty("fileBaseUrl"); } @@ -42,21 +40,20 @@ public class BulkWasteService { this.jdbcTemplate = new JdbcTemplate(dataSource); } - public List> getabscount(String startDate, String endDate,String category) { + public List> getabscount(String startDate, String endDate, String category) { StringBuilder sql = new StringBuilder( "SELECT z.zone_name, " + "COALESCE(COUNT(DISTINCT bw.request_id), 0) AS total_requests " + "FROM zones z " + - "LEFT JOIN bulk_waste_request bw " + - "ON bw.zone_id = z.zone_name " + - "AND bw.is_active = 1 " + - "WHERE z.is_active = 1 " + - "AND z.is_delete = 0 " + + "LEFT JOIN bulk_waste_request bw ON bw.zone_id = z.zone_name " + + "AND bw.is_active = 1 " ); List params = new ArrayList<>(); + // ✅ move filter into JOIN if (startDate != null && !startDate.isEmpty()) { sql.append(" AND DATE(bw.cdate) >= ? "); params.add(startDate); @@ -68,18 +65,59 @@ public class BulkWasteService { } if (category != null && !category.isEmpty()) { - sql.append(" AND bw.category_id= ? "); + sql.append(" AND bw.category_id = ? "); params.add(category); } sql.append( - " GROUP BY z.zone_name " + + " WHERE z.is_active = 1 " + + " AND z.is_delete = 0 " + + " GROUP BY z.zone_name " + " ORDER BY z.zone_name " ); return jdbcTemplate.queryForList(sql.toString(), params.toArray()); } +// +// public List> getabscount(String startDate, String endDate,String category) { +// +// StringBuilder sql = new StringBuilder( +// "SELECT z.zone_name, " + +// "COALESCE(COUNT(DISTINCT bw.request_id), 0) AS total_requests " + +// "FROM zones z " + +// "LEFT JOIN bulk_waste_request bw " + +// "ON bw.zone_id = z.zone_name " + +// "AND bw.is_active = 1 " + +// "WHERE z.is_active = 1 " + +// "AND z.is_delete = 0 " +// ); +// +// List params = new ArrayList<>(); +// +// if (startDate != null && !startDate.isEmpty()) { +// sql.append(" AND DATE(bw.cdate) >= ? "); +// params.add(startDate); +// } +// +// if (endDate != null && !endDate.isEmpty()) { +// sql.append(" AND DATE(bw.cdate) <= ? "); +// params.add(endDate); +// } +// +// if (category != null && !category.isEmpty()) { +// sql.append(" AND bw.category_id= ? "); +// params.add(category); +// } +// +// sql.append( +// " GROUP BY z.zone_name " + +// " ORDER BY z.zone_name " +// ); +// +// return jdbcTemplate.queryForList(sql.toString(), params.toArray()); +// } + public List> getWardDetailsByZone( String zone, String startDate, @@ -131,21 +169,18 @@ public class BulkWasteService { String category) { StringBuilder sql = new StringBuilder( - "SELECT z.zone_name, w.ward_name, cm.category_name, " + - "COALESCE(COUNT(bw.request_id),0) AS total_requests " + - - "FROM wards w " + - "JOIN zones z ON z.id = w.zone_id " + - "AND z.zone_name = ? " + - "AND w.ward_name = ? " + + "SELECT z.zone_name, w.ward_name, cm.category_name,cm.category_id, " + + "COALESCE(COUNT(DISTINCT bw.request_id), 0) AS total_requests " + + "FROM wards w " + + "JOIN zones z ON z.id = w.zone_id " + + "AND z.zone_name = ? AND w.ward_name = ? " + - "CROSS JOIN category_master cm " + + "JOIN bulk_waste_request bw ON bw.ward_id = w.ward_name " + + "AND bw.is_active = 1 " + - " JOIN bulk_waste_request bw " + - "ON bw.ward_id = w.ward_name " + - "AND bw.category_id = cm.category_id " + - "AND bw.is_active = 1 " + "JOIN category_master cm " + + "ON cm.category_id = bw.category_id " ); List params = new ArrayList<>(); @@ -164,15 +199,66 @@ public class BulkWasteService { } if (category != null && !category.isEmpty()) { - sql.append(" AND bw.category_id= ? "); + sql.append(" AND bw.category_id = ? "); params.add(category); } sql.append( - " GROUP BY z.zone_name, w.ward_name, cm.category_name " + - " ORDER BY w.ward_name, cm.category_name " + " GROUP BY z.zone_name, w.ward_name, cm.category_name ,cm.category_id" + ); + + sql.append( + " ORDER BY cm.category_name " + ); + + return jdbcTemplate.queryForList(sql.toString(), params.toArray()); + } + + public List> getRequestDetailsByZoneWard( + String zone, + String ward, + String startDate, + String endDate, + String category) { + +// System.out.println("category=="+category); + + StringBuilder sql = new StringBuilder( + + "SELECT *, c.category_name," + + "CONCAT('" + fileBaseUrl + "/gccofficialapp/files', bw.waste_audit_report_file) AS waste_audit_report_file_live, " + + "CONCAT('" + fileBaseUrl + "/gccofficialapp/files', bw.installed_unit_photo_file) AS installed_unit_photo_file_live " + + "FROM bulk_waste_request bw " + + "join category_master c on c.category_id = bw.category_id " + + "WHERE bw.is_active = 1 " ); + List params = new ArrayList<>(); + + sql.append(" AND bw.zone_id = ? "); + params.add(zone); + + sql.append(" AND bw.ward_id = ? "); + params.add(ward); + + + if (startDate != null && !startDate.isEmpty()) { + sql.append(" AND DATE(bw.cdate) >= ? "); + params.add(startDate); + } + + if (endDate != null && !endDate.isEmpty()) { + sql.append(" AND DATE(bw.cdate) <= ? "); + params.add(endDate); + } + + if (category != null && !category.isEmpty() ) { + sql.append(" AND bw.category_id = ? "); + params.add(category); + } + + sql.append(" ORDER BY bw.request_id DESC "); + return jdbcTemplate.queryForList(sql.toString(), params.toArray()); } @@ -187,5 +273,16 @@ public class BulkWasteService { return jdbcTemplate.queryForList(sql); } - + + public String getMinDate() { + + String sql = """ + SELECT DATE(MIN(cdate)) + FROM bulk_waste_request + WHERE is_active = 1 + """; + + return jdbcTemplate.queryForObject(sql, String.class); + } } + diff --git a/src/main/resources/templates/modules/bulkwaste/bulkwastereport.html b/src/main/resources/templates/modules/bulkwaste/bulkwastereport.html index bb72dab..37c8b40 100644 --- a/src/main/resources/templates/modules/bulkwaste/bulkwastereport.html +++ b/src/main/resources/templates/modules/bulkwaste/bulkwastereport.html @@ -1,7 +1,7 @@ - Bul Waste Report + Bulk Waste Report @@ -180,7 +180,7 @@ @@ -201,8 +201,8 @@ - - + + @@ -231,9 +231,9 @@
ZonesTotal RequestZoneTotal Requests Received
- - - + + + @@ -273,8 +273,8 @@ - - + + @@ -288,11 +288,27 @@ + - - - - +
ZonesWardsTotal RequestZoneWardTotal Requests Received
Zone WardCategoryRequest IdEstablishment TypeTotal Requests Received