@ -1674,6 +1674,135 @@ public class RoadWarService {
swdCounts . put ( "available" , swdResult . get ( "available_count" ) ) ;
swdCounts . put ( "notAvailable" , swdResult . get ( "not_available_count" ) ) ;
String relayingSql = "" "
SELECT
SUM (
CASE
WHEN STR_TO_DATE (
CONCAT (
ym . year_name ,
'-' ,
LPAD ( rd . relay_month , 2 , '0' ) ,
' - 01 '
) ,
' % Y - % m - % d '
) > = DATE_SUB ( CURDATE ( ) , INTERVAL 6 MONTH )
THEN 1
ELSE 0
END
) AS within_six_months ,
SUM (
CASE
WHEN STR_TO_DATE (
CONCAT (
ym . year_name ,
'-' ,
LPAD ( rd . relay_month , 2 , '0' ) ,
' - 01 '
) ,
' % Y - % m - % d '
) > = DATE_SUB ( CURDATE ( ) , INTERVAL 1 YEAR )
AND STR_TO_DATE (
CONCAT (
ym . year_name ,
'-' ,
LPAD ( rd . relay_month , 2 , '0' ) ,
' - 01 '
) ,
' % Y - % m - % d '
) < DATE_SUB ( CURDATE ( ) , INTERVAL 6 MONTH )
THEN 1
ELSE 0
END
) AS sixmonths_to_oneyear ,
SUM (
CASE
WHEN STR_TO_DATE (
CONCAT (
ym . year_name ,
'-' ,
LPAD ( rd . relay_month , 2 , '0' ) ,
' - 01 '
) ,
' % Y - % m - % d '
) < DATE_SUB ( CURDATE ( ) , INTERVAL 1 YEAR )
THEN 1
ELSE 0
END
) AS above_one_year
FROM road_details_master r
INNER JOIN relaying_details rd
ON r . ref_id = rd . road_ref_id
INNER JOIN month_master mm
ON mm . id = rd . relay_month
AND mm . is_active = 1
AND mm . is_delete = 0
INNER JOIN year_master ym
ON ym . id = rd . relay_year
AND ym . is_active = 1
AND ym . is_delete = 0
WHERE r . is_active = 1
AND r . is_delete = 0
AND rd . is_active = 1
AND rd . is_delete = 0
"" " ;
List < Object > relayingParams = new ArrayList < > ( ) ;
if ( zone ! = null & & ! zone . trim ( ) . isEmpty ( ) ) {
relayingSql + = " AND r.zone = ? " ;
relayingParams . add ( zone ) ;
}
if ( ward ! = null & & ! ward . trim ( ) . isEmpty ( ) ) {
relayingSql + = " AND r.ward = ? " ;
relayingParams . add ( ward ) ;
}
if ( roadType ! = null ) {
relayingSql + = " AND r.road_type = ? " ;
relayingParams . add ( roadType ) ;
}
if ( swd ! = null & & ! swd . trim ( ) . isEmpty ( ) ) {
relayingSql + =
" AND LOWER(TRIM(r.is_swd)) = LOWER(?) " ;
relayingParams . add ( swd ) ;
}
Map < String , Object > relayingResult = jdbcTemplate . queryForMap ( relayingSql , relayingParams . toArray ( ) ) ;
Map < String , Object > relayingTimeline = new HashMap < > ( ) ;
relayingTimeline . put ( "withinSixMonths" , relayingResult . get ( "within_six_months" ) ) ;
relayingTimeline . put ( "sixMonthsToOneYear" , relayingResult . get ( "sixmonths_to_oneyear" ) ) ;
relayingTimeline . put ( "aboveOneYear" , relayingResult . get ( "above_one_year" ) ) ;
response . put ( "relayingTimeline" , relayingTimeline ) ;
response . put ( "status" , true ) ;
response . put ( "message" , "Dashboard data fetched successfully" ) ;
@ -1869,5 +1998,288 @@ public class RoadWarService {
return response ;
}
public Map < String , Object > getRelayingTimelineRecords ( String timeline , String zone , String ward ,
Integer roadType , String swd ) {
Map < String , Object > response = new HashMap < > ( ) ;
try {
StringBuilder sql = new StringBuilder ( "" "
SELECT
r . ref_id ,
r . zone ,
r . ward ,
r . road_id ,
r . road_name ,
r . area_name ,
r . locality_name ,
r . road_type ,
rt . road_type AS road_type_name ,
r . road_type_material ,
r . road_length ,
r . road_row_width ,
r . road_avg_width ,
r . road_area ,
r . is_swd ,
r . is_electric_poles ,
r . is_streetlight_poles ,
r . culvert_bridge_count ,
rd . relay_month ,
mm . month_name ,
rd . relay_year ,
ym . year_name ,
rd . remarks
FROM road_details_master r
INNER JOIN relaying_details rd
ON r . ref_id = rd . road_ref_id
LEFT JOIN road_type_master rt
ON rt . id = r . road_type
INNER JOIN month_master mm
ON mm . id = rd . relay_month
AND mm . is_active = 1
AND mm . is_delete = 0
INNER JOIN year_master ym
ON ym . id = rd . relay_year
AND ym . is_active = 1
AND ym . is_delete = 0
WHERE r . is_active = 1
AND r . is_delete = 0
AND rd . is_active = 1
AND rd . is_delete = 0
"" " ) ;
List < Object > params = new ArrayList < > ( ) ;
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
/ / Dashboard Filters
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
if ( zone ! = null & & ! zone . trim ( ) . isEmpty ( ) ) {
sql . append ( " AND r.zone = ? " ) ;
params . add ( zone ) ;
}
if ( ward ! = null & & ! ward . trim ( ) . isEmpty ( ) ) {
sql . append ( " AND r.ward = ? " ) ;
params . add ( ward ) ;
}
if ( roadType ! = null ) {
sql . append ( " AND r.road_type = ? " ) ;
params . add ( roadType ) ;
}
if ( swd ! = null & & ! swd . trim ( ) . isEmpty ( ) ) {
sql . append ( "" "
AND LOWER ( TRIM ( r . is_swd ) ) = LOWER ( ? )
"" " ) ;
params . add ( swd ) ;
}
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
/ / Timeline Filter
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
String relayDate = "" "
STR_TO_DATE (
CONCAT (
ym . year_name ,
'-' ,
LPAD ( rd . relay_month , 2 , '0' ) ,
' - 01 '
) ,
' % Y - % m - % d '
)
"" " ;
if ( "within6" . equalsIgnoreCase ( timeline ) ) {
sql . append ( "" "
AND % s > = DATE_SUB ( CURDATE ( ) , INTERVAL 6 MONTH )
"" " . formatted ( relayDate ) ) ;
} else if ( "sixToOne" . equalsIgnoreCase ( timeline ) ) {
sql . append ( "" "
AND % s > = DATE_SUB ( CURDATE ( ) , INTERVAL 1 YEAR )
AND % s < DATE_SUB ( CURDATE ( ) , INTERVAL 6 MONTH )
"" " . formatted ( relayDate , relayDate ) ) ;
} else if ( "aboveOne" . equalsIgnoreCase ( timeline ) ) {
sql . append ( "" "
AND % s < DATE_SUB ( CURDATE ( ) , INTERVAL 1 YEAR )
"" " . formatted ( relayDate ) ) ;
} else {
response . put ( "status" , false ) ;
response . put ( "message" , "Invalid timeline type" ) ;
return response ;
}
sql . append ( "" "
ORDER BY
r . zone ,
r . ward ,
r . road_name
"" " ) ;
List < Map < String , Object > > records = jdbcTemplate . queryForList ( sql . toString ( ) , params . toArray ( ) ) ;
response . put ( "status" , true ) ;
response . put ( "message" , "Relaying timeline records fetched successfully" ) ;
response . put ( "data" , records ) ;
return response ;
} catch ( Exception e ) {
e . printStackTrace ( ) ;
response . put ( "status" , false ) ;
response . put ( "message" , "Failed to fetch relaying timeline records" ) ;
return response ;
}
}
/ / using web flow of works project
public Map < String , Object > getRoadWarDetailsByRoadId ( int roadId ) {
Map < String , Object > result = new HashMap < > ( ) ;
try {
String sql =
"SELECT rdm.*,DATE_FORMAT(rdm.cdate, '%d-%m-%Y %r') AS created_date, rtm.road_type As road_type_name,rtmm.roadtype_material as roadtype_material_name,ftm.footpath_type_name as footpath_material_name,ftmr.footpath_type_name as r_footpath_material_name, " +
"fpsm.road_side_name AS footpath_side_name, " +
"swdsm.road_side_name AS swd_side_name, " +
"scpsm.road_side_name AS scp_side_name, " +
"mhsm.road_side_name AS manhole_side_name, " +
"cpsm.road_side_name AS cpipe_side_name, " +
"rwhsm.road_side_name AS rwh_side_name " +
"FROM road_details_master rdm " +
"LEFT JOIN road_type_master rtm ON rtm.id = rdm.road_type " +
"LEFT JOIN roadtype_material_master rtmm ON rtmm.id = rdm.road_type_material " +
"LEFT JOIN footpath_type_master ftm ON ftm.id= rdm.footpath_material " +
"LEFT JOIN footpath_type_master ftmr ON ftmr.id= rdm.r_footpath_material " +
"LEFT JOIN road_side_master fpsm " +
"ON fpsm.id = rdm.footpath_at " +
"LEFT JOIN road_side_master swdsm " +
"ON swdsm.id = rdm.swd_at " +
"LEFT JOIN road_side_master scpsm " +
"ON scpsm.id = rdm.scp_at " +
"LEFT JOIN road_side_master mhsm " +
"ON mhsm.id = rdm.manhole_at " +
"LEFT JOIN road_side_master cpsm " +
"ON cpsm.id = rdm.cp_at " +
"LEFT JOIN road_side_master rwhsm " +
"ON rwhsm.id = rdm.rwh_at " +
"WHERE rdm.road_id = ? AND rdm.is_active=1 AND rdm.is_delete=0 " ;
Map < String , Object > road = jdbcTemplate . queryForMap ( sql , roadId ) ;
for ( Map . Entry < String , Object > entry : road . entrySet ( ) ) {
if ( entry . getValue ( ) = = null ) {
entry . setValue ( "" ) ;
}
}
result . putAll ( road ) ;
String road_ref_Id = String . valueOf ( road . get ( "ref_id" ) ) ;
System . out . println ( "road_ref_Id>>>>>>." + road_ref_Id ) ;
List < Map < String , Object > > relayingDetails =
jdbcTemplate . queryForList (
" SELECT rd.*,DATE_FORMAT(rd.cdate, '%d-%m-%Y %r') AS created_date,mm.month_name,ym.year_name,rtmm.roadtype_material "
+ " FROM relaying_details rd "
+ " LEFT JOIN month_master mm on mm.id = rd.relay_month "
+ " LEFT JOIN year_master ym on ym.id = rd.relay_year "
+ " LEFT JOIN roadtype_material_master rtmm on rtmm.id = rd.road_type_material "
+ " WHERE rd.road_ref_id = ? AND rd.is_active=1 AND rd.is_delete=0 " ,
road_ref_Id ) ;
result . put ( "relayingDetails" , relayingDetails ) ;
List < Map < String , Object > > fileDetails = jdbcTemplate . queryForList (
"SELECT *, CONCAT('" + fileBaseUrl + "/gccofficialapp/files',file_path) as file_url "
+ " FROM road_master_files "
+ " WHERE road_ref_Id = ? AND is_active=1 AND is_delete=0 " ,
road_ref_Id ) ;
for ( Map < String , Object > row : fileDetails ) {
for ( Map . Entry < String , Object > entry : row . entrySet ( ) ) {
if ( entry . getValue ( ) = = null ) {
entry . setValue ( "" ) ;
}
}
}
result . put ( "fileDetails" , fileDetails ) ;
/ / String road_ref_Id = String . valueOf ( road . get ( "road_ref_id" ) ) ;
/ / System . out . println ( "road_ref_Id>>>>>>>>>" + road_ref_Id ) ;
/ / System . out . println ( "========Road id=========" + roadId ) ;
List < Map < String , Object > > geolocdetails = roadwarjdbcTemplate . queryForList (
"SELECT *, " +
"CONCAT('" + fileBaseUrl + "/gccofficialapp/files', centre_img) AS centre_img_url " +
"FROM centre_street_details " +
"WHERE road_Id = ? AND isactive = 1 AND isdelete = 0" ,
roadId
) ;
/ / Replace null values with empty string
for ( Map < String , Object > row : geolocdetails ) {
for ( Map . Entry < String , Object > entry : row . entrySet ( ) ) {
if ( entry . getValue ( ) = = null ) {
entry . setValue ( "" ) ;
}
}
}
result . put ( "geolocdetails" , geolocdetails ) ;
result . put ( "message" , "Fetched Details Successfully" ) ;
result . put ( "status" , true ) ;
} catch ( Exception e ) {
result . put ( "status" , false ) ;
result . put ( "message" , e . getMessage ( ) ) ;
}
return result ;
}
}