package com.sckw.mongo.model;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

import java.util.Date;

/**
 * @author zk
 * @desc MongoDB-交易订单信息
 * @date 2023/7/8
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
@Document(collection = "sckw_trade_order")
public class SckwTradeOrder {

    /**
     * 主键
     */
    @Id
    private Long _id;

    /**
     * 订单主键
     */
    @JsonProperty("tOrderId")
    private Long tOrderId;

    /**
     * 订单编号
     */
    @JsonProperty("tOrderNo")
    private String tOrderNo;

    /**
     * 订单成交数量
     */
    private Double amount;

    /**
     * 订单单位（吨、方、箱、件）
     */
    private String unit;

    /**
     * 订单金额
     */
    private Double price;

    /**
     * 订单成交单价
     */
    private Double unitPrice;

    /**
     * 订单交易方式(预付款、货到付款）
     */
    private String trading;

    /**
     * 订单提货方式（采方自提、供应配送）
     */
    private String pickupType;

    /**
     * 订单交付类型（签发交付、签收交付）
     */
    private String deliveryType;

    /**
     * 订单开始日期
     */
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date startTime;

    /**
     * 订单结束日期
     */
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date endTime;

    /**
     * 订单已委托量
     */
    private Double entrustAmount;

    /**
     * 订单实际交付量
     */
    private Double actualAmount;

    /**
     * 是否关联对账单：0未关联，1已关联
     */
    private Integer associateStatement;

    /**
     * 订单创建来源类型（1采购下单/2销售代客下单）
     */
    private String source;

    /**
     * 状态
     */
    private Integer status;

    /**
     * 订单备注
     */
    private String remark;

    /**
     * 企业主键ID
     */
    private Long entId;

    /**
     * 企业名称
     */
    private String firmName;

    /**
     * 商品主键
     */
    private Long goodsId;

    /**
     * 商品编号
     */
    private String goodsCode;

    /**
     * 商品名称
     */
    private String goodsName;

    /**
     * 商品类型
     */
    private String goodsType;


    /**
     * 商品尺寸大小
     */
    private String goodsSpec;

    /**
     * 商品发票税率
     */
    private String goodsTaxRate;

    /**
     * 商品缩略图
     */
    private String goodsThumb;

    /**
     * 商品所属项目名称
     */
    private String projectName;

    /**
     * 合同主键
     */
    private Long contractId;

    /**
     * 合同编号
     */
    private String contractNo;

    /**
     * 合同mc
     */
    private String contractName;

    /**
     * 合同签约方式
     */
    private String contractSigningWay;

    /**
     * 采购企业主键ID
     */
    private Long procureEntId;

    /**
     * 采购企业一级企业主键ID
     */
    private Long procureTopEntId;

    /**
     * 采购企业名称
     */
    private String procureFirmName;

    /**
     * 采购企业联系人
     */
    private String procureContacts;

    /**
     * 采购企业联系人id
     */
    private Long procureContactsId;

    /**
     * 采购企业联系电话
     */
    private String procurePhone;

    /**
     * 供应企业主键ID
     */
    private Long supplyEntId;

    /**
     * 供应企业一级企业id
     */
    private Long supplyTopEntId;

    /**
     * 供应企业名称
     */
    private String supplyFirmName;

    /**
     * 供应企业联系人
     */
    private String supplyContacts;

    /**
     * 供应企业联系人id
     */
    private Long supplyContactsId;

    /**
     * 供应企业联系电话
     */
    private String supplyPhone;

    /**
     * 装货地址名称
     */
    private String loadName;

    /**
     * 装货地址类型
     */
    private String loadType;

    /**
     * 装货联系人姓名
     */
    private String loadContacts;

    /**
     * 装货联系电话
     */
    private String loadPhone;

    /**
     * 装货所在地区
     */
    private String loadCityCode;

    /**
     * 装货所属区域名称
     */
    private String loadCityName;

    /**
     * 装货详细地址
     */
    private String loadDetailAddress;

    /**
     * 装货纬度
     */
    private String loadLat;

    /**
     * 装货纬度
     */
    private String loadLng;

    /**
     * 装货地址名称
     */
    private String unloadName;

    /**
     * 装货地址类型
     */
    private String unloadType;

    /**
     * 装货联系人姓名
     */
    private String unloadContacts;

    /**
     * 装货联系电话
     */
    private String unloadPhone;

    /**
     * 卸货所在地区
     */
    private String unloadCityCode;

    /**
     * 卸货所属区域名称
     */
    private String unloadCityName;

    /**
     * 卸货详细地址
     */
    private String unloadDetailAddress;

    /**
     * 卸货纬度
     */
    private String unloadLat;

    /**
     * 卸货纬度
     */
    private String unloadLng;

    /**
     * 创建人主键id
     */
    private Long createBy;

    /**
     * 创建人姓名
     */
    private String createByName;

    /**
     * 创建时间
     */
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

    /**
     * 更新人主键id
     */
    private Long updateBy;

    /**
     * 更新人姓名
     */
    private String updateByName;

    /**
     * 更新时间
     */
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;

    /**
     * 是否删除（0未删除，1删除）
     */
    private Integer delFlag;

}
