package com.prolog.rdc.tms.model.entity;

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

import org.springframework.format.annotation.DateTimeFormat;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.prolog.framework.core.annotation.Column;
import com.prolog.framework.core.annotation.Id;
import com.prolog.framework.core.annotation.Table;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

@Data
@Table(value = "bms_shipbill_settlement_detail")
public class BmsShipbillSettlementDetailModel implements Serializable {

	private static final long serialVersionUID = 5899510648992867972L;

	@ApiModelProperty(value = "ID")
	@Id
	@Column(value = "id")
	private Long id;

	@ApiModelProperty(value = "运单编号")
	@Column(value = "shipbill_no")
	private String shipbillNo;

	@ApiModelProperty(value = "结算单号")
	@Column(value = "settlement_no")
	private String settlementNo;

	@Column(value = "expense_code")
	@ApiModelProperty(value = "费用编码")
	private String expenseCode;

	@Column(value = "expense_name")
	@ApiModelProperty(value = "费用名称")
	private String expenseName;

	@Column(value = "expense_type")
	@ApiModelProperty(value = "费用类别")
	private Integer expenseType;

	@Column(value = "expense_type_name")
	@ApiModelProperty(value = "费用类别")
	private String expenseTypeName;

	@Column(value = "expense_account_code")
	@ApiModelProperty(value = "费用科目编码")
	private String expenseAccountCode;

	@Column(value = "expense_account_name")
	@ApiModelProperty(value = "费用科目名称")
	private String expenseAccountName;

	@Column(value = "tax_point")
	@ApiModelProperty(value = "税点")
	private String taxPoint;

	@ApiModelProperty(value = "含税金额")
	@Column(value = "tax_amt")
	private BigDecimal taxAmt;

	@ApiModelProperty(value = "无税金额")
	@Column(value = "no_tax_amt")
	private BigDecimal noTaxAmt;

	@ApiModelProperty(value = "税额")
	@Column(value = "tax")
	private BigDecimal tax;

	@Column(value = "memo")
	@ApiModelProperty(value = "费用说明")
	private String memo;

	@ApiModelProperty(value = "费用单号")
	@Column(value = "expense_no")
	private String expenseNo;

	@ApiModelProperty(value = "费用状态 EXPENSE_STATUS 0：新增 1：审核中 2:正常")
	@Column(value = "expense_status")
	private Integer expenseStatus;

	@ApiModelProperty(value = "结算状态 CHECK_STATUS 0：未结算，1：对账提交，2：对账确认，3：结算单生成 4 结算单审核")
	@Column(value = "check_status")
	private Integer checkStatus;

	@ApiModelProperty(value = "费用来源 1:价格表生成，2：手工录入")
	@Column(value = "billing_source")
	private Integer billingSource;

	@ApiModelProperty(value = "计费状态 0：新增，1：计费成功")
	@Column(value = "billing_status")
	private Integer billingStatus;

	@ApiModelProperty(value = "计费时间")
	@Column(value = "billing_date")
	private Date billingDate;

	@ApiModelProperty(value = "计费合同")
	@Column(value = "billing_contract")
	private String billingContract;

	@ApiModelProperty(value = "计费价格表")
	@Column(value = "billing_price")
	private String billingPrice;

	@ApiModelProperty(value = "计费类型 EXPENSE_CLASSIFY")
	@Column(value = "billing_type")
	private String billingType;

	@ApiModelProperty(value = "计费失败原因")
	@Column(value = "billing_fail_reason")
	private String billingFailReason;

	@Column(value = "settlement_status")
	@ApiModelProperty(value = "核算状态 0:未核算，1：核算待提交，2：核算审批中，3:核算完成 ")
	private Integer settlementStatus;

	@ApiModelProperty(value = "导入批次号")
	@Column(value = "import_batch_number")
	private String importBatchNumber;

	@ApiModelProperty(value = "货主ID")
	@Column(value = "cargo_owner_id")
	private Long cargoOwnerId;

	@ApiModelProperty(value = "货主编码")
	@Column(value = "cargo_owner_code")
	private String cargoOwnerCode;

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

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

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

	@ApiModelProperty(value = "仓库ID")
	@Column(value = "branch_id")
	private Long branchId;

	@ApiModelProperty(value = "仓库编码")
	@Column(value = "branch_code")
	private String branchCode;

	@ApiModelProperty(value = "仓库名称")
	@Column(value = "branch_name")
	private String branchName;

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

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

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

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

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

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

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

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

	@ApiModelProperty(value = "所属部门编码")
	@Column(value = "department_code")
	private String departmentCode;

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

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

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

	@ApiModelProperty(value = "发货方单位编码")
	@Column(value = "shipper_unit_code")
	private String shipperUnitCode;

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

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

