@ -22,6 +22,7 @@ import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder ;
import org.springframework.jdbc.support.KeyHolder ;
import org.springframework.stereotype.Service ;
import org.springframework.stereotype.Service ;
import org.springframework.web.client.RestTemplate ;
import org.springframework.web.client.RestTemplate ;
import org.springframework.transaction.annotation.Transactional ;
import com.fasterxml.jackson.databind.JsonNode ;
import com.fasterxml.jackson.databind.JsonNode ;
import com.fasterxml.jackson.databind.ObjectMapper ;
import com.fasterxml.jackson.databind.ObjectMapper ;
@ -35,8 +36,6 @@ public class RegisterService {
@Autowired
@Autowired
private Environment environment ;
private Environment environment ;
@Autowired
@Autowired
public void setDataSource ( @Qualifier ( "mysqlRoadWarDataSource" ) DataSource dataSource ) {
public void setDataSource ( @Qualifier ( "mysqlRoadWarDataSource" ) DataSource dataSource ) {
this . jdbcTemplate = new JdbcTemplate ( dataSource ) ;
this . jdbcTemplate = new JdbcTemplate ( dataSource ) ;
@ -117,6 +116,27 @@ public class RegisterService {
}
}
public List < Map < String , Object > > getRoadTypeMaterial ( ) {
String sql = "Select id,roadtype_material from roadtype_material_master where is_active = 1 and is_delete = 0" ;
try {
return jdbcTemplate . queryForList ( sql ) ;
} catch ( Exception e ) {
e . printStackTrace ( ) ;
return Collections . emptyList ( ) ;
}
}
public List < Map < String , Object > > getFootpathType ( ) {
String sql = "Select id,footpath_type_name from footpath_type_master where is_active = 1 and is_delete = 0" ;
try {
return jdbcTemplate . queryForList ( sql ) ;
} catch ( Exception e ) {
e . printStackTrace ( ) ;
return Collections . emptyList ( ) ;
}
}
public List < Map < String , Object > > getMonthList ( ) {
public List < Map < String , Object > > getMonthList ( ) {
String sql = "SELECT id, month_name FROM month_master WHERE is_active = 1 AND is_delete = 0 ORDER BY id" ;
String sql = "SELECT id, month_name FROM month_master WHERE is_active = 1 AND is_delete = 0 ORDER BY id" ;
try {
try {
@ -151,8 +171,9 @@ public class RegisterService {
+ " is_cpipe, cpipe_count, is_rwh, rwh_count, "
+ " is_cpipe, cpipe_count, is_rwh, rwh_count, "
+ " sewer_length, sewer_size, "
+ " sewer_length, sewer_size, "
+ " is_electric_poles, ep_count, is_hml, culvert_bridge_count, details, "
+ " is_electric_poles, ep_count, is_hml, culvert_bridge_count, details, "
+ " is_busshelter, busshelter_count, is_centermedian, erp_asset_code, cby,road_id) "
+ "VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)" ;
+ " is_busshelter, busshelter_count, is_centermedian, erp_asset_code, cby,road_id,road_type_material,road_min_width,road_max_width, "
+ " hml_count,is_streetlight_poles,streetlight_poles_count,is_mml,mml_count,road_from,road_to,is_footpath,footpath_at) "
+ "VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)" ;
KeyHolder keyHolder = new GeneratedKeyHolder ( ) ;
KeyHolder keyHolder = new GeneratedKeyHolder ( ) ;
@ -198,6 +219,18 @@ public class RegisterService {
ps . setObject ( 37 , payload . get ( "erp_asset_code" ) ) ;
ps . setObject ( 37 , payload . get ( "erp_asset_code" ) ) ;
ps . setObject ( 38 , payload . get ( "cby" ) ) ;
ps . setObject ( 38 , payload . get ( "cby" ) ) ;
ps . setObject ( 39 , payload . get ( "road_id" ) ) ;
ps . setObject ( 39 , payload . get ( "road_id" ) ) ;
ps . setObject ( 40 , payload . get ( "road_type_material" ) ) ;
ps . setObject ( 41 , payload . get ( "road_min_width" ) ) ;
ps . setObject ( 42 , payload . get ( "road_max_width" ) ) ;
ps . setObject ( 43 , payload . get ( "hml_count" ) ) ;
ps . setObject ( 44 , payload . get ( "is_streetlight_poles" ) ) ;
ps . setObject ( 45 , payload . get ( "streetlight_poles_count" ) ) ;
ps . setObject ( 46 , payload . get ( "is_mml" ) ) ;
ps . setObject ( 47 , payload . get ( "mml_count" ) ) ;
ps . setObject ( 48 , payload . get ( "roadfrom" ) ) ;
ps . setObject ( 49 , payload . get ( "roadto" ) ) ;
ps . setObject ( 50 , payload . get ( "is_footpath" ) ) ;
ps . setObject ( 51 , payload . get ( "footpathat" ) ) ;
return ps ;
return ps ;
} , keyHolder ) ;
} , keyHolder ) ;
@ -213,14 +246,15 @@ public class RegisterService {
if ( relayingList ! = null & & ! relayingList . isEmpty ( ) ) {
if ( relayingList ! = null & & ! relayingList . isEmpty ( ) ) {
String insertRelay = "INSERT INTO relaying_details "
String insertRelay = "INSERT INTO relaying_details "
+ "(road_ref_id, relay_month, relay_year, cr_value, road_type, remarks, cby) "
+ "VALUES (?,?,?,?,?,?,?)" ;
+ "(road_ref_id, relay_month, relay_year,road_type_material , cr_value, road_type, remarks, cby) "
+ "VALUES (?,?,?,?,?,?,?,? )" ;
for ( Map < String , Object > relay : relayingList ) {
for ( Map < String , Object > relay : relayingList ) {
jdbcTemplate . update ( insertRelay ,
jdbcTemplate . update ( insertRelay ,
refId ,
refId ,
relay . get ( "relay_month" ) ,
relay . get ( "relay_month" ) ,
relay . get ( "relay_year" ) ,
relay . get ( "relay_year" ) ,
relay . get ( "road_type_material" ) ,
relay . get ( "cr_value" ) ,
relay . get ( "cr_value" ) ,
relay . get ( "road_type" ) ,
relay . get ( "road_type" ) ,
relay . get ( "remarks" ) ,
relay . get ( "remarks" ) ,
@ -243,16 +277,25 @@ public class RegisterService {
public List < Map < String , Object > > getAllRoadWarDetails (
public List < Map < String , Object > > getAllRoadWarDetails (
String userid ,
String zone ,
String zone ,
String ward ,
String ward ,
String roadName ) {
String roadId ) {
StringBuilder sql = new StringBuilder ( " SELECT rdm.*,rtm.road_type as road_type_name FROM road_details_master rdm " +
StringBuilder sql = new StringBuilder ( " SELECT rdm.*,rtm.road_type as road_type_name,rtmm.roadtype_material as roadtype_material_name,ftm.footpath_type_name as footpath_material_name FROM road_details_master rdm " +
" LEFT JOIN road_type_master rtm ON rtm.id= rdm.road_type " +
" 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 " +
" WHERE 1=1 " ) ;
" WHERE 1=1 " ) ;
List < Object > params = new ArrayList < > ( ) ;
List < Object > params = new ArrayList < > ( ) ;
if ( userid ! = null & & ! userid . isEmpty ( ) ) {
sql . append ( " AND rdm.cby = ?" ) ;
params . add ( userid ) ;
}
if ( zone ! = null & & ! zone . isEmpty ( ) ) {
if ( zone ! = null & & ! zone . isEmpty ( ) ) {
sql . append ( " AND rdm.zone = ?" ) ;
sql . append ( " AND rdm.zone = ?" ) ;
params . add ( zone ) ;
params . add ( zone ) ;
@ -263,9 +306,9 @@ public class RegisterService {
params . add ( ward ) ;
params . add ( ward ) ;
}
}
if ( roadName ! = null & & ! roadName . isEmpty ( ) ) {
sql . append ( " AND rdm.road_name = ?" ) ;
params . add ( roadName ) ;
if ( roadId ! = null & & ! roadId . isEmpty ( ) ) {
sql . append ( " AND rdm.road_id = ?" ) ;
params . add ( roadId ) ;
}
}
sql . append ( " AND rdm.is_active=1 AND rdm.is_delete=0 " ) ;
sql . append ( " AND rdm.is_active=1 AND rdm.is_delete=0 " ) ;
@ -283,9 +326,11 @@ public class RegisterService {
try {
try {
String sql =
String sql =
"SELECT rdm.*, rtm.road_type As road_type_name " +
"SELECT rdm.*, rtm.road_type As road_type_name,rtmm.roadtype_material as roadtype_material,ftm.footpath_type_name as footpath_material_name " +
"FROM road_details_master rdm " +
"FROM road_details_master rdm " +
"LEFT JOIN road_type_master rtm ON rtm.id = rdm.road_type " +
"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 " +
"WHERE rdm.ref_id = ? AND rdm.is_active=1 AND rdm.is_delete=0 " ;
"WHERE rdm.ref_id = ? AND rdm.is_active=1 AND rdm.is_delete=0 " ;
Map < String , Object > road =
Map < String , Object > road =
@ -295,10 +340,11 @@ public class RegisterService {
List < Map < String , Object > > relayingDetails =
List < Map < String , Object > > relayingDetails =
jdbcTemplate . queryForList (
jdbcTemplate . queryForList (
" SELECT rd.*,mm.month_name,ym.year_name "
" SELECT rd.*,mm.month_name,ym.year_name,rtmm.roadtype_material "
+ " FROM relaying_details rd "
+ " FROM relaying_details rd "
+ " LEFT JOIN month_master mm on mm.id = rd.relay_month "
+ " LEFT JOIN month_master mm on mm.id = rd.relay_month "
+ " LEFT JOIN year_master ym on ym.id = rd.relay_year "
+ " 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 " ,
+ " WHERE rd.road_ref_id = ? AND rd.is_active=1 AND rd.is_delete=0 " ,
refid ) ;
refid ) ;
@ -315,4 +361,368 @@ public class RegisterService {
return result ;
return result ;
}
}
public Map < String , Object > checkRoadExists ( Integer roadId ) {
Map < String , Object > response = new HashMap < > ( ) ;
try {
String sql = " SELECT COUNT(*) FROM road_details_master "
+ " WHERE road_id = ? AND is_active=1 AND is_delete = 0 " ;
Integer count = jdbcTemplate . queryForObject (
sql ,
Integer . class ,
roadId
) ;
response . put ( "status" , true ) ;
response . put ( "exists" , count ! = null & & count > 0 ) ;
} catch ( Exception e ) {
e . printStackTrace ( ) ;
response . put ( "status" , false ) ;
response . put ( "message" , "Error while checking road" ) ;
}
return response ;
}
@Transactional
public Map < String , Object > updateRoadWarDetails ( Map < String , Object > payload ) {
Map < String , Object > result = new HashMap < > ( ) ;
try {
String refId = String . valueOf ( payload . get ( "ref_id" ) ) ;
String updatedBy = String . valueOf ( payload . get ( "updated_by" ) ) ;
String roadId = String . valueOf ( payload . get ( "road_id" ) ) ;
Integer count = jdbcTemplate . queryForObject (
"SELECT COUNT(*) " +
"FROM road_details_master " +
"WHERE road_id = ? " +
"AND ref_id <> ? " +
"AND is_active = 1 " +
"AND is_delete = 0" ,
Integer . class ,
roadId ,
refId
) ;
if ( count ! = null & & count > 0 ) {
result . put ( "status" , false ) ;
result . put ( "message" ,
"Selected road is already mapped to another Road War record" ) ;
return result ;
}
/ / COPY CURRENT RECORD TO LOG TABLE
String logSql =
"INSERT INTO road_details_master_log (" +
"id, zone, ward, road_id, road_name, road_type,road_type_material, highway_ans, " +
"road_length, road_avg_width,road_min_width,road_max_width, road_area, " +
"road_from,road_to,is_footpath,footpath_at, " +
"footpath_material, footpath_length, footpath_width, " +
"footpath_from_location, footpath_to_location, " +
"is_swd, swd_from, swd_to, swd_length, swd_size, " +
"is_scp, scp_count, is_manhole, manhole_count, manhole_location, " +
"is_cpipe, cpipe_count, is_rwh, rwh_count, " +
"sewer_length, sewer_size, is_electric_poles, ep_count, is_hml,hml_count, " +
"is_streetlight_poles,streetlight_poles_count,is_mml,mml_count, " +
"culvert_bridge_count, details, is_busshelter, busshelter_count, " +
"is_centermedian, erp_asset_code, ref_id, cdate, cby, " +
"updated_date, updated_by, is_active, is_delete) " +
"SELECT " +
"id, zone, ward, road_id, road_name, road_type,road_type_material, highway_ans, " +
"road_length, road_avg_width,road_min_width,road_max_width, road_area, " +
"road_from,road_to,is_footpath,footpath_at, " +
"footpath_material, footpath_length, footpath_width, " +
"footpath_from_location, footpath_to_location, " +
"is_swd, swd_from, swd_to, swd_length, swd_size, " +
"is_scp, scp_count, is_manhole, manhole_count, manhole_location, " +
"is_cpipe, cpipe_count, is_rwh, rwh_count, " +
"sewer_length, sewer_size, is_electric_poles, ep_count, is_hml,hml_count, " +
"is_streetlight_poles,streetlight_poles_count,is_mml,mml_count, " +
"culvert_bridge_count, details, is_busshelter, busshelter_count, " +
"is_centermedian, erp_asset_code, ref_id, cdate, cby, " +
"updated_date, updated_by, is_active, is_delete " +
"FROM road_details_master " +
"WHERE ref_id=?" ;
jdbcTemplate . update ( logSql , refId ) ;
/ / 2 . IF SWD = NO CLEAR DEPENDENT VALUES
String isSwd = ( String ) payload . get ( "is_swd" ) ;
if ( "no" . equalsIgnoreCase ( isSwd ) ) {
payload . put ( "swd_from" , null ) ;
payload . put ( "swd_to" , null ) ;
payload . put ( "swd_length" , null ) ;
payload . put ( "swd_size" , null ) ;
payload . put ( "is_scp" , null ) ;
payload . put ( "scp_count" , null ) ;
payload . put ( "is_manhole" , null ) ;
payload . put ( "manhole_count" , null ) ;
payload . put ( "manhole_location" , null ) ;
payload . put ( "is_cpipe" , null ) ;
payload . put ( "cpipe_count" , null ) ;
payload . put ( "is_rwh" , null ) ;
payload . put ( "rwh_count" , null ) ;
}
/ / 3 . UPDATE ROAD MASTER
String updateSql =
"UPDATE road_details_master SET " +
"zone=?, " +
"ward=?, " +
"road_id=?, " +
"road_name=?, " +
"road_type=?, " +
"road_type_material=?, " +
"road_length=?, " +
"road_avg_width=?, " +
"road_min_width=?, " +
"road_max_width=?, " +
"road_area=?, " +
"road_from=?, " +
"road_to=?, " +
"is_footpath=?, " +
"footpath_at=?, " +
"footpath_material=?, " +
"footpath_length=?, " +
"footpath_width=?, " +
"footpath_from_location=?, " +
"footpath_to_location=?, " +
"is_swd=?, " +
"swd_from=?, " +
"swd_to=?, " +
"swd_length=?, " +
"swd_size=?, " +
"is_scp=?, " +
"scp_count=?, " +
"is_manhole=?, " +
"manhole_count=?, " +
"manhole_location=?, " +
"is_cpipe=?, " +
"cpipe_count=?, " +
"is_rwh=?, " +
"rwh_count=?, " +
"sewer_length=?, " +
"sewer_size=?, " +
"is_electric_poles=?, " +
"ep_count=?, " +
"is_hml=?, " +
"hml_count=?, " +
"is_streetlight_poles=?, " +
"streetlight_poles_count=?, " +
"is_mml=?, " +
"mml_count=?, " +
"culvert_bridge_count=?, " +
"details=?, " +
"is_busshelter=?, " +
"busshelter_count=?, " +
"is_centermedian=?, " +
"updated_date=NOW(), " +
"updated_by=? " +
"WHERE ref_id=?" ;
jdbcTemplate . update ( updateSql ,
payload . get ( "zone" ) ,
payload . get ( "ward" ) ,
payload . get ( "road_id" ) ,
payload . get ( "road_name" ) ,
payload . get ( "road_type" ) ,
payload . get ( "road_type_material" ) ,
payload . get ( "road_length" ) ,
payload . get ( "road_avg_width" ) ,
payload . get ( "road_min_width" ) ,
payload . get ( "road_max_width" ) ,
payload . get ( "road_area" ) ,
payload . get ( "road_from" ) ,
payload . get ( "road_to" ) ,
payload . get ( "is_footpath" ) ,
payload . get ( "footpath_at" ) ,
payload . get ( "footpath_material" ) ,
payload . get ( "footpath_length" ) ,
payload . get ( "footpath_width" ) ,
payload . get ( "footpath_from_location" ) ,
payload . get ( "footpath_to_location" ) ,
payload . get ( "is_swd" ) ,
payload . get ( "swd_from" ) ,
payload . get ( "swd_to" ) ,
payload . get ( "swd_length" ) ,
payload . get ( "swd_size" ) ,
payload . get ( "is_scp" ) ,
payload . get ( "scp_count" ) ,
payload . get ( "is_manhole" ) ,
payload . get ( "manhole_count" ) ,
payload . get ( "manhole_location" ) ,
payload . get ( "is_cpipe" ) ,
payload . get ( "cpipe_count" ) ,
payload . get ( "is_rwh" ) ,
payload . get ( "rwh_count" ) ,
payload . get ( "sewer_length" ) ,
payload . get ( "sewer_size" ) ,
payload . get ( "is_electric_poles" ) ,
payload . get ( "ep_count" ) ,
payload . get ( "is_hml" ) ,
payload . get ( "hml_count" ) ,
payload . get ( "is_streetlight_poles" ) ,
payload . get ( "streetlight_poles_count" ) ,
payload . get ( "is_mml" ) ,
payload . get ( "mml_count" ) ,
payload . get ( "culvert_bridge_count" ) ,
payload . get ( "details" ) ,
payload . get ( "is_busshelter" ) ,
payload . get ( "busshelter_count" ) ,
payload . get ( "is_centermedian" ) ,
updatedBy ,
refId
) ;
/ / 4 . SOFT DELETE OLD RELAYING RECORDS
jdbcTemplate . update (
"UPDATE relaying_details " +
"SET is_active=0, " +
"is_delete=1, " +
"updated_date=NOW(), " +
"updated_by=? " +
"WHERE road_ref_id=? " +
"AND is_active=1" ,
updatedBy ,
refId
) ;
/ / 5 . INSERT NEW RELAYING RECORDS
@SuppressWarnings ( "unchecked" )
List < Map < String , Object > > relays =
( List < Map < String , Object > > ) payload . get ( "relaying_details" ) ;
String insertRelay =
"INSERT INTO relaying_details " +
"(road_ref_id, relay_month, relay_year,road_type_material, cr_value, road_type, remarks, cby) " +
"VALUES (?,?,?,?,?,?,?,?)" ;
if ( relays ! = null ) {
for ( Map < String , Object > relay : relays ) {
jdbcTemplate . update (
insertRelay ,
refId ,
relay . get ( "relay_month" ) ,
relay . get ( "relay_year" ) ,
relay . get ( "road_type_material" ) ,
relay . get ( "cr_value" ) ,
relay . get ( "road_type" ) ,
relay . get ( "remarks" ) ,
updatedBy
) ;
}
}
result . put ( "status" , true ) ;
result . put ( "message" , "Road details updated successfully" ) ;
} catch ( Exception e ) {
e . printStackTrace ( ) ;
result . put ( "status" , false ) ;
result . put ( "message" , e . getMessage ( ) ) ;
}
return result ;
}
public Map < String , Object > deleteRoadWarDetails ( String refId , String updatedby ) {
Map < String , Object > result = new HashMap < > ( ) ;
try {
int roadUpdated = jdbcTemplate . update (
"UPDATE road_details_master " +
"SET is_active=0, " +
"is_delete=1, " +
"updated_by=?, " +
"updated_date=NOW() " +
"WHERE ref_id=? " +
"AND is_active=1" ,
updatedby , refId
) ;
jdbcTemplate . update (
"UPDATE relaying_details " +
"SET is_active=0, " +
"is_delete=1, " +
"updated_by=?, " +
"updated_date=NOW() " +
"WHERE road_ref_id=? " +
"AND is_active=1" ,
updatedby , refId
) ;
if ( roadUpdated > 0 ) {
result . put ( "status" , true ) ;
result . put ( "message" ,
"Road War details deleted successfully" ) ;
} else {
result . put ( "status" , false ) ;
result . put ( "message" , "Record not found" ) ;
}
} catch ( Exception e ) {
e . printStackTrace ( ) ;
result . put ( "status" , false ) ;
result . put ( "message" ,
"Failed to delete Road War details" ) ;
}
return result ;
}
}
}