diff --git a/gcc_officer_portal/src/main/java/in/gov/chennaicorporation/gccoffice/greencommittee/controller/PendinglistApicontroller.java b/gcc_officer_portal/src/main/java/in/gov/chennaicorporation/gccoffice/greencommittee/controller/PendinglistApicontroller.java index 06eae555..9739a804 100644 --- a/gcc_officer_portal/src/main/java/in/gov/chennaicorporation/gccoffice/greencommittee/controller/PendinglistApicontroller.java +++ b/gcc_officer_portal/src/main/java/in/gov/chennaicorporation/gccoffice/greencommittee/controller/PendinglistApicontroller.java @@ -24,160 +24,159 @@ public class PendinglistApicontroller { @Autowired private PendinglistService pendinglistService; - - + @GetMapping("/getzones") - public List> ViewZoneDropdown() { - - return pendinglistService.ViewZoneDropdown(); - - } - - @GetMapping("/getwardbyzone") - public List> ViewWardDropdown(@RequestParam String zone) { - - return pendinglistService.ViewWardDropdown(zone); - - } - - @GetMapping("/dropdown-Event") - public ResponseEntity>> ViewDropdownEvent() { - try { - List> result = pendinglistService.ViewDropdownEvent(); - return ResponseEntity.ok(result); - } catch (Exception e) { - Map error = new HashMap<>(); - error.put("error", "Unable to fetch event list"); - error.put("details", e.getMessage()); - return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) - .body(Collections.singletonList(error)); - } - } - -// @GetMapping("/getgreencommitteelist") -// public List> getgreencommitteelist(@RequestParam String date, -// @RequestParam String zones) { -// -// List refnums = pendinglistService.getrefnums(date, zones); -// //System.out.println("refnums="+refnums); -// List> savedids=pendinglistService.getvcsavedrefids(); -// //System.err.println("savedids="+savedids); -// // Convert to List -// List savedRefIds = savedids.stream() -// .map(m -> m.get("ref_id").toString()) -// .toList(); -// -// //System.out.println("savedRefIds=" + savedRefIds); -// -// List> finalList = new ArrayList<>(); -// -// if (refnums.isEmpty()) { -// return Collections.emptyList(); -// } -// -// // REMOVE already saved ref_ids -// List filteredRefIds = refnums.stream() -// .filter(ref -> !savedRefIds.contains(ref)) -// .toList(); -// -// //System.out.println("filteredRefIds="+filteredRefIds); -// -// for (String ref : filteredRefIds) { -// Map data = pendinglistService.getlistdata(ref); -// if (data != null && !data.isEmpty()) { -// finalList.add(data); -// } -// } -// -// return finalList; -// } - - - @GetMapping("/getgreencommitteelist") - public List> getgreencommitteelist( - @RequestParam String date, @RequestParam String zones) { - - List> refnums = pendinglistService.getrefnums(date, zones); - System.out.println("refnums="+refnums); - List> savedIds = pendinglistService.getvcsavedrefids(); - System.out.println("savedIds="+savedIds); - // Convert savedIds → List - List savedRefList = new ArrayList<>(); - for (Map m : savedIds) { - savedRefList.add(m.get("ref_id").toString()); - } - - List> finalList = new ArrayList<>(); - - for (Map row : refnums) { - - String refId = row.get("ref_id").toString(); - Integer inspReinsId = row.get("latest_reinspection_id") != null ? - Integer.parseInt(row.get("latest_reinspection_id").toString()) - : null; - - // Skip if already committee decided - if (savedRefList.contains(refId)) continue; - - // Get reinspection latest id - Integer dbLatest = pendinglistService.getLatestReinspectionId(refId); - - // Rule: if inspection reinspection ID is NULL but in DB exists → skip - if (inspReinsId == null && dbLatest != null) continue; - - // Rule: if BOTH exist AND not equal → skip - if (inspReinsId != null && dbLatest != null && !inspReinsId.equals(dbLatest)) - continue; - - // 👍 Valid, add final data - Map data = pendinglistService.getlistdata(refId); - if (data != null && !data.isEmpty()) { - - System.out.println("inside="+refId); - finalList.add(data); - } - } - - return finalList; - } - - - @GetMapping("/getdetailsbyrefid") - public Map getdetailsbyrefid(@RequestParam String refid) { - return pendinglistService.getdetailsbyrefid(refid); - } - - @GetMapping("/getCommitteeActions") - public List> getCommitteeActions() { - - return pendinglistService.getCommitteeActions(); - - } - - @PostMapping("/savecommittee") - public Map saveCommittee(@RequestBody Map payload) { - - String refId = (String) payload.get("ref_id"); - String remarks = (String) payload.get("remarks"); - int userId = Integer.parseInt(payload.get("userId").toString()); - int meetingid = Integer.parseInt(payload.get("meetingid").toString()); - - List> decisions = (List>) payload.get("decisions"); - - return pendinglistService.saveCommittee(refId, remarks, meetingid, userId, decisions); - } - - @PostMapping("/savereinspection") - public Map saveReInspection(@RequestBody Map payload) { - - String refId = payload.get("ref_id").toString(); - int committeeAction = Integer.parseInt(payload.get("committee_action").toString()); - int meetingId = Integer.parseInt(payload.get("meeting_id").toString()); - String remarks = payload.get("remarks") != null ? payload.get("remarks").toString() : null; - int userId = Integer.parseInt(payload.get("userId").toString()); - - return pendinglistService.saveReInspection(refId, committeeAction, meetingId, remarks, userId); - } - - + public List> ViewZoneDropdown() { + + return pendinglistService.ViewZoneDropdown(); + + } + + @GetMapping("/getwardbyzone") + public List> ViewWardDropdown(@RequestParam String zone) { + + return pendinglistService.ViewWardDropdown(zone); + + } + + @GetMapping("/dropdown-Event") + public ResponseEntity>> ViewDropdownEvent() { + try { + List> result = pendinglistService.ViewDropdownEvent(); + return ResponseEntity.ok(result); + } catch (Exception e) { + Map error = new HashMap<>(); + error.put("error", "Unable to fetch event list"); + error.put("details", e.getMessage()); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body(Collections.singletonList(error)); + } + } + + // @GetMapping("/getgreencommitteelist") + // public List> getgreencommitteelist(@RequestParam String + // date, + // @RequestParam String zones) { + // + // List refnums = pendinglistService.getrefnums(date, zones); + // //System.out.println("refnums="+refnums); + // List> savedids=pendinglistService.getvcsavedrefids(); + // //System.err.println("savedids="+savedids); + // // Convert to List + // List savedRefIds = savedids.stream() + // .map(m -> m.get("ref_id").toString()) + // .toList(); + // + // //System.out.println("savedRefIds=" + savedRefIds); + // + // List> finalList = new ArrayList<>(); + // + // if (refnums.isEmpty()) { + // return Collections.emptyList(); + // } + // + // // REMOVE already saved ref_ids + // List filteredRefIds = refnums.stream() + // .filter(ref -> !savedRefIds.contains(ref)) + // .toList(); + // + // //System.out.println("filteredRefIds="+filteredRefIds); + // + // for (String ref : filteredRefIds) { + // Map data = pendinglistService.getlistdata(ref); + // if (data != null && !data.isEmpty()) { + // finalList.add(data); + // } + // } + // + // return finalList; + // } + + @GetMapping("/getgreencommitteelist") + public List> getgreencommitteelist( + @RequestParam String date, @RequestParam String zones) { + + List> refnums = pendinglistService.getrefnums(date, zones); + System.out.println("refnums=" + refnums); + List> savedIds = pendinglistService.getvcsavedrefids(); + System.out.println("savedIds=" + savedIds); + // Convert savedIds → List + List savedRefList = new ArrayList<>(); + for (Map m : savedIds) { + savedRefList.add(m.get("ref_id").toString()); + } + + List> finalList = new ArrayList<>(); + + for (Map row : refnums) { + + String refId = row.get("ref_id").toString(); + Integer inspReinsId = row.get("latest_reinspection_id") != null + ? Integer.parseInt(row.get("latest_reinspection_id").toString()) + : null; + + // Skip if already committee decided + if (savedRefList.contains(refId)) + continue; + + // Get reinspection latest id + Integer dbLatest = pendinglistService.getLatestReinspectionId(refId); + + // Rule: if inspection reinspection ID is NULL but in DB exists → skip + if (inspReinsId == null && dbLatest != null) + continue; + + // Rule: if BOTH exist AND not equal → skip + if (inspReinsId != null && dbLatest != null && !inspReinsId.equals(dbLatest)) + continue; + + // 👍 Valid, add final data + Map data = pendinglistService.getlistdata(refId); + if (data != null && !data.isEmpty()) { + + System.out.println("inside=" + refId); + finalList.add(data); + } + } + + return finalList; + } + + @GetMapping("/getdetailsbyrefid") + public Map getdetailsbyrefid(@RequestParam String refid) { + return pendinglistService.getdetailsbyrefid(refid); + } + + @GetMapping("/getCommitteeActions") + public List> getCommitteeActions() { + + return pendinglistService.getCommitteeActions(); + + } + + @PostMapping("/savecommittee") + public Map saveCommittee(@RequestBody Map payload) { + + String refId = (String) payload.get("ref_id"); + String remarks = (String) payload.get("remarks"); + int userId = Integer.parseInt(payload.get("userId").toString()); + int meetingid = Integer.parseInt(payload.get("meetingid").toString()); + + List> decisions = (List>) payload.get("decisions"); + + return pendinglistService.saveCommittee(refId, remarks, meetingid, userId, decisions); + } + + @PostMapping("/savereinspection") + public Map saveReInspection(@RequestBody Map payload) { + + String refId = payload.get("ref_id").toString(); + int committeeAction = Integer.parseInt(payload.get("committee_action").toString()); + int meetingId = Integer.parseInt(payload.get("meeting_id").toString()); + String remarks = payload.get("remarks") != null ? payload.get("remarks").toString() : null; + int userId = Integer.parseInt(payload.get("userId").toString()); + + return pendinglistService.saveReInspection(refId, committeeAction, meetingId, remarks, userId); + } + } diff --git a/gcc_officer_portal/src/main/java/in/gov/chennaicorporation/gccoffice/greencommittee/controller/ReportApicontroller.java b/gcc_officer_portal/src/main/java/in/gov/chennaicorporation/gccoffice/greencommittee/controller/ReportApicontroller.java index 42b1a7b4..0354e19d 100644 --- a/gcc_officer_portal/src/main/java/in/gov/chennaicorporation/gccoffice/greencommittee/controller/ReportApicontroller.java +++ b/gcc_officer_portal/src/main/java/in/gov/chennaicorporation/gccoffice/greencommittee/controller/ReportApicontroller.java @@ -10,6 +10,7 @@ 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.ResponseBody; import org.springframework.web.bind.annotation.RestController; import in.gov.chennaicorporation.gccoffice.greencommittee.service.ReportService; @@ -23,9 +24,9 @@ public class ReportApicontroller { @GetMapping("/getgreencommitteelist") public List> getgreencommitteelist(@RequestParam String meetingid, - @RequestParam String zones) { + @RequestParam String zones, @RequestParam String deptid, @RequestParam String appType) { - List refnums = reportService.getrefnums(meetingid, zones); + List refnums = reportService.getrefnums(meetingid, zones, deptid, appType); System.out.println("refnums=" + refnums); List> finalList = new ArrayList<>(); @@ -130,4 +131,10 @@ public class ReportApicontroller { return response; } + @GetMapping("/getDepartments") + @ResponseBody + public List> getDepartments() { + return reportService.getDepartments(); + } + } diff --git a/gcc_officer_portal/src/main/java/in/gov/chennaicorporation/gccoffice/greencommittee/service/PendinglistService.java b/gcc_officer_portal/src/main/java/in/gov/chennaicorporation/gccoffice/greencommittee/service/PendinglistService.java index 005323be..9bf542b4 100644 --- a/gcc_officer_portal/src/main/java/in/gov/chennaicorporation/gccoffice/greencommittee/service/PendinglistService.java +++ b/gcc_officer_portal/src/main/java/in/gov/chennaicorporation/gccoffice/greencommittee/service/PendinglistService.java @@ -4,10 +4,13 @@ import java.sql.PreparedStatement; import java.sql.Statement; import java.sql.Types; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; +import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.stream.Collectors; import javax.sql.DataSource; @@ -26,401 +29,421 @@ public class PendinglistService { @Autowired private JdbcTemplate jdbcTemplate; - + @Value("${fileBaseUrl}") private String fileBaseUrl; - + @Autowired public void setDataSource(@Qualifier("mysqlGreenCommitteeDataSource") DataSource dataSource) { this.jdbcTemplate = new JdbcTemplate(dataSource); } - + public List> ViewWardDropdown(String zone) { String sql = "SELECT ward_name " - + "FROM ward_master " - + "WHERE is_active=1 AND is_delete=0 AND zone_id=?"; - try { - return jdbcTemplate.queryForList(sql,zone); + + "FROM ward_master " + + "WHERE is_active=1 AND is_delete=0 AND zone_id=?"; + try { + return jdbcTemplate.queryForList(sql, zone); } catch (Exception e) { // TODO: handle exception - e.printStackTrace(); - return Collections.emptyList(); + e.printStackTrace(); + return Collections.emptyList(); } } public List> ViewZoneDropdown() { String sql = "SELECT zone_name " - + "FROM zone_master " - + "WHERE is_active=1 AND is_delete=0"; - try { - return jdbcTemplate.queryForList(sql); + + "FROM zone_master " + + "WHERE is_active=1 AND is_delete=0"; + try { + return jdbcTemplate.queryForList(sql); } catch (Exception e) { // TODO: handle exception - e.printStackTrace(); - return Collections.emptyList(); + e.printStackTrace(); + return Collections.emptyList(); } } - + public List> ViewDropdownEvent() { - String sql = "SELECT * FROM create_meeting WHERE isactive=1 AND isdelete=0"; - return jdbcTemplate.queryForList(sql); + String sql = "SELECT * FROM create_meeting WHERE isactive=1 AND isdelete=0"; + return jdbcTemplate.queryForList(sql); } -// public List getrefnums(String date, String zones) { -// -// try { -// -// StringBuilder sql = new StringBuilder( -// "SELECT t.ref_id " + -// "FROM ( " + -// " SELECT ref_id, inspection_by, MAX(cdate) AS latest_date " + -// " FROM inspection_data " + -// " WHERE DATE(cdate) <= STR_TO_DATE(?, '%d-%m-%Y') " + -// " AND isactive = 1 " -// ); -// -// List params = new ArrayList<>(); -// params.add(date); -// -// if (zones != null && !zones.isEmpty()) { -// sql.append(" AND zone = ? "); -// params.add(zones); -// } -// -// sql.append( -// " GROUP BY ref_id, inspection_by " + -// ") AS t " + -// "GROUP BY t.ref_id " + -// "HAVING COUNT(DISTINCT t.inspection_by) = 3 " + -// "ORDER BY MAX(t.latest_date) DESC" -// ); -// -// return jdbcTemplate.queryForList(sql.toString(), params.toArray(), String.class); -// -// } catch (Exception e) { -// -// System.err.println("Error in getrefums(): " + e.getMessage()); -// e.printStackTrace(); -// return Collections.emptyList(); -// } -// } - + // public List getrefnums(String date, String zones) { + // + // try { + // + // StringBuilder sql = new StringBuilder( + // "SELECT t.ref_id " + + // "FROM ( " + + // " SELECT ref_id, inspection_by, MAX(cdate) AS latest_date " + + // " FROM inspection_data " + + // " WHERE DATE(cdate) <= STR_TO_DATE(?, '%d-%m-%Y') " + + // " AND isactive = 1 " + // ); + // + // List params = new ArrayList<>(); + // params.add(date); + // + // if (zones != null && !zones.isEmpty()) { + // sql.append(" AND zone = ? "); + // params.add(zones); + // } + // + // sql.append( + // " GROUP BY ref_id, inspection_by " + + // ") AS t " + + // "GROUP BY t.ref_id " + + // "HAVING COUNT(DISTINCT t.inspection_by) = 3 " + + // "ORDER BY MAX(t.latest_date) DESC" + // ); + // + // return jdbcTemplate.queryForList(sql.toString(), params.toArray(), + // String.class); + // + // } catch (Exception e) { + // + // System.err.println("Error in getrefums(): " + e.getMessage()); + // e.printStackTrace(); + // return Collections.emptyList(); + // } + // } + public List> getrefnums(String date, String zones) { + System.out.println(date + " " + zones); - try { - - StringBuilder sql = new StringBuilder( - "SELECT ref_id, " + - " MAX(latest_reinspection_id) AS latest_reinspection_id " + - "FROM ( " + - " SELECT ref_id, inspection_by, " + - " MAX(cdate) AS latest_date, " + - " MAX(reinspection_id) AS latest_reinspection_id " + - " FROM inspection_data " + - " WHERE DATE(cdate) <= STR_TO_DATE(?, '%d-%m-%Y') " + - " AND isactive = 1 " - ); - - List params = new ArrayList<>(); - params.add(date); - - if (zones != null && !zones.isEmpty()) { - sql.append(" AND zone = ? "); - params.add(zones); - } - - sql.append( - " GROUP BY ref_id, inspection_by " + - ") AS x " + - "GROUP BY ref_id " + - "HAVING COUNT(DISTINCT inspection_by) = 3 " + - "ORDER BY MAX(latest_date) DESC" - ); - - return jdbcTemplate.queryForList(sql.toString(), params.toArray()); - - } catch (Exception e) { - e.printStackTrace(); - return Collections.emptyList(); - } - } + try { + StringBuilder sql = new StringBuilder( + "SELECT ref_id, " + + " MAX(latest_reinspection_id) AS latest_reinspection_id " + + "FROM ( " + + " SELECT ref_id, inspection_by, " + + " MAX(cdate) AS latest_date, " + + " MAX(reinspection_id) AS latest_reinspection_id " + + " FROM inspection_data " + + " WHERE DATE(cdate) <= STR_TO_DATE(?, '%d-%m-%Y') " + + " AND isactive = 1 "); + + List params = new ArrayList<>(); + params.add(date); + + if (zones != null && !zones.isEmpty()) { + sql.append(" AND zone = ? "); + params.add(zones); + } - - public Integer getLatestReinspectionId(String refId) { - try { - String sql = "SELECT id FROM reinspection WHERE ref_id=? ORDER BY id DESC LIMIT 1"; - return jdbcTemplate.queryForObject(sql, Integer.class, refId); - } catch (Exception e) { - return null; - } - } + sql.append( + " GROUP BY ref_id, inspection_by " + + ") AS x " + + "GROUP BY ref_id " + + "HAVING COUNT(DISTINCT inspection_by) >= 2 " + + "ORDER BY MAX(latest_date) DESC"); + return jdbcTemplate.queryForList(sql.toString(), params.toArray()); + } catch (Exception e) { + e.printStackTrace(); + return Collections.emptyList(); + } + } + + public Integer getLatestReinspectionId(String refId) { + try { + String sql = "SELECT id FROM reinspection WHERE ref_id=? ORDER BY id DESC LIMIT 1"; + return jdbcTemplate.queryForObject(sql, Integer.class, refId); + } catch (Exception e) { + return null; + } + } public Map getlistdata(String ref) { - Map regDetails = getRegDetails(ref); + Map regDetails = getRegDetails(ref); - List> compDetails = getComplaintDetails(ref); + List> compDetails = getComplaintDetails(ref); - regDetails.put("comp_details", compDetails); + regDetails.put("comp_details", compDetails); - return regDetails; + return regDetails; } - + public Map getRegDetails(String ref) { - String sql = "SELECT * FROM reg_details WHERE is_active = 1 AND ref_id = ?"; - return jdbcTemplate.queryForMap(sql, ref); + String sql = "SELECT * FROM reg_details WHERE is_active = 1 AND ref_id = ?"; + return jdbcTemplate.queryForMap(sql, ref); } public List> getComplaintDetails(String ref) { - String sql = "SELECT cn.name AS nature, SUM(cd.no_of_trees) AS total_trees " + - "FROM complaint_details cd " + - "JOIN comp_nature cn ON cn.id = cd.comp_nature_id " + - "WHERE cd.is_active = 1 AND cd.ref_id = ? " + - "GROUP BY cn.name"; + String sql = "SELECT cn.name AS nature, SUM(cd.no_of_trees) AS total_trees " + + "FROM complaint_details cd " + + "JOIN comp_nature cn ON cn.id = cd.comp_nature_id " + + "WHERE cd.is_active = 1 AND cd.ref_id = ? " + + "GROUP BY cn.name"; - return jdbcTemplate.queryForList(sql, ref); + return jdbcTemplate.queryForList(sql, ref); } - public Map getdetailsbyrefid(String refId) { - Map response = new HashMap<>(); - - // 1 — Application details - Map app = jdbcTemplate.queryForMap( - "SELECT *,DATE_FORMAT(cdate, '%d-%m-%Y %l:%i %p') as r_Cdate FROM reg_details WHERE ref_id=? AND is_active=1", - refId - ); - - // 2 — Complaint details (grouped) - List> complaints = jdbcTemplate.queryForList( - "SELECT cn.name AS nature, SUM(cd.no_of_trees) AS count " + - "FROM complaint_details cd JOIN comp_nature cn ON cn.id=cd.comp_nature_id " + - "WHERE cd.ref_id=? GROUP BY cn.name", refId - ); - - // 3 — Complaint images - List compImages = jdbcTemplate.queryForList( - "SELECT img_path FROM img_uploads WHERE ref_id=? AND is_active=1", - new Object[]{refId}, String.class - ).stream() - .map(path -> fileBaseUrl + "/gccofficialapp/files" + path) - .collect(Collectors.toList()); - - app.put("complaints", complaints); - app.put("images", compImages); - response.put("application", app); - - // 4 — Inspection details - List> inspectionList = new ArrayList<>(); - - String sql = - "SELECT id.*, um.name AS inspector_name, " + - " DATE_FORMAT(id.cdate, '%d-%m-%Y %l:%i %p') AS f_Cdate " + - "FROM inspection_data id " + - "LEFT JOIN user_maping um ON um.userid = id.cby " + - "INNER JOIN ( " + - " SELECT inspection_by, MAX(cdate) AS latest_date " + - " FROM inspection_data " + - " WHERE ref_id = ? AND isactive = 1 " + - " GROUP BY inspection_by " + - ") latest ON id.inspection_by = latest.inspection_by " + - " AND id.cdate = latest.latest_date " + - "WHERE id.ref_id = ? AND id.isactive = 1 " + - "ORDER BY FIELD(id.inspection_by, 'GCC', 'NGO', 'TNFD')"; - - List> rows = jdbcTemplate.queryForList( - sql, refId, refId - ); - - - for (Map row : rows) { - - Integer inspId = (Integer) row.get("inspection_data_id"); - - // 4a — Recommendation details - List> recommend = jdbcTemplate.queryForList( - "SELECT rm.name, itd.nooftrees AS count,itd.treename as treename " + - "FROM inspection_tree_data itd " + - "JOIN inspection_recommend_master rm ON rm.rid = itd.action " + - "WHERE itd.inspection_data_id=? AND itd.isactive=1", - inspId - ); - - row.put("recommendations", recommend); - - // 4b — Images (thumbnail list) - List imgs = new ArrayList<>(); - if (row.get("file_1") != null) { - imgs.add(fileBaseUrl + "/gccofficialapp/files" + row.get("file_1").toString()); - } - if (row.get("file_2") != null) { - imgs.add(fileBaseUrl + "/gccofficialapp/files" + row.get("file_2").toString()); - } - if (row.get("file_3") != null) { - imgs.add(fileBaseUrl + "/gccofficialapp/files" + row.get("file_3").toString()); - } - - row.put("images", imgs); - - inspectionList.add(row); - } - - response.put("inspections", inspectionList); - - // 5 — Re-Inspection Details - String reSql = - "SELECT r.id AS reins_id, r.committee_action, r.remarks AS reins_remarks, " + - " DATE_FORMAT(r.cdate, '%d-%m-%Y %l:%i %p') AS reins_date, " + - " cm.event_name, DATE_FORMAT(cm.event_date, '%d-%m-%Y') AS event_date " + - "FROM reinspection r " + - "LEFT JOIN create_meeting cm ON cm.id = r.meeting_id " + - "WHERE r.ref_id = ? AND r.isactive = 1 " + - "ORDER BY r.id DESC"; - - List> reinspectionList = jdbcTemplate.queryForList(reSql, refId); - - response.put("reinspections", reinspectionList); - - - return response; + Map response = new HashMap<>(); + + // 1 — Application details + Map app = jdbcTemplate.queryForMap( + "SELECT *,DATE_FORMAT(cdate, '%d-%m-%Y %l:%i %p') as r_Cdate FROM reg_details WHERE ref_id=? AND is_active=1", + refId); + + // 2 — Complaint details (grouped) + List> complaints = jdbcTemplate.queryForList( + "SELECT cn.name AS nature, SUM(cd.no_of_trees) AS count " + + "FROM complaint_details cd JOIN comp_nature cn ON cn.id=cd.comp_nature_id " + + "WHERE cd.ref_id=? GROUP BY cn.name", + refId); + + // 3 — Complaint images + List compImages = jdbcTemplate.queryForList( + "SELECT img_path FROM img_uploads WHERE ref_id=? AND is_active=1", + new Object[] { refId }, String.class).stream() + .map(path -> fileBaseUrl + "/gccofficialapp/files" + path) + .collect(Collectors.toList()); + + app.put("complaints", complaints); + app.put("images", compImages); + response.put("application", app); + + // 4 — Inspection details + List> inspectionList = new ArrayList<>(); + + String sql = "SELECT id.*, um.name AS inspector_name, " + + " DATE_FORMAT(id.cdate, '%d-%m-%Y %l:%i %p') AS f_Cdate " + + "FROM inspection_data id " + + "LEFT JOIN user_maping um ON um.userid = id.cby " + + "INNER JOIN ( " + + " SELECT inspection_by, MAX(cdate) AS latest_date " + + " FROM inspection_data " + + " WHERE ref_id = ? AND isactive = 1 " + + " GROUP BY inspection_by " + + ") latest ON id.inspection_by = latest.inspection_by " + + " AND id.cdate = latest.latest_date " + + "WHERE id.ref_id = ? AND id.isactive = 1 " + + "ORDER BY FIELD(id.inspection_by, 'GCC', 'NGO', 'TNFD')"; + + List> rows = jdbcTemplate.queryForList( + sql, refId, refId); + + for (Map row : rows) { + + Integer inspId = (Integer) row.get("inspection_data_id"); + + // 4a — Recommendation details + List> recommend = jdbcTemplate.queryForList( + "SELECT rm.name, itd.nooftrees AS count,itd.treename as treename " + + "FROM inspection_tree_data itd " + + "JOIN inspection_recommend_master rm ON rm.rid = itd.action " + + "WHERE itd.inspection_data_id=? AND itd.isactive=1", + inspId); + + row.put("recommendations", recommend); + + // 4b — Images (thumbnail list) + List imgs = new ArrayList<>(); + if (row.get("file_1") != null) { + imgs.add(fileBaseUrl + "/gccofficialapp/files" + row.get("file_1").toString()); + } + if (row.get("file_2") != null) { + imgs.add(fileBaseUrl + "/gccofficialapp/files" + row.get("file_2").toString()); + } + if (row.get("file_3") != null) { + imgs.add(fileBaseUrl + "/gccofficialapp/files" + row.get("file_3").toString()); + } + + row.put("images", imgs); + + inspectionList.add(row); + } + // ak + // Expected inspection stages + List expected = Arrays.asList("GCC", "NGO", "TNFD"); + + // Completed stages + Set completed = inspectionList.stream() + .map(m -> String.valueOf(m.get("inspection_by"))) + .collect(Collectors.toSet()); + + // Add pending cards + for (String type : expected) { + + if (!completed.contains(type)) { + + Map pending = new HashMap<>(); + + pending.put("inspection_by", type); + pending.put("status", "PENDING"); + pending.put("inspector_name", ""); + pending.put("f_Cdate", ""); + pending.put("remarks", ""); + pending.put("recommendations", new ArrayList<>()); + pending.put("images", new ArrayList<>()); + + inspectionList.add(pending); + } + } + + // Sort in order GCC -> NGO -> TNFD + Map order = new HashMap<>(); + order.put("GCC", 1); + order.put("NGO", 2); + order.put("TNFD", 3); + + inspectionList.sort( + Comparator.comparingInt( + m -> order.getOrDefault(String.valueOf(m.get("inspection_by")), 99))); + + response.put("inspections", inspectionList); + + // 5 — Re-Inspection Details + String reSql = "SELECT r.id AS reins_id, r.committee_action, r.remarks AS reins_remarks, " + + " DATE_FORMAT(r.cdate, '%d-%m-%Y %l:%i %p') AS reins_date, " + + " cm.event_name, DATE_FORMAT(cm.event_date, '%d-%m-%Y') AS event_date " + + "FROM reinspection r " + + "LEFT JOIN create_meeting cm ON cm.id = r.meeting_id " + + "WHERE r.ref_id = ? AND r.isactive = 1 " + + "ORDER BY r.id DESC"; + + List> reinspectionList = jdbcTemplate.queryForList(reSql, refId); + + response.put("reinspections", reinspectionList); + + return response; } public List> getCommitteeActions() { String sql = "SELECT id,name " - + "FROM committee_recommend_master " - + "WHERE isactive=1 AND isdelete=0 " - + "ORDER BY orderby"; - try { - return jdbcTemplate.queryForList(sql); + + "FROM committee_recommend_master " + + "WHERE isactive=1 AND isdelete=0 " + + "ORDER BY orderby"; + try { + return jdbcTemplate.queryForList(sql); } catch (Exception e) { // TODO: handle exception - e.printStackTrace(); - return Collections.emptyList(); + e.printStackTrace(); + return Collections.emptyList(); } } - public Map saveCommittee( - String refId, - String remarks, - int meetingid, - int userId, - List> decisions - ) { + String refId, + String remarks, + int meetingid, + int userId, + List> decisions) { - Map response = new HashMap<>(); + Map response = new HashMap<>(); - try { - // 1️⃣ Save committee_data and get generated ID - int committeeDataId = saveCommitteeData(refId, remarks, meetingid, userId); + try { + // 1️⃣ Save committee_data and get generated ID + int committeeDataId = saveCommitteeData(refId, remarks, meetingid, userId); - List insertedTreeIds = saveCommitteeTreeData(decisions, committeeDataId, refId, userId); + List insertedTreeIds = saveCommitteeTreeData(decisions, committeeDataId, refId, userId); - response.put("committee_data_id", committeeDataId); - response.put("tree_ids", insertedTreeIds); - response.put("status", "success"); - response.put("message", "Committee decision saved!"); + response.put("committee_data_id", committeeDataId); + response.put("tree_ids", insertedTreeIds); + response.put("status", "success"); + response.put("message", "Committee decision saved!"); - } catch (Exception e) { - response.put("status", "error"); - response.put("message", e.getMessage()); - } + } catch (Exception e) { + response.put("status", "error"); + response.put("message", e.getMessage()); + } - return response; + return response; } - + public int saveCommitteeData(String refId, String remarks, int meetingid, int userId) { - - String remarksValue = (remarks == null || remarks.trim().isEmpty()) ? null : remarks.trim(); - - String sql = "INSERT INTO committee_data (ref_id, meeting_id, remarks, cby) VALUES (?, ?, ?, ?)"; - - KeyHolder keyHolder = new GeneratedKeyHolder(); - - jdbcTemplate.update(connection -> { - PreparedStatement ps = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); - ps.setString(1, refId); - ps.setInt(2, meetingid); - if (remarksValue == null) { - ps.setNull(3, Types.VARCHAR); - } else { - ps.setString(3, remarksValue); - } - ps.setInt(4, userId); - return ps; - }, keyHolder); - - return keyHolder.getKey().intValue(); // generated committee_data.id - } + String remarksValue = (remarks == null || remarks.trim().isEmpty()) ? null : remarks.trim(); + + String sql = "INSERT INTO committee_data (ref_id, meeting_id, remarks, cby) VALUES (?, ?, ?, ?)"; + + KeyHolder keyHolder = new GeneratedKeyHolder(); + + jdbcTemplate.update(connection -> { + PreparedStatement ps = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); + ps.setString(1, refId); + ps.setInt(2, meetingid); + if (remarksValue == null) { + ps.setNull(3, Types.VARCHAR); + } else { + ps.setString(3, remarksValue); + } + ps.setInt(4, userId); + return ps; + }, keyHolder); + + return keyHolder.getKey().intValue(); // generated committee_data.id + } public List saveCommitteeTreeData( - List> decisions, - int committeeDataId, - String refId, - int userId - ) { + List> decisions, + int committeeDataId, + String refId, + int userId) { - String sql = "INSERT INTO committee_tree_data (nooftrees, committee_action, committee_data_id, ref_id, cby) " + - "VALUES (?, ?, ?, ?, ?)"; + String sql = "INSERT INTO committee_tree_data (nooftrees, committee_action, committee_data_id, ref_id, cby) " + + "VALUES (?, ?, ?, ?, ?)"; - List insertedIds = new ArrayList<>(); + List insertedIds = new ArrayList<>(); - for (Map row : decisions) { + for (Map row : decisions) { - int actionId = Integer.parseInt(row.get("id").toString()); - int count = Integer.parseInt(row.get("count").toString()); + int actionId = Integer.parseInt(row.get("id").toString()); + int count = Integer.parseInt(row.get("count").toString()); - KeyHolder keyHolder = new GeneratedKeyHolder(); + KeyHolder keyHolder = new GeneratedKeyHolder(); - jdbcTemplate.update(connection -> { - PreparedStatement ps = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); - ps.setInt(1, count); - ps.setInt(2, actionId); - ps.setInt(3, committeeDataId); - ps.setString(4, refId); - ps.setInt(5, userId); - return ps; - }, keyHolder); + jdbcTemplate.update(connection -> { + PreparedStatement ps = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); + ps.setInt(1, count); + ps.setInt(2, actionId); + ps.setInt(3, committeeDataId); + ps.setString(4, refId); + ps.setInt(5, userId); + return ps; + }, keyHolder); - insertedIds.add(keyHolder.getKey().intValue()); - } + insertedIds.add(keyHolder.getKey().intValue()); + } - return insertedIds; + return insertedIds; } public List> getvcsavedrefids() { - String sql="SELECT ref_id FROM committee_data WHERE isactive=1"; + String sql = "SELECT ref_id FROM committee_data WHERE isactive=1"; try { return jdbcTemplate.queryForList(sql); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); return Collections.emptyList(); - + } } - + @Transactional public Map saveReInspection(String refId, int action, int meetingId, - String remarks, int userId) { + String remarks, int userId) { - Map response = new HashMap<>(); + Map response = new HashMap<>(); try { - - // Insert into reinspection table - String sql = "INSERT INTO reinspection (ref_id, committee_action, meeting_id, remarks, cby) " + - "VALUES (?, ?, ?, ?, ?)"; - - KeyHolder keyHolder = new GeneratedKeyHolder(); - - jdbcTemplate.update(connection -> { + + // Insert into reinspection table + String sql = "INSERT INTO reinspection (ref_id, committee_action, meeting_id, remarks, cby) " + + "VALUES (?, ?, ?, ?, ?)"; + + KeyHolder keyHolder = new GeneratedKeyHolder(); + + jdbcTemplate.update(connection -> { PreparedStatement ps = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); ps.setString(1, refId); ps.setInt(2, action); @@ -428,30 +451,26 @@ public class PendinglistService { ps.setString(4, remarks); ps.setInt(5, userId); return ps; - }, keyHolder); - - int generatedId = keyHolder.getKey().intValue(); - - // Update reg_details.reinspection_id - jdbcTemplate.update("UPDATE reg_details SET reinspection_id=? WHERE ref_id=?",generatedId, refId); - - jdbcTemplate.update("UPDATE inspection_data SET isactive=0,isdelete=1 WHERE ref_id=?", refId); - - response.put("status", "success"); - response.put("message", "Committee decision saved!"); - response.put("reinspection_id", generatedId); - - } - catch (Exception e) - { - response.put("status", "error"); - response.put("message", e.getMessage()); - } - - return response; - + }, keyHolder); + + int generatedId = keyHolder.getKey().intValue(); + + // Update reg_details.reinspection_id + jdbcTemplate.update("UPDATE reg_details SET reinspection_id=? WHERE ref_id=?", generatedId, refId); + + jdbcTemplate.update("UPDATE inspection_data SET isactive=0,isdelete=1 WHERE ref_id=?", refId); + + response.put("status", "success"); + response.put("message", "Committee decision saved!"); + response.put("reinspection_id", generatedId); + + } catch (Exception e) { + response.put("status", "error"); + response.put("message", e.getMessage()); } + return response; + } } diff --git a/gcc_officer_portal/src/main/java/in/gov/chennaicorporation/gccoffice/greencommittee/service/ReportService.java b/gcc_officer_portal/src/main/java/in/gov/chennaicorporation/gccoffice/greencommittee/service/ReportService.java index 6d019965..4337bd6b 100644 --- a/gcc_officer_portal/src/main/java/in/gov/chennaicorporation/gccoffice/greencommittee/service/ReportService.java +++ b/gcc_officer_portal/src/main/java/in/gov/chennaicorporation/gccoffice/greencommittee/service/ReportService.java @@ -29,7 +29,7 @@ public class ReportService { this.jdbcTemplate = new JdbcTemplate(dataSource); } - public List getrefnums(String meetingid, String zones) { + public List getrefnums(String meetingid, String zones, String deptid, String appType) { try { StringBuilder sql = new StringBuilder( @@ -80,6 +80,22 @@ public class ReportService { params.add(zones); } + if (deptid != null && !deptid.isEmpty()) { + sql.append( + " AND ref_id IN ( " + + " SELECT ref_id FROM reg_details WHERE dept_id = ? " + + " ) "); + params.add(deptid); + } + + if (appType != null && !appType.isEmpty()) { + sql.append( + " AND ref_id IN ( " + + " SELECT ref_id FROM reg_details WHERE cby = ? " + + " ) "); + params.add(appType); + } + return jdbcTemplate.queryForList( sql.toString(), params.toArray(), @@ -182,7 +198,7 @@ public class ReportService { } public Map getRegDetails(String ref) { - String sql = "SELECT * FROM reg_details WHERE is_active = 1 AND ref_id = ?"; + String sql = "SELECT rd.*,dm.name as department_name FROM reg_details rd left join dept_master dm on dm.id=rd.dept_id WHERE rd.is_active = 1 AND rd.ref_id = ?"; return jdbcTemplate.queryForMap(sql, ref); } @@ -518,4 +534,11 @@ public class ReportService { return response; } + public List> getDepartments() { + + String sql = "SELECT id, name FROM dept_master WHERE is_active = 1 ORDER BY id"; + + return jdbcTemplate.queryForList(sql); + } + } diff --git a/gcc_officer_portal/src/main/java/in/gov/chennaicorporation/gccoffice/roadwar/service/RegisterService.java b/gcc_officer_portal/src/main/java/in/gov/chennaicorporation/gccoffice/roadwar/service/RegisterService.java index 1487e7f4..a68fad00 100644 --- a/gcc_officer_portal/src/main/java/in/gov/chennaicorporation/gccoffice/roadwar/service/RegisterService.java +++ b/gcc_officer_portal/src/main/java/in/gov/chennaicorporation/gccoffice/roadwar/service/RegisterService.java @@ -32,43 +32,41 @@ public class RegisterService { @Autowired private JdbcTemplate jdbcTemplate; - + @Autowired - private Environment environment; - + private Environment environment; + @Autowired public void setDataSource(@Qualifier("mysqlRoadWarDataSource") DataSource dataSource) { this.jdbcTemplate = new JdbcTemplate(dataSource); } - - + public List> ViewZoneDropdown() { String sql = "SELECT zone_name " - + "FROM zone_master " - + "WHERE is_active=1 AND is_delete=0"; - try { - return jdbcTemplate.queryForList(sql); + + "FROM zone_master " + + "WHERE is_active=1 AND is_delete=0"; + try { + return jdbcTemplate.queryForList(sql); } catch (Exception e) { // TODO: handle exception - e.printStackTrace(); - return Collections.emptyList(); + e.printStackTrace(); + return Collections.emptyList(); } } - + public List> ViewWardDropdown(String zone) { String sql = "SELECT ward_name " - + "FROM ward_master " - + "WHERE is_active=1 AND is_delete=0 AND zone_id=?"; - try { - return jdbcTemplate.queryForList(sql,zone); + + "FROM ward_master " + + "WHERE is_active=1 AND is_delete=0 AND zone_id=?"; + try { + return jdbcTemplate.queryForList(sql, zone); } catch (Exception e) { // TODO: handle exception - e.printStackTrace(); - return Collections.emptyList(); + e.printStackTrace(); + return Collections.emptyList(); } } - - + public List> getRoadNamesByWard(String ward) { try { String encodedWard = URLEncoder.encode("'" + ward + "'", StandardCharsets.UTF_8.toString()); @@ -90,7 +88,7 @@ public class RegisterService { for (JsonNode feature : features) { JsonNode props = feature.path("properties"); Map roadInfo = new HashMap<>(); - roadInfo.put("road_id", props.path("road_id").asText()); + roadInfo.put("road_id", props.path("road_id").asText()); roadInfo.put("road_name", props.path("road_name").asText()); roadList.add(roadInfo); } @@ -102,9 +100,7 @@ public class RegisterService { return Collections.emptyList(); } } - - - + public List> getRoadType() { String sql = "Select id,road_type as roadType from road_type_master where is_active = 1 and is_delete = 0"; try { @@ -114,8 +110,7 @@ public class RegisterService { return Collections.emptyList(); } } - - + public List> getRoadTypeMaterial() { String sql = "Select id,roadtype_material from roadtype_material_master where is_active = 1 and is_delete = 0"; try { @@ -125,7 +120,7 @@ public class RegisterService { return Collections.emptyList(); } } - + public List> getFootpathType() { String sql = "Select id,footpath_type_name from footpath_type_master where is_active = 1 and is_delete = 0"; try { @@ -135,7 +130,7 @@ public class RegisterService { return Collections.emptyList(); } } - + public List> getRoadSide() { String sql = "Select id,road_side_name from road_side_master where is_active = 1 and is_delete = 0"; try { @@ -145,8 +140,7 @@ public class RegisterService { return Collections.emptyList(); } } - - + public List> getMonthList() { String sql = "SELECT id, month_name FROM month_master WHERE is_active = 1 AND is_delete = 0 ORDER BY id"; try { @@ -156,8 +150,7 @@ public class RegisterService { return Collections.emptyList(); } } - - + public List> getYearList() { String sql = "SELECT id, year_name FROM year_master WHERE is_active = 1 AND is_delete = 0 ORDER BY id DESC"; try { @@ -167,11 +160,29 @@ public class RegisterService { return Collections.emptyList(); } } - - + public Map saveRoadWarDetails(Map payload) { Map result = new HashMap<>(); try { + String roadId = String.valueOf(payload.get("road_id")); + + Integer count = jdbcTemplate.queryForObject( + "SELECT COUNT(*) " + + "FROM road_details_master " + + "WHERE road_id = ? " + + "AND is_active = 1 " + + "AND is_delete = 0", + Integer.class, + roadId); + + if (count != null && count > 0) { + + result.put("status", false); + result.put("message", + "Selected road is already mapped to another Road War record"); + + return result; + } String insertRoad = "INSERT INTO road_details_master " + "(zone, ward, road_name, road_type, road_length, road_avg_width, road_area, " @@ -194,7 +205,7 @@ public class RegisterService { ps.setObject(2, payload.get("ward")); ps.setObject(3, payload.get("road_name")); ps.setObject(4, payload.get("road_type")); -// ps.setObject(5, payload.get("highway_ans")); + // ps.setObject(5, payload.get("highway_ans")); ps.setObject(5, payload.get("road_length")); ps.setObject(6, payload.get("road_avg_width")); ps.setObject(7, payload.get("road_area")); @@ -300,468 +311,453 @@ public class RegisterService { } return result; } - - - + public List> getAllRoadWarDetails( String userid, - String zone, - String ward, - String roadId) { - - StringBuilder sql = new StringBuilder(" SELECT rdm.*,rtm.road_type as road_type_name,rtmm.roadtype_material as roadtype_material_name,ftm.footpath_type_name as footpath_material_name FROM road_details_master rdm " + - " LEFT JOIN road_type_master rtm ON rtm.id= rdm.road_type " + - " LEFT JOIN roadtype_material_master rtmm ON rtmm.id= rdm.road_type_material " + - " LEFT JOIN footpath_type_master ftm ON ftm.id= rdm.footpath_material " + - " WHERE 1=1 "); - - List params = new ArrayList<>(); - - - if (userid != null && !userid.isEmpty()) { - sql.append(" AND rdm.cby = ?"); - params.add(userid); - } - - if (zone != null && !zone.isEmpty()) { - sql.append(" AND rdm.zone = ?"); - params.add(zone); - } - - if (ward != null && !ward.isEmpty()) { - sql.append(" AND rdm.ward = ?"); - params.add(ward); - } - - if (roadId != null && !roadId.isEmpty()) { - sql.append(" AND rdm.road_id = ?"); - params.add(roadId); - } - - sql.append(" AND rdm.is_active=1 AND rdm.is_delete=0 "); - - sql.append(" ORDER BY rdm.id DESC"); - - return jdbcTemplate.queryForList(sql.toString(), params.toArray()); + String zone, + String ward, + String roadId) { + + StringBuilder sql = new StringBuilder( + " SELECT rdm.*,rtm.road_type as road_type_name,rtmm.roadtype_material as roadtype_material_name,ftm.footpath_type_name as footpath_material_name FROM road_details_master rdm " + + + " LEFT JOIN road_type_master rtm ON rtm.id= rdm.road_type " + + " LEFT JOIN roadtype_material_master rtmm ON rtmm.id= rdm.road_type_material " + + " LEFT JOIN footpath_type_master ftm ON ftm.id= rdm.footpath_material " + + " WHERE 1=1 "); + + List params = new ArrayList<>(); + + if (userid != null && !userid.isEmpty()) { + sql.append(" AND rdm.cby = ?"); + params.add(userid); + } + + if (zone != null && !zone.isEmpty()) { + sql.append(" AND rdm.zone = ?"); + params.add(zone); + } + + if (ward != null && !ward.isEmpty()) { + sql.append(" AND rdm.ward = ?"); + params.add(ward); + } + + if (roadId != null && !roadId.isEmpty()) { + sql.append(" AND rdm.road_id = ?"); + params.add(roadId); + } + + sql.append(" AND rdm.is_active=1 AND rdm.is_delete=0 "); + + sql.append(" ORDER BY rdm.id DESC"); + + return jdbcTemplate.queryForList(sql.toString(), params.toArray()); } - public Map getRoadWarDetailsById(String refid) { - Map result = new HashMap<>(); + Map result = new HashMap<>(); - try { + try { - String sql = - "SELECT rdm.*, rtm.road_type As road_type_name,rtmm.roadtype_material as roadtype_material,ftm.footpath_type_name as footpath_material_name " + - "FROM road_details_master rdm " + - "LEFT JOIN road_type_master rtm ON rtm.id = rdm.road_type " + - "LEFT JOIN roadtype_material_master rtmm ON rtmm.id = rdm.road_type_material " + - "LEFT JOIN footpath_type_master ftm ON ftm.id= rdm.footpath_material " + - "WHERE rdm.ref_id = ? AND rdm.is_active=1 AND rdm.is_delete=0 "; + String sql = "SELECT rdm.*, rtm.road_type As road_type_name,rtmm.roadtype_material as roadtype_material,ftm.footpath_type_name as footpath_material_name " + + + "FROM road_details_master rdm " + + "LEFT JOIN road_type_master rtm ON rtm.id = rdm.road_type " + + "LEFT JOIN roadtype_material_master rtmm ON rtmm.id = rdm.road_type_material " + + "LEFT JOIN footpath_type_master ftm ON ftm.id= rdm.footpath_material " + + "WHERE rdm.ref_id = ? AND rdm.is_active=1 AND rdm.is_delete=0 "; - Map road = - jdbcTemplate.queryForMap(sql, refid); + Map road = jdbcTemplate.queryForMap(sql, refid); - result.putAll(road); + result.putAll(road); - List> relayingDetails = - jdbcTemplate.queryForList( - " SELECT rd.*,mm.month_name,ym.year_name,rtmm.roadtype_material " - + " FROM relaying_details rd " - + " LEFT JOIN month_master mm on mm.id = rd.relay_month " - + " LEFT JOIN year_master ym on ym.id = rd.relay_year " - + " LEFT JOIN roadtype_material_master rtmm on rtmm.id = rd.road_type_material " - + " WHERE rd.road_ref_id = ? AND rd.is_active=1 AND rd.is_delete=0 ", - refid); + List> relayingDetails = jdbcTemplate.queryForList( + " SELECT rd.*,mm.month_name,ym.year_name,rtmm.roadtype_material " + + " FROM relaying_details rd " + + " LEFT JOIN month_master mm on mm.id = rd.relay_month " + + " LEFT JOIN year_master ym on ym.id = rd.relay_year " + + " LEFT JOIN roadtype_material_master rtmm on rtmm.id = rd.road_type_material " + + " WHERE rd.road_ref_id = ? AND rd.is_active=1 AND rd.is_delete=0 ", + refid); - result.put("relayingDetails", relayingDetails); - result.put("status", true); + result.put("relayingDetails", relayingDetails); + result.put("status", true); - } catch (Exception e) { + } catch (Exception e) { - result.put("status", false); - result.put("message", e.getMessage()); + result.put("status", false); + result.put("message", e.getMessage()); - } + } - return result; + return result; } - + public Map checkRoadExists(Integer roadId) { - Map response = new HashMap<>(); + Map response = new HashMap<>(); - try { + try { - String sql = " SELECT COUNT(*) FROM road_details_master " - - + " WHERE road_id = ? AND is_active=1 AND is_delete = 0 "; + String sql = " SELECT COUNT(*) FROM road_details_master " - Integer count = jdbcTemplate.queryForObject( - sql, - Integer.class, - roadId - ); + + " WHERE road_id = ? AND is_active=1 AND is_delete = 0 "; - response.put("status", true); - response.put("exists", count != null && count > 0); + Integer count = jdbcTemplate.queryForObject( + sql, + Integer.class, + roadId); - } catch (Exception e) { + response.put("status", true); + response.put("exists", count != null && count > 0); - e.printStackTrace(); + } catch (Exception e) { - response.put("status", false); - response.put("message", "Error while checking road"); + e.printStackTrace(); - } + response.put("status", false); + response.put("message", "Error while checking road"); - return response; + } + + return response; } - + @Transactional public Map updateRoadWarDetails(Map payload) { - Map result = new HashMap<>(); - - try { - - String refId = String.valueOf(payload.get("ref_id")); - String updatedBy = String.valueOf(payload.get("updated_by")); - - String roadId = String.valueOf(payload.get("road_id")); - - Integer count = jdbcTemplate.queryForObject( - "SELECT COUNT(*) " + - "FROM road_details_master " + - "WHERE road_id = ? " + - "AND ref_id <> ? " + - "AND is_active = 1 " + - "AND is_delete = 0", - Integer.class, - roadId, - refId - ); - - if (count != null && count > 0) { - - result.put("status", false); - result.put("message", - "Selected road is already mapped to another Road War record"); - - return result; - } - - - //COPY CURRENT RECORD TO LOG TABLE - - String logSql = - "INSERT INTO road_details_master_log (" + - "id, zone, ward, road_id, road_name,area_name,locality_name, road_type,road_type_material, highway_ans, " + - "road_length,road_row_width, road_avg_width,road_min_width,road_max_width, road_area, " + - "road_from,road_to,is_footpath,footpath_at, "+ - "footpath_material, footpath_length, footpath_width, " + - "r_footpath_material, r_footpath_length, r_footpath_width, " + - "footpath_from_location, footpath_to_location, " + - "swd_at,rhs_swdlength,rhs_swdsize,scp_at,rhs_scpCount,manhole_at,r_mhCount,cp_at,r_cpCount,rwh_at,r_rwCount, "+ - "is_swd, swd_from, swd_to, swd_length, swd_size, " + - "is_scp, scp_count, is_manhole, manhole_count, manhole_location, " + - "is_cpipe, cpipe_count, is_rwh, rwh_count, " + - "sewer_length, sewer_size, is_electric_poles, ep_count, is_hml,hml_count, " + - "is_streetlight_poles,streetlight_poles_count,is_mml,mml_count, "+ - "culvert_bridge_count, details, is_busshelter, busshelter_count, " + - "is_centermedian, erp_asset_code, ref_id, cdate, cby, " + - "updated_date, updated_by, is_active, is_delete) " + - "SELECT " + - "id, zone, ward, road_id, road_name,area_name,locality_name, road_type,road_type_material, highway_ans, " + - "road_length,road_row_width, road_avg_width,road_min_width,road_max_width, road_area, " + - "road_from,road_to,is_footpath,footpath_at, "+ - "footpath_material, footpath_length, footpath_width, " + - "r_footpath_material, r_footpath_length, r_footpath_width, " + - "footpath_from_location, footpath_to_location, " + - "swd_at,rhs_swdlength,rhs_swdsize,scp_at,rhs_scpCount,manhole_at,r_mhCount,cp_at,r_cpCount,rwh_at,r_rwCount, "+ - "is_swd, swd_from, swd_to, swd_length, swd_size, " + - "is_scp, scp_count, is_manhole, manhole_count, manhole_location, " + - "is_cpipe, cpipe_count, is_rwh, rwh_count, " + - "sewer_length, sewer_size, is_electric_poles, ep_count, is_hml,hml_count, " + - "is_streetlight_poles,streetlight_poles_count,is_mml,mml_count, "+ - "culvert_bridge_count, details, is_busshelter, busshelter_count, " + - "is_centermedian, erp_asset_code, ref_id, cdate, cby, " + - "updated_date, updated_by, is_active, is_delete " + - "FROM road_details_master " + - "WHERE ref_id=?"; - - jdbcTemplate.update(logSql, refId); - - - - // 3. UPDATE ROAD MASTER - - String updateSql = - "UPDATE road_details_master SET " + - "zone=?, " + - "ward=?, " + - "road_id=?, " + - "road_name=?, " + - "area_name=?, " + - "locality_name=?, " + - "road_type=?, " + - "road_type_material=?, " + - "road_length=?, " + - "road_row_width=?, "+ - "road_avg_width=?, " + - "road_min_width=?, " + - "road_max_width=?, " + - "road_area=?, " + - "road_from=?, "+ - "road_to=?, "+ - "is_footpath=?, "+ - "footpath_at=?, "+ - "footpath_material=?, " + - "footpath_length=?, " + - "footpath_width=?, " + - "r_footpath_material=?, " + - "r_footpath_length=?, " + - "r_footpath_width=?, " + - "footpath_from_location=?, " + - "footpath_to_location=?, " + - "is_swd=?, " + - "swd_from=?, " + - "swd_to=?, " + - "swd_at=?,"+ - "swd_length=?, " + - "swd_size=?, " + - "rhs_swdlength=?, " + - "rhs_swdsize=?, " + - "is_scp=?, " + - "scp_at=?, " + - "scp_count=?, " + - "rhs_scpCount=?,"+ - "is_manhole=?, " + - "manhole_count=?, " + - "manhole_at=?, " + - "r_mhCount=?, " + - "is_cpipe=?, " + - "cpipe_count=?, " + - "cp_at=?, " + - "r_cpCount=?, " + - "is_rwh=?, " + - "rwh_count=?, " + - "rwh_at=?, " + - "r_rwCount=?, " + - "sewer_length=?, " + - "sewer_size=?, " + - "is_electric_poles=?, " + - "ep_count=?, " + - "is_hml=?, " + - "hml_count=?, " + - "is_streetlight_poles=?, " + - "streetlight_poles_count=?, " + - "is_mml=?, " + - "mml_count=?, " + - "culvert_bridge_count=?, " + - "details=?, " + - "is_busshelter=?, " + - "busshelter_count=?, " + - "is_centermedian=?, " + - "updated_date=NOW(), " + - "updated_by=? " + - "WHERE ref_id=?"; - - jdbcTemplate.update(updateSql, - - payload.get("zone"), - payload.get("ward"), - payload.get("road_id"), - payload.get("road_name"), - payload.get("road_areaname"), - payload.get("road_localityname"), - payload.get("road_type"), - payload.get("road_type_material"), - - payload.get("road_length"), - payload.get("road_row_width"), - payload.get("road_avg_width"), - payload.get("road_min_width"), - payload.get("road_max_width"), - payload.get("road_area"), - payload.get("road_from"), - payload.get("road_to"), - - payload.get("is_footpath"), - payload.get("footpath_at"), - - payload.get("footpath_material"), - payload.get("footpath_length"), - payload.get("footpath_width"), - payload.get("rhs_footpathDropdown"), - payload.get("rhs_fplength"), - payload.get("rhs_fpwidth"), - - payload.get("footpath_from_location"), - payload.get("footpath_to_location"), - - payload.get("is_swd"), - payload.get("swd_from"), - payload.get("swd_to"), - payload.get("swd_at"), - payload.get("swd_length"), - payload.get("swd_size"), - payload.get("rhs_swdlength"), - payload.get("rhs_swdsize"), - - payload.get("is_scp"), - payload.get("scp_at"), - payload.get("scp_count"), - payload.get("rhs_scpCount"), - - payload.get("is_manhole"), - payload.get("manhole_count"), - payload.get("manhole_at"), - payload.get("r_mhCount"), - - payload.get("is_cpipe"), - payload.get("cpipe_count"), - payload.get("cp_at"), - payload.get("r_cpCount"), - - payload.get("is_rwh"), - payload.get("rwh_count"), - payload.get("rwh_at"), - payload.get("r_rwCount"), - - payload.get("sewer_length"), - payload.get("sewer_size"), - - payload.get("is_electric_poles"), - payload.get("ep_count"), - - payload.get("is_hml"), - payload.get("hml_count"), - payload.get("is_streetlight_poles"), - payload.get("streetlight_poles_count"), - payload.get("is_mml"), - payload.get("mml_count"), - - payload.get("culvert_bridge_count"), - payload.get("details"), - - payload.get("is_busshelter"), - payload.get("busshelter_count"), - - payload.get("is_centermedian"), - - updatedBy, - refId - ); - - // 4. SOFT DELETE OLD RELAYING RECORDS - - jdbcTemplate.update( - "UPDATE relaying_details " + - "SET is_active=0, " + - "is_delete=1, " + - "updated_date=NOW(), " + - "updated_by=? " + - "WHERE road_ref_id=? " + - "AND is_active=1", - updatedBy, - refId - ); - - // 5. INSERT NEW RELAYING RECORDS - - @SuppressWarnings("unchecked") - List> relays = - (List>) payload.get("relaying_details"); - - String insertRelay = - "INSERT INTO relaying_details " + - "(road_ref_id, relay_month, relay_year,road_type_material, cr_value, road_type, remarks, cby) " + - "VALUES (?,?,?,?,?,?,?,?)"; - - if (relays != null) { - - for (Map relay : relays) { - - jdbcTemplate.update( - insertRelay, - refId, - relay.get("relay_month"), - relay.get("relay_year"), - relay.get("road_type_material"), - relay.get("cr_value"), - relay.get("road_type"), - relay.get("remarks"), - updatedBy - ); - } - } - - result.put("status", true); - result.put("message", "Road details updated successfully"); - - } catch (Exception e) { - - e.printStackTrace(); - - result.put("status", false); - result.put("message", e.getMessage()); - } - - return result; - } + Map result = new HashMap<>(); + + try { + + String refId = String.valueOf(payload.get("ref_id")); + String updatedBy = String.valueOf(payload.get("updated_by")); + + String roadId = String.valueOf(payload.get("road_id")); + Integer count = jdbcTemplate.queryForObject( + "SELECT COUNT(*) " + + "FROM road_details_master " + + "WHERE road_id = ? " + + "AND ref_id <> ? " + + "AND is_active = 1 " + + "AND is_delete = 0", + Integer.class, + roadId, + refId); + + if (count != null && count > 0) { + + result.put("status", false); + result.put("message", + "Selected road is already mapped to another Road War record"); + + return result; + } + + // COPY CURRENT RECORD TO LOG TABLE + + String logSql = "INSERT INTO road_details_master_log (" + + "id, zone, ward, road_id, road_name,area_name,locality_name, road_type,road_type_material, highway_ans, " + + + "road_length,road_row_width, road_avg_width,road_min_width,road_max_width, road_area, " + + "road_from,road_to,is_footpath,footpath_at, " + + "footpath_material, footpath_length, footpath_width, " + + "r_footpath_material, r_footpath_length, r_footpath_width, " + + "footpath_from_location, footpath_to_location, " + + "swd_at,rhs_swdlength,rhs_swdsize,scp_at,rhs_scpCount,manhole_at,r_mhCount,cp_at,r_cpCount,rwh_at,r_rwCount, " + + + "is_swd, swd_from, swd_to, swd_length, swd_size, " + + "is_scp, scp_count, is_manhole, manhole_count, manhole_location, " + + "is_cpipe, cpipe_count, is_rwh, rwh_count, " + + "sewer_length, sewer_size, is_electric_poles, ep_count, is_hml,hml_count, " + + "is_streetlight_poles,streetlight_poles_count,is_mml,mml_count, " + + "culvert_bridge_count, details, is_busshelter, busshelter_count, " + + "is_centermedian, erp_asset_code, ref_id, cdate, cby, " + + "updated_date, updated_by, is_active, is_delete) " + + "SELECT " + + "id, zone, ward, road_id, road_name,area_name,locality_name, road_type,road_type_material, highway_ans, " + + + "road_length,road_row_width, road_avg_width,road_min_width,road_max_width, road_area, " + + "road_from,road_to,is_footpath,footpath_at, " + + "footpath_material, footpath_length, footpath_width, " + + "r_footpath_material, r_footpath_length, r_footpath_width, " + + "footpath_from_location, footpath_to_location, " + + "swd_at,rhs_swdlength,rhs_swdsize,scp_at,rhs_scpCount,manhole_at,r_mhCount,cp_at,r_cpCount,rwh_at,r_rwCount, " + + + "is_swd, swd_from, swd_to, swd_length, swd_size, " + + "is_scp, scp_count, is_manhole, manhole_count, manhole_location, " + + "is_cpipe, cpipe_count, is_rwh, rwh_count, " + + "sewer_length, sewer_size, is_electric_poles, ep_count, is_hml,hml_count, " + + "is_streetlight_poles,streetlight_poles_count,is_mml,mml_count, " + + "culvert_bridge_count, details, is_busshelter, busshelter_count, " + + "is_centermedian, erp_asset_code, ref_id, cdate, cby, " + + "updated_date, updated_by, is_active, is_delete " + + "FROM road_details_master " + + "WHERE ref_id=?"; + + jdbcTemplate.update(logSql, refId); + + // 3. UPDATE ROAD MASTER + + String updateSql = "UPDATE road_details_master SET " + + "zone=?, " + + "ward=?, " + + "road_id=?, " + + "road_name=?, " + + "area_name=?, " + + "locality_name=?, " + + "road_type=?, " + + "road_type_material=?, " + + "road_length=?, " + + "road_row_width=?, " + + "road_avg_width=?, " + + "road_min_width=?, " + + "road_max_width=?, " + + "road_area=?, " + + "road_from=?, " + + "road_to=?, " + + "is_footpath=?, " + + "footpath_at=?, " + + "footpath_material=?, " + + "footpath_length=?, " + + "footpath_width=?, " + + "r_footpath_material=?, " + + "r_footpath_length=?, " + + "r_footpath_width=?, " + + "footpath_from_location=?, " + + "footpath_to_location=?, " + + "is_swd=?, " + + "swd_from=?, " + + "swd_to=?, " + + "swd_at=?," + + "swd_length=?, " + + "swd_size=?, " + + "rhs_swdlength=?, " + + "rhs_swdsize=?, " + + "is_scp=?, " + + "scp_at=?, " + + "scp_count=?, " + + "rhs_scpCount=?," + + "is_manhole=?, " + + "manhole_count=?, " + + "manhole_at=?, " + + "r_mhCount=?, " + + "is_cpipe=?, " + + "cpipe_count=?, " + + "cp_at=?, " + + "r_cpCount=?, " + + "is_rwh=?, " + + "rwh_count=?, " + + "rwh_at=?, " + + "r_rwCount=?, " + + "sewer_length=?, " + + "sewer_size=?, " + + "is_electric_poles=?, " + + "ep_count=?, " + + "is_hml=?, " + + "hml_count=?, " + + "is_streetlight_poles=?, " + + "streetlight_poles_count=?, " + + "is_mml=?, " + + "mml_count=?, " + + "culvert_bridge_count=?, " + + "details=?, " + + "is_busshelter=?, " + + "busshelter_count=?, " + + "is_centermedian=?, " + + "updated_date=NOW(), " + + "updated_by=? " + + "WHERE ref_id=?"; + + jdbcTemplate.update(updateSql, + + payload.get("zone"), + payload.get("ward"), + payload.get("road_id"), + payload.get("road_name"), + payload.get("road_areaname"), + payload.get("road_localityname"), + payload.get("road_type"), + payload.get("road_type_material"), + + payload.get("road_length"), + payload.get("road_row_width"), + payload.get("road_avg_width"), + payload.get("road_min_width"), + payload.get("road_max_width"), + payload.get("road_area"), + payload.get("road_from"), + payload.get("road_to"), + + payload.get("is_footpath"), + payload.get("footpath_at"), + + payload.get("footpath_material"), + payload.get("footpath_length"), + payload.get("footpath_width"), + payload.get("rhs_footpathDropdown"), + payload.get("rhs_fplength"), + payload.get("rhs_fpwidth"), + + payload.get("footpath_from_location"), + payload.get("footpath_to_location"), + + payload.get("is_swd"), + payload.get("swd_from"), + payload.get("swd_to"), + payload.get("swd_at"), + payload.get("swd_length"), + payload.get("swd_size"), + payload.get("rhs_swdlength"), + payload.get("rhs_swdsize"), + + payload.get("is_scp"), + payload.get("scp_at"), + payload.get("scp_count"), + payload.get("rhs_scpCount"), + + payload.get("is_manhole"), + payload.get("manhole_count"), + payload.get("manhole_at"), + payload.get("r_mhCount"), + + payload.get("is_cpipe"), + payload.get("cpipe_count"), + payload.get("cp_at"), + payload.get("r_cpCount"), + + payload.get("is_rwh"), + payload.get("rwh_count"), + payload.get("rwh_at"), + payload.get("r_rwCount"), + + payload.get("sewer_length"), + payload.get("sewer_size"), + + payload.get("is_electric_poles"), + payload.get("ep_count"), + + payload.get("is_hml"), + payload.get("hml_count"), + payload.get("is_streetlight_poles"), + payload.get("streetlight_poles_count"), + payload.get("is_mml"), + payload.get("mml_count"), + + payload.get("culvert_bridge_count"), + payload.get("details"), + + payload.get("is_busshelter"), + payload.get("busshelter_count"), + + payload.get("is_centermedian"), + + updatedBy, + refId); + + // 4. SOFT DELETE OLD RELAYING RECORDS + + jdbcTemplate.update( + "UPDATE relaying_details " + + "SET is_active=0, " + + "is_delete=1, " + + "updated_date=NOW(), " + + "updated_by=? " + + "WHERE road_ref_id=? " + + "AND is_active=1", + updatedBy, + refId); + + // 5. INSERT NEW RELAYING RECORDS + + @SuppressWarnings("unchecked") + List> relays = (List>) payload.get("relaying_details"); + + String insertRelay = "INSERT INTO relaying_details " + + "(road_ref_id, relay_month, relay_year,road_type_material, cr_value, road_type, remarks, cby) " + + "VALUES (?,?,?,?,?,?,?,?)"; + + if (relays != null) { + + for (Map relay : relays) { + + jdbcTemplate.update( + insertRelay, + refId, + relay.get("relay_month"), + relay.get("relay_year"), + relay.get("road_type_material"), + relay.get("cr_value"), + relay.get("road_type"), + relay.get("remarks"), + updatedBy); + } + } + + result.put("status", true); + result.put("message", "Road details updated successfully"); + + } catch (Exception e) { + + e.printStackTrace(); + + result.put("status", false); + result.put("message", e.getMessage()); + } + + return result; + } public Map deleteRoadWarDetails(String refId, String updatedby) { - Map result = new HashMap<>(); - - try { - - int roadUpdated = jdbcTemplate.update( - "UPDATE road_details_master " + - "SET is_active=0, " + - "is_delete=1, " + - "updated_by=?, "+ - "updated_date=NOW() " + - "WHERE ref_id=? " + - "AND is_active=1", - updatedby,refId - ); - - jdbcTemplate.update( - "UPDATE relaying_details " + - "SET is_active=0, " + - "is_delete=1, " + - "updated_by=?, "+ - "updated_date=NOW() " + - "WHERE road_ref_id=? " + - "AND is_active=1", - updatedby,refId - ); - - if (roadUpdated > 0) { - - result.put("status", true); - result.put("message", - "Road War details deleted successfully"); - - } else { - - result.put("status", false); - result.put("message","Record not found"); - } - - } catch (Exception e) { - - e.printStackTrace(); - - result.put("status", false); - result.put("message", - "Failed to delete Road War details"); - } - - return result; + Map result = new HashMap<>(); + + try { + + int roadUpdated = jdbcTemplate.update( + "UPDATE road_details_master " + + "SET is_active=0, " + + "is_delete=1, " + + "updated_by=?, " + + "updated_date=NOW() " + + "WHERE ref_id=? " + + "AND is_active=1", + updatedby, refId); + + jdbcTemplate.update( + "UPDATE relaying_details " + + "SET is_active=0, " + + "is_delete=1, " + + "updated_by=?, " + + "updated_date=NOW() " + + "WHERE road_ref_id=? " + + "AND is_active=1", + updatedby, refId); + + if (roadUpdated > 0) { + + result.put("status", true); + result.put("message", + "Road War details deleted successfully"); + + } else { + + result.put("status", false); + result.put("message", "Record not found"); + } + + } catch (Exception e) { + + e.printStackTrace(); + + result.put("status", false); + result.put("message", + "Failed to delete Road War details"); + } + + return result; } - + } diff --git a/gcc_officer_portal/src/main/resources/templates/modules/greencommittee/pendinglist.html b/gcc_officer_portal/src/main/resources/templates/modules/greencommittee/pendinglist.html index 3545b93d..88a63260 100644 --- a/gcc_officer_portal/src/main/resources/templates/modules/greencommittee/pendinglist.html +++ b/gcc_officer_portal/src/main/resources/templates/modules/greencommittee/pendinglist.html @@ -1,218 +1,232 @@ + - - - - -
- -
- - -
- -
- -
-
- -
- -
- -
-
-
-
-
- - -
- -
- - -
-
-
-
Green Committee Pending List

