package cn.iocoder.yudao.module.system.controller.admin.biz.vo;

import cn.iocoder.yudao.module.system.dal.dataobject.biz.ExpenseOrderItemDO;
import cn.iocoder.yudao.module.system.dal.dataobject.biz.ExpensePayOrderDO;
import cn.iocoder.yudao.module.system.dal.dataobject.biz.ExpenseSubsidyDO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import java.util.*;
import java.math.BigDecimal;

import java.time.LocalDateTime;

import com.alibaba.excel.annotation.*;

@Schema(description = "管理后台 - 长者账单 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ExpenseBillRespVO {

    @Schema(description = "账单ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "25161")
    @ExcelProperty("账单ID")
    private Long id;

    @Schema(description = "长者ID", example = "23233")
    @ExcelProperty("长者ID")
    private Long elderId;

    @Schema(description = "账单编号")
    @ExcelProperty("账单编号")
    private String billOrderNumber;

    @Schema(description = "支付方式", example = "1")
    @ExcelProperty("支付方式")
    private String payType;

    @Schema(description = "支付状态，0：未缴费 1：已缴费", example = "1")
    @ExcelProperty("支付状态，0：未缴费 1：已缴费")
    private Integer payStatus;

    @Schema(description = "应付金额")
    @ExcelProperty("应付金额")
    private BigDecimal payableAmount;

    @Schema(description = "实际金额")
    @ExcelProperty("实际金额")
    private BigDecimal actualAmount;

    @Schema(description = "支付时间")
    @ExcelProperty("支付时间")
    private Date payTime;

    @Schema(description = "推送状态，0：未推送 1：已推送", example = "2")
    @ExcelProperty("推送状态，0：未推送 1：已推送")
    private Integer pushStatus;

    @Schema(description = "账单月")
    @ExcelProperty("账单月")
    private String billingMonth;

    @Schema(description = "创建时间")
    @ExcelProperty("创建时间")
    private LocalDateTime createdTime;

    @Schema(description = "创建人")
    @ExcelProperty("创建人")
    private String createdBy;

    @Schema(description = "账单类型，1：入院账单 2：月度账单", example = "1")
    @ExcelProperty("账单类型，1：入院账单 2：月度账单")
    private Integer type;

    @Schema(description = "长者姓名")
    private String elderName;

    @Schema(description = "性别")
    private Integer elderSex;

    @Schema(description = "床位名称")
    private String bedName;

    @Schema(description = "账单明细")
    private List<ExpenseOrderItemDO> items;

    @Schema(description = "支付信息")
    private List<ExpensePayOrderDO> payInfos;

    @Schema(description = "收费描述")
    private String description;

    @Schema(description = "费用备注")
    private String expenseRemarks;

    @Schema(description = "费用备注创建人")
    private String expenseRemarksCreator;

    @Schema(description = "长护险费用")
    private List<ExpenseSubsidyDO> expenseSubsidyDO;

    @Schema(description = "发票号")
    private String invoiceNumber;

    @Schema(description = "合同号")
    private String contractNumber;

}