package cn.iocoder.yudao.module.energy.controller.admin.bill.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

@Schema(description = "管理后台 - 能源账单 Response VO")
@Data
public class EnergyBillRespVO {
    @Schema(description = "主键ID")
    private Long id;
    @Schema(description = "账单编号")
    private String billCode;
    @Schema(description = "能源类型")
    private Integer energyType;
    @Schema(description = "客户ID")
    private Long customerId;
    @Schema(description = "客户名称")
    private String customerName;
    @Schema(description = "合同ID")
    private Long contractId;
    @Schema(description = "加氢站ID")
    private Long stationId;
    @Schema(description = "站点名称")
    private String stationName;
    @Schema(description = "合作模式（1=预充值 2=月结算）")
    private Integer cooperationType;
    @Schema(description = "账单周期开始")
    private LocalDate billPeriodStart;
    @Schema(description = "账单周期结束")
    private LocalDate billPeriodEnd;
    @Schema(description = "应收总额")
    private BigDecimal receivableAmount;
    @Schema(description = "实收总额")
    private BigDecimal actualAmount;
    @Schema(description = "调整总额")
    private BigDecimal adjustmentAmount;
    @Schema(description = "已收金额")
    private BigDecimal paidAmount;
    @Schema(description = "总加氢量")
    private BigDecimal totalQuantity;
    @Schema(description = "明细条数")
    private Integer detailCount;
    @Schema(description = "账单状态")
    private Integer status;
    @Schema(description = "审核状态")
    private Integer auditStatus;
    @Schema(description = "提交状态")
    private Integer submitStatus;
    @Schema(description = "支付状态")
    private Integer paymentStatus;
    @Schema(description = "审核人ID")
    private Long auditorId;
    @Schema(description = "审核时间")
    private LocalDateTime auditTime;
    @Schema(description = "审核备注")
    private String auditRemark;
    @Schema(description = "生成时间")
    private LocalDateTime generateTime;
    @Schema(description = "创建时间")
    private LocalDateTime createTime;
}
