Browse Source

Added last relayed filter in road works dashboard

master
Hariprasath S 6 days ago
parent
commit
1aa39b4aee
  1. 8
      src/main/java/com/gcc/commissionerreview/controller/WorksController.java
  2. 137
      src/main/java/com/gcc/commissionerreview/service/WorksService.java
  3. 2
      src/main/resources/templates/modules/roadwarweb/roadwarregisterdashboard.html
  4. 25
      src/main/resources/templates/modules/works/dashboard.html
  5. 2
      src/main/resources/templates/modules/works/estimatedetails.html

8
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 zone,
@RequestParam(required = false) Integer ward) {
@RequestParam(required = false) Integer ward,
@RequestParam(required = false) String lastRelayedStatus
) {
Map<String, Object> result = worksService.getDashboardDetails(financialYear, workType, roadType, fundType, Map<String, Object> result = worksService.getDashboardDetails(financialYear, workType, roadType, fundType,
progressStatus, zone, ward);
progressStatus, zone, ward,lastRelayedStatus);
return ResponseEntity.ok(result); return ResponseEntity.ok(result);
} }

137
src/main/java/com/gcc/commissionerreview/service/WorksService.java

@ -157,28 +157,20 @@ public class WorksService {
public Map<String, Object> getDashboardDetails( public Map<String, Object> getDashboardDetails(
String financialYear, Integer workType, Integer roadType, Integer fundType, String progressStatus, 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 "); StringBuilder where = new StringBuilder(" AND wd.isactive = 1 AND wd.isdelete = 0 ");
List<Object> params = new ArrayList<>(); List<Object> params = new ArrayList<>();
// Build common filters // Build common filters
buildFilters(where, params, financialYear, fundType, progressStatus, zone, ward);
buildFilters(where, params, financialYear, fundType, progressStatus, zone, ward,lastRelayedStatus);
Map<String, Object> response = new HashMap<>(); Map<String, Object> response = new HashMap<>();
response.put("summary", getSummary(where.toString(), params)); 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("roadTypes", RoadTypes(where.toString(), params, roadType, workType));
response.put("workTypes", WorkTypes(where.toString(), params, roadType, workType)); response.put("workTypes", WorkTypes(where.toString(), params, roadType, workType));
@ -197,7 +189,7 @@ public class WorksService {
private void buildFilters( private void buildFilters(
StringBuilder where, List<Object> params, String financialYear, Integer fundType, String progressStatus, StringBuilder where, List<Object> params, String financialYear, Integer fundType, String progressStatus,
Integer zone, Integer ward) {
Integer zone, Integer ward,String lastRelayedStatus) {
// Zone // Zone
@ -244,7 +236,7 @@ public class WorksService {
AND DATEDIFF( AND DATEDIFF(
CURDATE(), CURDATE(),
wd.loa_date wd.loa_date
) <= wd.contractor_period
) <= CAST(wd.contractor_period AS UNSIGNED)
"""); """);
break; break;
@ -267,7 +259,7 @@ public class WorksService {
AND DATEDIFF( AND DATEDIFF(
CURDATE(), CURDATE(),
wd.loa_date wd.loa_date
) > wd.contractor_period
) > CAST(wd.contractor_period AS UNSIGNED)
"""); """);
break; break;
@ -288,6 +280,99 @@ public class WorksService {
params.add(financialYear); 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( " + " AND DATEDIFF( " +
" CURDATE(), " + " CURDATE(), " +
" wd.loa_date " + " wd.loa_date " +
" ) > wd.contractor_period " +
" ) > CAST(wd.contractor_period AS UNSIGNED) " +
" THEN wd.estid " + " THEN wd.estid " +
" END " + " END " +
" ) AS delay_count, " + " ) AS delay_count, " +
@ -363,7 +448,7 @@ public class WorksService {
" AND DATEDIFF( " + " AND DATEDIFF( " +
" CURDATE(), " + " CURDATE(), " +
" wd.loa_date " + " wd.loa_date " +
" ) <= wd.contractor_period " +
" ) <= CAST(wd.contractor_period AS UNSIGNED) " +
" THEN wd.estid " + " THEN wd.estid " +
" END " + " END " +
" ) AS inprogress_count " + " ) AS inprogress_count " +
@ -450,7 +535,7 @@ public class WorksService {
+ " AND wd.sub_category = 4 " + " AND wd.sub_category = 4 "
+ " AND wd.percentage > 0 " + " AND wd.percentage > 0 "
+ " AND wd.percentage < 100 " + " 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 = String sql =
"SELECT " + "SELECT " +
@ -460,28 +545,28 @@ public class WorksService {
// Delay > 15 days and <= 30 days // Delay > 15 days and <= 30 days
" COUNT(DISTINCT CASE " + " 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 " + " THEN wd.estid " +
" END) AS delayed_15_days, " + " END) AS delayed_15_days, " +
// Delay > 30 days and <= 90 days // Delay > 30 days and <= 90 days
" COUNT(DISTINCT CASE " + " 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 " + " THEN wd.estid " +
" END) AS delayed_1_month, " + " END) AS delayed_1_month, " +
// Delay > 90 days and <= 180 days // Delay > 90 days and <= 180 days
" COUNT(DISTINCT CASE " + " 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 " + " THEN wd.estid " +
" END) AS delayed_3_month, " + " END) AS delayed_3_month, " +
// Delay > 180 days // Delay > 180 days
" COUNT(DISTINCT CASE " + " 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 " + " THEN wd.estid " +
" END) AS delayed_6_month " + " END) AS delayed_6_month " +
@ -781,7 +866,7 @@ public class WorksService {
" WHEN wd.percentage > 0 " + " WHEN wd.percentage > 0 " +
" AND wd.percentage < 100 " + " 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' " + " THEN 'Delayed' " +
" WHEN wd.percentage > 0 " + " WHEN wd.percentage > 0 " +
@ -837,7 +922,7 @@ public class WorksService {
" CONCAT('" + fileBaseUrl + "/gcc/files', ew.work_order_file) AS view_workOrder_file " + " 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 " + " LEFT JOIN department_master dm " +
" ON dm.id = ew.department " + " ON dm.id = ew.department " +
@ -1085,7 +1170,7 @@ public class WorksService {
THEN DATE_FORMAT( THEN DATE_FORMAT(
DATE_ADD( DATE_ADD(
wd.work_commenced_date, wd.work_commenced_date,
INTERVAL wd.contractor_period DAY
INTERVAL CAST(wd.contractor_period AS UNSIGNED) DAY
), ),
'%d-%m-%Y' '%d-%m-%Y'
) )

2
src/main/resources/templates/modules/roadwarweb/roadwarregisterdashboard.html

@ -576,7 +576,7 @@
<div class="total-roads-cards"> <div class="total-roads-cards">
<div class="total-roads-card"> <div class="total-roads-card">
<div class="total-roads-label">GIS TOTAL ROADS</div>
<div class="total-roads-label">GCC TOTAL ROADS</div>
<div class="total-roads-count" id="erpMasterRoads">36807</div> <div class="total-roads-count" id="erpMasterRoads">36807</div>
</div> </div>

25
src/main/resources/templates/modules/works/dashboard.html

@ -419,11 +419,26 @@
</div> </div>
<div class="col-12 col-md-6 col-lg-3">
<label for="lastRelayedStatus"
class="form-label fw-semibold text-secondary"> Last Relayed : </label> <select id="lastRelayedStatus" class="form-select"
name="lastRelayedStatus">
<option value="">All</option>
<option value="within_six">Within six months</option>
<option value="six_to_one">Six months to One year</option>
<option value="above_one_year">Above one year</option>
</select>
</div>
</div>
<!-- Buttons --> <!-- Buttons -->
<div class="col-12 col-md-6 col-lg-3 d-flex align-items-end">
<div class="text-center mt-3 filter-buttons">
<div class="d-flex gap-2 w-100 filter-buttons">
<!-- <div class="d-flex gap-2 filter-buttons"> -->
<button type="button" <button type="button"
id="searchBtn" id="searchBtn"
@ -437,9 +452,7 @@
Reset Reset
</button> </button>
</div>
</div>
<!-- </div> -->
</div> </div>
@ -1759,6 +1772,8 @@
progressStatus: $('#progressStatus').val() || null, progressStatus: $('#progressStatus').val() || null,
lastRelayedStatus:$('#lastRelayedStatus').val() || null,
zone: $('#zone').val() || null, zone: $('#zone').val() || null,
ward: $('#ward').val() || null ward: $('#ward').val() || null

2
src/main/resources/templates/modules/works/estimatedetails.html

@ -427,7 +427,7 @@
<hr> <hr>
<h3 class="sub-section-title"> <h3 class="sub-section-title">
SANCTIONS & ORDERS
Sanction & Orders
</h3> </h3>

Loading…
Cancel
Save