package com.muchinfo.mtp3pojos.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.muchinfo.mtp3pojos.entity.*;
import lombok.Data;
import lombok.EqualsAndHashCode;

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

@EqualsAndHashCode(callSuper=true)
@Data
public class MarketDto extends Market implements Serializable {
    private static final long serialVersionUID = 1L;

    private Integer inReckon;//是否处于结算
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date tradeDate;
    private String exchAreaName;
    private List<Arearolemarket> arearolemarkets;
    //运行状态
    private Integer openStatus;
    //结算标识
    private Integer reckonFlag;
    //是否存在会员
    private boolean ifExistMember;

    /*--仓单贸易市场参数 MarketTradeConfig 表--*/
    private Integer buyMarginAlgorithm;
    private BigDecimal buyMarginValue;
    private Integer sellMarginAlgorithm;
    private BigDecimal sellMarginValue ;
    private Integer buyChargeAlgorithm;
    private BigDecimal buyChargeAlgorithmValue;
    private BigDecimal buyChargeAlgorithmValue2 ;
    private Integer sellChargeAlgorithm ;
    private BigDecimal sellChargeAlgorithmValue;
    private BigDecimal sellChargeAlgorithmValue2;

    private Integer buyChargeAlgorithm2;				// 回购买方手续费收取方式
    private BigDecimal buyChargeAlgorithmValue3;		// 回购买方手续费设置值(平台部分)
    private BigDecimal buyChargeAlgorithmValue4;		// 回购买方手续费设置值(会员部分)
    private Integer sellChargeAlgorithm2;				// 回购卖方手续费收取方式
    private BigDecimal sellChargeAlgorithmValue3;		// 回购卖方手续费设置值(平台部分)
    private BigDecimal sellChargeAlgorithmValue4;		// 回购卖方手续费设置值(会员部分)

    /**
     * 仓单贸易新增配置
     */
    //交货模式 - 1:履约计划 2:分步履约 3:分步提货[文昌]
    private Integer performanceway;
    //履约计划模板ID(有仓单)
    /*private Integer performancetempid;*/
    //履约计划模板ID(无仓单)
    private Integer performancetempid2;
    //买方释放比率
    private BigDecimal buyreleaseratio;
    //卖方释放比率
    private BigDecimal sellreleaseratio;
    //最小执行量
    private Integer minqty;
    //合同期限
    private Integer holddays;
    //执行方式 1:顺序执行 2:交叉执行
    private Integer executemode;
    //执行方 1:买方 2:卖方
    private Integer executeside;
    //履约计划模板名称(有仓单)
    private String templatename;
    //履约计划模板名称(无仓单)
    private String templatename2;
    //卖方保证金设置值(无仓单)
    private BigDecimal sellmarginvalue2;
    // 浮动价基差上限比率(仓单贸易)
    private BigDecimal basisupratio;
    // 浮动价基差下限比率(仓单贸易)
    private BigDecimal basisdownratio;

    /**
     * 竞拍部分
     */
    //买方出价保证金方式[竞拍]1：比率  2：固定
    private Integer buyfirstmarginalgorithm;
    //买方出价保证金设置值
    private BigDecimal buyfirstmarginvalue;
    //流拍手续费收取方式
    private Integer failedchargealgorithm;
    //流拍卖方手续费设置值(平台部分)
    private BigDecimal failedchargevalue;
    //流拍卖方手续费设置值(会员部分)
    private BigDecimal failedchargevalue2;


    /*--仓单贸易市场参数 end--*/

    //现货市场商品配置
    private List<Marketspotgoodsconfig> marketSpotGoodsConfigList;

    private String otcareaname;


    /*--市场币交易参数表 MARKETCOINCONFIG 表--*/

    //交易货币IDs 逗号隔开
    private String tradecurrencyids;
    //支付货币IDs 逗号隔开
    private String paycurrencyids;
    //挂牌最小量
    private Long listminqty;
    //挂牌最大量
    private String listmaxqty;
    //支持的支付方式 逗号隔开
    private String paymodels;
    //确认付款时长
    private Integer payovertime1;
    private Integer payovertime2;
    //确认放行时长(分)
    private Integer confirmovertime1;
    private Integer confirmovertime2;
    /*--市场币交易参数表 end --*/

    /*-- 212市场扩展表（WHZG_MarketExtension） --*/
    private Integer quotedays; 				// 认购期限(天)
    private Integer listingdays; 			// 挂牌期限(天)
    private BigDecimal defaultannualreturn;	// 默认年化收益率
    private Long defaulfcuserid;			// 默认基金公司用户ID
    private String defaulfcusername;		// 默认基金公司用户
    private Long buyeruserid;				// 回购商用户ID
    private String buyerusername;			// 回购商用户
    private Integer isActive;               //是否激活 0 否 1 是
    private Integer nowrquotaflag;          //  是否校验无仓单额度(仓单贸易) - 0:否 1:是
    private Integer listingmode;	        //	挂牌方式 - 1:一口价 2:浮动价 3:贸易圈 4:协议指定
    private String performancetempids;	    //  履约计划模板IDs(有仓单)- 根据交货模式, 多个逗号分隔:1:履约 - 履约计划模板 2:分步履约 - 履约计划模板 3:分步提货 - 履约方式： 立即执行(-1)"
    private String performancetempid2s;	    //  履约计划模板IDs(无仓单) - 根据交货模式, 多个逗号分隔:1:履约 - 履约计划模板 2:分步履约 - 履约计划模板 3:分步提货 - 履约方式： 立即执行
    private String scoretypename;

    private List<String> performancetempidList;

    private GzCjbsfeeconfig gzCJBSFeeConfigVo;

    private List<GzCjbsservicefeeconfig> gzCJBSServiceFeeConfigList;
}
