package com.njzscloud.supervisory.order.pojo.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.njzscloud.common.mp.support.handler.j.JsonTypeHandler;
import com.njzscloud.supervisory.biz.constant.AuditStatus;
import com.njzscloud.supervisory.order.contant.*;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;

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

/**
 * 订单信息
 */
@Getter
@Setter
@ToString
@Accessors(chain = true)
@TableName(value = "order_info", autoResultMap = true)
public class OrderInfoEntity {

    /**
     * Id
     */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;

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

    /**
     * 准运证编号
     */
    private String certificateSn;

    /**
     * 自动标识; 0-->全手动、1-->进自动、2-->出自动、3-->全自动
     */
    private Integer autoOrder;

    /**
     * 站点 Id
     */
    private Long stationId;

    /**
     * 车道
     */
    private String lane;

    /**
     * 项目 Id
     */
    private Long projectId;

    /**
     * 装货地址 Id
     */
    private Long cargoPlaceId;

    /**
     * 清运公司 Id
     */
    private Long transCompanyId;

    /**
     * 开始清运时间
     */
    private LocalDateTime transTime;
    private LocalDateTime checkTime;
    private LocalDateTime assignmentTransTime;
    private LocalDateTime assignmentDriverTime;
    private LocalDateTime driverConfirmTime;

    /**
     * 下单人 Id; sys_user.id
     */
    private Long userId;

    /**
     * 联系人
     */
    private String contacts;

    /**
     * 联系方式
     */
    private String phone;

    /**
     * 审核状态; 字典代码：audit_status
     */
    private AuditStatus auditStatus;

    /**
     * 审核备注
     */
    private String shiAuditMemo;

    /**
     * 审核时间
     */
    private LocalDateTime shiAuditTime;

    /**
     * 审核备注
     */
    private String quAuditMemo;

    /**
     * 审核时间
     */
    private LocalDateTime quAuditTime;
    /**
     * 审核图片
     */
    private String quAuditPicture;
    private String shiAuditPicture;

    /**
     * 区审核人
     */
    private Long quAuditUserId;

    /**
     * 市审核人
     */
    private Long shiAuditUserId;

    /**
     * 对方站点 Id; 短驳单有值
     */
    private Long targetStationId;

    /**
     * 对方订单 Id; 短驳单有值
     */
    private Long targetOrderId;

    /**
     * 订单类型; 字典代码：order_category
     */
    private OrderCategory orderCategory;

    /**
     * 订单状态; 字典代码：order_status
     */
    private OrderStatus orderStatus;
    private String cancelReason;

    /**
     * 看料员 Id; sys_user.id
     */
    private Long checkerId;

    /**
     * 看料状态; 字典代码：check_status
     */
    private CheckStatus checkStatus;

    /**
     * 车辆 Id
     */
    private Long truckId;

    /**
     * 司机 Id
     */
    private Long driverId;

    /**
     * 产品 Id; order_goods.id
     */
    private Long goodsId;

    /**
     * 优惠金额; 有正负
     */
    private BigDecimal discountMoney;

    /**
     * 手动修正金额; 有正负
     */
    private BigDecimal reviseMoney;

    /**
     * 结算金额; 正
     */
    private BigDecimal settleMoney;

    /**
     * 总金额; 单位：元
     */
    private BigDecimal totalMoney;

    /**
     * 支付状态; 字典代码：payment_status
     */
    private PaymentStatus paymentStatus;

    /**
     * 完结时间
     */
    private LocalDateTime finishTime;

    /**
     * 客户备注
     */
    private String customerMemo;

    /**
     * 看料员备注
     */
    private String checkerMemo;

    /**
     * 支付方式
     */
    private String settlementWay;

    /**
     * 装车照片
     */
    @TableField(typeHandler = JsonTypeHandler.class)
    private List<String> cargoPhoto;

    /**
     * 看料照片
     */
    @TableField(typeHandler = JsonTypeHandler.class)
    private List<String> checkPhoto;

    /**
     * 进出场信息
     */
    private Long carInOutId;

    /**
     * 现场照片
     */
    @TableField(typeHandler = JsonTypeHandler.class)
    private List<String> sitePhotos;

    /**
     * 期望运输时间
     */
    private String expectTime;

    /**
     * 预估量
     */
    private String estimatedQuantity;

    /**
     * 创建人 Id; sys_user.id
     */
    @TableField(fill = FieldFill.INSERT)
    private Long creatorId;

    /**
     * 修改人 Id; sys_user.id
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Long modifierId;

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

    /**
     * 修改时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime modifyTime;

    /**
     * 是否删除; 0-->未删除、1-->已删除
     */
    @TableLogic
    private Boolean deleted;

    /**
     * 商户订单号
     */
    private String outTradeNo;

    /**
     * 支付时间
     */
    private LocalDateTime payTime;

    /**
     * 已退款金额
     */
    private BigDecimal refundMoney;

    private LocalDateTime refundTime;

    /**
     * 改价后金额; 单位：元
     */
    private BigDecimal changeMoney;

    /**
     * 派车方式：项目-->project 平台-->platform  自选-->optional
     */
    private CarWay carWay;

}
