package com.yh.saas.plugin.yiliangyiyun.entity;

import java.util.Date;
import java.io.Serializable;
import java.util.List;

import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;

import com.baomidou.mybatisplus.enums.IdType;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yh.saas.common.support.entity.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * <p>
 * 销售订单
 * </p>
 *
 * @author Gongdc
 * @since 2021-08-04
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("sale_order")
public class SaleOrder extends BaseModel<SaleOrder> {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId(type = IdType.UUID)
    private String id;
    /**
     * 计划表id
     */
    private String planId;
    /**
     * 公司id
     */
    private String compId;
    /**
     * 用户id
     */
    private String commonId;
    /**
     * 合同编号
     */
    private String contractNo;
    /**
     * 订单类型
     */
    private String orderType;
    /**
     * 销售计划
     */
    private String salePlan;
    /**
     * 客户
     */
    private String customer;
    /**
     * 货名key
     */
    private String goodsNameKey;
    /**
     * 货名
     */
    private String goodsName;
    /**
     * 冻结定金（元）
     */
    private Float freezingDeposit;
    /**
     * 拖欠定金（元）
     */
    private Float defaultDeposit;
    /**
     * 平仓应付（元）
     */
    private Float closingPositionPayable;
    /**
     * 点价（元/吨）
     */
    private Float pointPrice;
    /**
     * 单价（元/吨）
     */
    private Float unitPrice;
    /**
     * 基差（元/吨）
     */
    private Float basis;
    /**
     * 卸车费（元/吨）
     */
    private Float unloadingCharge;
    /**
     * 发票费（元/吨）
     */
    private Float invoiceFee;
    /**
     * 平仓价格（元/吨）
     */
    private Float closeRate;
    /**
     * 平仓基差（元/吨）
     */
    private Float closingBasis;
    /**
     * 成交价格（元/吨）
     */
    private Float transactionPrice;
    /**
     * 交易数量（吨）
     */
    private Float transactionsNumber;
    /**
     * 平仓数量（吨）
     */
    private Float closingQuantity;
    /**
     * 可平仓量（吨）
     */
    private Float openPosition;
    /**
     * 已平仓量（吨）
     */
    private Float closedPosition;
    /**
     * 已成交量（吨）
     */
    private Float cumulativeTurnover;
    /**
     * 交易目标
     */
    private String tradingTarget;
    /**
     * 买方
     */
    private String buyer;
    /**
     * 买方电话
     */
    private String buyerPhone;
    /**
     * 装袋备注
     */
    private String baggingNotes;
    /**
     * 包装费
     */
    private Float packingFee;
    /**
     * 结算价格
     */
    private Float settlementPrice;
    /**
     * 发票类型key
     */
    private String typeKey;
    /**
     * 发票类型
     */
    private String type;
    /**
     * 包装方式
     */
    private String packingType;
    /**
     * 包装方式key(1散装2大袋3小袋)
     */
    private String packingTypeKey;
    /**
     * 交易类型
     */
    private String transactionType;
    /**
     * 平仓日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date closePositionDate;
    /**
     * 状态标识（1待审核3已通过5已成交7已完成）
     */
    private String statusFlag;
    /**
     * 状态
     */
    private String status;
    /**
     * 状态英文
     */
    private String statusEn;
    /**
     * 审核流id
     */
    private String workflowId;
    /**
     * 审核状态
     */
    private String approveStatus;
    /**
     * PC端(传1)
     */
    @TableField(exist = false)
    private String pcFlag;

    @TableField(exist = false)
    private String taskId;
    /**
     * 0 补充定金 1解冻定金 2完成 3更改基差
     */
    @TableField(exist = false)
    private Integer flag;
    /**
     * 本次定金
     */
    @TableField(exist = false)
    private Float money;
    /**
     * 出库未付金额
     */
    @TableField(exist = false)
    private Float deliveryUnpaid;
    /**
     * 平仓未付金额
     */
    @TableField(exist = false)
    private Float closedUnpaid;
    /**
     * 计划包装方式
     */
    @TableField(exist = false)
    private String planPackingType;

    /**
     * 已出库量
     */
    @TableField(exist = false)
    private Float stockOutQuantity;

    /**
     * 已出库量集合
     */
    @TableField(exist = false)
    private List<WarehouseInOutInfo> stockOutQuantityList;
    /**
     * 模糊查询
     */
    @TableField(exist = false)
    private String searchKeyWord;

    /**
     *查询类型
     */
    @TableField(exist = false)
    private String searchType;

    //改价记录
    @TableField(exist = false)
    private List<PriceChangeRecord> priceChangeRecordList;
    //成交记录
    @TableField(exist = false)
    private List<TransactionRecord> transactionRecordList;
    //平仓记录
    @TableField(exist = false)
    private List<TransactionRecord> closePositionList;
    //客户信息
    @TableField(exist = false)
    private CustomerInfo customerInfo;
    @TableField(exist = false)
    private TransactionRecord transactionRecord;
    /**
     * 销售计划类型(1期货2现货)
     */
    @TableField(exist = false)
    private String salePlanType;
    /**
     * 提交时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date submitDate;
    /**
     * 合同ID
     */
    @TableField(exist = false)
    private String contractId;
    /**
     * 合同类型
     */
    @TableField(exist = false)
    private String goodsType;



    @Override
    protected Serializable pkVal() {
        return this.id;
    }

}
