package com.yc.ship.module.trade.controller.admin.report.vo;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.NumberFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;

/**
 * 长江行游轮游客数据及营收统计 Response VO
 *
 * @author auto-generated
 */
@Schema(description = "管理后台 - 长江行游轮游客数据及营收统计 Response VO")
@Data
@ExcelIgnoreUnannotated
public class YangtzePassengerSummaryRespVO {

    // ========== 基础信息 ==========

    @Schema(description = "序号", example = "1")
    @ExcelProperty("序号")
    private Integer index;

    @Schema(description = "船舶", example = "长江行-揽月")
    @ExcelProperty("船舶")
    private String shipName;

    @Schema(description = "航次", example = "2026-05-09 上水")
    @ExcelProperty("航次")
    private String voyageInfo;

    @Schema(description = "航次ID", hidden = true)
    private Long voyageId;

    @Schema(description = "倒计时(天)", example = "3")
    @ExcelProperty("倒计时(天)")
    private Integer countdown;

    // ========== 预订间数 ==========

    @Schema(description = "预订间数-总数", example = "200")
    @ExcelProperty("预订间数-总数")
    private Integer totalRooms;

    @Schema(description = "预订间数-实收房间数(锁位订单)", example = "180")
    @ExcelProperty("预订间数-实收房间数")
    private Integer paidRooms;

    @Schema(description = "预订间数-占位房间数(留位订单)", example = "190")
    @ExcelProperty("预订间数-占位房间数")
    private Integer reservedRooms;

    // ========== 实收人数 ==========

    @Schema(description = "实收人数-总数(仅锁位订单)", example = "420")
    @ExcelProperty("实收人数-总数")
    private Integer totalPassengers;

    @Schema(description = "实收人数-购票人数(锁位订单非免票)", example = "400")
    @ExcelProperty("实收人数-购票人数")
    private Integer ticketedPassengers;

    @Schema(description = "实收人数-免票人数(锁位订单免票)", example = "20")
    @ExcelProperty("实收人数-免票人数")
    private Integer freePassengers;

    @Schema(description = "预计收客人数(锁位+留位订单总人数，不管是否有名单)", example = "450")
    @ExcelProperty("预计收客人数")
    private Integer estimatedPassengers;

    @Schema(description = "备注", example = "")
    @ExcelProperty("备注")
    private String remark;

    // ========== 财务情况 ==========

    @Schema(description = "财务-应收", example = "500000.00")
    @NumberFormat("0.00")
    @ExcelProperty("财务-应收")
    private BigDecimal receivableAmount;

    @Schema(description = "财务-实收", example = "450000.00")
    @NumberFormat("0.00")
    @ExcelProperty("财务-实收")
    private BigDecimal receivedAmount;

    @Schema(description = "财务-未收", example = "50000.00")
    @NumberFormat("0.00")
    @ExcelProperty("财务-未收")
    private BigDecimal unreceivedAmount;

    @Schema(description = "财务-均价", example = "1125.00")
    @NumberFormat("0.00")
    @ExcelProperty("财务-均价")
    private BigDecimal avgPrice;

    // ========== 床位载客率 ==========

    @Schema(description = "客容量", example = "528")
    @ExcelProperty("客容量(人/航次)")
    private Integer capacity;

    @Schema(description = "床位载客率", example = "79.5%")
    @ExcelProperty("床位载客率")
    private String bedOccupancyRate;

    // ========== 实收详情 ==========

    @Schema(description = "实收详情-成人", example = "350")
    @ExcelProperty("实收详情-成人")
    private Integer adultCount;

    @Schema(description = "实收详情-儿童", example = "30")
    @ExcelProperty("实收详情-儿童")
    private Integer childCount;

    @Schema(description = "实收详情-婴儿", example = "5")
    @ExcelProperty("实收详情-婴儿")
    private Integer infantCount;

    @Schema(description = "实收详情-陪同+领队", example = "35")
    @ExcelProperty("实收详情-陪同+领队")
    private Integer companionLeaderCount;

    // ========== 团队情况 ==========

    @Schema(description = "团队人次(>10人)", example = "280")
    @ExcelProperty("团队人次(>10人)")
    private Integer groupCount;

    @Schema(description = "游客人次(<10人)", example = "140")
    @ExcelProperty("游客人次(<10人)")
    private Integer individualCount;

    @Schema(description = "团散比", example = "2:1")
    @ExcelProperty("团散比")
    private String groupIndividualRatio;

    @Schema(description = "境内", example = "380")
    @ExcelProperty("境内")
    private Integer domesticCount;

    @Schema(description = "境外", example = "40")
    @ExcelProperty("境外")
    private Integer overseasCount;

    @Schema(description = "境内外比", example = "9.5:1")
    @ExcelProperty("境内外比")
    private String domesticOverseasRatio;

}
