|
|
|
@ -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); |
|
|
|
} |
|
|
|
|