package cn.iocoder.yudao.module.inspection.vo;

import cn.iocoder.yudao.module.inspection.entity.InspectionWorkNode;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import cn.iocoder.yudao.annotation.Excel;
import cn.iocoder.yudao.module.inspection.entity.InspectionStepInfo;
import lombok.Data;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@Data
public class InspectionInfoVo {
    private Long InspectionId;
    /** 检查工名称 */
    private String workerName;
    /** 检查工手机号 */
    private String workerPhone;
    private String workerAvatar;
    private Long categoryId;
    private String carNum;
    private String certificateNum; // 合格证后六位
    /** 0不通过1通过 */
    private String isPass;
    /** 0进行中1已结束 */
    private String status;
    /** 开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date startTime;
    /** 结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endTime;
    private String remark;
    private String buyUserName;
    private String buyUserPhone;
    private String files;
    /** 复检次数 */
    private Integer recheckCount;
    /** 重检次数 */
    private Integer reinspectCount;

    @TableField(exist = false)
    private String buyName;

    /** 检查工手机号 */
    @TableField(exist = false)
    private String buyPhone;

    /** 检查工手机号 */
    @TableField(exist = false)
    private String goodsName;
    private String goodsImage;

    /** 检查工手机号 */
    @TableField(exist = false)
    private Long realPayMoney;
    /** 订单号 */
    @TableField(exist = false)
    private String orderNo;
    @TableField(exist = false)
    private Long goodsId;

    @TableField(exist = false)
    private Long goodsPrice;

    // 核销时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date validationTime;
    // 核销人
    private String validationRealName;
    private String businessChannel; //业务渠道
    //客户来源
    private String customerSource;
    //车辆品牌型号
    private String carModel;
    //检测时长
    private String inspectionDuration;
    //车龄
    private Long carAge;
    //优惠金额
    private Long couponDiscount = 0L;
    //实付金额 分
    private Long payMoney;
    private String payType;
    private String receivablesAccount;
    private String payRemark;
    //会员折扣的金额
    private Long reduceMoney = 0L;
    private Long balance = 0L;
    private List<InspectionStepInfo> stepInfos = new ArrayList<>();
    private String carType;
    //线上或者线下 1线上 0线下
    private String isOnline;
    //是否重审 0否 1是
    private String isRetrial;
    //是否制证并完成 1完成
    private String makeCert;
    private String orderStatus;

    /*引车员名字*/
    private String leadManName;
    @TableField(exist = false)
    List<InspectionWorkNode> workNodes;
    @TableField(exist = false)
    private Long leadManId;
    @TableField(exist = false)
    private String skuName;
    /** 接车员id*/
    private Long meetManId;
    private String meetManName;
    /** 是否接车*/
    private String isMeetCar;
    private String otherName;
    private String otherPhone;
    /** 还车人id */
    private Long returnCarUserId;
    private String returnCarUserName;
    /** 是否还车 */
    private Integer isReturnCar;

    /**
     * 出纳是否确认 0-未到账 1-已到账 null-待确认
     */
    private String cashierConfirm;
    /**
     * 出纳确认备注
     */
    private String cashierConfirmRemark;

    /**
     * 会计是否确认 0-未到账 1-已到账 null-待确认
     */
    private String accountingConfirm;
    /**
     * 会计确认备注
     */
    private String accountingConfirmRemark;

    /**
     * 用户id
     */
    private Long userId;

    /** 下次年检日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date nextInspectionDate;

    /** 保险到期日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date insuranceExpiryDate;

    /** 保险到期日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date vehicleInsuranceExpiryDate;

    /** 保险公司名称 */
    private String insuranceCompanyName;
    /**
     * 结算金额
     */
    private Long settlementAmount;
    /**
     * 结算人
     */
    private Long settlementUser;
    /**
     * 结算优惠金额
     */
    private Long settlementReduceMoney;
}
