package in.gov.chennaicorporation.gccoffice.pgr.service; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import in.gov.chennaicorporation.gccoffice.pgr.dbconnection.DBConnection; import in.gov.chennaicorporation.gccoffice.pgr.dto.Dtoworeopen; @Service public class ReopenZoneWiseDaskboards { @Autowired DBConnection dbcon; public String sFrDate =""; public String sToDate =""; public List getAlldtozwreopen() { List complaintdept = new ArrayList<>(); Connection con = DBConnection.getConnection(); Statement stmt = null; ResultSet rs = null; try { stmt = con.createStatement(); rs = stmt.executeQuery(getdtozwreopenQuery()); while (rs.next()) { Dtoworeopen dtozwreopen = new Dtoworeopen(); dtozwreopen.setId(rs.getString("id_dept")); dtozwreopen.setName(rs.getString("dept_name")); complaintdept.add(dtozwreopen); } return complaintdept; } catch (SQLException e) { e.printStackTrace(); } finally { try { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (con != null) { con.close(); } } catch (SQLException e) { e.printStackTrace(); } } return Collections.emptyList(); // Return an empty list if there's an error } private String getdtozwreopenQuery() { return "SELECT id_dept, dept_name " + "FROM EG_DEPARTMENT@ERP " + "WHERE NVL(dept_name, '0') NOT LIKE 'F%' AND dept_name IS NOT NULL AND id_dept >= 32 " + "ORDER BY id_dept"; } public String getReopenZonewisedaskboardQuery(String DEPTID) { String sQry = "SELECT * FROM (SELECT a.deptid, " + "nvl(sum(case when complainttype in (52,146) then 1 end),0) as \"NonBURSTLT\", " + "nvl(sum(case when complainttype in (1,97) then 1 end),0) as \"REOFGAR\", " + "nvl(sum(case when complainttype in (22,32,57,59,70,113,114,130,145) then 1 end),0) as \"ROAD\", " + "nvl(sum(case when complainttype in (18,118) then 1 end),0) as \"MOSQUITE\", " + "nvl(sum(case when complainttype in (69,138) then 1 end),0) as \"WATER\", " + "nvl(sum(case when complainttype in (7,99) then 1 end),0) as \"REOFDEB\", " + "nvl(sum(case when complainttype in (71,152) then 1 end),0) as \"TREE\", " + "nvl(sum(case when complainttype in (19,119) then 1 end),0) as \"DOGS\", " + "nvl(sum(case when complainttype in (75,181) then 1 end),0) as \"ENCMTN\", " + "nvl(sum(case when complainttype in (58,112) then 1 end),0) as \"POT\", " + "nvl(sum(case when complainttype in (43,166) then 1 end),0) as \"PTAX\", " + "nvl(sum(case when complainttype not in (52,1,22,32,57,59,70,18,69,7,71,19,75,58,43,146,97,113,114,130,145,118,138,99,152,119,181,112,166) then 1 end),0) as \"OTHERS\", " + "COUNT(*) as Total FROM eggr_complaintdetails@erp a, eggr_redressaldetails@erp b WHERE "; int iRptID = 0; if (iRptID == 1) { sQry += "nvl(RECEIVINGCENTERID,0) = 1 AND "; } else if (iRptID == 2) { sQry += "nvl(RECEIVINGCENTERID,0) != 1 AND "; } if (!sFrDate.equals("")) { if (sToDate == null || sToDate.equals("")) { sToDate = sFrDate; } sQry += "trunc(complaintdate) BETWEEN to_date('" + sFrDate + "','dd/mm/yyyy') AND to_date('" + sToDate + "','dd/mm/yyyy') AND "; } sQry += "a.complaintid = b.complaintid AND b.COMPLAINTSTATUSID IN (2,3,4) AND TRUNC(COMPLAINTDATE) >= trunc(sysdate-730) " + "AND a.deptid = " + DEPTID + // Add condition for specific DEPTID " GROUP BY a.deptid) a INNER JOIN EG_DEPARTMENT@ERP c ON a.deptid = c.id_dept " + "LEFT OUTER JOIN (SELECT a.deptid, " + "nvl(sum(case when sysdate-complaintdate>90 and b.COMPLAINTSTATUSID IN(2,3,4) then 1 end),'0') as days_90_pen, " + "nvl(sum(case when sysdate-complaintdate>60 and sysdate-complaintdate<=90 and b.COMPLAINTSTATUSID IN(2,3,4) then 1 end),'0') as days_61_90_pen, " + "nvl(sum(case when sysdate-complaintdate>30 and sysdate-complaintdate<=60 and b.COMPLAINTSTATUSID IN(2,3,4) then 1 end),'0') as days_31_60_pen, " + "nvl(sum(case when sysdate-complaintdate>15 and sysdate-complaintdate<=30 and b.COMPLAINTSTATUSID IN(2,3,4) then 1 end),'0') as days_16_30_pen, " + "nvl(sum(case when sysdate-complaintdate<=15 and b.COMPLAINTSTATUSID IN(2,3,4) then 1 end),'0') as days_0_15_pen, " + "nvl(count(case when b.COMPLAINTSTATUSID IN(2,3,4) then 1 end),'0') as Total_pen " + "FROM eggr_complaintdetails@erp a, eggr_redressaldetails@erp b " + "WHERE a.complaintid = b.complaintid AND TRUNC(COMPLAINTDATE) >= trunc(sysdate-730) "; if (iRptID == 1) { sQry += "AND nvl(RECEIVINGCENTERID,0) = 1 "; } else if (iRptID == 2) { sQry += "AND nvl(RECEIVINGCENTERID,0) != 1 "; } if (!sFrDate.equals("")) { if (sToDate == null || sToDate.equals("")) { sToDate = sFrDate; } sQry += "AND trunc(complaintdate) BETWEEN to_date('" + sFrDate + "','dd/mm/yyyy') AND to_date('" + sToDate + "','dd/mm/yyyy') "; } if (DEPTID != null && !DEPTID.equals("0")) { sQry += "AND EXISTS (SELECT 1 FROM EG_DEPARTMENT@ERP c WHERE a.deptid = c.id_dept " + "AND (NVL(c.id_dept, 0) NOT LIKE 'F%' AND c.id_dept IS NOT NULL) " + "AND c.id_dept = " + DEPTID + ") "; } sQry += "GROUP BY a.deptid) d ON d.deptid = c.id_dept " + "WHERE (NVL(DEPT_NAME,0) NOT LIKE 'F%' AND DEPT_NAME IS NOT NULL) " + "AND a.deptid >= 32 " + "ORDER BY a.deptid"; System.out.println("PGR sQry : " + sQry); return sQry; } public List> getReopenZonewisedashboardquery(String DEPTID) { Connection con = DBConnection.getConnection(); try { String query = getReopenZonewisedaskboardQuery(DEPTID); PreparedStatement pstmt = con.prepareStatement(query); if (query.contains(":deptID") && DEPTID != null && !DEPTID.equals("0")) { pstmt.setString(1, DEPTID); } System.out.println("Checking ReOpen Zonewise Dashboard..."); System.out.println("sQry : " + pstmt.toString()); // Check the generated SQL query ResultSet rs = pstmt.executeQuery(); List> rows = new ArrayList<>(); while (rs.next()) { Map row = new HashMap<>(); ResultSetMetaData metaData = rs.getMetaData(); int columnCount = metaData.getColumnCount(); for (int i = 1; i <= columnCount; i++) { String columnName = metaData.getColumnName(i); Object columnValue = rs.getObject(i); //System.out.println(columnName + " : " + columnValue); row.put(columnName, columnValue); } rows.add(row); } return rows; } catch (Exception e) { e.printStackTrace(); } finally { try { con.close(); } catch (SQLException e) { e.printStackTrace(); } } return null; } }