This commit is contained in:
Marshal
2026-07-07 12:28:47 +00:00
parent 1c18fdbd52
commit f300600bfa
63 changed files with 2587 additions and 428 deletions

View File

@@ -47,6 +47,7 @@ import { UpdateScheduleWindowRuleDto } from "./dto/update-schedule-window-rule.d
import { UpdateScheduleDateDto } from "./dto/update-schedule-date.dto";
import { TrainSchedulingService } from "./train-scheduling.service";
import { BookingBatchService } from "./booking-batch.service";
import { BookingJourneyService } from "./booking-journey.service";
import { BookingWindowService } from "./booking-window.service";
import { IntercityService } from "./intercity.service";
import { BillingService } from "../billing/billing.service";
@@ -60,6 +61,7 @@ export class TrainSchedulingController {
private readonly bookingBatchService: BookingBatchService,
private readonly bookingWindowService: BookingWindowService,
private readonly intercityService: IntercityService,
private readonly bookingJourneyService: BookingJourneyService,
private readonly billingService: BillingService,
) { }
@@ -432,6 +434,42 @@ export class TrainSchedulingController {
return this.intercityService.acceptBookings(id, dto.bookingIds);
}
@Get("schedules/:id/yard-work")
@TrainSchedulingView()
@ApiOperation({
summary:
"Per-yard operator worklist: which bookings board/alight at each stop, with journey state",
})
getYardWork(@Param("id", ParseUUIDPipe) id: string) {
return this.bookingJourneyService.listYardWork(id);
}
@Post("schedules/:id/bookings/:bookingId/load")
@TrainSchedulingManage()
@ApiOperation({
summary:
"Confirm a booking's cargo loaded at its origin yard (any direction; train must be at that yard)",
})
loadScheduleBooking(
@Param("id", ParseUUIDPipe) id: string,
@Param("bookingId", ParseUUIDPipe) bookingId: string,
) {
return this.bookingJourneyService.loadBooking(id, bookingId);
}
@Post("schedules/:id/bookings/:bookingId/unload")
@TrainSchedulingManage()
@ApiOperation({
summary:
"Confirm a booking's cargo unloaded at its destination yard — per-booking arrival, may precede the train's final arrival",
})
unloadScheduleBooking(
@Param("id", ParseUUIDPipe) id: string,
@Param("bookingId", ParseUUIDPipe) bookingId: string,
) {
return this.bookingJourneyService.unloadBooking(id, bookingId);
}
@Post("schedules/:id/intercity/:bookingId/load")
@TrainSchedulingManage()
@ApiOperation({