package com.ruoyi.logistics.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.annotation.Excels;
import com.ruoyi.logistics.annotation.Dict;
import com.ruoyi.system.api.domain.SysDept;
import com.ruoyi.system.api.domain.SysUser;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;

/**
 * 运单管理对象 biz_waybill_order
 * 
 * @author RuiJing
 * @date 2026-01-29
 */
public class BizWaybillOrder extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 运单id */
    private Long waybillId;

    /** 运单号 内部生成 */
    @Excel(name = "运单号")
    private String waybillNo;

    /** 外部运单号 JD/SF的运单号 */
    @Excel(name = "外部运单号")
    private String externalWaybillNo;

    /** 订单类型 1-非时效件(京东)，2-时效件(顺丰) */
    @Excel(name = "订单类型", readConverterExp = "1=京东,2=顺丰")
    private Integer orderType;

    /** 发件人姓名 */
    @Excel(name = "发件人姓名")
    private String senderName;

    /** 发件人电话 */
    @Excel(name = "发件人电话")
    private String senderPhone;

    /** 发件省 */
    @Excel(name = "发件省")
    private String senderProvince;

    /** 发件市 */
    @Excel(name = "发件市")
    private String senderCity;

    /** 发件区县 */
    @Excel(name = "发件区县")
    private String senderCounty;

    /** 发件详细地址 */
    @Excel(name = "发件详细地址")
    private String senderAddress;

    /** 收件人姓名 */
    @Excel(name = "收件人姓名")
    private String receiverName;

    /** 收件人电话 */
    @Excel(name = "收件人电话")
    private String receiverPhone;

    /** 收件省 */
    @Excel(name = "收件省")
    private String receiverProvince;

    /** 收件市 */
    @Excel(name = "收件市")
    private String receiverCity;

    /** 收件区县 */
    @Excel(name = "收件区县")
    private String receiverCounty;

    /** 收件详细地址 */
    @Excel(name = "收件详细地址")
    private String receiverAddress;

    /** 货物名称 */
    @Excel(name = "货物名称")
    private String goodsName;

    /** 货物重量 */
    @Excel(name = "货物重量")
    private BigDecimal goodsWeight;

    /** 货物体积 */
    @Excel(name = "货物体积")
    private BigDecimal goodsVolume;

    /** 货物数量 */
    @Excel(name = "货物数量")
    private Long goodsQty;

    /** 订单状态 */
    @Excel(name = "订单状态", readConverterExp = "1=待揽件,2=已揽件,3=运输中,4=派送中,5=已签收,6=已取消")
    private Integer orderStatus;

    /** 取件类型 */
    @Excel(name = "取件类型", readConverterExp = "1=上门取件,2=自提")
    private Integer pickupType;

    /** 上门取件开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "上门取件开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date sendStartTime;

    /** 上门取件结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "上门取件结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date sendEndTime;

    /** 揽收时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "揽收时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date pickupTime;

    /** 派送时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "派送时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date deliveryTime;

    /** 签收时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "签收时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date signTime;

    /** 取消原因 */
    @Excel(name = "取消原因")
    private String cancelReason;

    /** 父运单ID */
//    @Excel(name = "父运单ID")
    private Long parentWaybillId;

    /** 是否结算开票 */
//    @Excel(name = "是否结算开票")
    private String invoiceFlag;

    /** 是否调账 */
//    @Excel(name = "是否调账")
    private String adjustFlag;

    /** 删除标志 （0代表存在 2代表删除） */
    private String delFlag;

    /** 部门ID */
//    @Excel(name = "部门ID")
    private Long deptId;

    @Excel(name = "部门名称")
    private String deptName;

    /** 用户ID */
