Browse Source

Zone and Ward Report Query Updated

master
KaNi-04 2 months ago
parent
commit
68e679382b
  1. 181
      src/main/java/in/gov/chennaicorporation/mobileservice/manhole/service/ManHoleActivity.java

181
src/main/java/in/gov/chennaicorporation/mobileservice/manhole/service/ManHoleActivity.java

@ -733,10 +733,33 @@ public class ManHoleActivity {
String sql = "SELECT "
+ " z.zone,"
+ " COUNT(t.drain_id) AS total_drain,"
+ " SUM(CASE WHEN t.total_manhole = t.completed_manhole THEN 1 ELSE 0 END) AS total_drain_completed,"
+ " SUM(CASE WHEN t.total_manhole > t.completed_manhole THEN 1 ELSE 0 END) AS total_drain_pending,"
+ " ROUND(SUM(CASE WHEN t.total_manhole = t.completed_manhole THEN 1 ELSE 0 END) * 100.0 / COUNT(t.drain_id), 2) AS drain_completed_percentage,"
+ " ROUND(SUM(CASE WHEN t.total_manhole > t.completed_manhole THEN 1 ELSE 0 END) * 100.0 / COUNT(t.drain_id), 2) AS drain_pending_percentage "
+ " SUM(CASE "
+ " WHEN t.completed_manhole >= t.total_manhole "
+ " THEN 1 ELSE 0 "
+ " END) AS total_drain_completed,"
+ " SUM(CASE "
+ " WHEN t.completed_manhole < t.total_manhole "
+ " THEN 1 ELSE 0 "
+ " END) AS total_drain_pending,"
+ " ROUND("
+ " SUM(CASE "
+ " WHEN t.completed_manhole >= t.total_manhole "
+ " THEN 1 ELSE 0 "
+ " END) * 100.0 / NULLIF(COUNT(t.drain_id), 0),"
+ " 2"
+ " ) AS drain_completed_percentage,"
+ " ROUND("
+ " SUM(CASE "
+ " WHEN t.completed_manhole < t.total_manhole "
+ " THEN 1 ELSE 0 "
+ " END) * 100.0 / NULLIF(COUNT(t.drain_id), 0),"
+ " 2"
+ " ) AS drain_pending_percentage "
+ "FROM ("
+ " SELECT '01' AS zone UNION ALL"
+ " SELECT '02' UNION ALL"
@ -754,21 +777,46 @@ public class ManHoleActivity {
+ " SELECT '14' UNION ALL"
+ " SELECT '15'"
+ ") z "
+ "LEFT JOIN ("
+ " SELECT "
+ " d.drain_id,"
+ " d.zone,"
+ " SUM(d.manhole_count) AS total_manhole,"
+ " MAX(d.manhole_count) AS total_manhole,"
+ " COUNT(DISTINCT CASE "
+ " WHEN ba.activity_id IS NOT NULL AND aa.activity_id IS NOT NULL THEN m.manhole_id "
+ " END) AS completed_manhole"
+ " FROM drain_master d"
+ " LEFT JOIN manhole_master m ON d.drain_id = m.drain_id AND m.isactive=1 AND m.isdelete=0"
+ " LEFT JOIN before_activity ba ON m.manhole_id = ba.manhole_id AND ba.isactive=1 AND ba.isdelete=0"
+ " LEFT JOIN after_activity aa ON m.manhole_id = aa.manhole_id AND aa.isactive=1 AND aa.isdelete=0"
+ " WHERE d.isactive = 1 AND d.isdelete = 0"
+ " GROUP BY d.drain_id, d.zone"
+ " WHEN ba.activity_id IS NOT NULL "
+ " AND aa.activity_id IS NOT NULL "
+ " THEN m.manhole_id "
+ " END) AS completed_manhole "
+ " FROM drain_master d "
+ " LEFT JOIN manhole_master m "
+ " ON d.drain_id = m.drain_id "
+ " AND m.isactive = 1 "
+ " AND m.isdelete = 0 "
+ " LEFT JOIN before_activity ba "
+ " ON m.manhole_id = ba.manhole_id "
+ " AND ba.isactive = 1 "
+ " AND ba.isdelete = 0 "
+ " LEFT JOIN after_activity aa "
+ " ON m.manhole_id = aa.manhole_id "
+ " AND aa.isactive = 1 "
+ " AND aa.isdelete = 0 "
+ " WHERE d.isactive = 1 "
+ " AND d.isdelete = 0 "
+ " GROUP BY "
+ " d.drain_id, "
+ " d.zone "
+ ") t ON z.zone = t.zone "
+ "GROUP BY z.zone "
+ "ORDER BY z.zone";
@ -776,33 +824,86 @@ public class ManHoleActivity {
}
public List<Map<String, Object>> getWardReport(String zone) {
String sql = "SELECT "
+ " t.zone,"
+ " t.ward,"
+ " COUNT(t.drain_id) AS total_drain,"
+ " SUM(CASE WHEN t.total_manhole = t.completed_manhole THEN 1 ELSE 0 END) AS total_drain_completed,"
+ " SUM(CASE WHEN t.total_manhole > t.completed_manhole THEN 1 ELSE 0 END) AS total_drain_pending,"
+ " ROUND(SUM(CASE WHEN t.total_manhole = t.completed_manhole THEN 1 ELSE 0 END) * 100.0 / COUNT(t.drain_id), 2) AS drain_completed_percentage,"
+ " ROUND(SUM(CASE WHEN t.total_manhole > t.completed_manhole THEN 1 ELSE 0 END) * 100.0 / COUNT(t.drain_id), 2) AS drain_pending_percentage "
+ "FROM ("
+ " SELECT "
+ " d.drain_id,"
+ " d.zone,"
+ " d.ward,"
+ " SUM(d.manhole_count) AS total_manhole,"
+ " COUNT(DISTINCT CASE "
+ " WHEN ba.activity_id IS NOT NULL AND aa.activity_id IS NOT NULL THEN m.manhole_id "
+ " END) AS completed_manhole"
+ " FROM drain_master d"
+ " LEFT JOIN manhole_master m ON d.drain_id = m.drain_id AND m.isactive=1 AND m.isdelete=0"
+ " LEFT JOIN before_activity ba ON m.manhole_id = ba.manhole_id AND ba.isactive=1 AND ba.isdelete=0"
+ " LEFT JOIN after_activity aa ON m.manhole_id = aa.manhole_id AND aa.isactive=1 AND aa.isdelete=0"
+ " WHERE d.isactive = 1 AND d.isdelete = 0"
+ " AND d.zone = ?"
+ " GROUP BY d.drain_id, d.zone, d.ward"
+ ") t "
+ "GROUP BY t.zone, t.ward "
+ "ORDER BY t.ward";
String sql = "SELECT " +
" t.zone, " +
" t.ward, " +
" COUNT(t.drain_id) AS total_drain, " +
" SUM( " +
" CASE " +
" WHEN t.total_manhole > 0 " +
" AND t.completed_manhole >= t.total_manhole " +
" THEN 1 " +
" ELSE 0 " +
" END " +
" ) AS total_drain_completed, " +
" SUM( " +
" CASE " +
" WHEN t.completed_manhole < t.total_manhole " +
" THEN 1 " +
" ELSE 0 " +
" END " +
" ) AS total_drain_pending, " +
" ROUND( " +
" SUM( " +
" CASE " +
" WHEN t.total_manhole > 0 " +
" AND t.completed_manhole >= t.total_manhole " +
" THEN 1 " +
" ELSE 0 " +
" END " +
" ) * 100.0 / NULLIF(COUNT(t.drain_id), 0), " +
" 2 " +
" ) AS drain_completed_percentage, " +
" ROUND( " +
" SUM( " +
" CASE " +
" WHEN t.completed_manhole < t.total_manhole " +
" THEN 1 " +
" ELSE 0 " +
" END " +
" ) * 100.0 / NULLIF(COUNT(t.drain_id), 0), " +
" 2 " +
" ) AS drain_pending_percentage " +
"FROM ( " +
" SELECT " +
" d.drain_id, " +
" d.zone, " +
" d.ward, " +
" MAX(d.manhole_count) AS total_manhole, " +
" COUNT( " +
" DISTINCT CASE " +
" WHEN ba.activity_id IS NOT NULL " +
" AND aa.activity_id IS NOT NULL " +
" THEN m.manhole_id " +
" END " +
" ) AS completed_manhole " +
" FROM drain_master d " +
" LEFT JOIN manhole_master m " +
" ON d.drain_id = m.drain_id " +
" AND m.isactive = 1 " +
" AND m.isdelete = 0 " +
" LEFT JOIN before_activity ba " +
" ON m.manhole_id = ba.manhole_id " +
" AND ba.isactive = 1 " +
" AND ba.isdelete = 0 " +
" LEFT JOIN after_activity aa " +
" ON m.manhole_id = aa.manhole_id " +
" AND aa.isactive = 1 " +
" AND aa.isdelete = 0 " +
" WHERE " +
" d.isactive = 1 " +
" AND d.isdelete = 0 " +
" AND d.zone = ? " +
" GROUP BY " +
" d.drain_id, " +
" d.zone, " +
" d.ward " +
") t " +
"GROUP BY " +
" t.zone, " +
" t.ward " +
"ORDER BY " +
" t.ward";
return jdbcManHoleTemplate.queryForList(sql, zone);
}

Loading…
Cancel
Save