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.

298 lines
11 KiB

​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
  1. package in.gov.chennaicorporation.gccoffice.school.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.dao.DataAccessException;
  11. import org.springframework.http.HttpStatus;
  12. import org.springframework.http.ResponseEntity;
  13. import org.springframework.jdbc.core.JdbcTemplate;
  14. import org.springframework.stereotype.Service;
  15. @Service
  16. public class SchoolReportService {
  17. private JdbcTemplate jdbcTemplate;
  18. @Autowired
  19. public void setDataSourcemysql(@Qualifier("mysqlSchoolDataSource") DataSource dataSource) {
  20. this.jdbcTemplate = new JdbcTemplate(dataSource);
  21. }
  22. @Transactional
  23. public ResponseEntity<?> getAEOList() {
  24. Map<String, Object> result = new HashMap<>();
  25. String sql = "SELECT aeo_details_id, aeo_num, udise FROM aeo_details";
  26. try {
  27. List<Map<String, Object>> data = jdbcTemplate.queryForList(sql);
  28. result.put("Message", "Success");
  29. result.put("data", data);
  30. return ResponseEntity.ok(result);
  31. } catch (Exception e) {
  32. e.printStackTrace();
  33. result.put("Message", "Error");
  34. result.put("Error", "Failed to fetch AEO List: " + e.getMessage());
  35. return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(result);
  36. }
  37. }
  38. @Transactional
  39. public ResponseEntity<?> getAEOZone(String udise) {
  40. Map<String, Object> result = new HashMap<>();
  41. String sql = "SELECT DISTINCT zone FROM school_list WHERE udise In(" + udise + ") ORDER BY zone ASC";
  42. try {
  43. List<String> data = jdbcTemplate.queryForList(sql, String.class);
  44. result.put("message", "Success");
  45. result.put("data", data);
  46. return ResponseEntity.ok(result);
  47. } catch (DataAccessException e) {
  48. e.printStackTrace();
  49. result.put("message", "Error");
  50. result.put("Error", "Failed to Zone List: " + e.getMessage());
  51. return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(result);
  52. }
  53. }
  54. @Transactional
  55. public ResponseEntity<?> getAEOWard(String udise, String zone) {
  56. Map<String, Object> result = new HashMap<>();
  57. String sql = "SELECT DISTINCT division AS Ward FROM school_list WHERE udise In(" + udise + ") and zone = ? ORDER BY Ward ASC";
  58. try {
  59. List<String> data = jdbcTemplate.queryForList(sql, String.class, zone);
  60. result.put("message", "Success");
  61. result.put("data", data);
  62. return ResponseEntity.ok(result);
  63. } catch (DataAccessException e) {
  64. e.printStackTrace();
  65. result.put("message", "Error");
  66. result.put("Error", "Failed to Ward List: " + e.getMessage());
  67. return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(result);
  68. }
  69. }
  70. @Transactional
  71. public ResponseEntity<?> getAEOSchoolData(List<String> udise, String zone, String ward) {
  72. Map<String, Object> response = new HashMap<>();
  73. List<Map<String,Object>> data = new ArrayList<Map<String,Object>>();
  74. if(udise==null || udise.isEmpty()) {
  75. udise=getUDISE();
  76. }
  77. for(String udises:udise) {
  78. List<String> school = getschoolId(udises, zone, ward);
  79. if(!school.isEmpty() && school!=null) {
  80. for(String sch:school) {
  81. //System.out.println("School_ID = "+sch);
  82. Map<String, Object> result = new HashMap<>();
  83. Map<String, Object> report = getSchoolReport(sch);
  84. result.putAll(report);
  85. String num = (String) report.get("udise");
  86. Map<String, Object> report1 = getSchoolReport1(sch);
  87. result.putAll(report1);
  88. int pending=0;
  89. for (Map.Entry<String, Object> entry : report1.entrySet()) {
  90. if(entry.getValue().toString().equalsIgnoreCase("Pending")) {
  91. ++pending;
  92. }
  93. }
  94. result.put("overall_status", pending==0 ? "Completed" : "Pending");
  95. Map<String, Object> report2 = getAEO(num);
  96. result.putAll(report2);
  97. data.add(result);
  98. }
  99. response.put("message", "Success");
  100. response.put("data", data);
  101. }
  102. }
  103. // System.out.println(data.get(0));
  104. // System.out.println(data.get(1));
  105. System.out.println(response.get("message"));
  106. // System.out.println(response.get("data"));
  107. return ResponseEntity.ok(response);
  108. }
  109. private List<String> getUDISE() {
  110. String sql = "SELECT udise FROM aeo_details";
  111. try {
  112. return jdbcTemplate.queryForList(sql, String.class);
  113. } catch (Exception e) {
  114. e.printStackTrace();
  115. return List.of();
  116. }
  117. }
  118. private Map<String, Object> getAEO(String num) {
  119. String sql = "SELECT aeo_num FROM aeo_details WHERE FIND_IN_SET(?, udise) > 0";
  120. try {
  121. return jdbcTemplate.queryForMap(sql, num);
  122. } catch (Exception e) {
  123. e.printStackTrace();
  124. return Map.of();
  125. }
  126. }
  127. private Map<String, Object> getSchoolReport1(String sch) {
  128. String sql = "SELECT "
  129. + " CASE "
  130. + " WHEN EXISTS ( "
  131. + " SELECT 1 "
  132. + " FROM school_buildup_area sba "
  133. + " WHERE sba.school_id = ? "
  134. + " ) THEN 'Completed' "
  135. + " ELSE 'Pending' "
  136. + " END AS other_details, "
  137. + " CASE "
  138. + " WHEN EXISTS ( "
  139. + " SELECT 1 "
  140. + " FROM staff_strength_1 ss "
  141. + " WHERE ss.school_id = ? "
  142. + " ) THEN 'Completed' "
  143. + " ELSE 'Pending' "
  144. + " END AS staff_details, "
  145. + " CASE "
  146. + " WHEN EXISTS ( "
  147. + " SELECT 1 "
  148. + " FROM student_strength sts "
  149. + " WHERE sts.school_id = ? "
  150. + " ) THEN 'Completed' "
  151. + " ELSE 'Pending' "
  152. + " END AS students_details, "
  153. + " CASE "
  154. + " WHEN EXISTS ( "
  155. + " SELECT 1 "
  156. + " FROM playground pg "
  157. + " WHERE pg.school_id = ? "
  158. + " ) THEN 'Completed' "
  159. + " ELSE 'Pending' "
  160. + " END AS playground_details, "
  161. + " CASE "
  162. + " WHEN EXISTS ("
  163. + " SELECT 1 "
  164. + " FROM drinking_water dw "
  165. + " WHERE dw.school_id = ? "
  166. + " ) THEN 'Completed' "
  167. + " ELSE 'Pending' "
  168. + " END AS drinkingwater_details, "
  169. + " CASE "
  170. + " WHEN EXISTS ( "
  171. + " SELECT 1 "
  172. + " FROM toilet tot "
  173. + " WHERE tot.school_id = ? "
  174. + " ) THEN 'Completed' "
  175. + " ELSE 'Pending' "
  176. + " END AS toilet_details, "
  177. + " CASE "
  178. + " WHEN EXISTS ( "
  179. + " SELECT 1 "
  180. + " FROM kitchen kit "
  181. + " WHERE kit.school_id = ? "
  182. + " ) THEN 'Completed' "
  183. + " ELSE 'Pending' "
  184. + " END AS kitchen_details, "
  185. + " CASE "
  186. + " WHEN NOT EXISTS ( "
  187. + " SELECT 1 FROM buildings WHERE school_id = ? and is_active=1 and is_delete=0 "
  188. + " ) THEN 'Pending' "
  189. + " WHEN ( "
  190. + " SELECT COUNT(*) FROM buildings WHERE school_id = ? and is_active=1 and is_delete=0 "
  191. + " ) = ( "
  192. + " SELECT COUNT(DISTINCT rd.building_id) "
  193. + " FROM room_details rd "
  194. + " JOIN buildings b ON b.buildng_id = rd.building_id "
  195. + " WHERE b.school_id = ? and b.is_active=1 and b.is_delete=0 and rd.is_active=1 and rd.is_delete=0 "
  196. + " ) THEN 'Completed' "
  197. + " ELSE 'Partially Completed' "
  198. + "END AS buildings, "
  199. + "CASE "
  200. + " WHEN NOT EXISTS ( "
  201. + " SELECT 1 FROM room_details WHERE school_id = ? and is_active=1 and is_delete=0 "
  202. + " ) THEN 'Pending' "
  203. + " WHEN ( "
  204. + " SELECT COUNT(DISTINCT room_id) "
  205. + " FROM room_details "
  206. + " WHERE school_id = ? and is_active=1 and is_delete=0 "
  207. + " ) = ( "
  208. + " SELECT COUNT(DISTINCT rd.room_id) "
  209. + " FROM room_details rd "
  210. + " JOIN it_mapping im ON im.room_id = rd.room_id "
  211. + " JOIN electrical_mapping em ON em.room_id = rd.room_id "
  212. + " JOIN furniture_mapping fm ON fm.room_id = rd.room_id "
  213. + " WHERE rd.school_id = ? and rd.is_active=1 and rd.is_delete=0 "
  214. + " and im.is_active=1 and im.is_delete=0 and em.is_active=1 and em.is_delete=0 "
  215. + " and fm.is_active=1 and fm.is_delete=0 "
  216. + " AND (im.room_id IS NOT NULL OR em.room_id IS NOT NULL OR fm.room_id IS NOT NULL) "
  217. + " ) THEN 'Completed' "
  218. + " WHEN ( "
  219. + " SELECT COUNT(DISTINCT rd.room_id) "
  220. + " FROM room_details rd "
  221. + " JOIN it_mapping im ON im.room_id = rd.room_id "
  222. + " JOIN electrical_mapping em ON em.room_id = rd.room_id "
  223. + " JOIN furniture_mapping fm ON fm.room_id = rd.room_id "
  224. + " WHERE rd.school_id = ? and rd.is_active=1 and rd.is_delete=0 "
  225. + " and im.is_active=1 and im.is_delete=0 and em.is_active=1 and em.is_delete=0 "
  226. + " and fm.is_active=1 and fm.is_delete=0 "
  227. + " AND (im.room_id IS NOT NULL OR em.room_id IS NOT NULL OR fm.room_id IS NOT NULL) "
  228. + " ) > 0 THEN 'Partially Completed' "
  229. + " ELSE 'Pending' "
  230. + "END AS school_assets ";
  231. try {
  232. return jdbcTemplate.queryForMap(sql, sch, sch, sch, sch, sch, sch, sch, sch, sch, sch, sch, sch, sch, sch);
  233. } catch (Exception e) {
  234. e.printStackTrace();
  235. return Map.of();
  236. }
  237. }
  238. private Map<String, Object> getSchoolReport(String sch) {
  239. String sql = "SELECT id as school_id, zone, division, udise FROM school_list WHERE id = ?";
  240. try {
  241. return jdbcTemplate.queryForMap(sql, sch);
  242. } catch (Exception e) {
  243. e.printStackTrace();
  244. return Map.of();
  245. }
  246. }
  247. private List<String> getschoolId(String udise, String zone, String ward) {
  248. String sql = "";
  249. if (zone != null && !zone.isEmpty() && ward != null && !ward.isEmpty()) {
  250. //System.out.println("check1");
  251. sql = "SELECT id FROM school_list WHERE udise In(" + udise + ") and zone = ? and division = ?";
  252. } else if (zone != null && !zone.isEmpty() && (ward == null || ward.isEmpty())) {
  253. sql = "SELECT id FROM school_list WHERE udise In(" + udise + ") and zone = ?";
  254. } else if ((zone == null || zone.isEmpty()) && (ward == null || ward.isEmpty())) {
  255. sql = "SELECT id FROM school_list WHERE udise In(" + udise + ")";
  256. }
  257. try {
  258. if (sql.contains("zone = ?") && sql.contains("division = ?")) {
  259. return jdbcTemplate.queryForList(sql, String.class, zone, ward);
  260. } else if (sql.contains("zone = ?")) {
  261. return jdbcTemplate.queryForList(sql, String.class, zone);
  262. } else {
  263. return jdbcTemplate.queryForList(sql, String.class);
  264. }
  265. } catch (DataAccessException e) {
  266. e.printStackTrace();
  267. return List.of();
  268. }
  269. }
  270. }