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-05-17
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("contract_management_info")
public class ContractManagementInfo extends BaseModel<ContractManagementInfo> {

    private static final long serialVersionUID = 1L;

    /**
     * ID
     */
    @TableId(type = IdType.UUID)
    private String id;
    /**
     * 公司
     */
    private String compId;
    /**
     * 合同号/补充协议编号
     */
    private String contractNo;
    /**
     * 合同类型(1销售2采购3收购)
     */
    private String contractType;
    /**
     * 货物类型(1现货2期货)
     */
    private String goodsType;
    /**
     * 交货方式(1我方自提2对方送货)
     */
    private String deliverType;
    /**
     * 类型(合同，补充协议)
     */
    private String agreementType;
    /**
     * 价格类型(定价销售，随行就市)
     */
    private String priceType;
    /**
     * 关联合同
     */
    private String agreementNo;
    /**
     * 运输方式
     */
    private String shippingType;
    /**
     * 交易主体
     */
    private String transactionSubject;
    /**
     * 中转公司
     */
    private String transitCompany;
    /**
     * 结算单价
     */
    private Double settlementPrice;
    /**
     * 结算方式
     */
    private String settlementMethod;
    /**
     * 结算重量方式(1出库重量结算2入库重量结算)
     */
    private String settlementWeightMethod;
    /**
     * 收购业务入库
     */
    private String acquisitionIn;
    /**
     * 买方
     */
    private String buyer;
    /**
     * 卖方
     */
    private String seller;
    /**
     * 买方电话
     */
    private String buyerPhone;
    /**
     * 卖方电话
     */
    private String sellerPhone;
    /**
     * 货源地省
     */
    private String sourceProvince;
    /**
     * 货源地市
     */
    private String sourceCity;
    /**
     * 货源地区
     */
    private String sourceArea;
    /**
     * 货源地
     */
    private String sourceGoods;
    /**
     * 货源地定位
     */
    private String sourceLocation;
    /**
     * 交货地省
     */
    private String deliveryProvince;
    /**
     * 交货地市
     */
    private String deliveryCity;
    /**
     * 交货地区
     */
    private String deliveryArea;
    /**
     * 交货地
     */
    private String placeDelivery;
    /**
     * 交货地定位
     */
    private String deliveryLocation;
    /**
     * 包装方式key
     */
    private String packingMethodKey;
    /**
     * 包装方式
     */
    private String packingMethod;
    /**
     * 重量（吨）
     */
    private Float weight;
    /**
     * 点价（元/吨）
     */
    private Float pointPrice;

    /**
     * 合约号
     */
    private String contractNumber;
    /**
     * 点价日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date pointPriceDate;
    /**
     * 交易所
     */
    private String transactionsPlace;
    /**
     * 基差
     */
    private Float basisPrice;
    /**
     * 入库费
     */
    private Float warehousingFee;
    /**
     * 计费标准
     */
    private String measurementStandard;
    /**
     * 收货库
     */
    private String receiveWarehouse;
    /**
     * 验收方式key
     */
    private String acceptanceMethodKey;
    /**
     * 验收方式
     */
    private String acceptanceMethod;
    /**
     * 定金
     */
    private String deposit;
    /**
     * 定金路径
     */
    private String depositUrl;
    /**
     * 统计备注
     */
    private String remark;
    /**
     * 溢短装
     */
    private Float overShort;
    /**
     * 交货日期（起）
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date deliveryDateStart;
    /**
     * 交货日期（止）
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date deliveryDateEnd;
    /**
     * 收款截止日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date collectionDeadline;
    /**
     * 合同单价（元/每吨）
     */
    private Double unitContractPrice;
    /**
     * 合同总价
     */
    private Double totalContractPrice;
    /**
     * 代收费
     */
    private Double agencyCharge;
    /**
     * 代储费
     */
    private Double storageFee;
    /**
     * 代储费起算重量
     */
    private Float storageFeeWeight;
    /**
     * 代储费起算日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date storageFeeStartdate;
    /**
     * 代储费预计终止日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date storageFeeEnddate;
    /**
     * 签订日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date signingDate;
    /**
     * 状态标识
     */
    private String statusFlag;
    /**
     * 状态
     */
    private String status;
    /**
     * 状态英文
     */
    private String statusEn;
    /**
     * 审核状态
     */
    private String approveStatus;
    /**
     * 审核状态英文
     */
    private String approveStatusEn;
    /**
     * 工作流ID
     */
    private String workflowId;
    /**
     * 附件地址
     */
    private String addressUrl;
    /**
     * 备注
     */
    private String remarks;
    /**
     * 最终实际交易量
     */
    private Float finalTradingVolume;

    /**
     * 货名
     */
    @TableField(exist = false)
    private String goodsName;
    /**
     * 货名key
     */
    @TableField(exist = false)
    private String goodsNameKey;


    @TableField(exist = false)
    private String taskId;

    /**
     * 品级
     */
    @TableField(exist = false)
    private String grade;
    /**
     * 已完成量
     */
    @TableField(exist = false)
    private Double completedQuantity;
    /**
     * 合同价格/移库任务价格
     */
    @TableField(exist = false)
    private Float contractPrice;


