Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package com.wayble.server.direction.dto.response;

import com.wayble.server.direction.entity.DirectionType;
import org.springframework.lang.Nullable;

import com.wayble.server.direction.entity.type.DirectionType;

import io.swagger.v3.oas.annotations.media.Schema;

import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.wayble.server.direction.entity.transportation;

import com.wayble.server.direction.entity.DirectionType;
import com.wayble.server.direction.entity.type.DirectionType;

import jakarta.persistence.*;
import lombok.*;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,8 @@ public class Elevator {
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(name = "latitude", columnDefinition = "DECIMAL(10,7)", nullable = false)
private Double latitude;

@Column(name = "longitude", columnDefinition = "DECIMAL(10,7)", nullable = false)
private Double longitude;
@Column(name = "location", nullable = false)
private String location;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "facility_id", nullable = false)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

import org.hibernate.annotations.BatchSize;

import com.wayble.server.direction.entity.DirectionType;
import com.wayble.server.direction.entity.type.DirectionType;

@Entity
@Getter
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.wayble.server.direction.entity.transportation;

import com.wayble.server.direction.entity.DirectionType;
import com.wayble.server.direction.entity.transportation.*;
import com.wayble.server.direction.entity.type.DirectionType;

import jakarta.persistence.*;
import lombok.*;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.wayble.server.direction.entity;
package com.wayble.server.direction.entity.type;

public enum DirectionType {
BUS, SUBWAY, WALK,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.wayble.server.direction.repository;

import com.wayble.server.direction.entity.transportation.Elevator;
import com.wayble.server.direction.entity.transportation.Facility;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.List;

public interface ElevatorRepository extends JpaRepository<Elevator, Long> {
@Query("SELECT e FROM Elevator e WHERE e.facility = :facility")
List<Elevator> findByFacility(@Param("facility") Facility facility);
}

Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,15 @@
import com.wayble.server.direction.entity.transportation.Facility;
import com.wayble.server.direction.entity.transportation.Node;
import com.wayble.server.direction.entity.transportation.Wheelchair;
import com.wayble.server.direction.entity.transportation.Elevator;

import com.wayble.server.direction.external.kric.dto.KricToiletRawItem;
import com.wayble.server.direction.external.kric.dto.KricToiletRawResponse;

import com.wayble.server.direction.repository.ElevatorRepository;
import com.wayble.server.direction.repository.FacilityRepository;
import com.wayble.server.direction.repository.NodeRepository;
import com.wayble.server.direction.repository.RouteRepository;
import com.wayble.server.direction.repository.WheelchairInfoRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
Expand All @@ -28,6 +33,7 @@
@Slf4j
@RequiredArgsConstructor
public class FacilityService {
private final ElevatorRepository elevatorRepository;
private final FacilityRepository facilityRepository;
private final NodeRepository nodeRepository;
private final WheelchairInfoRepository wheelchairInfoRepository;
Expand All @@ -54,8 +60,6 @@ public TransportationResponseDto.NodeInfo getNodeInfo(Long nodeId, Long routeId)
}
}

elevator = new ArrayList<>();

Facility facility = facilityRepository.findByNodeId(nodeId).orElse(null);
if (facility != null) {
String stinCd = facility.getStinCd();
Expand All @@ -65,6 +69,8 @@ public TransportationResponseDto.NodeInfo getNodeInfo(Long nodeId, Long routeId)
if (stinCd != null && railOprLsttCd != null && lnCd != null) {
Map<String, Boolean> toiletInfo = getToiletInfo(facility);
accessibleRestroom = toiletInfo.getOrDefault(stinCd, false);

elevator = getElevatorInfo(facility, routeId);
} else {
log.error("Facility 정보 누락 - nodeId: {}, stinCd: {}, railOprLsttCd: {}, lnCd: {}",
nodeId, stinCd, railOprLsttCd, lnCd);
Expand Down Expand Up @@ -132,4 +138,29 @@ private Map<String, Boolean> getToiletInfo(Facility facility) {

return stationToiletMap;
}
}

private List<String> getElevatorInfo(Facility facility, Long routeId) {
List<String> elevatorLocations = new ArrayList<>();

try {
List<Elevator> elevators = elevatorRepository.findByFacility(facility);

for (Elevator elevator : elevators) {
String location = elevator.getLocation();
if (location != null && !location.trim().isEmpty()) {
elevatorLocations.add(location.trim());
}
}

elevatorLocations.sort(String::compareTo);

} catch(Exception e) {
log.error("엘리베이터 정보 조회 실패 - facilityId: {}, error: {}",
facility.getId(), e.getMessage(), e);
}

return elevatorLocations;
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
import com.wayble.server.direction.dto.TransportationGraphDto;
import com.wayble.server.direction.dto.request.TransportationRequestDto;
import com.wayble.server.direction.dto.response.TransportationResponseDto;
import com.wayble.server.direction.entity.DirectionType;
import com.wayble.server.direction.entity.transportation.Edge;
import com.wayble.server.direction.entity.transportation.Node;
import com.wayble.server.direction.entity.transportation.Route;
import com.wayble.server.direction.entity.type.DirectionType;
import com.wayble.server.direction.repository.EdgeRepository;
import com.wayble.server.direction.repository.NodeRepository;
import lombok.RequiredArgsConstructor;
Expand Down