# CbCaseIwcAdRequest.java

    package cloud.wconnect.finance.entity.chargeback;

    import com.baomidou.mybatisplus.annotation.IdType;
    import com.baomidou.mybatisplus.annotation.TableId;
    import com.baomidou.mybatisplus.annotation.TableName;
    import java.io.Serializable;
    import java.math.BigDecimal;
    import lombok.Getter;
    import lombok.Setter;
    import lombok.ToString;
    import lombok.experimental.Accessors;

    /**
     * <p>
     *  调账数据
     * </p>
     *
     * @author lichen
     * @since 2026-02-09
     */
    @Getter
    @Setter
    @ToString
    @Accessors(chain = true)
    @TableName("cb_case_iwc_ad_request")
    public class CbCaseIwcAdRequest implements Serializable {

        private static final long serialVersionUID = 1L;

        @TableId(value = "id", type = IdType.AUTO)
        private Long id;

        /**
         * adjustment功能的主键id
         */
        private Long adjustmentId;

        /**
         * 资产id
         */
        private Integer propertyId;

        /**
         * 创建人
         */
        private Integer createBy;

        /**
         * 创建时间
         */
        private Long createTime;

        /**
         * 是否自动创建(0:否,1:是)
         */
        private Integer autoCreated;

        /**
         * Conf. Num.
         */
        private String confNumber;

        /**
         * Adj. Num.
         */
        private String adjNumber;

        /**
         * 类型(1:Sales 2:Front Desk 3:Accounting 4:Misposting 5：chargeback)
         */
        private Integer requestType;

        /**
         * 责任选项(0:无,1:N/A,2:Employee`s Name)
         */
        private Integer mistakeType;

        /**
         * 责任描述/员工姓名（根据责任选项决定）
         */
        private String mistakeBy;

        /**
         * 来宾姓名或公司名
         */
        private String guestName;

        /**
         * 入住日期 (年月日)
         */
        private Long checkInDate;

        /**
         * 退房日期 (年月日)
         */
        private Long checkOutDate;

        /**
         * 房间号
         */
        private String roomNumber;

        /**
         * 需调整金额
         */
        private BigDecimal adjustedDollar;

        /**
         * 交易描述
         */
        private String trxDesc;

        /**
         * 选择原因(1:Incorrect Company rate,2:Guest Relation/Complaint,3:Over payment,4:CHANGE Credit Card OR other Method of Payment,5:Incorrect Posting Correction will be posted,6:Other,7:Chargeback,8:DB Write Off,9:Misposting类型使用,10:Fraud)
         */
        private Integer choosedReason;

        /**
         * 原因详情 {company name：公司名，rate code：rate code，correct rate：房价，explain：解释，specify：指明}
         */
        private String choosedReasonDetails;

        /**
         * 备注
         */
        private String comment;

        /**
         * 状态 0: 无效 1:有效 2:待定 3:作废
         */
        private Integer status;

        /**
         * 附件
         */
        private String attachments;

        /**
         * 关联主adj的id
         */
        private Long cbAdjId;

        /**
         * Case编号
         */
        private String caseNumber;

        /**
         * Revenue lost (yes / no)
         */
        private Integer revenueLost;

        /**
         * 流程状态 1:draft-草稿 2:审批中 3:审批结束
         */
        private Integer flowStatus;

        /**
         * 责任人
         */
        private Integer dutyUser;

        /**
         * PMS 系统账户
         */
        private String pmsAccount;

        /**
         * 交易code
         */
        private String trxCode;

        /**
         * 业务日期，格式yyyyMMdd。调账数据与PMS报告配对成功后，数据在PMS报告中的业务日期
         */
        private Integer businessDate;

        /**
         * 配对时间戳，未配对时默认为0
         */
        private Long matchTime;

        private String accountNumber;

        /**
         * 配对方式1：使用guestName、roomNumber、trxCode、adjustedDollar配对 2：使用trxCode、adjustedDollar、confNumber配对
         */
        private Integer matchType;

        /**
         * Chargeback关联的时间
         */
        private Long caseRelTime;

        /**
         * 更新人
         */
        private Integer updateBy;

        /**
         * 更新时间
         */
        private Long updateTime;

        /**
         * 同步时间
         * 解决并发更新问题：在同一秒内可能有多笔操作发生，如果只精确到秒级别，无法准确判断操作的先后顺序
         * 避免消息乱序问题：在网络传输或异步处理过程中，时间较晚的操作消息可能会先到达，通过比较毫秒级时间戳可以识别并舍弃过期的更新消息
         * 保证数据一致性：只接受 updateTime 时间戳更大的更新操作，确保数据库中的记录始终反映最新的状态
         */
        private Long syncTime;
    }