diff --git a/src/main/java/com/wayble/server/direction/dto/response/TransportationResponseDto.java b/src/main/java/com/wayble/server/direction/dto/response/TransportationResponseDto.java index 9ade2ec5..a6cdb035 100644 --- a/src/main/java/com/wayble/server/direction/dto/response/TransportationResponseDto.java +++ b/src/main/java/com/wayble/server/direction/dto/response/TransportationResponseDto.java @@ -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; diff --git a/src/main/java/com/wayble/server/direction/entity/transportation/Edge.java b/src/main/java/com/wayble/server/direction/entity/transportation/Edge.java index 9fe6cb43..52acb799 100644 --- a/src/main/java/com/wayble/server/direction/entity/transportation/Edge.java +++ b/src/main/java/com/wayble/server/direction/entity/transportation/Edge.java @@ -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.*; diff --git a/src/main/java/com/wayble/server/direction/entity/transportation/Elevator.java b/src/main/java/com/wayble/server/direction/entity/transportation/Elevator.java index db0b6e18..ba6eca8b 100644 --- a/src/main/java/com/wayble/server/direction/entity/transportation/Elevator.java +++ b/src/main/java/com/wayble/server/direction/entity/transportation/Elevator.java @@ -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) diff --git a/src/main/java/com/wayble/server/direction/entity/transportation/Node.java b/src/main/java/com/wayble/server/direction/entity/transportation/Node.java index 7986fc54..a778e6ca 100644 --- a/src/main/java/com/wayble/server/direction/entity/transportation/Node.java +++ b/src/main/java/com/wayble/server/direction/entity/transportation/Node.java @@ -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 diff --git a/src/main/java/com/wayble/server/direction/entity/transportation/Route.java b/src/main/java/com/wayble/server/direction/entity/transportation/Route.java index d35c1714..42dfce43 100644 --- a/src/main/java/com/wayble/server/direction/entity/transportation/Route.java +++ b/src/main/java/com/wayble/server/direction/entity/transportation/Route.java @@ -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.*; diff --git a/src/main/java/com/wayble/server/direction/entity/DirectionType.java b/src/main/java/com/wayble/server/direction/entity/type/DirectionType.java similarity index 69% rename from src/main/java/com/wayble/server/direction/entity/DirectionType.java rename to src/main/java/com/wayble/server/direction/entity/type/DirectionType.java index 313c17d8..d4b80153 100644 --- a/src/main/java/com/wayble/server/direction/entity/DirectionType.java +++ b/src/main/java/com/wayble/server/direction/entity/type/DirectionType.java @@ -1,4 +1,4 @@ -package com.wayble.server.direction.entity; +package com.wayble.server.direction.entity.type; public enum DirectionType { BUS, SUBWAY, WALK, diff --git a/src/main/java/com/wayble/server/direction/repository/ElevatorRepository.java b/src/main/java/com/wayble/server/direction/repository/ElevatorRepository.java new file mode 100644 index 00000000..c659d629 --- /dev/null +++ b/src/main/java/com/wayble/server/direction/repository/ElevatorRepository.java @@ -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 { + @Query("SELECT e FROM Elevator e WHERE e.facility = :facility") + List findByFacility(@Param("facility") Facility facility); +} + diff --git a/src/main/java/com/wayble/server/direction/service/FacilityService.java b/src/main/java/com/wayble/server/direction/service/FacilityService.java index 25f9f000..e00d665a 100644 --- a/src/main/java/com/wayble/server/direction/service/FacilityService.java +++ b/src/main/java/com/wayble/server/direction/service/FacilityService.java @@ -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; @@ -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; @@ -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(); @@ -65,6 +69,8 @@ public TransportationResponseDto.NodeInfo getNodeInfo(Long nodeId, Long routeId) if (stinCd != null && railOprLsttCd != null && lnCd != null) { Map toiletInfo = getToiletInfo(facility); accessibleRestroom = toiletInfo.getOrDefault(stinCd, false); + + elevator = getElevatorInfo(facility, routeId); } else { log.error("Facility 정보 누락 - nodeId: {}, stinCd: {}, railOprLsttCd: {}, lnCd: {}", nodeId, stinCd, railOprLsttCd, lnCd); @@ -132,4 +138,29 @@ private Map getToiletInfo(Facility facility) { return stationToiletMap; } -} + + private List getElevatorInfo(Facility facility, Long routeId) { + List elevatorLocations = new ArrayList<>(); + + try { + List 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; + } + + +} \ No newline at end of file diff --git a/src/main/java/com/wayble/server/direction/service/TransportationService.java b/src/main/java/com/wayble/server/direction/service/TransportationService.java index 70e45751..0314bb90 100644 --- a/src/main/java/com/wayble/server/direction/service/TransportationService.java +++ b/src/main/java/com/wayble/server/direction/service/TransportationService.java @@ -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;