-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - -
S.NoApplication NoZoneWardTypeNameMobileAddressRemarksNo of treesDetails of ComplaintsAction
-
-
-
-
- -
- - -
+ + + + + +
+ +
+ + +
+ +
+ +
+
+ +
+ +
+ +
+
+
+
+
+ + +
+ +
+ + +
+
+
+
Green Committee Pending List
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoApplication NoZoneWardTypeNameMobileAddressRemarksNo of treesDetails of ComplaintsAction
+
+
+
+
+ +
+ +
- - - - - - - +
+ + + + + + + + + + + + +
+
+ +
+ + +
+ + + + + + - - - - - + + + + \ No newline at end of file diff --git a/gcc_officer_portal/src/main/resources/templates/modules/greencommittee/reports.html b/gcc_officer_portal/src/main/resources/templates/modules/greencommittee/reports.html index 32856bda..20066437 100644 --- a/gcc_officer_portal/src/main/resources/templates/modules/greencommittee/reports.html +++ b/gcc_officer_portal/src/main/resources/templates/modules/greencommittee/reports.html @@ -1,146 +1,170 @@ + - - - - -
- -
- - -
- -
- -
-
- -
- -
-
-
- -
-
-
- - -
- -
- - -
-
-
-
Green Committee Reports

-
- -
- - - - - - - - - - - - - - - - - - - - - - -
S.NoApplication NoNameAddressReasonNo of treesInspectedCommittee Decision
TNFDGCCNGO
-
-
-
-
-
- - -
+ + + + + +
+ +
+ + +
+ +
+ +
+
+ +
+ +
+
+
+ +
+
+
+ + +
+ +
+ + +
+
+ + +
+
+ + +
+ +
+
+
Green Committee Reports
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
S.NoApplication NoDepartment NameNameAddressReasonNo of treesInspectedCommittee Decision
TNFDGCCNGO
+
+
+
+
+
+ + +
+
+ + + - -
- - -
- - - - - - + + + + - + + + + \ No newline at end of file