package com.ruoyi.info.order.domain.vo;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.ruoyi.info.hospital.domain.vo.HospitalVo;
import com.ruoyi.info.order.enums.CancellationMethod;
import com.ruoyi.info.order.enums.OrderStatus;
import com.ruoyi.info.patient.domain.vo.PatientVo;
import com.ruoyi.info.service.enums.ServiceUnit;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;


/**
 * 订单视图对象 tb_order
 *
 * @author ruoyi
 * @date 2025-09-20
 */
@Data
@ApiModel("订单视图对象")
@ExcelIgnoreUnannotated
public class OrderVo {

    private static final long serialVersionUID = 1L;

    /**
     * ID
     */
    @ExcelProperty(value = "ID")
    @ApiModelProperty("ID")
    private Long id;

    /**
     * 订单号
     */
    @ExcelProperty(value = "订单号")
    @ApiModelProperty("订单号")
    private String orderNo;

    /**
     * C端用户ID
     */
    @ExcelProperty(value = "C端用户ID")
    @ApiModelProperty("C端用户ID")
    private Long userId;
    @ApiModelProperty(value = "C端用户名称")
    private String userName;
    @ApiModelProperty(value = "C端用户手机号")
    private String userMobile;

    /**
     * 状态
     */
    @ExcelProperty(value = "状态")
    @ApiModelProperty("状态")
    private OrderStatus status;

    /**
     * 医院ID
     */
    @ExcelProperty(value = "医院ID")
    @ApiModelProperty("医院ID")
    private Long hospitalId;
    @ApiModelProperty(value = "医院名称")
    private String hospitalName;
    @ApiModelProperty(value = "医院信息")
    private HospitalVo hospitalVo;

    /**
     * 医院科室ID
     */
    @ExcelProperty(value = "医院科室ID")
    @ApiModelProperty("医院科室ID")
    private Long hospitalDepartmentId;
    @ApiModelProperty(value = "医院科室名称")
    private String hospitalDepartmentName;

    /**
     * 房床号
     */
    @ExcelProperty(value = "房床号")
    @ApiModelProperty("房床号")
    private String roomNumber;

    /**
     * 订单备注
     */
    @ExcelProperty(value = "订单备注")
    @ApiModelProperty("订单备注")
    private String remarks;

    /**
     * 就诊人ID
     */
    @ExcelProperty(value = "就诊人ID")
    @ApiModelProperty("就诊人ID")
    private Long patientId;
    @ApiModelProperty("就诊人信息")
    private PatientVo patientVo;

    /**
     * 服务ID
     */
    @ExcelProperty(value = "服务ID")
    @ApiModelProperty("服务ID")
    private Long serviceId;
    @ApiModelProperty("服务名称")
    private String serviceName;
    /**
     * 服务单位
     */
    @ApiModelProperty("服务单位")
    private ServiceUnit serviceUnit;
    /**
     * 服务单位时长
     */
    @ApiModelProperty("服务单位时长")
    private Integer serviceUnitDuration;

    /**
     * 期望时间
     */
    @ExcelProperty(value = "期望时间")
    @ApiModelProperty("期望时间")
    private Date expectedTime;

    /**
     * 下单数量
     */
    @ExcelProperty(value = "下单数量")
    @ApiModelProperty("下单数量")
    private Integer orderNum;

    /**
     * 销售价
     */
    @ExcelProperty(value = "销售价")
    @ApiModelProperty("销售价")
    private BigDecimal sellingPrice;

    /**
     * 应付价格
     */
    @ExcelProperty(value = "应付价格")
    @ApiModelProperty("应付价格")
    private BigDecimal totalPrice;

    /**
     * 订单取消方式(10用户取消,20平台取消,30未支付自动取消)
     */
    @ApiModelProperty("订单取消方式")
    private CancellationMethod cancellationMethod;
    /**
     * 订单取消时间
     */
    @ApiModelProperty("订单取消时间")
    private Date cancellationTime;
    /**
     * 订单取消原因
     */
    @ApiModelProperty("订单取消原因")
    private String cancellationReason;

    /**
     * 创建时间
     */
    @ExcelProperty(value = "创建时间")
    @ApiModelProperty("创建时间")
    private Date createTime;

    /**
     * 修改时间
     */
    @ExcelProperty(value = "修改时间")
    @ApiModelProperty("修改时间")
    private Date updateTime;
}
