package org.springblade.modules.app.common.dto;

import com.alibaba.fastjson.annotation.JSONField;
import com.alibaba.fastjson.serializer.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.wn.common.datamodel.BaseDTO;
import com.wn.common.datamodel.Long2StringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

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

/**
 * <p>
 * 运输单信息
 * </p>
 *
 * @author fuxinsheng
 * @since 2021-11-05
 */
@Data
@ApiModel(value = "TransportDTO", description = "运输单信息")
public class TransportDTO extends BaseDTO {

    private static final long serialVersionUID = 1L;

    /**
     * id
     */
    @JSONField(serializeUsing= ToStringSerializer.class)
    @JsonSerialize(using = Long2StringSerializer.class)
    @ApiModelProperty(name = "id", value = "运输单id")
    private Long id;

    /**
     * code
     */
    @ApiModelProperty(name = "code", value = "运输单code")
    private String code;

    /**
     * 调运单id
     */
    @JSONField(serializeUsing= ToStringSerializer.class)
    @JsonSerialize(using = Long2StringSerializer.class)
    @ApiModelProperty(name = "waybillId", value = "调运单id")
    private Long waybillId;

    private String applyUserName;

    /**
     * 调运单code
     */
    @ApiModelProperty(name = "waybillCode", value = "调运单code")
    private String waybillCode;

    /**
     * 调运单名称
     */
    @ApiModelProperty(name = "waybillName", value = "调运单名称")
    private String waybillName;

    /**
     * 调运单对外编码
     */
    @ApiModelProperty(name = "waybillOutCode", value = "调运单对外编码")
    private String waybillOutCode;

    /**
     * 状态 0-待确认 1-待审批 2-调运中 3-已完成 -1-已驳回 -2-未通过 -3-撤销 -4-关闭
     */
    @ApiModelProperty(name = "state", value = "状态 0-待确认 2-调运中 3-已完成 -1-已驳回 -3-撤销 -4-关闭")
    private Integer state;

    /**
     * 验收状态 -1-未提交 0-待确认 1-通过 2-驳回
     */
    @ApiModelProperty(name = "acceptState", value = "验收状态 -1-未提交 0-待确认 1-通过 2-驳回")
    private Integer acceptState;

    /**
     * 异常类型 0-无异常 1-拒收 2-超时接收 3-让步接收
     */
    @ApiModelProperty(name = "expType", value = "异常类型 0-无异常 1-拒收 2-超时接收 3-让步接收")
    private Integer expType;

    /**
     * 待宰户id
     */
    @JSONField(serializeUsing= ToStringSerializer.class)
    @JsonSerialize(using = Long2StringSerializer.class)
    @ApiModelProperty(name = "slaughterHouseId", value = "待宰户id")
    private Long slaughterHouseId;

    /**
     * 待宰户姓名
     */
    @ApiModelProperty(name = "slaughterHouseName", value = "待宰户姓名")
    private String slaughterHouseName;

    /**
     * 司机id
     */
    @JSONField(serializeUsing= ToStringSerializer.class)
    @JsonSerialize(using = Long2StringSerializer.class)
    @ApiModelProperty(name = "driverUserId", value = "司机id")
    private Long driverUserId;

    /**
     * 司机姓名
     */
    @ApiModelProperty(name = "driverUserName", value = "司机姓名")
    private String driverUserName;

    /**
     * 司机行驶证编码
     */
    @ApiModelProperty(name = "driverVehicleCode", value = "司机行驶证编码")
    private String driverVehicleCode;

    /**
     * 司机驾驶证
     */
    @ApiModelProperty(name = "driverLicenceUrl", value = "司机驾驶证")
    private String driverLicenceUrl;

    /**
     * 司机驾驶证编码
     */
    @ApiModelProperty(name = "driverLicenceCode", value = "司机驾驶证")
    private String driverLicenceCode;

    /**
     * 道路运输许可证编号
     */
    @ApiModelProperty(name = "driverTransportPermitCode", value = "道路运输许可证编号")
    private String driverTransportPermitCode;

    /**
     * 司机电话
     */
    @ApiModelProperty(name = "driverPhone", value = "司机电话")
    private String driverPhone;

    /**
     * 养殖场-省id
     */
    @JSONField(serializeUsing= ToStringSerializer.class)
    @JsonSerialize(using = Long2StringSerializer.class)
    @ApiModelProperty(name = "salerProvId", value = "养殖场-省id")
    private Long salerProvId;

    /**
     * 养殖场-市id
     */
    @JSONField(serializeUsing= ToStringSerializer.class)
    @JsonSerialize(using = Long2StringSerializer.class)
    @ApiModelProperty(name = "salerCityId", value = "养殖场-市id")
    private Long salerCityId;

    /**
     * 养殖场-区id
     */
    @JSONField(serializeUsing= ToStringSerializer.class)
    @JsonSerialize(using = Long2StringSerializer.class)
    @ApiModelProperty(name = "salerAreaId", value = "养殖场-区id")
    private Long salerAreaId;

    /**
     * 养殖场地址
     */
    @ApiModelProperty(name = "salerUserAddress", value = "养殖场地址")
    private String salerUserAddress;

    /**
     * 养殖场联系人
     */
    @ApiModelProperty(name = "salerUserLinkMan", value = "养殖场联系人")
    private String salerUserLinkMan;

