package com.example.tyre.entity;

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

/**
 * 车辆生命周期统一事件DTO。
 * <p>
 * 作为“最近事件时间线”的数据载体，将轮胎装卸事件与维保工单事件抽象为统一结构，
 * 便于前端以同一套模板按时间轴展示。事件类型（eventType）区分数据来源：
 * INSTALL 表示轮胎装卸动作，MAINTENANCE 表示维保工单动作。
 * </p>
 */
public class CarLifecycleEventDTO
{

    /** 事件类型字典值，区分数据来源。例如：INSTALL（轮胎装卸）、MAINTENANCE（维保工单）。 */
    private String eventType;

    /** 事件发生时间，统一取各来源表中的操作/创建时间，用于时间轴排序。 */
    private Date eventTime;

    /** 轮胎RFID编码，仅在事件类型为轮胎装卸时有效。 */
    private String tyreRfid;

    /** 轮胎编号，业务展示用。 */
    private String tyreNo;

    /** 轮胎自编号，与 tyreNo 区分，用于内部管理。 */
    private String selfNo;

    /** 轮胎品牌。 */
    private String tyreBrand;

    /** 轮胎规格型号。 */
    private String tyreModel;

    /** 轮位名称，例如：左前轮、右后第二轴等，仅在装卸事件中有效。 */
    private String wheelPostion;

    /** 事件关联的行驶里程（字符串形式，保留原始录入格式）。 */
    private String mileage;

    /** 事件关联的花纹深度（毫米），用于磨损评估。 */
    private String patternDepth;

    /** 状态字典值，例如：工单状态、轮胎状态等，视 eventType 而定。 */
    private String status;

    /** 工单编号，仅在事件类型为维保工单时有效。 */
    private String orderNo;

    /** 类型编码，例如：维保类型字典值、操作类型字典值。 */
    private String typeCode;

    /** 修理厂/工厂名称，仅在维保工单事件中有效。 */
    private String factoryName;

    /** 录入里程（数值型），维保工单或质检记录中由用户录入的当前总里程。 */
    private BigDecimal inputMileage;

    /** 上次里程（数值型），维保工单中记录的上一次保养时的里程。 */
    private BigDecimal lastMileage;

    /** 保养/维修日期，维保工单事件中的计划或实际执行日期。 */
    private Date maintainDate;

    /** 事件描述/故障描述，维保工单中的故障现象或备注信息。 */
    private String description;

    /** 质检结果，仅在轮胎质检相关事件中有效。 */
    private String result;

    /** 维保/检测类型字典值，例如：一级保养、二级保养、日常巡检。 */
    private String maintenanceType;

    /** 轮胎里程记录开始时间，仅在里程类事件中有效。 */
    private Date startTime;

    /** 轮胎里程记录结束时间，仅在里程类事件中有效。 */
    private Date endTime;

    public String getEventType()
    {
        return eventType;
    }

    public void setEventType(String eventType)
    {
        this.eventType = eventType;
    }

    public Date getEventTime()
    {
        return eventTime;
    }

    public void setEventTime(Date eventTime)
    {
        this.eventTime = eventTime;
    }

    public String getTyreRfid()
    {
        return tyreRfid;
    }

    public void setTyreRfid(String tyreRfid)
    {
        this.tyreRfid = tyreRfid;
    }

    public String getTyreNo()
    {
        return tyreNo;
    }

    public void setTyreNo(String tyreNo)
    {
        this.tyreNo = tyreNo;
    }

    public String getSelfNo()
    {
        return selfNo;
    }

    public void setSelfNo(String selfNo)
    {
        this.selfNo = selfNo;
    }

    public String getTyreBrand()
    {
        return tyreBrand;
    }

    public void setTyreBrand(String tyreBrand)
    {
        this.tyreBrand = tyreBrand;
    }

    public String getTyreModel()
    {
        return tyreModel;
    }

    public void setTyreModel(String tyreModel)
    {
        this.tyreModel = tyreModel;
    }

    public String getWheelPostion()
    {
        return wheelPostion;
    }

    public void setWheelPostion(String wheelPostion)
    {
        this.wheelPostion = wheelPostion;
    }

    public String getMileage()
    {
        return mileage;
    }

    public void setMileage(String mileage)
    {
        this.mileage = mileage;
    }

    public String getPatternDepth()
    {
        return patternDepth;
    }

    public void setPatternDepth(String patternDepth)
    {
        this.patternDepth = patternDepth;
    }

    public String getStatus()
    {
        return status;
    }

    public void setStatus(String status)
    {
        this.status = status;
    }

    public String getOrderNo()
    {
        return orderNo;
    }

    public void setOrderNo(String orderNo)
    {
        this.orderNo = orderNo;
    }

    public String getTypeCode()
    {
        return typeCode;
    }

    public void setTypeCode(String typeCode)
    {
        this.typeCode = typeCode;
    }

    public String getFactoryName()
    {
        return factoryName;
    }

    public void setFactoryName(String factoryName)
    {
        this.factoryName = factoryName;
    }

    public BigDecimal getInputMileage()
    {
        return inputMileage;
    }

    public void setInputMileage(BigDecimal inputMileage)
    {
        this.inputMileage = inputMileage;
    }

    public BigDecimal getLastMileage()
    {
        return lastMileage;
    }

    public void setLastMileage(BigDecimal lastMileage)
    {
        this.lastMileage = lastMileage;
    }

    public Date getMaintainDate()
    {
        return maintainDate;
    }

    public void setMaintainDate(Date maintainDate)
    {
        this.maintainDate = maintainDate;
    }

    public String getDescription()
    {
        return description;
    }

    public void setDescription(String description)
    {
        this.description = description;
    }

    public String getResult()
    {
        return result;
    }

    public void setResult(String result)
    {
        this.result = result;
    }

    public String getMaintenanceType()
    {
        return maintenanceType;
    }

    public void setMaintenanceType(String maintenanceType)
    {
        this.maintenanceType = maintenanceType;
    }

    public Date getStartTime()
    {
        return startTime;
    }

    public void setStartTime(Date startTime)
    {
        this.startTime = startTime;
    }

    public Date getEndTime()
    {
        return endTime;
    }

    public void setEndTime(Date endTime)
    {
        this.endTime = endTime;
    }
}
