# OvBalanceRvDTO.java

    package cloud.wconnect.frontoffice.pojo.dto.guestledgercheck;

    import cloud.wconnect.commonlib.annotation.validator.DigitsCustom;
    import lombok.Data;
    import org.hibernate.validator.constraints.Length;

    import jakarta.validation.constraints.*;
    import java.math.BigDecimal;
    import java.util.List;

    /**
     * DTO类: 加载 in-house Over Balance Reservation 的信息
     */
    @Data
    public class OvBalanceRvDTO {

        @NotNull(message = "the id cannot be null")
        private Long id;

        /**
         * CRS Number 集合
         */
        @NotEmpty(message = "The crsNumberList cannot be empty")
        private List<String> crsNumberList;

        /**
         * Check-in Date
         */
        @NotNull(message = "The checkInDate cannot be null")
        private Long checkInDate;

        /**
         * Check-out Date
         */
        @NotNull(message = "The checkOutDate cannot be null")
        private Long checkOutDate;

        /**
         * Room Number
         */
        @NotBlank(message = "The roomNumber cannot be blank")
        @Length(max = 10, message = "The roomNumber is limited 10 characters")
        private String roomNumber;

        /**
         * First Name
         */
        @NotBlank(message = "The firstName cannot be blank")
        @Length(max = 30, message = "The firstName is limited 30 characters")
        private String firstName;

        /**
         * Last Name
         */
        @NotBlank(message = "The lastName cannot be blank")
        @Length(max = 30, message = "The lastName is limited 30 characters")
        private String lastName;

        /**
         * Current Balance
         */
        @NotNull(message = "The currentBalance cannot be null")
        @DecimalMin(value = "0", message = "The currentBalance must be greater than 0")
        @DigitsCustom(integer = 9, message = "The currentBalance is wrong format")
        private BigDecimal currentBalance;

        /**
         * Auth Amount
         */
        @NotNull(message = "The authAmount cannot be null")
        @DecimalMin(value = "0", message = "The authAmount must be greater than 0")
        @DigitsCustom(integer = 9, message = "The authAmount is wrong format")
        private BigDecimal authAmount;

        /**
         * Hotel Response
         */
        @NotNull(message = "The hotelResponse cannot be null")
        @Length(max = 1000, message = "The hotelResponse is limited 1000 characters")
        private String hotelResponse;

        /**
         * Current Balance 最近更新人
         */
        @Null(message = "The currBalUpdatedByName cannot be set")
        private String currBalUpdatedByName;

        /**
         * Current Balance 最近更新时间
         */
        @Null(message = "The currBalUpdatedTime cannot be set")
        private Long currBalUpdatedTime;

        /**
         * Auth Amount 最近更新人
         */
        @Null(message = "The authAmntUpdateByName cannot be set")
        private String authAmntUpdateByName;

        /**
         * Auth Amount 最近更新时间
         */
        @Null(message = "The authAmntUpdatedTime cannot be set")
        private Long authAmntUpdatedTime;
    }