You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
184 lines
8.0 KiB
184 lines
8.0 KiB
|
|
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.DtoAgeAnalysisDaskboard;
|
|
|
|
@Service
|
|
public class AgeAnalysisDaskboards {
|
|
|
|
@Autowired
|
|
DBConnection dbcon;
|
|
|
|
public String sFrDate ="";
|
|
public String sToDate ="";
|
|
|
|
|
|
public List<DtoAgeAnalysisDaskboard> getAlldtoageanalysisDaskboard() {
|
|
List<DtoAgeAnalysisDaskboard> complaintdept = new ArrayList<>();
|
|
Connection con = DBConnection.getConnection();
|
|
Statement stmt = null;
|
|
ResultSet rs = null;
|
|
|
|
try {
|
|
stmt = con.createStatement();
|
|
rs = stmt.executeQuery(getdtoageanalysisdaskboardQuery());
|
|
|
|
while (rs.next()) {
|
|
DtoAgeAnalysisDaskboard dtoageanalysisdaskboard = new DtoAgeAnalysisDaskboard();
|
|
dtoageanalysisdaskboard.setId(rs.getString("id_dept"));
|
|
dtoageanalysisdaskboard.setName(rs.getString("dept_name"));
|
|
complaintdept.add(dtoageanalysisdaskboard);
|
|
}
|
|
|
|
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 getdtoageanalysisdaskboardQuery() {
|
|
return "SELECT Distinct id_dept, dept_name "
|
|
+ "FROM EG_DEPARTMENT@ERP "
|
|
+ "ORDER BY id_dept";
|
|
}
|
|
|
|
|
|
public String getgenlysisdaskboardQuery(String DEPT_NAME) {
|
|
String sQry = "SELECT c.dept_name, a.deptid, a.days_90, a.days_90_pen, a.days_90_reopen, "
|
|
+ "a.days_61_90, a.days_61_90_pen, a.days_61_90_reopen, "
|
|
+ "a.days_31_60, a.days_31_60_pen, a.days_31_60_reopen, "
|
|
+ "a.days_16_30, a.days_16_30_pen, a.days_16_30_reopen, "
|
|
+ "a.days_0_15, a.days_0_15_pen, a.days_0_15_reopen, "
|
|
+ "a.Total, a.Total_pen, a.Total_reopen "
|
|
+ "FROM ( "
|
|
+ "SELECT "
|
|
+ "a.deptid, "
|
|
+ "nvl(sum(case when sysdate - a.complaintdate > 90 then 1 end), '0') AS days_90, "
|
|
+ "nvl(sum(case when sysdate - a.complaintdate > 90 AND b.COMPLAINTSTATUSID IN (2, 3, 4) then 1 end), '0') AS days_90_pen, "
|
|
+ "nvl(sum(case when sysdate - a.complaintdate > 90 AND b.COMPLAINTSTATUSID IN (9) then 1 end), '0') AS days_90_reopen, "
|
|
+ "nvl(sum(case when sysdate - a.complaintdate > 60 AND sysdate - a.complaintdate <= 90 then 1 end), '0') AS days_61_90, "
|
|
+ "nvl(sum(case when sysdate - a.complaintdate > 60 AND sysdate - a.complaintdate <= 90 AND b.COMPLAINTSTATUSID IN (2, 3, 4) then 1 end), '0') AS days_61_90_pen, "
|
|
+ "nvl(sum(case when sysdate - a.complaintdate > 60 AND sysdate - a.complaintdate <= 90 AND b.COMPLAINTSTATUSID IN (9) then 1 end), '0') AS days_61_90_reopen, "
|
|
+ "nvl(sum(case when sysdate - a.complaintdate > 30 AND sysdate - a.complaintdate <= 60 then 1 end), '0') AS days_31_60, "
|
|
+ "nvl(sum(case when sysdate - a.complaintdate > 30 AND sysdate - a.complaintdate <= 60 AND b.COMPLAINTSTATUSID IN (2, 3, 4) then 1 end), '0') AS days_31_60_pen, "
|
|
+ "nvl(sum(case when sysdate - a.complaintdate > 30 AND sysdate - a.complaintdate <= 60 AND b.COMPLAINTSTATUSID IN (9) then 1 end), '0') AS days_31_60_reopen, "
|
|
+ "nvl(sum(case when sysdate - a.complaintdate > 15 AND sysdate - a.complaintdate <= 30 then 1 end), '0') AS days_16_30, "
|
|
+ "nvl(sum(case when sysdate - a.complaintdate > 15 AND sysdate - a.complaintdate <= 30 AND b.COMPLAINTSTATUSID IN (2, 3, 4) then 1 end), '0') AS days_16_30_pen, "
|
|
+ "nvl(sum(case when sysdate - a.complaintdate > 15 AND sysdate - a.complaintdate <= 30 AND b.COMPLAINTSTATUSID IN (9) then 1 end), '0') AS days_16_30_reopen, "
|
|
+ "nvl(sum(case when sysdate - a.complaintdate > 0 AND sysdate - a.complaintdate <= 15 then 1 end), '0') AS days_0_15, "
|
|
+ "nvl(sum(case when sysdate - a.complaintdate > 0 AND sysdate - a.complaintdate <= 15 AND b.COMPLAINTSTATUSID IN (2, 3, 4) then 1 end), '0') AS days_0_15_pen, "
|
|
+ "nvl(sum(case when sysdate - a.complaintdate > 0 AND sysdate - a.complaintdate <= 15 AND b.COMPLAINTSTATUSID IN (9) then 1 end), '0') AS days_0_15_reopen, "
|
|
+ "nvl(count(*), '0') AS Total, "
|
|
+ "nvl(count(case when b.COMPLAINTSTATUSID IN (2, 3, 4) then 1 end), '0') AS Total_pen, "
|
|
+ "nvl(count(case when b.COMPLAINTSTATUSID IN (9) then 1 end), '0') AS Total_reopen "
|
|
+ "FROM eggr_complaintdetails@erp a, eggr_redressaldetails@erp b "
|
|
+ "WHERE a.complaintid = b.complaintid ";
|
|
|
|
int iRptID = 0;
|
|
if (iRptID == 1) sQry += " AND nvl(RECEIVINGCENTERID,0) = 1 ";
|
|
else if (iRptID == 2) sQry += " AND nvl(RECEIVINGCENTERID,0) != 1 ";
|
|
|
|
String sComplainttype = "0";
|
|
if (sComplainttype.equals("52,1,22,32,57,59,70,18,69,7,71,19,58,75"))
|
|
sQry += " AND complainttype NOT IN(" + sComplainttype + ") ";
|
|
else if (!sComplainttype.equals("0")) sQry += " AND complainttype IN(" + sComplainttype + ") ";
|
|
|
|
if (!sFrDate.equals("")) {
|
|
if (sToDate == null || sToDate.equals("")) sToDate = sFrDate;
|
|
sQry += " AND trunc(a.complaintdate) BETWEEN to_date('" + sFrDate + "','dd/mm/yyyy') AND to_date('" + sToDate + "','dd/mm/yyyy') ";
|
|
}
|
|
|
|
if (!sComplainttype.equals("0")) {
|
|
sQry += " AND a.deptid >= 33 ";
|
|
}
|
|
|
|
if (DEPT_NAME != null && !DEPT_NAME.equals("0")) {
|
|
// Add condition to filter by dept_name
|
|
sQry += " AND EXISTS (SELECT 1 FROM EG_DEPARTMENT@ERP c WHERE a.deptid = c.id_dept AND (NVL(c.DEPT_NAME, 0) NOT LIKE 'F%' AND c.DEPT_NAME IS NOT NULL) AND c.dept_name = :deptName) ";
|
|
}
|
|
|
|
sQry += " AND a.complaintdate >= '25-oct-2010' GROUP BY a.deptid) a, EG_DEPARTMENT@ERP c " +
|
|
"WHERE a.deptid = c.id_dept AND (NVL(DEPT_NAME, 0) NOT LIKE 'F%' AND DEPT_NAME IS NOT NULL)";
|
|
|
|
System.out.println("ageanalysisquery : "+ sQry);
|
|
return sQry;
|
|
}
|
|
|
|
|
|
public List<Map<String, Object>> getdashboardquery(String DEPT_NAME) {
|
|
Connection con = DBConnection.getConnection();
|
|
try {
|
|
PreparedStatement pstmt = con.prepareStatement(getgenlysisdaskboardQuery(DEPT_NAME));
|
|
|
|
if (DEPT_NAME != null && !DEPT_NAME.equals("0")) {
|
|
// Set the parameter value for :deptName
|
|
pstmt.setString(1, DEPT_NAME);
|
|
}
|
|
|
|
System.out.println("sQry : " + pstmt.toString()); // Check the generated SQL query
|
|
|
|
ResultSet rs3 = pstmt.executeQuery();
|
|
|
|
List<Map<String, Object>> rows = new ArrayList<>();
|
|
|
|
while (rs3.next()) {
|
|
Map<String, Object> row = new HashMap<>();
|
|
ResultSetMetaData metaData = rs3.getMetaData();
|
|
int columnCount = metaData.getColumnCount();
|
|
|
|
for (int i = 1; i <= columnCount; i++) {
|
|
String columnName = metaData.getColumnName(i);
|
|
Object columnValue = rs3.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;
|
|
}
|
|
|
|
}
|