//    @Excel(name = "用户ID")
    private Long userId;

    @Excel(name = "用户昵称")
    private String nickName;

    /** 产品类型 */
    @Excel(name = "产品类型", readConverterExp = "ed-m-0001=京东标快,ed-m-0002=京东特快,fr-m-0004=特快重货,1=顺丰特快,2=顺丰标快")
    private String productCode;

    /** 增值服务 */
    private String addedService;

    /** 面单pdf */
    private String pdfUrl;
    /** 批次号 */
    private String batchNum;

    /** 运单费用 */
    @Excel(name = "运单费用")
    private BigDecimal totalAmount;

    public void setWaybillId(Long waybillId) 
    {
        this.waybillId = waybillId;
    }

    public Long getWaybillId() 
    {
        return waybillId;
    }

    public void setWaybillNo(String waybillNo) 
    {
        this.waybillNo = waybillNo;
    }

    public String getWaybillNo() 
    {
        return waybillNo;
    }

    public void setExternalWaybillNo(String externalWaybillNo) 
    {
        this.externalWaybillNo = externalWaybillNo;
    }

    public String getExternalWaybillNo() 
    {
        return externalWaybillNo;
    }

    public void setOrderType(Integer orderType) 
    {
        this.orderType = orderType;
    }

    public Integer getOrderType() 
    {
        return orderType;
    }

    public void setSenderName(String senderName) 
    {
        this.senderName = senderName;
    }

    public String getSenderName() 
    {
        return senderName;
    }

    public void setSenderPhone(String senderPhone) 
    {
        this.senderPhone = senderPhone;
    }

    public String getSenderPhone() 
    {
        return senderPhone;
    }

    public void setSenderProvince(String senderProvince) 
    {
        this.senderProvince = senderProvince;
    }

    public String getSenderProvince() 
    {
        return senderProvince;
    }

    public void setSenderCity(String senderCity) 
    {
        this.senderCity = senderCity;
    }

    public String getSenderCity() 
    {
        return senderCity;
    }

    public void setSenderCounty(String senderCounty) 
    {
        this.senderCounty = senderCounty;
    }

    public String getSenderCounty() 
    {
        return senderCounty;
    }

    public void setSenderAddress(String senderAddress) 
    {
        this.senderAddress = senderAddress;
    }

    public String getSenderAddress() 
    {
        return senderAddress;
    }

    public void setReceiverName(String receiverName) 
    {
        this.receiverName = receiverName;
    }

    public String getReceiverName() 
    {
        return receiverName;
    }

    public void setReceiverPhone(String receiverPhone) 
    {
        this.receiverPhone = receiverPhone;
    }

    public String getReceiverPhone() 
    {
        return receiverPhone;
    }

    public void setReceiverProvince(String receiverProvince) 
    {
        this.receiverProvince = receiverProvince;
    }

    public String getReceiverProvince() 
    {
        return receiverProvince;
    }

    public void setReceiverCity(String receiverCity) 
    {
        this.receiverCity = receiverCity;
    }

    public String getReceiverCity() 
    {
        return receiverCity;
    }

    public void setReceiverCounty(String receiverCounty) 
    {
        this.receiverCounty = receiverCounty;
    }

    public String getReceiverCounty() 
    {
        return receiverCounty;
    }

    public void setReceiverAddress(String receiverAddress) 
    {
        this.receiverAddress = receiverAddress;
    }

    public String getReceiverAddress() 
    {
        return receiverAddress;
    }

    public void setGoodsName(String goodsName) 
    {
        this.goodsName = goodsName;
    }

    public String getGoodsName() 
    {
        return goodsName;
    }

    public void setGoodsWeight(BigDecimal goodsWeight) 
    {
        this.goodsWeight = goodsWeight;
    }

    public BigDecimal getGoodsWeight() 
    {
        return goodsWeight;
    }

    public void setGoodsVolume(BigDecimal goodsVolume) 
    {
        this.goodsVolume = goodsVolume;
    }

    public BigDecimal getGoodsVolume() 
    {
        return goodsVolume;
    }

    public void setGoodsQty(Long goodsQty) 
    {
        this.goodsQty = goodsQty;
    }

    public Long getGoodsQty() 
    {
        return goodsQty;
    }

    public void setOrderStatus(Integer orderStatus) 
    {
        this.orderStatus = orderStatus;
    }

    public Integer getOrderStatus() 
    {
        return orderStatus;
    }

    public void setPickupType(Integer pickupType) 
    {
        this.pickupType = pickupType;
    }

    public Integer getPickupType() 
    {
        return pickupType;
    }

    public void setSendStartTime(Date sendStartTime) 
    {
        this.sendStartTime = sendStartTime;
    }

    public Date getSendStartTime() 
    {
        return sendStartTime;
    }

    public Date getSendEndTime() {
        return sendEndTime;
    }

    public void setSendEndTime(Date sendEndTime) {
        this.sendEndTime = sendEndTime;
    }

    public void setPickupTime(Date pickupTime)
    {
        this.pickupTime = pickupTime;
    }

    public Date getPickupTime() 
    {
        return pickupTime;
    }

    public void setDeliveryTime(Date deliveryTime) 
    {
        this.deliveryTime = deliveryTime;
    }

    public Date getDeliveryTime() 
    {
        return deliveryTime;
    }

    public void setSignTime(Date signTime) 
    {
        this.signTime = signTime;
    }

    public Date getSignTime() 
    {
        return signTime;
    }

    public void setCancelReason(String cancelReason) 
    {
        this.cancelReason = cancelReason;
    }

    public String getCancelReason() 
    {
        return cancelReason;
    }

    public void setParentWaybillId(Long parentWaybillId) 
    {
        this.parentWaybillId = parentWaybillId;
    }

    public Long getParentWaybillId() 
    {
        return parentWaybillId;
    }

    public void setInvoiceFlag(String invoiceFlag) 
    {
        this.invoiceFlag = invoiceFlag;
    }

    public String getInvoiceFlag() 
    {
        return invoiceFlag;
    }

    public void setAdjustFlag(String adjustFlag) 
    {
        this.adjustFlag = adjustFlag;
    }

    public String getAdjustFlag() 
    {
        return adjustFlag;
    }

    public void setDelFlag(String delFlag) 
    {
        this.delFlag = delFlag;
    }

    public String getDelFlag() 
    {
        return delFlag;
    }

    public void setDeptId(Long deptId) 
    {
        this.deptId = deptId;
    }

    public Long getDeptId() 
    {
        return deptId;
    }

    public void setUserId(Long userId) 
    {
        this.userId = userId;
    }

    public Long getUserId() 
    {
        return userId;
    }

    public String getProductCode() {
        return productCode;
    }

    public void setProductCode(String productCode) {
        this.productCode = productCode;
    }

    public String getAddedService() {
        return addedService;
    }

    public void setAddedService(String addedService) {
        this.addedService = addedService;
    }

    public String getDeptName() {
        return deptName;
    }

    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }

    public String getNickName() {
        return nickName;
    }

    public void setNickName(String nickName) {
        this.nickName = nickName;
    }

    public String getPdfUrl() {
        return pdfUrl;
    }

    public void setPdfUrl(String pdfUrl) {
        this.pdfUrl = pdfUrl;
    }

    public BigDecimal getTotalAmount() {
        return totalAmount;
    }

    public void setTotalAmount(BigDecimal totalAmount) {
        this.totalAmount = totalAmount;
    }

    public void setBatchNum(String batchNum) {
        this.batchNum = batchNum;
    }

    public String getBatchNum() {
        return batchNum;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("waybillId", getWaybillId())
            .append("waybillNo", getWaybillNo())
            .append("externalWaybillNo", getExternalWaybillNo())
            .append("orderType", getOrderType())
            .append("senderName", getSenderName())
            .append("senderPhone", getSenderPhone())
            .append("senderProvince", getSenderProvince())
            .append("senderCity", getSenderCity())
            .append("senderCounty", getSenderCounty())
            .append("senderAddress", getSenderAddress())
            .append("receiverName", getReceiverName())
            .append("receiverPhone", getReceiverPhone())
            .append("receiverProvince", getReceiverProvince())
            .append("receiverCity", getReceiverCity())
            .append("receiverCounty", getReceiverCounty())
            .append("receiverAddress", getReceiverAddress())
            .append("goodsName", getGoodsName())
            .append("goodsWeight", getGoodsWeight())
            .append("goodsVolume", getGoodsVolume())
            .append("goodsQty", getGoodsQty())
            .append("orderStatus", getOrderStatus())
            .append("pickupType", getPickupType())
            .append("sendStartTime", getSendStartTime())
            .append("pickupTime", getPickupTime())
            .append("deliveryTime", getDeliveryTime())
            .append("signTime", getSignTime())
            .append("cancelReason", getCancelReason())
            .append("parentWaybillId", getParentWaybillId())
            .append("invoiceFlag", getInvoiceFlag())
            .append("adjustFlag", getAdjustFlag())
            .append("remark", getRemark())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .append("delFlag", getDelFlag())
            .append("createBy", getCreateBy())
            .append("updateBy", getUpdateBy())
            .append("deptId", getDeptId())
            .append("userId", getUserId())
            .append("productCode", getProductCode())
            .append("addedService", getAddedService())
            .append("deptName", getDeptName())
            .append("nickName", getNickName())
            .append("pdfUrl", getPdfUrl())
            .append("totalAmount", getTotalAmount())
            .toString();
    }
}
