package com.yh.saas.plugin.yiliangyiyun.entity;

import java.util.Date;
import com.baomidou.mybatisplus.activerecord.Model;
import java.io.Serializable;
import java.util.List;

import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.annotations.Version;

import com.baomidou.mybatisplus.enums.IdType;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yh.saas.common.support.entity.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * <p>
 * 记录调度
 * </p>
 *
 * @author Gongdc
 * @since 2021-05-31
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("tran_process_info")
public class TranProcessInfo extends BaseModel<TranProcessInfo> {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId(type = IdType.UUID)
    private String id;
    /**
     * 运输任务id
     */
    private String infoId;
    /**
     * 运输阶段编号
     */
    private String processNo;
    /**
     * 当前运输价格
     */
    private Float tranPrice;
    /**
     * 审核中的运输价格
     */
    private Float tranPriceIng;
    /**
     * 计费方式(1按吨，2按车)
     */
    private String billingMethod;
    /**
     * 当前运输价格(按车)
     */
    private Float tranPriceCar;
    /**
     * 审核中的运输价格(按车)
     */
    private Float tranPriceIngCar;
    /**
     * 实际运费
     */
    private Float actualFreight;
    /**
     * 运输价格状态
     */
    private String priceStatus;
    /**
     * 运输价格状态(按车)
     */
    private String priceStatusCar;
    /**
     * 货名key
     */
    private String goodsNameKey;
    /**
     * 货名
     */
    private String goodsName;
    /**
     * 重量（吨）
     */
    private Float weight;
    /**
     * 运输方式key
     */
    private String tranTypeKey;
    /**
     * 运输方式(1汽运2火运3船运4他运)
     */
    private String tranType;
    /**
     * 他运运输方式(1汽运2火运3散船4集装箱船)
     */
    private String threeTranType;
    /**
     * 合同编号
     */
    private String contractNo;
    /**
     * 发货日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date deliveryDateStart;
    /**
     * 最晚到货日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date deliveryDateEnd;
    /**
     * 发货地省
     */
    private String sendPrivate;
    /**
     * 发货地市
     */
    private String sendCity;
    /**
     * 发货地区
     */
    private String sendArea;
    /**
     * 发货地详细地址
     */
    private String sendDetailedAddress;
    /**
     * 收货地省
     */
    private String receivePrivate;
    /**
     * 收货地市
     */
    private String receiveCity;
    /**
     * 收货地区
     */
    private String receiveArea;
    /**
     * 收货地详细地址
     */
    private String receiveDetailedAddress;
    /**
     * 发货人
     */
    private String sender;
    /**
     * 收货人
     */
    private String receiver;
    /**
     * 发货人电话
     */
    private String senderPhone;
    /**
     * 收货人电话
     */
    private String receiverPhone;
    /**
     * 签到数
     */
    private Long signCount;
    /**
     * 发货反馈状态标识(1执行中3已完货)
     */
    private String feedbackStatusFlag;
    /**
     * 发货反馈状态
     */
    private String feedbackStatus;
    /**
     * 收货反馈状态标识(1执行中3已完货)
     */
    private String receivingStatusFlag;
    /**
     * 收货反馈状态
     */
    private String receivingStatus;
    /**
     * 接单时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date receivingDate;
    /**
     * 状态标识
     */
    private String processStatusFlag;
    /**
     * 状态
     */
    private String processStatus;
    /**
     * 状态英文
     */
    private String statusEn;
    /**
     * 粮款结算阶段标识（1是）
     */
    private String endFlag;
    /**
     * 顺序
     */
    private Integer sort;

    /**
     * 发货
     */
    @TableField(exist = false)
    private String send;

    /**
     * 收货
     */
    @TableField(exist = false)
    private String receive;

    /**
     * 运输周期
     */
    @TableField(exist = false)
    private String tranCycle;

    /**
     * 查询类型
     */
    @TableField(exist = false)
    private String searchType;

    /**
     * 反馈查询标识
     */
    @TableField(exist = false)
    private String feedbackFlag;

    /**
     * 模糊查询
     */
    @TableField(exist = false)
    private String searchKeyWord;
    /**
     * 开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @TableField(exist = false)
    private Date startDate;
    /**
     * 结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @TableField(exist = false)
    private Date endDate;

    @TableField(exist = false)
    private List<TranCarInfo> tranCarInfoList;
    //汽运
    @TableField(exist = false)
    private List<TranCarInfo> tranCarInfoList1;
    //火运
    @TableField(exist = false)
    private List<TranCarInfo> tranCarInfoList2;
    //散船
    @TableField(exist = false)
    private List<TranCarInfo> tranCarInfoList3;
    //集装箱船
    @TableField(exist = false)
    private List<TranCarInfo> tranCarInfoList4;


    /**
     * 运输单价标识(1提交2审核)
     */
    @TableField(exist = false)
    private String flag;
    /**
     * 包括已删除的车辆
     */
    @TableField(exist = false)
    private Integer count;
    @TableField(exist = false)
    private List<TranPriceApprove> tranPriceApproveList;
    /**
     * 派车数量
     */
    @TableField(exist = false)
    private Integer carNum;
    /**
     * 审核人
     */
    @TableField(exist = false)
    private String reviewer;
    /**
     * 价格类型(定价销售，随行就市)
     */
    @TableField(exist = false)
    private String priceType;
    /**
     * 任务类型
     */
    @TableField(exist = false)
    private String taskType;
    /**
     * 关联合同
     */
    @TableField(exist = false)
    private String relatedContract;

    @Override
    protected Serializable pkVal() {
        return this.id;
    }
    public static class QueryFiles {


        public static final String INFO_ID = "info_id";

        public static final String DELETE_FLAG = "delete_flag";

        public static final String SORT = "sort";
    }
}
