# MergeDayHotelPriceDTO.java

    package cloud.wconnect.rateshop.pojo;

    import lombok.AllArgsConstructor;
    import lombok.Builder;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    import lombok.experimental.Accessors;

    import java.math.BigDecimal;
    import java.util.Objects;

    /**
     * 当资产的targetDate对应多个版本的房价时，以version最大的为主做合并处理
     *
     * @author lichen
     * @date 2024/4/3
     */
    @Data
    @Accessors(chain = true)
    @Builder
    @AllArgsConstructor
    @NoArgsConstructor
    public class MergeDayHotelPriceDTO {

        /**
         * 入住日期（yyyyMMdd）
         */
        private Long checkInDate;
        /**
         * 平台ID
         */
        private Integer platformId;

        /**
         * 数据源ID
         */
        private Integer datasourceId;

        /**
         * 该平台最低价（无关房型）
         */
        private BigDecimal price;

        /**
         * 该平台税后最低价（无关房型）
         */
        private BigDecimal afterTaxPrice;

        /**
         * 版本，合并处理使用
         */
        private Integer version;

        /**
         * 查询时刻时间戳
         */
        private Long queryDate;

        /**
         * 以version最大的合并房价
         *
         * @param dayHotelPriceDTO1
         * @param dayHotelPriceDTO2
         * @return cloud.wconnect.rateshop.pojo.MergeDayHotelPriceDTO
         * @author lichen
         * @date 2024/4/3
         */
        public static MergeDayHotelPriceDTO merge(MergeDayHotelPriceDTO dayHotelPriceDTO1 , MergeDayHotelPriceDTO dayHotelPriceDTO2) {
            if (Objects.isNull(dayHotelPriceDTO1)) {
                return dayHotelPriceDTO2;
            }
            if (Objects.isNull(dayHotelPriceDTO2)) {
                return dayHotelPriceDTO1;
            }
            if (dayHotelPriceDTO1.getVersion().compareTo(dayHotelPriceDTO2.getVersion()) > 0) {
                return dayHotelPriceDTO1;
            }
            return dayHotelPriceDTO2;
        }

        /**
         * 生成Key
         *
         * @return java.lang.String
         * @author lichen
         * @date 2024/3/25
         */
        public String generateKey() {
            return this.checkInDate.toString() + "_" + this.platformId.toString() + "_" + this.datasourceId.toString();
        }

    }