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 system
 */
@Schema(description = "管理后台 - 省际度假游轮经营情况日报 Response VO")
@Data
@ExcelIgnoreUnannotated
public class CruiseOpsDailyRespVO {

    // ========== 基础数据字段 ==========

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

    @Schema(description = "月份", example = "2026-01")
    @ExcelProperty("月份")
    private String month;

    @Schema(description = "日期", example = "2026-01-05")
    @ExcelProperty("日期")
    private String date;

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

    @Schema(description = "航线", example = "重庆-宜昌")
    @ExcelProperty("航线")
    private String route;

    @Schema(description = "航次号", example = "长江行-揽月2026-01-05")
    @ExcelProperty("航次号")
    private String voyageNo;

    @Schema(description = "客容量", example = "500")
    @ExcelProperty("客容量")
    private Integer passengerCapacity;

    @Schema(description = "载客量", example = "420")
    @ExcelProperty("载客量")
    private Integer passengerCount;

    @Schema(description = "载客率", example = "84.0%")
    @ExcelProperty("载客率")
    private String passengerRate;

    @Schema(description = "房总数", example = "200")
    @ExcelProperty("房总数")
    private Integer totalRooms;

    @Schema(description = "用房数", example = "180")
    @ExcelProperty("用房数")
    private String usedRooms;

    @Schema(description = "用房率", example = "90.0%")
    @ExcelProperty("用房率")
    private String roomRate;

    @Schema(description = "船票收入", example = "350000.00")
    @NumberFormat("0.00")
    @ExcelProperty("船票收入")
    private BigDecimal ticketIncome;

    @Schema(description = "二消收入", example = "0.00")
    @NumberFormat("0.00")
    @ExcelProperty("二消收入")
    private BigDecimal secondIncome;

    @Schema(description = "收入合计", example = "350000.00")
    @NumberFormat("0.00")
    @ExcelProperty("收入合计")
    private BigDecimal totalIncome;

    // ========== 同比数据字段 ==========

    @Schema(description = "客容量同比率(%)", example = "15.5")
    @ExcelProperty("客容量同比%")
    private String passengerCapacityYoy;

    @Schema(description = "载客量同比率(%)", example = "12.3")
    @ExcelProperty("载客量同比%")
    private String passengerCountYoy;

    @Schema(description = "载客率同比(百分点)", example = "+2.5")
    @ExcelProperty("载客率同比")
    private String passengerRateYoy;

    @Schema(description = "房总数同比率(%)", example = "0.0")
    @ExcelProperty("房总数同比%")
    private String totalRoomsYoy;

    @Schema(description = "用房数同比率(%)", example = "10.2")
    @ExcelProperty("用房数同比%")
    private String usedRoomsYoy;

    @Schema(description = "用房率同比(百分点)", example = "+1.8")
    @ExcelProperty("用房率同比")
    private String roomRateYoy;

    @Schema(description = "船票收入同比率(%)", example = "20.5")
    @ExcelProperty("船票收入同比%")
    private String ticketIncomeYoy;

    @Schema(description = "二消收入同比率(%)", example = "18.2")
    @ExcelProperty("二消收入同比%")
    private String secondIncomeYoy;

    @Schema(description = "收入合计同比率(%)", example = "19.8")
    @ExcelProperty("收入合计同比%")
    private String totalIncomeYoy;

    // ========== 行标记字段（不导出到Excel）==========

    @Schema(description = "是否小计行", hidden = true)
    @ExcelProperty("是否小计")
    private Boolean isSubtotal;

    @Schema(description = "是否累计行", hidden = true)
    @ExcelProperty("是否累计")
    private Boolean isCumulative;

}
