111 lines
4.9 KiB
Java
111 lines
4.9 KiB
Java
package com.baiyue.firstleg.dto;
|
|
|
|
import com.baiyue.firstleg.domain.SmartLoadingStatus;
|
|
import io.swagger.v3.oas.annotations.media.Schema;
|
|
import jakarta.validation.Valid;
|
|
import jakarta.validation.constraints.DecimalMin;
|
|
import jakarta.validation.constraints.Max;
|
|
import jakarta.validation.constraints.Min;
|
|
import jakarta.validation.constraints.NotBlank;
|
|
import jakarta.validation.constraints.NotNull;
|
|
import jakarta.validation.constraints.Positive;
|
|
import jakarta.validation.constraints.PositiveOrZero;
|
|
import jakarta.validation.constraints.Size;
|
|
|
|
import java.math.BigDecimal;
|
|
import java.time.LocalDateTime;
|
|
|
|
/** 平台级货柜基础资料请求模型。 */
|
|
public final class ContainerDtos {
|
|
private ContainerDtos() {}
|
|
|
|
@Schema(name = "ContainerQuery", description = "货柜分页筛选条件")
|
|
public record Query(
|
|
@Size(max = 64) String containerNo,
|
|
@Size(max = 64) String cabinetNo,
|
|
@Size(max = 128) String billOfLadingNo,
|
|
@Size(max = 128) String keyword,
|
|
@Positive Long customerId,
|
|
@Positive Long warehouseId,
|
|
@Size(max = 32) String containerType,
|
|
@Positive Long shippingCompanyId,
|
|
@Size(max = 32) String departurePortCode,
|
|
@Size(max = 32) String destinationPortCode,
|
|
@Size(max = 64) String destinationWarehouseCode,
|
|
SmartLoadingStatus status,
|
|
LocalDateTime estimatedSailingFrom,
|
|
LocalDateTime estimatedSailingTo,
|
|
@Min(1) long page,
|
|
@Min(1) @Max(200) long size
|
|
) {
|
|
public Query {
|
|
if (page == 0) page = 1;
|
|
if (size == 0) size = 20;
|
|
}
|
|
}
|
|
|
|
@Schema(name = "ContainerSaveRequest", description = "货柜基础资料;智能装柜草稿阶段可完整编辑")
|
|
public record SaveRequest(
|
|
@Size(max = 64) String containerNo,
|
|
@NotBlank @Size(max = 64) String cabinetNo,
|
|
@NotNull @Positive Long warehouseId,
|
|
@Size(max = 128) String warehouseName,
|
|
@Size(max = 128) String billOfLadingNo,
|
|
@Size(max = 128) String vesselName,
|
|
@Size(max = 64) String voyageNo,
|
|
@NotBlank @Size(max = 32) String containerType,
|
|
@Positive Long shippingCompanyId,
|
|
@Size(max = 128) String shippingCompanyName,
|
|
@Size(max = 32) String departurePortCode,
|
|
@Size(max = 128) String departurePortName,
|
|
@Size(max = 32) String destinationPortCode,
|
|
@Size(max = 128) String destinationPortName,
|
|
@Size(max = 64) String destinationWarehouseCode,
|
|
@Size(max = 128) String destinationWarehouseName,
|
|
@DecimalMin(value = "0", inclusive = false) BigDecimal capacityCbm,
|
|
@DecimalMin(value = "0", inclusive = false) BigDecimal maxWeightKg,
|
|
@Positive Long terminalTruckingCompanyId,
|
|
@Size(max = 128) String terminalTruckingCompany,
|
|
LocalDateTime loadingAt,
|
|
LocalDateTime estimatedSailingAt,
|
|
LocalDateTime actualSailingAt,
|
|
LocalDateTime estimatedPortArrivalAt,
|
|
LocalDateTime actualPortArrivalAt,
|
|
LocalDateTime estimatedWarehouseArrivalAt,
|
|
LocalDateTime actualWarehouseArrivalAt
|
|
) {}
|
|
|
|
@Schema(name = "ContainerFullUpdateRequest", description = "待装柜或预装柜中阶段完整编辑")
|
|
public record FullUpdateRequest(
|
|
@NotNull @PositiveOrZero Integer version,
|
|
@Valid @NotNull SaveRequest data
|
|
) {}
|
|
|
|
@Schema(name = "ContainerTransportUpdateRequest",
|
|
description = "拣货中阶段只允许修改集装箱号和航次")
|
|
public record TransportUpdateRequest(
|
|
@Size(max = 64) String containerNo,
|
|
@Size(max = 64) String voyageNo,
|
|
@NotNull @PositiveOrZero Integer version,
|
|
@NotBlank @Size(max = 500) String reason
|
|
) {
|
|
public TransportUpdateRequest(String containerNo, String voyageNo, Integer version) {
|
|
this(containerNo, voyageNo, version, "运输信息更新");
|
|
}
|
|
}
|
|
|
|
@Schema(name = "ContainerSimulationCreateRequest", description = "新增内部模拟柜;内部柜号由服务端生成")
|
|
public record SimulationCreateRequest(@NotBlank @Size(max = 64) String channelCode,
|
|
@NotNull @Positive Long warehouseId, @NotBlank @Size(max = 32) String containerType,
|
|
@NotNull @DecimalMin(value = "0", inclusive = false) BigDecimal capacityCbm,
|
|
@NotNull @DecimalMin(value = "0", inclusive = false) BigDecimal maxWeightKg) {}
|
|
|
|
@Schema(name = "ContainerOceanBookingLinkRequest", description = "将内部模拟柜关联到真实订舱箱型分配")
|
|
public record OceanBookingLinkRequest(@NotNull @Positive Long oceanBookingId,
|
|
@NotNull @Positive Long requirementId, @NotNull @PositiveOrZero Integer expectedVersion) {}
|
|
|
|
@Schema(name = "ContainerOceanBookingUnlinkRequest", description = "解除空模拟柜的真实订舱关联")
|
|
public record OceanBookingUnlinkRequest(@NotNull @PositiveOrZero Integer expectedVersion,
|
|
@NotBlank @Size(max = 500) String reason) {}
|
|
}
|