# SalesKpiWconnectAdjustment.java

    package cloud.wconnect.workperformance.entity.saleskpi;

    import com.baomidou.mybatisplus.annotation.IdType;
    import com.baomidou.mybatisplus.annotation.TableField;
    import com.baomidou.mybatisplus.annotation.TableId;
    import com.baomidou.mybatisplus.annotation.TableName;
    import lombok.Data;
    import lombok.EqualsAndHashCode;
    import lombok.experimental.Accessors;

    import java.io.Serializable;
    import java.math.BigDecimal;

    /**
     * <p>
     * Hotel KPI w-connect Adjustment 数据
     * </p>
     *
     * @author zc
     * @since 2024-08-27
     */
    @Data
    @EqualsAndHashCode(callSuper = false)
    @Accessors(chain = true)
    @TableName("sales_kpi_wconnect_adjustment")
    public class SalesKpiWconnectAdjustment implements Serializable {

        private static final long serialVersionUID = 1L;

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

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

        /**
         * 业务日期，格式yyyyMMdd
         */
        private Long businessDate;

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

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

        public static final int REQUEST_TYPE_SALES = 1;

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

        /**
         * Revenue lost (false: no / true: yes)
         */
        private Boolean revenueLost;

        /**
         * false：手动创建 true：自动导入
         */
        private Boolean autoCreated;

        /**
         * 0：无效 1：有效 2：待定
         */
        private Integer status;

        public static final int INVALID = 0;
        public static final int VALID = 1;
        public static final int UNDETERMINED = 2;

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

        public static final int DRAFT = 1;
        public static final int APPROVING = 2;
        public static final int APPROVAL_COMPLETED = 3;

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

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

        /**
         * 月（yyyyMM）
         */
        @TableField(exist = false)
        private Long month;
    }