diff --git a/src/main/java/com/gcc/commissionerreview/configuration/DataSourceConfig.java b/src/main/java/com/gcc/commissionerreview/configuration/DataSourceConfig.java index 01ba3fa..c9a97ae 100644 --- a/src/main/java/com/gcc/commissionerreview/configuration/DataSourceConfig.java +++ b/src/main/java/com/gcc/commissionerreview/configuration/DataSourceConfig.java @@ -157,4 +157,15 @@ public class DataSourceConfig { return dataSource; } + ////////////////////////////// Bulk Waste ///////////////// + @Bean(name = "mysqlBulkWasteDataSource") + public DataSource mysqlBulkWasteDataSource() { + DriverManagerDataSource dataSource = new DriverManagerDataSource(); + dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); + dataSource.setUrl("jdbc:mysql://" + host + "/bulk_waste"); + dataSource.setUsername("root"); + dataSource.setPassword(dbpassword); + return dataSource; + } + } diff --git a/src/main/java/com/gcc/commissionerreview/controller/BulkWasteApicontroller.java b/src/main/java/com/gcc/commissionerreview/controller/BulkWasteApicontroller.java new file mode 100644 index 0000000..bc94a20 --- /dev/null +++ b/src/main/java/com/gcc/commissionerreview/controller/BulkWasteApicontroller.java @@ -0,0 +1,124 @@ +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; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.*; + +@RestController +@RequestMapping("/commissionerreview/api/bulkwaste") +public class BulkWasteApicontroller { + + @Autowired + private BulkWasteService gcservice; + + @GetMapping("/getZoneReport") + public Map getabscount(@RequestParam(required = false) String startDate, + @RequestParam(required = false) String endDate, + @RequestParam(required = false) String category) + { + + Map response = new HashMap<>(); + + try { + List> data = gcservice.getabscount(startDate, endDate,category); + + response.put("data", data); + response.put("message", "Zone-wise abstract report"); + response.put("status", "Success"); + + } catch (Exception e) { + e.printStackTrace(); + + response.put("data", Collections.emptyList()); + response.put("message", "Failed to fetch abstract report"); + response.put("status", "Error"); + } + + return response; + } + + + @GetMapping("/getWardDetailsByZone") + public Map getWardDetailsByZone(@RequestParam(required = true) String zone, + @RequestParam(required = false) String startDate, + @RequestParam(required = false) String endDate, + @RequestParam(required = false) String category) + { + + Map response = new HashMap<>(); + + try { + List> data = gcservice.getWardDetailsByZone(zone,startDate,endDate,category); + + response.put("data", data); + response.put("message", "Ward-wise abstract report"); + response.put("status", "Success"); + + } catch (Exception e) { + e.printStackTrace(); + + response.put("data", Collections.emptyList()); + response.put("message", "Failed to fetch abstract report"); + response.put("status", "Error"); + } + + return response; + } + + @GetMapping("/getEstabllishmentDetailsByZoneWard") + public Map getEstabllishmentDetailsByZoneWard( + @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.getEstabllishmentDetailsByZoneWard( zone, ward, startDate, endDate, category); + + response.put("data", data); + response.put("message", "Category wise report"); + response.put("status", "Success"); + + } catch (Exception e) { + + e.printStackTrace(); + + response.put("data", Collections.emptyList()); + response.put("message", "Failed to fetch report"); + response.put("status", "Error"); + } + + return response; + } + + @GetMapping("/getCategoryList") + public List> getCategoryList() { + + List> list = gcservice.getCategoryList(); + + Map res = new HashMap<>(); + + if (list != null && !list.isEmpty()) { + res.put("status", "Success"); + res.put("data", list); + } else { + res.put("status", "Fail"); + res.put("data", new ArrayList<>()); + } + + return List.of(res); + } + + +} diff --git a/src/main/java/com/gcc/commissionerreview/controller/MainController.java b/src/main/java/com/gcc/commissionerreview/controller/MainController.java index a79dc06..ec1f084 100644 --- a/src/main/java/com/gcc/commissionerreview/controller/MainController.java +++ b/src/main/java/com/gcc/commissionerreview/controller/MainController.java @@ -291,4 +291,9 @@ public class MainController { return "modules/greencommittee/gcreport"; } + @GetMapping("/bulkwaste") + public String bulkwastereport(Model model) { + return "modules/bulkwaste/bulkwastereport"; + } + } diff --git a/src/main/java/com/gcc/commissionerreview/service/BulkWasteService.java b/src/main/java/com/gcc/commissionerreview/service/BulkWasteService.java new file mode 100644 index 0000000..dd1509a --- /dev/null +++ b/src/main/java/com/gcc/commissionerreview/service/BulkWasteService.java @@ -0,0 +1,191 @@ +package com.gcc.commissionerreview.service; + +import com.gcc.commissionerreview.configuration.AppConfig; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +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; + +@Service +public class BulkWasteService { + + + @Autowired + private JdbcTemplate jdbcTemplate; + @Autowired + private Environment environment; + + @Autowired + private AppConfig appConfig; + + @Autowired + @Value("${fileBaseUrl}") + + private String fileBaseUrl; + + public BulkWasteService(Environment environment) { + + this.environment = environment; + + this.fileBaseUrl = environment.getProperty("fileBaseUrl"); + } + + @Autowired + public void setFeedbackDataSource(@Qualifier("mysqlBulkWasteDataSource") DataSource dataSource) { + this.jdbcTemplate = new JdbcTemplate(dataSource); + } + + 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, + String endDate, + String category) { + + StringBuilder sql = new StringBuilder( + "SELECT z.zone_name, w.ward_name, " + + "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 = ? " + + "LEFT JOIN bulk_waste_request bw " + + "ON bw.ward_id = w.ward_name " + + "AND bw.is_active = 1 " + + "WHERE w.is_active = 1 " + ); + + List params = new ArrayList<>(); + params.add(zone); + + 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 w.ward_name " + + " ORDER BY w.ward_name " + ); + + return jdbcTemplate.queryForList(sql.toString(), params.toArray()); + } + + public List> getEstabllishmentDetailsByZoneWard( + String zone, + String ward, + String startDate, + String endDate, + 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 = ? " + + + "CROSS JOIN category_master cm " + + + " JOIN bulk_waste_request bw " + + "ON bw.ward_id = w.ward_name " + + "AND bw.category_id = cm.category_id " + + "AND bw.is_active = 1 " + ); + + List params = new ArrayList<>(); + + params.add(zone); + 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( + " GROUP BY z.zone_name, w.ward_name, cm.category_name " + + " ORDER BY w.ward_name, cm.category_name " + ); + + return jdbcTemplate.queryForList(sql.toString(), params.toArray()); + } + + public List> getCategoryList() { + + String sql = """ + SELECT category_id, category_name + FROM category_master + WHERE is_active = 1 + ORDER BY category_name + """; + + return jdbcTemplate.queryForList(sql); + } + +} diff --git a/src/main/resources/templates/modules/bulkwaste/bulkwastereport.html b/src/main/resources/templates/modules/bulkwaste/bulkwastereport.html new file mode 100644 index 0000000..bb72dab --- /dev/null +++ b/src/main/resources/templates/modules/bulkwaste/bulkwastereport.html @@ -0,0 +1,823 @@ + + + + Bul Waste Report + + + + + + + + + + + + + + +
+

Bulk Waste - Zonewise Report

+
+ +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + + + +
+ +
+ +
+ + +
+ +
+ + + + + +
+ +
+ +
+ + +
+ + + + + + + + + + + + + + + + + +
ZonesTotal Request
TOTAL
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file