    /**
     * 养殖场电话
     */
    @ApiModelProperty(name = "salerPhone", value = "养殖场电话")
    private String salerPhone;

    /**
     * 养殖场名称
     */
    @ApiModelProperty(name = "salerUserName", value = "养殖场名称")
    private String salerUserName;

    /**
     * 屠宰场-省Id
     */
    @JSONField(serializeUsing= ToStringSerializer.class)
    @JsonSerialize(using = Long2StringSerializer.class)
    @ApiModelProperty(name = "buyerProvId", value = "屠宰场-省id")
    private Long buyerProvId;

    /**
     * 屠宰场-市Id
     */
    @JSONField(serializeUsing= ToStringSerializer.class)
    @JsonSerialize(using = Long2StringSerializer.class)
    @ApiModelProperty(name = "buyerCityId", value = "屠宰场-市id")
    private Long buyerCityId;

    /**
     * 屠宰场-区Id
     */
    @JSONField(serializeUsing= ToStringSerializer.class)
    @JsonSerialize(using = Long2StringSerializer.class)
    @ApiModelProperty(name = "buyerAreaId", value = "屠宰场-区id")
    private Long buyerAreaId;

    /**
     * 屠宰场地址
     */
    @ApiModelProperty(name = "buyerUserAddress", value = "屠宰场地址")
    private String buyerUserAddress;

    /**
     * 屠宰场名称
     */
    @ApiModelProperty(name = "buyerUserName", value = "屠宰场名称")
    private String buyerUserName;


    /**
     * 经纪人id
     */
    @ApiModelProperty(name = "agentUserId", value = "经纪人id")
    @JSONField(serializeUsing= ToStringSerializer.class)
    @JsonSerialize(using = Long2StringSerializer.class)
    private Long agentUserId;

    /**
     * 经纪人名称
     */
    @ApiModelProperty(name = "agentUserName", value = "经纪人名称")
    private String agentUserName;


    /**
     * 屠宰场联系人
     */
    @ApiModelProperty(name = "buyerUserLinkMan", value = "屠宰场联系人")
    private String buyerUserLinkMan;

    /**
     * 屠宰场电话
     */
    @ApiModelProperty(name = "buyerPhone", value = "屠宰场电话")
    private String buyerPhone;

    /**
     * 价格类型 1-一口价 2-按里程数
     */
    @ApiModelProperty(name = "priceType", value = "价格类型 1-一口价 2-按里程数")
    private Integer priceType;

    /**
     * 是否是创建人 0-否 1-是
     */
    @ApiModelProperty(name = "ifCreator", value = "是否是创建人 0-否 1-是")
    private Integer ifCreator;

    /**
     * 定金
     */
    @ApiModelProperty(name = "frontPrice", value = "定金")
    private BigDecimal frontPrice;

    /**
     * 价格
     */
    @ApiModelProperty(name = "price", value = "价格")
    private BigDecimal price;

    /**
     * 检疫站id
     */
    @JSONField(serializeUsing= ToStringSerializer.class)
    @JsonSerialize(using = Long2StringSerializer.class)
    @ApiModelProperty(name = "verifyId", value = "检疫站id")
    private Long verifyId;

    /**
     * 检疫站名称
     */
    @ApiModelProperty(name = "verifyName", value = "检疫站名称")
    private String verifyName;

    /**
     * 检疫站地址
     */
    @ApiModelProperty(name = "verifyAddress", value = "检疫站地址")
    private String verifyAddress;

    /**
     * 检疫站报检结果
     */
    @ApiModelProperty(name = "verifyResultInfo", value = "检疫站报检结果")
    private String verifyResultInfo;

    /**
     * 备注
     */
    @ApiModelProperty(name = "remark", value = "备注")
    private String remark;

    /**
     * 确认时间
     */
    @ApiModelProperty(name = "confirmTime", value = "确认时间")
    private Date confirmTime;

    /**
     * 提交司机审核时间
     */
    @ApiModelProperty(name = "submitTime", value = "提交司机审核时间")
    private Date submitTime;

    /**
     * 完成时间
     */
    @ApiModelProperty(name = "finishTime", value = "完成时间")
    private Date finishTime;

    /**
     * 审批意见
     */
    @ApiModelProperty(name = "message", value = "审批意见")
    private String message;

    /**
     * 运输单阶段信息列表
     */
    @ApiModelProperty(name = "stageInfoDTOList", value = "运输单阶段信息列表")
    private List<TransportStageInfoDTO> stageInfoDTOList;

    /**
     * 养殖场id
     */
    @JSONField(serializeUsing= ToStringSerializer.class)
    @JsonSerialize(using = Long2StringSerializer.class)
    @ApiModelProperty(name = "salerUserId", value = "养殖场id")
    private Long salerUserId;

    /**
     * 屠宰场id
     */
    @JSONField(serializeUsing= ToStringSerializer.class)
    @JsonSerialize(using = Long2StringSerializer.class)
    @ApiModelProperty(name = "buyerUserId", value = "屠宰场id")
    private Long buyerUserId;
    /**
     * 创建时间
     */
    @ApiModelProperty(name = "createdTime", value = "创建时间")
    private Date createdTime;
    /**
     * 修改时间
     */
    @ApiModelProperty(name = "modifiedTime", value = "修改时间")
    private Date modifiedTime;

    private String token;

    private Integer top;
}
