diff --git a/src/main/java/com/mobility/api/domain/dispatch/dto/response/CompletedDispatchListItemRes.java b/src/main/java/com/mobility/api/domain/dispatch/dto/response/CompletedDispatchListItemRes.java index b2e944f..eb155bf 100644 --- a/src/main/java/com/mobility/api/domain/dispatch/dto/response/CompletedDispatchListItemRes.java +++ b/src/main/java/com/mobility/api/domain/dispatch/dto/response/CompletedDispatchListItemRes.java @@ -12,9 +12,18 @@ public record CompletedDispatchListItemRes( @Schema(description = "배차 ID", example = "1") Long id, + @Schema(description = "배차 번호", example = "2025-0001") + String dispatchNumber, + + @Schema(description = "서비스 타입 (DELIVERY: 탁송, DRIVER: 대리)", example = "DELIVERY") + String serviceType, + @Schema(description = "배차 할당 시간", example = "2025-11-22T14:15:00") LocalDateTime assignedAt, + @Schema(description = "배차 완료 시간", example = "2025-11-22T15:19:00") + LocalDateTime completedAt, + @Schema(description = "출발지", example = "부안상서면부장1길 23") String startLocation, @@ -22,15 +31,26 @@ public record CompletedDispatchListItemRes( String destinationLocation, @Schema(description = "요금", example = "110000") - Integer charge + Integer charge, + + @Schema(description = "사무실 이름", example = "(주)대리GO") + String officeName, + + @Schema(description = "사무실 전화번호", example = "02-1234-5678") + String officeTelNumber ) { - public static CompletedDispatchListItemRes from(Dispatch dispatch) { + public static CompletedDispatchListItemRes from(Dispatch dispatch, String officeName, String officeTelNumber) { return CompletedDispatchListItemRes.builder() .id(dispatch.getId()) + .dispatchNumber(dispatch.getDispatchNumber()) + .serviceType(dispatch.getService() != null ? dispatch.getService().name() : null) .assignedAt(dispatch.getAssignedAt()) + .completedAt(dispatch.getCompletedAt()) .startLocation(dispatch.getStartLocation()) .destinationLocation(dispatch.getDestinationLocation()) .charge(dispatch.getCharge()) + .officeName(officeName) + .officeTelNumber(officeTelNumber) .build(); } } diff --git a/src/main/java/com/mobility/api/domain/dispatch/dto/response/CurrentDispatchDetailRes.java b/src/main/java/com/mobility/api/domain/dispatch/dto/response/CurrentDispatchDetailRes.java index b07a7da..29c1455 100644 --- a/src/main/java/com/mobility/api/domain/dispatch/dto/response/CurrentDispatchDetailRes.java +++ b/src/main/java/com/mobility/api/domain/dispatch/dto/response/CurrentDispatchDetailRes.java @@ -53,6 +53,9 @@ public record CurrentDispatchDetailRes( @Schema(description = "사무실 ID", example = "1") Long officeId, + @Schema(description = "사무실 이름", example = "(주)대리GO") + String officeName, + @Schema(description = "사무실 전화번호", example = "02-1234-5678") String officeTelNumber, @@ -71,7 +74,7 @@ public record CurrentDispatchDetailRes( * @param officeTelNumber 사무실 전화번호 * @return CurrentDispatchDetailRes */ - public static CurrentDispatchDetailRes from(Dispatch dispatch, String officeTelNumber) { + public static CurrentDispatchDetailRes from(Dispatch dispatch, String officeName, String officeTelNumber) { return CurrentDispatchDetailRes.builder() .id(dispatch.getId()) .status(dispatch.getStatus()) @@ -85,6 +88,7 @@ public static CurrentDispatchDetailRes from(Dispatch dispatch, String officeTelN .paymentMethod(dispatch.getPaymentType()) .tollType(dispatch.getTollType()) .officeId(dispatch.getOfficeId()) + .officeName(officeName) .officeTelNumber(officeTelNumber) .createdAt(dispatch.getCreatedAt()) .updatedAt(dispatch.getUpdatedAt()) diff --git a/src/main/java/com/mobility/api/domain/dispatch/service/DispatcherService.java b/src/main/java/com/mobility/api/domain/dispatch/service/DispatcherService.java index 8a09153..3d7dc22 100644 --- a/src/main/java/com/mobility/api/domain/dispatch/service/DispatcherService.java +++ b/src/main/java/com/mobility/api/domain/dispatch/service/DispatcherService.java @@ -197,17 +197,19 @@ public CurrentDispatchDetailRes getCurrentDispatch(Long transporterId) { .orElseThrow(() -> new GlobalException(ResultCode.DISPATCH_NOT_ASSIGNED)); // 4. 사무실 정보 조회 (사무실 전화번호를 가져오기 위함) + String officeName = null; String officeTelNumber = null; if (dispatch.getOfficeId() != null) { Office office = officeRepository.findById(dispatch.getOfficeId()) .orElse(null); if (office != null) { + officeName = office.getOfficeName(); officeTelNumber = office.getOfficeTelNumber(); } } // 5. DTO 변환 및 반환 - return CurrentDispatchDetailRes.from(dispatch, officeTelNumber); + return CurrentDispatchDetailRes.from(dispatch, officeName, officeTelNumber); } /** @@ -238,9 +240,20 @@ public List getCompletedDispatchList( toDateTime ); - // 4. DTO 변환 + // 4. DTO 변환 (사무실 정보 조회 포함) return completedDispatches.stream() - .map(CompletedDispatchListItemRes::from) + .map(dispatch -> { + String officeName = null; + String officeTelNumber = null; + if (dispatch.getOfficeId() != null) { + Office office = officeRepository.findById(dispatch.getOfficeId()).orElse(null); + if (office != null) { + officeName = office.getOfficeName(); + officeTelNumber = office.getOfficeTelNumber(); + } + } + return CompletedDispatchListItemRes.from(dispatch, officeName, officeTelNumber); + }) .collect(Collectors.toList()); }