package com.prolog.rdc.tms.model.dto.intelligent;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

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

/**
 * @author hongbo.pan
 * @date 2023/8/24
 */
@Data
public class IntelligentDispatchShipDTO {

    @ApiModelProperty(value = "运单ID")
    private String shipbillId;

    @ApiModelProperty(value = "调度单id")
    private String loadingId;

    @ApiModelProperty(value = "智能调度单")
    private String intelligentDispatchId;

    @ApiModelProperty(value = "运送顺序")
    private Integer deliveryOrder;

    @ApiModelProperty(value = "预估成本")
    private BigDecimal estimateCost;

    @ApiModelProperty(value = "经度")
    private BigDecimal longitude;

    @ApiModelProperty(value = "纬度")
    private BigDecimal latitude;

    @ApiModelProperty(value = "备注")
    private String memo;

    @ApiModelProperty(value = "企业ID")
    private Long enterpriseId;

    @ApiModelProperty(value = "企业名称")
    private String enterpriseName;

    @ApiModelProperty(value = "创建时间")
    private Date createtime;

    @ApiModelProperty(value = "创建人")
    private String createperson;

    @ApiModelProperty(value = "修改时间")
    private Date updatetime;

    @ApiModelProperty(value = "修改人")
    private String updateperson;

    @ApiModelProperty(value = "货主名称")
    private String cargoOwnerName;

    @ApiModelProperty(value = "订单ID")
    private String orderId;

