package com.yc.ship.module.trade.controller.app.pda.vo;

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

import java.math.BigDecimal;
import java.time.LocalDateTime;

@Schema(description = "管理后台 - 门票核销记录 Response VO")
@Data
@ExcelIgnoreUnannotated
public class CheckDetailRespVO {

    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "9033")
    @ExcelProperty("主键")
    private Long id;

    @Schema(description = "批次id", example = "8593")
    @ExcelProperty("批次id")
    private Long checkId;

    @Schema(description = "门票ID", example = "21603")
    @ExcelProperty("门票ID")
    private Long detailId;

    @Schema(description = "子票ID")
    @ExcelProperty("子票ID")
    private Long detailBaseId;

    @Schema(description = "核销对象修改前状态", example = "1")
    @ExcelProperty("核销对象修改前状态")
    private Integer originalStatus;

    @Schema(description = "核销类型：0后台 1闸机 2PDA 3小程序", example = "1")
    @ExcelProperty("核销类型：0后台 1闸机 2PDA 3小程序")
    private Integer type;

    @Schema(description = "通道ID", example = "11148")
    @ExcelProperty("通道ID")
    private Long channelId;

    @Schema(description = "调度批次id", example = "11148")
    @ExcelProperty("调度批次id")
    private String dispatchBatchId;

    @Schema(description = "操作人ID", example = "11148")
    @ExcelProperty("操作人ID")
    private String operatorId;

    @Schema(description = "操作人", example = "李四")
    @ExcelProperty("操作人")
    private String operatorName;

    @Schema(description = "设备ID", example = "24031")
    @ExcelProperty("设备ID")
    private String machineId;

    @Schema(description = "设备名称", example = "赵六")
    @ExcelProperty("设备名称")
    private String machineName;

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

    // region 票和子票信息
    @Schema(description = "凭证号")
    private String voucherCode;

    @Schema(description = "票状态")
    private Integer voucherStatus;

    @Schema(description = "票使用时间")
    private LocalDateTime useDate;

    @Schema(description = "产品ID")
    private Long productId;

    @Schema(description = "产品名称")
    private String productName;

    @Schema(description = "产品类型")
    private Integer productType;

    @Schema(description = "规格类型")
    private String specType;

    @Schema(description = "价格")
    private BigDecimal price;

    @Schema(description = "实收价格")
    private BigDecimal actualPrice;

    @Schema(description = "基础产品ID")
    private Long productBaseId;

    @Schema(description = "基础产品名称")
    private String productBaseName;

    @Schema(description = "基础产品类型")
    private Integer productBaseType;

    @Schema(description = "资源ID")
    private Long productResourceId;

    @Schema(description = "资源名称")
    private String productResourceName;

    @Schema(description = "供应商产品ID")
    private Long supplierProductId;

    @Schema(description = "供应商ID")
    private Long supplierId;

    @Schema(description = "供应商名称")
    private String supplierName;

    @Schema(description = "是否直连")
    private Integer isSystemDirect;

    @Schema(description = "子票使用时间")
    private LocalDateTime subUseDate;

    @Schema(description = "子票状态")
    private Integer useStatus;

    @Schema(description = "项目ID")
    private Long projectId;

    @Schema(description = "项目名称")
    private String projectName;

    @Schema(description = "项目编码")
    private String projectCode;

    @Schema(description = "规格ID")
    private Long specificationId;

    @Schema(description = "规格名称")
    private String specificationName;

    @Schema(description = "子票规格")
    private String subSpecType;

    @Schema(description = "供应商票号")
    private String supplierVoucherCode;

    @Schema(description = "供应商订单ID")
    private Long platSupplierOrderId;

    // endregion
}