	@ApiModelProperty(value = "发货方编码")
	@Column(value = "shipper_code")
	private String shipperCode;

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

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

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

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

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

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

	@ApiModelProperty(value = "发货方省编码")
	@Column(value = "shipper_province")
	private String shipperProvince;

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

	@ApiModelProperty(value = "发货方市编码")
	@Column(value = "shipper_city")
	private String shipperCity;

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

	@ApiModelProperty(value = "发货方区/县编码")
	@Column(value = "shipper_district")
	private String shipperDistrict;

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

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

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

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

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

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

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

	@ApiModelProperty(value = "收货方单位编码")
	@Column(value = "consignee_unit_code")
	private String consigneeUnitCode;

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

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

	@ApiModelProperty(value = "收货方编码")
	@Column(value = "consignee_code")
	private String consigneeCode;

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

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

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

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

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

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

	@ApiModelProperty(value = "收货方省编码")
	@Column(value = "consignee_province")
	private String consigneeProvince;

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

	@ApiModelProperty(value = "收货方市编码")
	@Column(value = "consignee_city")
	private String consigneeCity;

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

	@ApiModelProperty(value = "收货方区/县编码")
	@Column(value = "consignee_district")
	private String consigneeDistrict;

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

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

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

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

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

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

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

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

	@ApiModelProperty(value = "完成日期")
	@Column(value = "complete_date")
	private Date completeDate;

	@ApiModelProperty(value = "始发地")
	@Column(value = "shipper_province_city_district")
	private String shipperProvinceCityDistrict;

	@ApiModelProperty(value = "目的地")
	@Column(value = "consignee_province_city_district")
	private String consigneeProvinceCityDistrict;

	@ApiModelProperty(value = "承运方(调度)类型 数据字典LINE_CARRIER_TYPE:1.承运商  2.司机")
	@Column(value = "carrier_type")
	private Integer carrierType;

	@ApiModelProperty(value = "承运商ID")
	@Column(value = "carrier_id")
	private Long carrierId;

	@ApiModelProperty(value = "承运商编码")
	@Column(value = "carrier_code")
	private String carrierCode;

	@ApiModelProperty(value = "承运商名称")
	@Column(value = "carrier_name")
	private String carrierName;

	@ApiModelProperty(value = "司机ID")
	@Column(value = "driver_id")
	private Long driverId;

	@ApiModelProperty(value = "司机编号")
	@Column(value = "driver_code")
	private String driverCode;

	@ApiModelProperty(value = "司机名称")
	@Column(value = "driver_name")
	private String driverName;

	@ApiModelProperty(value = "司机手机号")
	@Column(value = "driver_phone_number")
	private String driverPhoneNumber;

	@ApiModelProperty(value = "车辆ID")
	@Column(value = "vehicle_type_id")
	private Long vehicleTypeId;

	@ApiModelProperty(value = "车辆编号")
	@Column(value = "vehicle_type_code")
	private String vehicleTypeCode;

	@ApiModelProperty(value = "车辆名称")
	@Column(value = "vehicle_name")
	private String vehicleName;

	@ApiModelProperty(value = "车辆ID")
	@Column(value = "vehicle_id")
	private Long vehicleId;

	@ApiModelProperty(value = "车辆编号")
	@Column(value = "vehicle_code")
	private String vehicleCode;

	@ApiModelProperty(value = "车辆名称")
	@Column(value = "vehicle_type_name")
	private String vehicleTypeName;

	@ApiModelProperty(value = "车型")
	@Column(value = "vehicle_type")
	private String vehicleType;

	@ApiModelProperty(value = "配载重量装载率")
	@Column(value = "weight_loading_rate")
	private String weightLoadingRate;

	@ApiModelProperty(value = "隶属机构ID")
	@Column(value = "affiliation_id")
	private Long affiliationId;

	@ApiModelProperty(value = "隶属机构编码")
	@Column(value = "affiliation_code")
	private String affiliationCode;

	@ApiModelProperty(value = "隶属机构名称")
	@Column(value = "affiliation_name")
	private String affiliationName;

	@ApiModelProperty(value = "所属组织ID")
	@Column(value = "organization_id")
	private Long organizationId;

	@ApiModelProperty(value = "所属组织编码")
	@Column(value = "organization_code")
	private String organizationCode;

	@ApiModelProperty(value = "所属组织名称")
	@Column(value = "organization_name")
	private String organizationName;

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

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

	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	@ApiModelProperty(value = "创建时间")
	@Column(value = "createtime")
	private Date createtime;

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

	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	@ApiModelProperty(value = "修改时间")
	@Column(value = "updatetime")
	private Date updatetime;

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