    @ApiModelProperty(value = "订单编号")
    private String orderNo;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "订单日期")
    private Date orderDate;

    @ApiModelProperty(value = "订单类型 数据字典ORDER_TYPE：1普通 2紧急 3加急")
    private Integer orderType;

    @ApiModelProperty(value = "订单类型 数据字典ORDER_TYPE：1普通 2紧急 3加急")
    private String orderTypeName;

    @ApiModelProperty(value = "订单业务类型 数据字典ORDER_BUSINESS_TYPE：1销售订单-直送  2销售订单-供应商配送 3采购订单-供应商配送 4采购订单-自提 5销售退货 6采购退货 7调拨")
    private Integer orderBusinessType;

    @ApiModelProperty(value = "订单业务类型 数据字典ORDER_BUSINESS_TYPE：1销售订单-直送  2销售订单-供应商配送 3采购订单-供应商配送 4采购订单-自提 5销售退货 6采购退货 7调拨")
    private String orderBusinessTypeName;

    @ApiModelProperty(value = "WMS单据ID")
    private String wmsOrderId;

    @ApiModelProperty(value = "WMS单据编号")
    private String wmsOrderNo;

    @ApiModelProperty(value = "运输状态 数据字典TRANSPORT_STATUS:10待发货 20 配送中 30 已送达")
    private Integer transportStatus;

    @ApiModelProperty(value = "异常状态 数据字典ABNORMAL_STATUS:10异常")
    private Integer abnormalStatus;

    @ApiModelProperty(value = "配送方式 数据字典DELIVERY_METHOD_TYPE：1配送 2自提")
    private Integer deliveryMethodType;

    @ApiModelProperty(value = "运输类型(运输模式) 数据字典TRANSPORT_TYPE:1整车 2零担")
    private Integer transportType;

    @ApiModelProperty(value = "温度要求 数据字典TEMPERATURE_REQUIREMENT：1常温 2冷藏 3冷冻 4恒温")
    private Integer temperatureRequirement;

    @ApiModelProperty(value = "运输状态 数据字典TRANSPORT_STATUS:10待发货 20 配送中 30 已送达")
    private String transportStatusName;

    @ApiModelProperty(value = "异常状态 数据字典ABNORMAL_STATUS:10异常")
    private String abnormalStatusName;

    @ApiModelProperty(value = "配送方式 数据字典DELIVERY_METHOD_TYPE：1配送 2自提")
    private String deliveryMethodTypeName;

    @ApiModelProperty(value = "运输类型(运输模式) 数据字典TRANSPORT_TYPE:1整车 2零担")
    private String transportTypeName;

    @ApiModelProperty(value = "温度要求 数据字典TEMPERATURE_REQUIREMENT：1常温 2冷藏 3冷冻 4恒温")
    private String temperatureRequirementName;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "预计提货开始时间")
    private Date estimatedPickupStartTime;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "预计提货结束时间")
    private Date estimatedPickupEndTime;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "预计送达开始时间")
    private Date estimatedDeliveryStartTime;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "预计结束开始时间")
    private Date estimatedDeliveryEndTime;

    @ApiModelProperty(value = "运输时效")
    private BigDecimal transportAging;

    @ApiModelProperty(value = "发货方类型 数据字典SHIPPER_TYPE:1客户 2仓库 3供应商")
    private Integer shipperType;

    @ApiModelProperty(value = "发货方类型 数据字典SHIPPER_TYPE:1客户 2仓库 3供应商")
    private String shipperTypeName;

    @ApiModelProperty(value = "发货方单位ID")
    private Long shipperUnitId;

    @ApiModelProperty(value = "发货方单位名称")
    private String shipperUnitName;

    @ApiModelProperty(value = "发货方ID")
    private Long shipperId;

    @ApiModelProperty(value = "发货方名称")
    private String shipperName;

    @ApiModelProperty(value = "发货方联系人")
    private String shipperContact;

    @ApiModelProperty(value = "发货方手机号")
    private String shipperPhoneNumber;

    @ApiModelProperty(value = "发货方座机号")
    private String shipperLandlineNumber;

    @ApiModelProperty(value = "发货方邮箱")
    private String shipperEmail;

    @ApiModelProperty(value = "发货方关联手机号")
    private String shipperRelatedPhoneNumber;

    @ApiModelProperty(value = "发货方省名称")
    private String shipperProvinceName;

    @ApiModelProperty(value = "发货方市名称")
    private String shipperCityName;

    @ApiModelProperty(value = "发货方区/县名称")
    private String shipperDistrictName;

    @ApiModelProperty(value = "发货方详细地址")
    private String shipperAddress;

    @ApiModelProperty(value = "发货方经度")
    private BigDecimal shipperLongitude;

    @ApiModelProperty(value = "发货方纬度")
    private BigDecimal shipperLatitude;

    @ApiModelProperty(value = "发货方备注")
    private String shipperMemo;

    @ApiModelProperty(value = "收货方类型 数据字典CONSIGNEE_TYPE:1客户 2仓库 3供应商")
    private Integer consigneeType;

    @ApiModelProperty(value = "收货方类型 数据字典SHIPPER_TYPE:1客户 2仓库 3供应商")
    private String consigneeTypeName;

    @ApiModelProperty(value = "收货方单位ID")
    private Long consigneeUnitId;

    @ApiModelProperty(value = "收货方单位名称")
    private String consigneeUnitName;

    @ApiModelProperty(value = "收货方ID")
    private Long consigneeId;

    @ApiModelProperty(value = "收货方名称")
    private String consigneeName;

    @ApiModelProperty(value = "收货方联系人")
    private String consigneeContact;

    @ApiModelProperty(value = "收货方手机号")
    private String consigneePhoneNumber;

    @ApiModelProperty(value = "收货方座机号")
    private String consigneeLandlineNumber;

    @ApiModelProperty(value = "收货方邮箱")
    private String consigneeEmail;

    @ApiModelProperty(value = "收货方关联手机号")
    private String consigneeRelatedPhoneNumber;

    @ApiModelProperty(value = "收货方省名称")
    private String consigneeProvinceName;

    @ApiModelProperty(value = "收货方市名称")
    private String consigneeCityName;

    @ApiModelProperty(value = "收货方区/县名称")
    private String consigneeDistrictName;

    @ApiModelProperty(value = "收货方详细地址")
    private String consigneeAddress;

    @ApiModelProperty(value = "收货方经度")
    private BigDecimal consigneeLongitude;

    @ApiModelProperty(value = "收货方纬度")
    private BigDecimal consigneeLatitude;

    @ApiModelProperty(value = "收货方备注")
    private String consigneeMemo;

    @ApiModelProperty(value = "线路ID")
    private Long lineId;

    @ApiModelProperty(value = "线路名称")
    private String lineName;

    @ApiModelProperty(value = "总件数")
    private BigDecimal totalPcs;

    @ApiModelProperty(value = "总体积")
    private BigDecimal totalVolume;

    @ApiModelProperty(value = "总重量")
    private BigDecimal totalWeight;

    @ApiModelProperty(value = "包裹整件数")
    private BigDecimal packageWholePiece;

    @ApiModelProperty(value = "包裹拼箱数")
    private BigDecimal packageLclPiece;

    @ApiModelProperty(value = "包裹总体积")
    private BigDecimal packageTotalVolume;

    @ApiModelProperty(value = "包裹总重量")
    private BigDecimal packageTotalWeight;

    @ApiModelProperty(value = "运单状态 数据字典SHIPBILL_STATUS:0已作废 10初始化 20已提交 5已回退")
    private Integer status;

    @ApiModelProperty(value = "运单状态 数据字典SHIPBILL_STATUS:0已作废 10初始化 20已提交 5已回退")
    private String statusName;

    @ApiModelProperty(value = "所属部门ID")
    private String departmentId;

    @ApiModelProperty(value = "所属部门名称")
    private String departmentName;

    @ApiModelProperty(value = "货物信息")
    private String itemInfo;

}
