CM works overall dashboard integrate with gcc_office_portal
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.

166 lines
6.4 KiB

2 years ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
  1. package in.gov.chennaicorporation.gccoffice.cmdashboard.service;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.Map;
  6. import javax.sql.DataSource;
  7. import javax.transaction.Transactional;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.beans.factory.annotation.Qualifier;
  10. import org.springframework.jdbc.core.JdbcTemplate;
  11. import org.springframework.stereotype.Service;
  12. @Service
  13. public class CmDashboardService {
  14. private JdbcTemplate jdbcTemplate;
  15. @Autowired
  16. public void setDataSourcemysql(@Qualifier("mysqlAppDataSource") DataSource dataSource) {
  17. this.jdbcTemplate = new JdbcTemplate(dataSource);
  18. }
  19. @Transactional
  20. public List<Map<String, Object>> getCombinedCmDashboardReports(String zonename) {
  21. String sqlQuery;
  22. Object[] params;
  23. if (zonename != null && !zonename.equalsIgnoreCase("all")) {
  24. sqlQuery = "SELECT cm.schemename AS name, " + "COUNT(*) AS count, " + "'Scheme' AS type "
  25. + "FROM gcc_apps.mytable cm " + "WHERE cm.zonename = ? " + "GROUP BY cm.schemename " + "UNION ALL "
  26. + "SELECT cm.typeofwork AS name, " + "COUNT(*) AS count, " + "'TypeOfWork' AS type "
  27. + "FROM gcc_apps.mytable cm " + "WHERE cm.zonename = ? " + "GROUP BY cm.typeofwork";
  28. params = new Object[] { zonename, zonename };
  29. } else {
  30. sqlQuery = "SELECT cm.schemename AS name, " + "COUNT(*) AS count, " + "'Scheme' AS type "
  31. + "FROM gcc_apps.mytable cm " + "GROUP BY cm.schemename " + "UNION ALL "
  32. + "SELECT cm.typeofwork AS name, " + "COUNT(*) AS count, " + "'TypeOfWork' AS type "
  33. + "FROM gcc_apps.mytable cm " + "GROUP BY cm.typeofwork";
  34. params = new Object[] {};
  35. }
  36. return jdbcTemplate.queryForList(sqlQuery, params);
  37. }
  38. @Transactional
  39. public List<Map<String, Object>> getRegionCounts() {
  40. String sqlQuery = "SELECT regionname, COUNT(*) AS region_count FROM gcc_apps.mytable GROUP BY regionname";
  41. return jdbcTemplate.queryForList(sqlQuery);
  42. }
  43. @Transactional
  44. public List<Map<String, Object>> getZoneCounts() {
  45. String sqlQuery = "SELECT zonename, COUNT(*) AS zone_count FROM gcc_apps.mytable GROUP BY zonename";
  46. return jdbcTemplate.queryForList(sqlQuery);
  47. }
  48. @Transactional
  49. public Map<String, Object> getRegionDetails(String regionname) {
  50. String sqlQuery = "SELECT SUM(cm.valueofwork) AS totalValueOfWork, COUNT(*) AS totalWorkCounts "
  51. + "FROM gcc_apps.mytable cm " + "WHERE cm.regionname = ? ";
  52. Object[] params = new Object[] { regionname };
  53. Map<String, Object> regiondetails = jdbcTemplate.queryForMap(sqlQuery, params);
  54. String sqlQueryRegionZone = "SELECT zonename AS name, " +
  55. "COUNT(*) AS regionszones_count, " +
  56. "SUM(valueofwork) AS totalValueOfWork, " +
  57. "COUNT(*) AS totalWorkCounts " +
  58. "FROM gcc_apps.mytable " +
  59. "WHERE regionname = ? " +
  60. "GROUP BY zonename;";
  61. List<Map<String, Object>> regionzonedetails = jdbcTemplate.queryForList(sqlQueryRegionZone, params);
  62. regiondetails.put("regionzonedetails", regionzonedetails);
  63. return regiondetails;
  64. }
  65. @Transactional
  66. public Map<String, Object> getSchemeDetails(String schemename, String zonename) {
  67. String sqlQuery = "SELECT SUM(cm.valueofwork) AS totalValueOfWork, COUNT(*) AS totalWorkCounts "
  68. + "FROM gcc_apps.mytable cm " + "WHERE cm.schemename = ? "
  69. + (zonename != null && !zonename.equalsIgnoreCase("all") ? " AND cm.zonename = ?" : "");
  70. Object[] params = zonename != null && !zonename.equalsIgnoreCase("all") ? new Object[] { schemename, zonename }
  71. : new Object[] { schemename };
  72. Map<String, Object> schemeDetails = jdbcTemplate.queryForMap(sqlQuery, params);
  73. String sqlQueryTypeOfWork = "SELECT cm.typeofwork AS name, COUNT(*) AS count, SUM(cm.valueofwork) AS totalValueOfWork "
  74. + "FROM gcc_apps.mytable cm " + "WHERE cm.schemename = ? "
  75. + (zonename != null && !zonename.equalsIgnoreCase("all") ? " AND cm.zonename = ?" : "")
  76. + "GROUP BY cm.typeofwork";
  77. List<Map<String, Object>> typeOfWorkDetails = jdbcTemplate.queryForList(sqlQueryTypeOfWork, params);
  78. schemeDetails.put("typeOfWorkDetails", typeOfWorkDetails);
  79. return schemeDetails;
  80. }
  81. @Transactional
  82. public Map<String, Object> getTypeOfWorkDetails(String typeofwork, String zonename) {
  83. String sqlQuery = "SELECT SUM(cm.valueofwork) AS totalValueOfWork, COUNT(*) AS totalWorkCounts "
  84. + "FROM gcc_apps.mytable cm " + "WHERE cm.typeofwork = ? "
  85. + (zonename != null && !zonename.equalsIgnoreCase("all") ? " AND cm.zonename = ?" : "");
  86. Object[] params = zonename != null && !zonename.equalsIgnoreCase("all") ? new Object[] { typeofwork, zonename }
  87. : new Object[] { typeofwork };
  88. Map<String, Object> typeOfWorkDetail = jdbcTemplate.queryForMap(sqlQuery, params);
  89. String sqlQueryTypeOfWork = "SELECT cm.schemename AS name, COUNT(*) AS count, SUM(cm.valueofwork) AS totalValueOfWork "
  90. + "FROM gcc_apps.mytable cm " + "WHERE cm.typeofwork = ? "
  91. + (zonename != null && !zonename.equalsIgnoreCase("all") ? " AND cm.zonename = ?" : "")
  92. + "GROUP BY cm.schemename";
  93. List<Map<String, Object>> schemeNameDetails = jdbcTemplate.queryForList(sqlQueryTypeOfWork, params);
  94. typeOfWorkDetail.put("schemeNameDetails", schemeNameDetails);
  95. return typeOfWorkDetail;
  96. }
  97. public List<Map<String, Object>> getCmDashboardAllReports() {
  98. String sqlQuery = "SELECT * FROM gcc_apps.mytable";
  99. List<Map<String, Object>> result = jdbcTemplate.queryForList(sqlQuery);
  100. return result;
  101. }
  102. public Map<String, Object> getCMDetails(int id) {
  103. String sql = "SELECT * FROM gcc_apps.mytable WHERE data_id = ?";
  104. return jdbcTemplate.queryForMap(sql, id);
  105. }
  106. @Transactional
  107. public List<Map<String, Object>> getCmDashboardAllReportsFiltered(String zonename, String schemename, String typeofwork) {
  108. String sqlQuery = "SELECT * FROM gcc_apps.mytable WHERE 1=1";
  109. List<Object> params = new ArrayList<>();
  110. if (zonename != null && !zonename.equalsIgnoreCase("all")) {
  111. sqlQuery += " AND zonename = ?";
  112. params.add(zonename);
  113. }
  114. if (schemename != null && !schemename.equalsIgnoreCase("all")) {
  115. sqlQuery += " AND schemename = ?";
  116. params.add(schemename);
  117. }
  118. if (typeofwork != null && !typeofwork.equalsIgnoreCase("all")) {
  119. sqlQuery += " AND typeofwork = ?";
  120. params.add(typeofwork);
  121. }
  122. return jdbcTemplate.queryForList(sqlQuery, params.toArray());
  123. }
  124. }