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.

170 lines
5.7 KiB

3 years ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
  1. package in.gov.chennaicorporation.gccoffice.pgr.service;
  2. import java.sql.Connection;
  3. import java.sql.PreparedStatement;
  4. import java.sql.ResultSet;
  5. import java.sql.ResultSetMetaData;
  6. import java.sql.SQLException;
  7. import java.util.ArrayList;
  8. import java.util.HashMap;
  9. import java.util.List;
  10. import java.util.Map;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.stereotype.Service;
  13. import in.gov.chennaicorporation.gccoffice.pgr.dbconnection.DBConnection;
  14. //import in.gov.chennaicorporation.gccoffice.pgr.repository.PgrReportRepository;
  15. @Service
  16. public class AllReports{
  17. @Autowired
  18. DBConnection dbcon;
  19. public String getQuery(String sFrDate, String sToDate, String sRptGroup, String sRptType, String cbCompStatus,String mode) {
  20. String sQry = "SELECT z.name AS zone_name, dn.name AS division_name, location.name AS location, " +
  21. "dept_name, TO_CHAR(complaintdate, 'dd-mm-yyyy') COMPDATE, TO_CHAR(complaintdate, 'HH24:MI:SS') Time, " +
  22. "cs.statusname AS status, usr.user_name, cd.complaintnumber, " +
  23. "decode(cd.ID_MODE,1,'Internet',2,'Phone',3,'Paper form',4,'WHATSAPP',5,'FLOOD CONTROL',6,'MOBILE APPLICATION',7,'SOCIAL MEDIA',8,'NEWS PAPER') AS \"MODE\","+
  24. "COALESCE(ct.complainttypename, 'Unspecified') AS complainttypename, cg.complaintgroupname " +
  25. "FROM eggr_complaintdetails@erp cd " +
  26. "INNER JOIN eggr_redressaldetails@erp rd ON cd.complaintid = rd.complaintid " +
  27. "INNER JOIN eggr_complaintstatus@erp cs ON rd.complaintstatusid = cs.complaintstatusid " +
  28. "INNER JOIN eggr_complainttypes@erp ct ON TRIM(cd.complainttype) = ct.complainttypeid " +
  29. "INNER JOIN eg_user@erp usr ON rd.redressalofficerid = usr.id_user " +
  30. "LEFT JOIN eg_department@erp d ON cd.deptid = d.id_dept " +
  31. "INNER JOIN eggr_complaintgroup@erp cg ON cg.id_complaintgroup = ct.complaintgroup_id " +
  32. "INNER JOIN eg_boundary@erp dn ON dn.id_bndry = cd.bndry " +
  33. "INNER JOIN eg_boundary@erp z ON dn.parent = z.id_bndry " +
  34. "INNER JOIN eg_boundary@ERP LOCATION ON LOCATION.id_bndry = cd.locbndryid " +
  35. "WHERE " +
  36. "(cd.deptid IS NULL OR (cd.deptid < 21 OR cd.deptid > 30)) " +
  37. "AND complaintdate BETWEEN TO_DATE(?, 'yyyy-MM-dd') " +
  38. "AND (TO_DATE(?, 'yyyy-MM-dd') + 1)";
  39. // Add conditions based on parameters
  40. List<String> conditions = new ArrayList<>();
  41. List<Object> params = new ArrayList<>();
  42. params.add(sFrDate);
  43. params.add(sToDate);
  44. if (cbCompStatus != null && cbCompStatus.equals("Pending")) {
  45. conditions.add("cs.complaintstatusid NOT IN (5,6,8,10,11)");
  46. } else if (cbCompStatus != null && cbCompStatus.equals("Completed")) {
  47. conditions.add("cs.complaintstatusid IN (5,6,8,10,11)");
  48. }
  49. if (cbCompStatus != null && cbCompStatus.equals("Reopened")) {
  50. conditions.add("cs.complaintstatusid IN (9)");
  51. }
  52. if (cbCompStatus != null && cbCompStatus.equals("Forwarded")) {
  53. conditions.add("cs.complaintstatusid IN (3)");
  54. }
  55. if (sRptGroup != null && !sRptGroup.equals("0")) {
  56. conditions.add("cg.complaintgroupname = ?");
  57. params.add(sRptGroup);
  58. }
  59. if (sRptType != null && !sRptType.equals("0")) {
  60. conditions.add("ct.complainttypename = ?");
  61. params.add(sRptType);
  62. }
  63. if (mode != null && !mode.equals("0")) {
  64. conditions.add("cd.ID_MODE = ?");
  65. params.add(mode);
  66. }
  67. if (!conditions.isEmpty()) {
  68. sQry += " AND " + String.join(" AND ", conditions);
  69. }
  70. sQry += " ORDER BY zone_name, division_name, complaintdate ";
  71. System.out.println("allreports Query:" + sQry);
  72. return sQry;
  73. }
  74. public List<Map<String, Object>> check(String sFrDate, String sToDate, String sRptGroup, String sRptType, String cbCompStatus,String mode) {
  75. Connection con = DBConnection.getConnection();
  76. PreparedStatement stmt3 = null;
  77. try {
  78. String query = getQuery(sFrDate, sToDate, sRptGroup, sRptType, cbCompStatus,mode);
  79. stmt3 = con.prepareStatement(query);
  80. // Set parameters
  81. int parameterIndex = 1;
  82. stmt3.setString(parameterIndex++, sFrDate);
  83. stmt3.setString(parameterIndex++, sToDate);
  84. if (sRptGroup != null && !sRptGroup.equals("0")) {
  85. stmt3.setString(parameterIndex++, sRptGroup);
  86. }
  87. if (sRptType != null && !sRptType.equals("0")) {
  88. stmt3.setString(parameterIndex++, sRptType);
  89. }
  90. if (cbCompStatus != null && !cbCompStatus.equals("0")) {
  91. // No need to set a parameter for the status condition
  92. }
  93. if (mode != null && !mode.equals("0")) {
  94. stmt3.setString(parameterIndex++, mode);
  95. }
  96. ResultSet rs3 = stmt3.executeQuery();
  97. List<Map<String, Object>> rows = new ArrayList<>();
  98. while (rs3.next()) {
  99. Map<String, Object> row = new HashMap<>();
  100. ResultSetMetaData metaData = rs3.getMetaData();
  101. int columnCount = metaData.getColumnCount();
  102. for (int i = 1; i <= columnCount; i++) {
  103. String columnName = metaData.getColumnName(i);
  104. Object columnValue = rs3.getObject(i);
  105. row.put(columnName, columnValue);
  106. }
  107. rows.add(row);
  108. }
  109. return rows;
  110. } catch (Exception e) {
  111. e.printStackTrace();
  112. } finally {
  113. try {
  114. if (stmt3 != null) {
  115. stmt3.close();
  116. }
  117. con.close();
  118. } catch (SQLException e) {
  119. e.printStackTrace();
  120. }
  121. }
  122. return null;
  123. }
  124. }