package com.erp.logistics.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.experimental.Accessors;

import java.time.LocalDateTime;

/**
 * 运单状态表
 */
@Data
@Accessors(chain = true)
@TableName("logistics_waybill_status")
public class WaybillStatus {

    /**
     * 主键ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 运单号
     */
    private String waybillNo;

    /**
     * 物流商编码：SF-顺丰, YTO-圆通, ZTO-中通, YUNDA-韵达
     */
    private String carrier;

    /**
     * 运单状态：PENDING-待发货, IN_TRANSIT-运输中, DELIVERING-派送中, SIGNED-已签收, RETURNING-退回中, RETURNED-已退回, EXCEPTION-异常
     */
    private String status;

    /**
     * 状态标签（中文描述）
     */
    private String statusLabel;

    /**
     * 当前所在位置
     */
    private String location;

    /**
     * 状态描述
     */
    private String description;

    /**
     * 签收时间
     */
    private LocalDateTime signedTime;

    /**
     * 最后轨迹时间
     */
    private LocalDateTime lastTraceTime;

    /**
     * 是否需要同步：0-否, 1-是
     */
    private Integer needSync;

    /**
     * 同步状态：0-未同步, 1-同步中, 2-已同步, 3-同步失败
     */
    private Integer syncStatus;

    /**
     * 同步失败原因
     */
    private String syncFailReason;

    /**
     * 同步重试次数
     */
    private Integer syncRetryCount;

    /**
     * 订单ID
     */
    private Long orderId;

    /**
     * 订单编号
     */
    private String orderNo;

    /**
     * 收件人姓名
     */
    private String receiverName;

    /**
     * 收件人电话
     */
    private String receiverPhone;

    /**
     * 收件人地址
     */
    private String receiverAddress;

    /**
     * 逻辑删除：0-未删除, 1-已删除
     */
    @TableLogic
    private Integer deleted;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createdAt;

    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updatedAt;
}
