diff --git a/src/main/java/com/gcc/commissionerreview/controller/WorksController.java b/src/main/java/com/gcc/commissionerreview/controller/WorksController.java index e61cd81..91339cf 100644 --- a/src/main/java/com/gcc/commissionerreview/controller/WorksController.java +++ b/src/main/java/com/gcc/commissionerreview/controller/WorksController.java @@ -76,10 +76,14 @@ public class WorksController { @RequestParam(required = false) Integer zone, - @RequestParam(required = false) Integer ward) { + @RequestParam(required = false) Integer ward, + + @RequestParam(required = false) String lastRelayedStatus + ) { + Map result = worksService.getDashboardDetails(financialYear, workType, roadType, fundType, - progressStatus, zone, ward); + progressStatus, zone, ward,lastRelayedStatus); return ResponseEntity.ok(result); } diff --git a/src/main/java/com/gcc/commissionerreview/service/WorksService.java b/src/main/java/com/gcc/commissionerreview/service/WorksService.java index 40a4161..c125741 100644 --- a/src/main/java/com/gcc/commissionerreview/service/WorksService.java +++ b/src/main/java/com/gcc/commissionerreview/service/WorksService.java @@ -157,28 +157,20 @@ public class WorksService { public Map getDashboardDetails( String financialYear, Integer workType, Integer roadType, Integer fundType, String progressStatus, - Integer zone, Integer ward) { + Integer zone, Integer ward, String lastRelayedStatus) { StringBuilder where = new StringBuilder(" AND wd.isactive = 1 AND wd.isdelete = 0 "); List params = new ArrayList<>(); // Build common filters - buildFilters(where, params, financialYear, fundType, progressStatus, zone, ward); + buildFilters(where, params, financialYear, fundType, progressStatus, zone, ward,lastRelayedStatus); Map response = new HashMap<>(); response.put("summary", getSummary(where.toString(), params)); - /*response.put( - "roadStatus", - getRoadStatus( - where.toString(), - params - ) - );*/ - response.put("roadTypes", RoadTypes(where.toString(), params, roadType, workType)); response.put("workTypes", WorkTypes(where.toString(), params, roadType, workType)); @@ -197,7 +189,7 @@ public class WorksService { private void buildFilters( StringBuilder where, List params, String financialYear, Integer fundType, String progressStatus, - Integer zone, Integer ward) { + Integer zone, Integer ward,String lastRelayedStatus) { // Zone @@ -244,7 +236,7 @@ public class WorksService { AND DATEDIFF( CURDATE(), wd.loa_date - ) <= wd.contractor_period + ) <= CAST(wd.contractor_period AS UNSIGNED) """); break; @@ -267,7 +259,7 @@ public class WorksService { AND DATEDIFF( CURDATE(), wd.loa_date - ) > wd.contractor_period + ) > CAST(wd.contractor_period AS UNSIGNED) """); break; @@ -288,6 +280,99 @@ public class WorksService { params.add(financialYear); } + + + // lastRelayedStatus + + // Last Relayed Status + if (lastRelayedStatus != null + && !lastRelayedStatus.trim().isEmpty()) { + + switch (lastRelayedStatus) { + + case "within_six": + + where.append(""" + AND STR_TO_DATE( + CONCAT( + '28 ', + wd.last_relay_month, + ' ', + wd.last_relay_year + ), + '%d %M %Y' + ) >= DATE_SUB(CURDATE(), INTERVAL 6 MONTH) + + AND STR_TO_DATE( + CONCAT( + '28 ', + wd.last_relay_month, + ' ', + wd.last_relay_year + ), + '%d %M %Y' + ) <= CURDATE() + """); + + break; + + + case "six_to_one": + + where.append(""" + AND STR_TO_DATE( + CONCAT( + '28 ', + wd.last_relay_month, + ' ', + wd.last_relay_year + ), + '%d %M %Y' + ) < DATE_SUB(CURDATE(), INTERVAL 6 MONTH) + + AND STR_TO_DATE( + CONCAT( + '28 ', + wd.last_relay_month, + ' ', + wd.last_relay_year + ), + '%d %M %Y' + ) >= DATE_SUB(CURDATE(), INTERVAL 1 YEAR) + + AND STR_TO_DATE( + CONCAT( + '28 ', + wd.last_relay_month, + ' ', + wd.last_relay_year + ), + '%d %M %Y' + ) <= CURDATE() + """); + + break; + + + case "above_one_year": + + where.append(""" + AND STR_TO_DATE( + CONCAT( + '28 ', + wd.last_relay_month, + ' ', + wd.last_relay_year + ), + '%d %M %Y' + ) < DATE_SUB(CURDATE(), INTERVAL 1 YEAR) + """); + + break; + } + } + + } @@ -351,7 +436,7 @@ public class WorksService { " AND DATEDIFF( " + " CURDATE(), " + " wd.loa_date " + - " ) > wd.contractor_period " + + " ) > CAST(wd.contractor_period AS UNSIGNED) " + " THEN wd.estid " + " END " + " ) AS delay_count, " + @@ -363,7 +448,7 @@ public class WorksService { " AND DATEDIFF( " + " CURDATE(), " + " wd.loa_date " + - " ) <= wd.contractor_period " + + " ) <= CAST(wd.contractor_period AS UNSIGNED) " + " THEN wd.estid " + " END " + " ) AS inprogress_count " + @@ -450,7 +535,7 @@ public class WorksService { + " AND wd.sub_category = 4 " + " AND wd.percentage > 0 " + " AND wd.percentage < 100 " - + " AND DATEDIFF(CURDATE(), wd.loa_date) > wd.contractor_period "; + + " AND DATEDIFF(CURDATE(), wd.loa_date) > CAST(wd.contractor_period AS UNSIGNED) "; String sql = "SELECT " + @@ -460,28 +545,28 @@ public class WorksService { // Delay > 15 days and <= 30 days " COUNT(DISTINCT CASE " + - " WHEN (DATEDIFF(CURDATE(), wd.loa_date) - wd.contractor_period) > 15 " + - " AND (DATEDIFF(CURDATE(), wd.loa_date) - wd.contractor_period) <= 30 " + + " WHEN (DATEDIFF(CURDATE(), wd.loa_date) - CAST(wd.contractor_period AS UNSIGNED)) > 15 " + + " AND (DATEDIFF(CURDATE(), wd.loa_date) - CAST(wd.contractor_period AS UNSIGNED)) <= 30 " + " THEN wd.estid " + " END) AS delayed_15_days, " + // Delay > 30 days and <= 90 days " COUNT(DISTINCT CASE " + - " WHEN (DATEDIFF(CURDATE(), wd.loa_date) - wd.contractor_period) > 30 " + - " AND (DATEDIFF(CURDATE(), wd.loa_date) - wd.contractor_period) <= 90 " + + " WHEN (DATEDIFF(CURDATE(), wd.loa_date) - CAST(wd.contractor_period AS UNSIGNED)) > 30 " + + " AND (DATEDIFF(CURDATE(), wd.loa_date) - CAST(wd.contractor_period AS UNSIGNED)) <= 90 " + " THEN wd.estid " + " END) AS delayed_1_month, " + // Delay > 90 days and <= 180 days " COUNT(DISTINCT CASE " + - " WHEN (DATEDIFF(CURDATE(), wd.loa_date) - wd.contractor_period) > 90 " + - " AND (DATEDIFF(CURDATE(), wd.loa_date) - wd.contractor_period) <= 180 " + + " WHEN (DATEDIFF(CURDATE(), wd.loa_date) - CAST(wd.contractor_period AS UNSIGNED)) > 90 " + + " AND (DATEDIFF(CURDATE(), wd.loa_date) - CAST(wd.contractor_period AS UNSIGNED)) <= 180 " + " THEN wd.estid " + " END) AS delayed_3_month, " + // Delay > 180 days " COUNT(DISTINCT CASE " + - " WHEN (DATEDIFF(CURDATE(), wd.loa_date) - wd.contractor_period) > 180 " + + " WHEN (DATEDIFF(CURDATE(), wd.loa_date) - CAST(wd.contractor_period AS UNSIGNED)) > 180 " + " THEN wd.estid " + " END) AS delayed_6_month " + @@ -781,7 +866,7 @@ public class WorksService { " WHEN wd.percentage > 0 " + " AND wd.percentage < 100 " + - " AND DATEDIFF(CURDATE(), wd.loa_date) > wd.contractor_period " + + " AND DATEDIFF(CURDATE(), wd.loa_date) > CAST(wd.contractor_period AS UNSIGNED) " + " THEN 'Delayed' " + " WHEN wd.percentage > 0 " + @@ -837,7 +922,7 @@ public class WorksService { " CONCAT('" + fileBaseUrl + "/gcc/files', ew.work_order_file) AS view_workOrder_file " + - " FROM erp_works ew " + + " FROM works_details ew " + " LEFT JOIN department_master dm " + " ON dm.id = ew.department " + @@ -1085,7 +1170,7 @@ public class WorksService { THEN DATE_FORMAT( DATE_ADD( wd.work_commenced_date, - INTERVAL wd.contractor_period DAY + INTERVAL CAST(wd.contractor_period AS UNSIGNED) DAY ), '%d-%m-%Y' ) diff --git a/src/main/resources/templates/modules/roadwarweb/roadwarregisterdashboard.html b/src/main/resources/templates/modules/roadwarweb/roadwarregisterdashboard.html index ef7496c..4bfd60a 100644 --- a/src/main/resources/templates/modules/roadwarweb/roadwarregisterdashboard.html +++ b/src/main/resources/templates/modules/roadwarweb/roadwarregisterdashboard.html @@ -576,7 +576,7 @@
-
GIS TOTAL ROADS
+
GCC TOTAL ROADS
36807
diff --git a/src/main/resources/templates/modules/works/dashboard.html b/src/main/resources/templates/modules/works/dashboard.html index e7afd23..3f088e6 100644 --- a/src/main/resources/templates/modules/works/dashboard.html +++ b/src/main/resources/templates/modules/works/dashboard.html @@ -418,12 +418,27 @@
+ +
+ -
+
+
+ + +
+ +
+ - - @@ -1758,6 +1771,8 @@ fundType: $('#fundType').val() || null, progressStatus: $('#progressStatus').val() || null, + + lastRelayedStatus:$('#lastRelayedStatus').val() || null, zone: $('#zone').val() || null, diff --git a/src/main/resources/templates/modules/works/estimatedetails.html b/src/main/resources/templates/modules/works/estimatedetails.html index 2790b9a..a53c361 100644 --- a/src/main/resources/templates/modules/works/estimatedetails.html +++ b/src/main/resources/templates/modules/works/estimatedetails.html @@ -427,7 +427,7 @@

- SANCTIONS & ORDERS + Sanction & Orders