    /**
     * 已完成发运量（吨）
     */
    @TableField(exist = false)
    private Float imperfectGrain;
    /**
     * 未收款
     */
    @TableField(exist = false)
    private Float mildewGrain;
    /**
     * 已开发票
     */
    @TableField(exist = false)
    private Double goodsNames;
    /**
     * 负责人key
     */
    private String personChargeKey;
    /**
     * 负责人
     */
    private String personCharge;
    /**
     * 负责人电话
     */
    private String personPhone;
    /**
     * 反馈负责人
     */
    private String feedbackLeader;
    /**
     * 反馈负责人电话
     */
    private String feedbackLeaderPhone;
    /**
     * 客户送粮上限
     */
    private Float grainDelivery;
    /**
     * 模糊查询
     */
    @TableField(exist = false)
    private String searchKeyWord;
    /**
     * 开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @TableField(exist = false)
    private Date startDate;
    /**
     * 结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @TableField(exist = false)
    private Date endDate;
    /**
     * 查询类型
     */
    @TableField(exist = false)
    private String searchType;
    /**
     * 确认单数量
     */
    @TableField(exist = false)
    private Integer confirmCount;

    @TableField(exist = false)
    private ContractGoodsInfo contractGoodsInfo;

    @TableField(exist = false)
    private ContractProcessInfo contractProcessInfo;

    @TableField(exist = false)
    private List<ContractManagementInfo> contractManagementInfoList;
    /**
     * 车牌号列表
     */
    @TableField(exist = false)
    private List<TranCarInfo> tranCarInfoList;
    /**
     * 船名航次列表
     */
    @TableField(exist = false)
    private List<TranCarInfo> shipInfoList;
    /**
     * 车队列表
     */
    @TableField(exist = false)
    private List<TranCarInfo> tranCarInfoList1;
    @TableField(exist = false)
    private List<TranTaskInfo> tranTaskInfoList;
    /**
     * 报表状态
     */
    @TableField(exist = false)
    private String reportStatus;
    /**
     * 收款列表状态
     */
    @TableField(exist = false)
    private String listStatus;
    /**
     * 修改标识(0备注1定金)
     */
    @TableField(exist = false)
    private String flag;
    /**
     * 出入库类型
     */
    @TableField(exist = false)
    private String inOutType;
    /**
     * 发货库
     */
    @TableField(exist = false)
    private String sendWarehouse;
    /**
     * 已付运费
     */
    @TableField(exist = false)
    private String amountEdPayable;
    /**
     * 合同收入（元）
     */
    @TableField(exist = false)
    private Double contractRevenue;
    /**
     * 合同支出
     */
    @TableField(exist = false)
    private Double contractExpenditure;
    /**
     * 费用支出
     */
    @TableField(exist = false)
    private Double expenses;
    /**
     * 已开发票
     */
    @TableField(exist = false)
    private Double invoiced;
    /**
     * 代收合同已完成
     */
    @TableField(exist = false)
    private Double completed;
    /**
     * 代收合同应付金额
     */
    @TableField(exist = false)
    private Double amountIngPayable;
    /**
     * 代收合同已收金额
     */
    @TableField(exist = false)
    private Double amountEdCollectionable;
    /**
     * 代收合同应收金额
     */
    @TableField(exist = false)
    private Double amountNotCollectable;
    /**
     * 代收合同已付金额
     */
    @TableField(exist = false)
    private Double amountEdPayableNew;
    /**
     * 剩余(吨)
     */
    @TableField(exist = false)
    private Double surplus;
    /**
     * 利润(万元)
     */
    @TableField(exist = false)
    private Double profit;
    /**
     * 应收粮款
     */
    @TableField(exist = false)
    private Double grainMoney;
    /**
     * 已收粮款
     */
    @TableField(exist = false)
    private Double grainMoneyEd;
    /**
     * 列表代储费
     */
    @TableField(exist = false)
    private Double storageFeeNew;
    /**
     * 代储合同已收
     */
    @TableField(exist = false)
    private Double depositReceived;
    @TableField(exist = false)
    private List<CollectionWarehousingRecord> collectionWarehousingRecordList;
    /**
     * 发运结束标识
     */
    @TableField(exist = false)
    private String endFlag;

    /**
     * 利润核算查询类型
     */
    @TableField(exist = false)
    private String searchTypeCon;
    /**
     * 合同查询类型
     */
    @TableField(exist = false)
    private String searchContractType;
    /**
     * 图表类型
     */
    @TableField(exist = false)
    private String type;
    /**
     * 图表合同利润
     */
    @TableField(exist = false)
    private Double contractProfit;
    @TableField(exist = false)
    private List<ContractManagementInfo> chartList;
    @TableField(exist = false)
    private List<ContractManagementInfo> formList;

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


    public static class QueryFiles {

        public static final String COMP_ID = "comp_id";

        public static final String CONTRACT_NO = "contract_no";

        public static final String DELETE_FLAG = "delete_flag";

    }

}
