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

import java.util.Date;
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.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_car_info")
public class TranCarInfo extends BaseModel<TranCarInfo> {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId(type = IdType.UUID)
    private String id;
    /**
     * 公司
     */
    private String compId;
    /**
     * 运输任务id
     */
    private String infoId;
    /**
     * 运输阶段id
     */
    private String processId;
    /**
     * 运输方式(1汽运2火运3船运4他运)
     */
    private String tranType;
    /**
     * 他运运输方式(1汽运2火运3散船4集装箱船)
     */
    private String threeTranType;
    /**
     * 司机姓名/联络员姓名
     */
    private String driver;
    /**
     * 计费方式(1按吨，2按车)
     */
    private String billingMethod;
    /**
     * 车队名称
     */
    private String fleetName;
    /**
     * 是否车队(0否1是)
     */
    private String fleetFlag;
    /**
     * 临时司机标识(1是)
     */
    private String temporaryDriverFlag;
    /**
     * 司机电话/联络员电话
     */
    private String driverPhone;
    /**
     * 派车编号
     */
    private String tranCarNo;
    /**
     * 确认卸货(1未确认3已确认)
     */
    private String confirmFlag;
    /**
     * 车牌号
     */
    private String carNo;
    /**
     * 箱号
     */
    private String caseNo;
    /**
     * 箱号2
     */
    private String caseNoOther;
    /**
     * 封号
     */
    private String titleNo;
    /**
     * 封号2
     */
    private String titleNoOther;
    /**
     * 运输单价
     */
    private String tranPrice;
    /**
     * 车次
     */
    private String trainNo;
    /**
     * 航次
     */
    private String shipNo;
    /**
     * 车型
     */
    private String carModel;
    /**
     * 车长
     */
    private Float carLength;
    /**
     * 载重
     */
    private Float loadWeight;
    /**
     * 船名
     */
    private String shipName;
    /**
     * 装车净重
     */
    private Float loadNetWeight;
    /**
     * 卸车净重
     */
    private Float unloadNetWeight;
    /**
     * 装车磅单
     */
    private String loadPoundImg;
    /**
     * 卸车磅单
     */
    private String unloadPoundImg;
    /**
     * 车厢号
     */
    private String boxNo;
    /**
     * 船运类型
     */
    private String shipType;
    /**
     * 集装箱数量
     */
    private Integer boxNumber;
    /**
     * 签订状态
     */
    private String signStatus;
    /**
     * 签订状态标识(1未签合同3已签合同)
     */
    private String signStatusFlag;
    /**
     * 未提交0 出库提交1 入库提交2
     */
    private String submit;
    /**
     * 仓位重量
     */
    private String positionWeight;
    /**
     * 仓位号
     */
    private String binNumber;
    /**
     * 发车日期/发船日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date sendDateStart;
    /**
     * 装车日期/装船日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date loadingDate;
    /**
     * 卸车日期/卸船日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date unloadingDate;
    /**
     * 到站日期/到港日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date receiveDateEnd;
    /**
     * 状态标识
     */
    private String statusFlag;
    /**
     * 状态
     */
    private String status;
    /**
     * 状态英文
     */
    private String statusEn;
    /**
     * 结算价（元/吨）
     */
    private Float settlementPrice;
    /**
     * 扣款金额
     */
    private Double deductionAmount;
    /**
     * 扣款项
     */
    private String deductionItems;
    /**
     * 合同编号
     */
    private String contractNo;
    /**
     * 移库出库成本
     */
    private Double cost;
    /**
     * 货名
     */
    @TableField(exist = false)
    private String goodsName;
    /**
     * 计划id
     */
    @TableField(exist = false)
    private String planId;
    /**
     * flag(0暂存1提交)
     */
    @TableField(exist = false)
    private String flag;

    @TableField(exist = false)
    private List<DriverViewInfo> driverViewInfoList;
    @TableField(exist = false)
    private List<TranCarInfo> tranCarInfoList;
    @TableField(exist = false)
    private TranTaskInfo tranTaskInfos;
    /**
     * 当前价格
     */
    private Float contractPrice;

    /**
     * 合同id
     */
    @TableField(exist = false)
    private String contractId;

    @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 PROCESS_ID = "process_id";

    }
}