	@ApiModelProperty(value = "扫描状态 数据字典SCAN_STATUS:10初始 20已装车扫描")
	@Column(value = "scan_status")
	private Integer scanStatus;

	@ApiModelProperty(value = "配送状态 数据字典DELIVERY_STATUS:10配送失败 20配送滞留 30配送成功")
	@Column(value = "delivery_status")
	private Integer deliveryStatus;

	@ApiModelProperty(value = "回单图片 数据字典WHETHER:0否，1是")
	@Column(value = "consignee_return_order_picture")
	private Integer consigneeReturnOrderPicture;

	@ApiModelProperty(value = "支出总价 类型为支出的含税金额")
	@Column(value = "pay_amount")
	private BigDecimal payAmount;

	@ApiModelProperty(value = "合同支出总价 类型为支出的来源是价格表生成 含税金额")
	@Column(value = "contract_pay_amount")
	private BigDecimal contractPayAmount;

	@ApiModelProperty(value = "计费时间")
	@Column(value = "cost_date")
	private Date costDate;

	@ApiModelProperty(value = "计费合同")
	@Column(value = "cost_contract")
	private String costContract;

	@ApiModelProperty(value = "计费价格表")
	@Column(value = "cost_price_table")
	private String costPriceTable;

	@ApiModelProperty(value = "计费类别")
	@Column(value = "cost_type")
	private Integer costType;

	@ApiModelProperty(value = "计费失败原因")
	@Column(value = "cost_fail_reason")
	private String costFailReason;

	@ApiModelProperty(value = "结算公司")
	@Column(value = "settlement_company")
	private String settlementCompany;

	@ApiModelProperty(value = "结算公司id")
	@Column(value = "settlement_company_id")
	private Long settlementCompanyId;

	@ApiModelProperty(value = "结算公司编码")
	@Column(value = "settlement_company_code")
	private String settlementCompanyCode;

	@ApiModelProperty(value = "结算部门")
	@Column(value = "settlement_department")
	private String settlementDepartment;

	@ApiModelProperty(value = "结算部门ID")
	@Column(value = "settlement_department_id")
	private String settlementDepartmentId;

	@ApiModelProperty(value = "结算部门编码")
	@Column(value = "settlement_department_code")
	private String settlementDepartmentCode;

	@ApiModelProperty(value = "同步状态")
	@Column(value = "synchronous_status")
	private Integer synchronousStatus;

	@ApiModelProperty(value = "同步时间")
	@Column(value = "synchronous_date")
	private Date synchronousDate;

	@ApiModelProperty(value = "同步失败原因")
	@Column(value = "synchronous_fail_reason")
	private String synchronousFailReason;

	@ApiModelProperty(value = "核算时间")
	@Column(value = "settlement_date")
	private Date settlementDate;

	@ApiModelProperty(value = "调度单号")
	@Column(value = "loading_bill_no")
	private String loadingBillNo;

	@ApiModelProperty(value = "送货员姓名")
	@Column(value = "delivery_name")
	private String deliveryName;

	@ApiModelProperty(value = "送货员电话")
	@Column(value = "delivery_tel")
	private String deliveryTel;

	@ApiModelProperty(value = "调度时间")
	@Column(value = "loading_date")
	private Date loadingDate;

	@ApiModelProperty(value = "调度审核时间")
	@Column(value = "loading_audit_date")
	private Date loadingAuditDate;

	@ApiModelProperty(value = "完成时间")
	@Column(value = "completion_date")
	private Date completionDate;

	@ApiModelProperty(value = "总里程")
	@Column(value = "total_mileage")
	private BigDecimal totalMileage;

	@ApiModelProperty(value = "拼箱数")
	@Column(value = "package_lcl_piece")
	private BigDecimal packageLclPiece;

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

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

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

	// 新增字段
	@ApiModelProperty(value = "运输时效")
	@Column(value = "transport_aging")
	private BigDecimal transportAging;

	@ApiModelProperty(value = "下单时间")
	@Column(value = "order_date")
	private Date orderDate;

	@ApiModelProperty(value = "提交时间")
	@Column(value = "submit_date")
	private Date submitDate;

	@ApiModelProperty(value = "审核时间")
	@Column(value = "audit_date")
	private Date auditDate;

	@ApiModelProperty(value = "启运日期")
	@Column(value = "start_date")
	private Date startDate;

	@ApiModelProperty(value = "送达日期")
	@Column(value = "delivery_date")
	private Date deliveryDate;

	@ApiModelProperty(value = "回单日期")
	@Column(value = "receipt_date")
	private Date receiptDate;

	@ApiModelProperty(value = "正本回单日期")
	@Column(value = "original_back_date")
	private Date originalBackDate;

}
