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.util.Date;
import java.util.List;


/**
 * <p>
 * 调运单信息
 * </p>
 *
 * @author fuxinsheng
 * @since 2021-11-05
 */
@Data
@ApiModel(value = "WaybillDTO", description = "调运单信息")
public class WaybillDTO 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;

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

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

    private String contact;

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

    /**
     * 审批用户角色 2-养殖场 3-司机 4-经纪人 6-畜牧局
     */
    @ApiModelProperty(name = "applyType", value = "审批用户角色 2-养殖场 3-司机 4-经纪人 6-畜牧局")
    private Integer applyType;

    private String applyUserName;

    /**
     * 计划数量
     */
    @ApiModelProperty(name = "planNum", value = "计划数量")
    private Integer planNum;

    /**
     * 调入时间
     */
    @ApiModelProperty(name = "planTime", value = "调入时间")
    private Date planTime;

    /**
     * 待宰户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 = "buyerUserId", value = "屠宰场用户id")
    private Long buyerUserId;

    /**
     * 浙牧通调运主体类型 0-无 1 养殖场 2 屠宰场 3 其他调运主体
     */
    @ApiModelProperty(name = "companyOrPeopleType", value = "浙牧通调运主体类型 0-无 1 养殖场 2 屠宰场 3 其他调运主体")
    private Integer companyOrPeopleType;

    /**
     * 单位或个人（user.zmt_name）
     */
    @ApiModelProperty(name = "companyOrPeople", value = "单位或个人（user.zmt_name）")
    private String companyOrPeople;

    /**
     * 备案单位 id（user.zmt_id）
     */
    @JSONField(serializeUsing = ToStringSerializer.class)
    @JsonSerialize(using = Long2StringSerializer.class)
    @ApiModelProperty(name = "recordUnitId", value = "备案单位 id")
    private Long recordUnitId;

    /**
     * 备案人（user.zmt_user_name）
     */
    @ApiModelProperty(name = "recordPeople", value = "备案人")
    private String recordPeople;

    /**
     * 备案人 id（user.zmt_user_id）
     */
    @JSONField(serializeUsing = ToStringSerializer.class)
    @JsonSerialize(using = Long2StringSerializer.class)
    @ApiModelProperty(name = "recordPeopleId", value = "备案人 id")
    private Long recordPeopleId;

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

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

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

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

    /**
     * 屠宰场营业执照
     */
    @ApiModelProperty(name = "buyerBusinessUrl", value = "屠宰场营业执照")
    private String buyerBusinessUrl;

    /**
     * 屠宰场动物防疫条件合格证
     */
    @ApiModelProperty(name = "buyerLivestockPreventionPassUrl", value = "屠宰场动物防疫条件合格证")
    private String buyerLivestockPreventionPassUrl;

    /**
     * 屠宰场排污许可证
     */
    @ApiModelProperty(name = "buyerPollutantDischargePermitLicenseUrl", value = "屠宰场排污许可证")
    private String buyerPollutantDischargePermitLicenseUrl;

    /**
     * 屠宰场生猪定点屠宰许可证
     */
    @ApiModelProperty(name = "buyerLivestockSlaughterPermitUrl", value = "屠宰场生猪定点屠宰许可证")
    private String buyerLivestockSlaughterPermitUrl;

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

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

    /**
     * 经纪人手机
     */
    @ApiModelProperty(name = "agentPhone", value = "经纪人手机")
    private String agentPhone;

    /**
     * 养殖场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 = "supplierId", value = "浙牧通养殖场ID")
    private Long supplierId;

    /**
     * 浙牧通养殖场类型 1.供东部生猪屠宰企业；2.六省供货方 4.无疫小区
     */
    @ApiModelProperty(name = "supplierType", value = "浙牧通养殖场类型 1.供东部生猪屠宰企业；2.六省供货方 4.无疫小区")
    private Integer supplierType;

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

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

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

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

    /**
     * 养殖场营业执照
     */
    @ApiModelProperty(name = "salerBusinessUrl", value = "养殖场营业执照")
    private String salerBusinessUrl;

    /**
     * 养殖场动物防疫条件合格证
     */
    @ApiModelProperty(name = "salerLivestockPreventionPassUrl", value = "养殖场动物防疫条件合格证")
    private String salerLivestockPreventionPassUrl;

    /**
     * 养殖场三年无疫情证明
     */
    @ApiModelProperty(name = "salerNoEpidemicProofPassUrl", value = "养殖场三年无疫情证明")
    private String salerNoEpidemicProofPassUrl;

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


    /**
     * 确认用户ID
     */
    @JSONField(serializeUsing = ToStringSerializer.class)
    @JsonSerialize(using = Long2StringSerializer.class)
    @ApiModelProperty(name = "confirmUserId", value = "确认用户ID")
    private Long confirmUserId;

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

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

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

    /**
     * 浙牧通备案UUID(registeredUuid)
     */
    @ApiModelProperty(name = "registeredUuid", value = "浙牧通备案UUID(registeredUuid)")
    private String registeredUuid;

    /**
     * 检疫站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 = "message", value = "审批意见")
    private String message;

    /**
     * 血检报告
     */
    @ApiModelProperty(name = "bloodTestList", value = "血检报告")
    private List<String> bloodTestList;

    /**
     * 运输单code
     */
    @ApiModelProperty(name = "transportCode", value = "运输单code")
    private String transportCode;
    /**
     * 创建时间
     */
    @ApiModelProperty(name = "createdTime", value = "创建时间")
    private Date createdTime;

    /**
     * 浙牧通修改审批状态记录
     */
    @ApiModelProperty(name = "zmtApplyUpdateInfo", value = "浙牧通修改审批状态记录")
    private String zmtApplyUpdateInfo;

    /**
     * 修改时间
     */
    @ApiModelProperty(name = "modifiedTime", value = "修改时间")
    private Date modifiedTime;

    private String token;

    private String remark;

    private Integer top;
}
