// Package models 211.2风险管理系统2020_期现套利 package models import ( "fmt" "mtp2_if/db" "time" ) // Erms2astradedetails 期现套利期货成交单关联表 type Erms2astradedetails struct { Asapplyid int64 `json:"asapplyid" xorm:"'ASAPPLYID'" binding:"required"` // 策略申请ID Outtradeid int64 `json:"outtradeid" xorm:"'OUTTRADEID'" binding:"required"` // 外部成交单ID(114+Unix秒时间戳(10位)+2位(MarketServiceID)+xxxx) Biztype int64 `json:"biztype" xorm:"'BIZTYPE'"` // 策略业务类型 - 1:正向套利 2:反向套利 Detailtype int64 `json:"detailtype" xorm:"'DETAILTYPE'"` // 明细类型 - 1:套利对冲 2:期货换月 3:期货仓位调整 Spotcontractid int64 `json:"spotcontractid" xorm:"'SPOTCONTRACTID'"` // 现货合同ID [1:套利对冲 为合同ID,2:期货换月\3:期货仓位调整时为0] Contracttype int64 `json:"contracttype" xorm:"'CONTRACTTYPE'"` // 现货合同类型 - 1:采购合同 -1:销售合同 Hedgegoodsid int64 `json:"hedgegoodsid" xorm:"'HEDGEGOODSID'"` // 对冲合约ID Buyorsell int64 `json:"buyorsell" xorm:"'BUYORSELL'"` // 买卖方向 - 0:买 1:卖 [成交单方向] Buildtype int64 `json:"buildtype" xorm:"'BUILDTYPE'"` // 开平标志- 0:无 1:开仓 2:平仓 [根据成交单方向及策略业务类型确定]正向套利 成交单:卖 开 成交单:买 平反向套利 成交单:买 开 成交单:卖 平 Goodsgroupid int64 `json:"goodsgroupid" xorm:"'GOODSGROUPID'"` // 对冲品种ID[期货合约商品组ID] Tradedate string `json:"tradedate" xorm:"'TRADEDATE'"` // 成交交易日(yyyyMMdd) Tradeprice float64 `json:"tradeprice" xorm:"'TRADEPRICE'"` // 成交价 Tradelot float64 `json:"tradelot" xorm:"'TRADELOT'"` // 成交手数 Agreeunit float64 `json:"agreeunit" xorm:"'AGREEUNIT'"` // 合约单位 Tradeamount float64 `json:"tradeamount" xorm:"'TRADEAMOUNT'"` // 成交金额 = 成交价*成交手数*合约单位 Tradecharge float64 `json:"tradecharge" xorm:"'TRADECHARGE'"` // 交易手续费 Basisflag int64 `json:"basisflag" xorm:"'BASISFLAG'"` // 是否计入基差损益 - 0:不计入 1:计入 [明细类型:1\2为1,3:期货仓位调整是为0] Remark string `json:"remark" xorm:"'REMARK'"` // 备注 Updatetime time.Time `json:"updatetime" xorm:"'UPDATETIME'"` // 更新时间 } // TableName is ERMS2_ASTRADEDETAILS func (Erms2astradedetails) TableName() string { return "ERMS2_ASTRADEDETAILS" } // Erms2Wrrcontract 仓单回购业务表 type Erms2Wrrcontract struct { Wrrcontractid string `json:"wrrcontractid" xorm:"WRRCONTRACTID"` // 回购业务ID(343+Unix秒时间戳(10位)+xxxxxx) Wrrcontractno string `json:"wrrcontractno" xorm:"WRRCONTRACTNO"` // 回购业务编号 Wrrcontractname string `json:"wrrcontractname" xorm:"WRRCONTRACTNAME"` // 回购名称 Areauserid int64 `json:"areauserid" xorm:"AREAUSERID"` // 所属机构 Deliverygoodsid int64 `json:"deliverygoodsid" xorm:"DELIVERYGOODSID"` // 现货品种ID Wrstandardid int64 `json:"wrstandardid" xorm:"WRSTANDARDID"` // 仓单标准ID Wrfactortypeid int64 `json:"wrfactortypeid" xorm:"WRFACTORTYPEID"` // 仓单要素类型ID Accountid int64 `json:"accountid" xorm:"ACCOUNTID"` // 现货账户 Contractqtychar string `json:"contractqtychar" xorm:"CONTRACTQTYCHAR"` // 合同数量(显示) Contractqty float64 `json:"contractqty" xorm:"CONTRACTQTY"` // 合同数量 Contractprice float64 `json:"contractprice" xorm:"CONTRACTPRICE"` // 合同价格 Contractamount float64 `json:"contractamount" xorm:"CONTRACTAMOUNT"` // 合同金额 Interestratemode int32 `json:"interestratemode" xorm:"INTERESTRATEMODE"` // 利率方式 - 1:年利率 2:日利率 Interestrate float64 `json:"interestrate" xorm:"INTERESTRATE"` // 利率 Interestmindays int64 `json:"interestmindays" xorm:"INTERESTMINDAYS"` // 最小计息天数 Contractinterest float64 `json:"contractinterest" xorm:"CONTRACTINTEREST"` // 合同利息 Orimargin float64 `json:"orimargin" xorm:"ORIMARGIN"` // 初始保证金 Marginrate float64 `json:"marginrate" xorm:"MARGINRATE"` // 保证金率 Begindate time.Time `json:"begindate" xorm:"BEGINDATE"` // 开始日期 Enddate time.Time `json:"enddate" xorm:"ENDDATE"` // 结束日期 Warningline float64 `json:"warningline" xorm:"WARNINGLINE"` // 预警线 Closeline float64 `json:"closeline" xorm:"CLOSELINE"` // 强平线 Customeruserid int64 `json:"customeruserid" xorm:"CUSTOMERUSERID"` // 回购客户ID Customeraccountid int64 `json:"customeraccountid" xorm:"CUSTOMERACCOUNTID"` // 客户资金账户ID Curqty float64 `json:"curqty" xorm:"CURQTY"` // 当前数量 Curamount float64 `json:"curamount" xorm:"CURAMOUNT"` // 当前金额 Curinterest float64 `json:"curinterest" xorm:"CURINTEREST"` // 当前利息 Curmargin float64 `json:"curmargin" xorm:"CURMARGIN"` // 当前保证金 Addedmargin float64 `json:"addedmargin" xorm:"ADDEDMARGIN"` // 已追加保证金 Curenddate time.Time `json:"curenddate" xorm:"CURENDDATE"` // 最新结束日期(默认为结束日期) Remark string `json:"remark" xorm:"REMARK"` // 备注 Marketid int64 `json:"marketid" xorm:"MARKETID"` // 市场ID Tradedate string `json:"tradedate" xorm:"TRADEDATE"` // 交易日(yyyyMMdd) Updatetime time.Time `json:"updatetime" xorm:"UPDATETIME"` // 更新时间 Relatedspotcontractid int64 `json:"relatedspotcontractid" xorm:"RELATEDSPOTCONTRACTID"` // 关联销售合同ID Handlestatus int32 `json:"handlestatus" xorm:"HANDLESTATUS"` // 处理状态 Contractstatus int32 `json:"contractstatus" xorm:"CONTRACTSTATUS"` // 合同状态 - 0:未结束 1:已结束 Closetradedate string `json:"closetradedate" xorm:"CLOSETRADEDATE"` // 完结交易日(yyyyMMdd) } // TableName is ERMS2_WRRCONTRACT func (Erms2Wrrcontract) TableName() string { return "ERMS2_WRRCONTRACT" } // Erms2WrrcontractInfo 仓单回购业务详细信息. type Erms2WrrcontractInfo struct { Wrrcontractid string `json:"wrrcontractid" xorm:"WRRCONTRACTID"` // 回购业务ID(343+Unix秒时间戳(10位)+xxxxxx) Deliverygoodsid int64 `json:"deliverygoodsid" xorm:"DELIVERYGOODSID"` // 现货品种ID Contractqty float64 `json:"contractqty" xorm:"CONTRACTQTY"` // 合同数量 Contractstatus int32 `json:"contractstatus" xorm:"CONTRACTSTATUS"` // 合同状态 - 0:未结束 1:已结束 Buyqty float64 `json:"buyqty" xorm:"BUYQTY"` // 采购量. Buyamount float64 `json:"buyamount" xorm:"BUYAMOUNT"` // 采购额. Sellqty float64 `json:"sellqty" xorm:"SELLQTY"` // 销售量. Sellamount float64 `json:"sellamount" xorm:"SELLAMOUNT"` // 销售额. } // Erms2Spottradebiz 现货贸易业务表 type Erms2Spottradebiz struct { Spottradeid string `json:"spottradeid" xorm:"SPOTTRADEID"` // 业务ID(341+Unix秒时间戳(10位)+xxxxxx) Spottradeno string `json:"spottradeno" xorm:"SPOTTRADENO"` // 业务编号 Spottradename string `json:"spottradename" xorm:"SPOTTRADENAME"` // 业务名称 Areauserid int64 `json:"areauserid" xorm:"AREAUSERID"` // 所属机构 Deliverygoodsid int64 `json:"deliverygoodsid" xorm:"DELIVERYGOODSID"` // 现货品种ID Wrstandardid int64 `json:"wrstandardid" xorm:"WRSTANDARDID"` // 仓单标准ID Goodsgroupid int64 `json:"goodsgroupid" xorm:"GOODSGROUPID"` // 期货品种 Spotaccountid int64 `json:"spotaccountid" xorm:"SPOTACCOUNTID"` // 现货资金账户 Futureaccountid int64 `json:"futureaccountid" xorm:"FUTUREACCOUNTID"` // 期货资金账户 Remark string `json:"remark" xorm:"REMARK"` // 备注 Marketid int64 `json:"marketid" xorm:"MARKETID"` // 市场ID Tradedate string `json:"tradedate" xorm:"TRADEDATE"` // 交易日(yyyyMMdd) Buyqty float64 `json:"buyqty" xorm:"BUYQTY"` // 采购总量 Buyamount float64 `json:"buyamount" xorm:"BUYAMOUNT"` // 采购总金额 Buydeliveryqty float64 `json:"buydeliveryqty" xorm:"BUYDELIVERYQTY"` // 采购已交收数量 Buydeliveryamount float64 `json:"buydeliveryamount" xorm:"BUYDELIVERYAMOUNT"` // 采购已交收金额 Sellqty float64 `json:"sellqty" xorm:"SELLQTY"` // 销售总量 Sellamount float64 `json:"sellamount" xorm:"SELLAMOUNT"` // 销售总金额 Selldeliveryqty float64 `json:"selldeliveryqty" xorm:"SELLDELIVERYQTY"` // 销售已交收数量 Selldeliveryamount float64 `json:"selldeliveryamount" xorm:"SELLDELIVERYAMOUNT"` // 销售已交收金额 Futurelot float64 `json:"futurelot" xorm:"FUTURELOT"` // 期货手数 Closestatus int32 `json:"closestatus" xorm:"CLOSESTATUS"` // 完结状态 - 0:未完结 1:已完结 Closetradedate string `json:"closetradedate" xorm:"CLOSETRADEDATE"` // 完结交易日(yyyyMMdd) } // TableName is ERMS2_SPOTTRADEBIZ func (Erms2Spottradebiz) TableName() string { return "ERMS2_SPOTTRADEBIZ" } // Erms2SpottradebizInfo 现货贸易详细信息. type Erms2SpottradebizInfo struct { Spottradeid string `json:"spottradeid" xorm:"SPOTTRADEID"` // 业务ID(341+Unix秒时间戳(10位)+xxxxxx) Deliverygoodsid int64 `json:"deliverygoodsid" xorm:"DELIVERYGOODSID"` // 现货品种ID Buyqty float64 `json:"buyqty" xorm:"BUYQTY"` // 采购总量 Sellqty float64 `json:"sellqty" xorm:"SELLQTY"` // 销售总量 Closestatus int32 `json:"closestatus" xorm:"CLOSESTATUS"` // 完结状态 - 0:未完结 1:已完结 TradeBuyqty float64 `json:"tradebuyqty" xorm:"TRADEBUYQTY"` // 采购量. TradeBuyamount float64 `json:"tradebuyamount" xorm:"TRADEBUYAMOUNT"` // 采购额. TradeSellqty float64 `json:"tradesellqty" xorm:"TRADESELLQTY"` // 销售量. TradeSellamount float64 `json:"tradesellamount" xorm:"TRADESELLAMOUNT"` // 销售额. } // Erms2Arbitragestrategy 期现套利业务表 type Erms2Arbitragestrategy struct { Asapplyid string `json:"asapplyid" xorm:"ASAPPLYID"` // 策略申请ID(342+Unix秒时间戳(10位)+xxxxxx) Asno string `json:"asno" xorm:"ASNO"` // 策略编号 Asname string `json:"asname" xorm:"ASNAME"` // 策略名称 Biztype int32 `json:"biztype" xorm:"BIZTYPE"` // 业务类型 - 1:正向套利 -1:反向套利 Userid int64 `json:"userid" xorm:"USERID"` // 所属机构 Deliverygoodsid int64 `json:"deliverygoodsid" xorm:"DELIVERYGOODSID"` // 现货品种ID Goodsgroupid int64 `json:"goodsgroupid" xorm:"GOODSGROUPID"` // 期货品种ID Spotquota float64 `json:"spotquota" xorm:"SPOTQUOTA"` // 现货额度 Futurequote float64 `json:"futurequote" xorm:"FUTUREQUOTE"` // 期货额度 Applybasis float64 `json:"applybasis" xorm:"APPLYBASIS"` // 申请基差 Strategystatus int32 `json:"strategystatus" xorm:"STRATEGYSTATUS"` // 策略状态 - 0:未结束 1:已结束 Remark string `json:"remark" xorm:"REMARK"` // 备注 Marketid int64 `json:"marketid" xorm:"MARKETID"` // 市场ID Tradedate string `json:"tradedate" xorm:"TRADEDATE"` // 交易日(yyyyMMdd) Closetradedate string `json:"closetradedate" xorm:"CLOSETRADEDATE"` // 完结交易日(yyyyMMdd) Usedquota float64 `json:"usedquota" xorm:"USEDQUOTA"` // 期货已占用资金[结算更新] Futureqty float64 `json:"futureqty" xorm:"FUTUREQTY"` // 期货持仓数量 Futureavgprice float64 `json:"futureavgprice" xorm:"FUTUREAVGPRICE"` // 期货建仓均价 Futurepl float64 `json:"futurepl" xorm:"FUTUREPL"` // 期货总盈亏[结算更新] Pricedspotqty float64 `json:"pricedspotqty" xorm:"PRICEDSPOTQTY"` // 已定价现货数量 Pricedspotqtynotax float64 `json:"pricedspotqtynotax" xorm:"PRICEDSPOTQTYNOTAX"` // 已定价现货不含税数量 Spotavgprice float64 `json:"spotavgprice" xorm:"SPOTAVGPRICE"` // 现货均价 Spotpl float64 `json:"spotpl" xorm:"SPOTPL"` // 现货总盈亏[结算更新] Netexposure float64 `json:"netexposure" xorm:"NETEXPOSURE"` // 单笔业务头寸净敞口 = 期货持仓数量 + 已定价现货不含税数量 Netexposurerate float64 `json:"netexposurerate" xorm:"NETEXPOSURERATE"` // 净敞口比例 - 0:未结束 = (NetExposure/PriceSpotQtyNoTax) ; 已结束为0 Totalpl float64 `json:"totalpl" xorm:"TOTALPL"` // 业务合计损益 = FuturePL + SpotPL [结算更新] Openbasis float64 `json:"openbasis" xorm:"OPENBASIS"` // 建仓基差 Curbasis float64 `json:"curbasis" xorm:"CURBASIS"` // 当前基差[结算更新] Basischangepl float64 `json:"basischangepl" xorm:"BASISCHANGEPL"` // 基差变动损益[结算更新] Netexposurepl float64 `json:"netexposurepl" xorm:"NETEXPOSUREPL"` // 净敞口损益 = TotalPL - BasisChangePL[结算更新] Spotusedquota float64 `json:"spotusedquota" xorm:"SPOTUSEDQUOTA"` // 现货占用资金 Futureopenqty float64 `json:"futureopenqty" xorm:"FUTUREOPENQTY"` // 期货开仓数量 Futureopenamount float64 `json:"futureopenamount" xorm:"FUTUREOPENAMOUNT"` // 期货开仓金额 Futurecloseqty float64 `json:"futurecloseqty" xorm:"FUTURECLOSEQTY"` // 期货平仓数量 Futurecloseamount float64 `json:"futurecloseamount" xorm:"FUTURECLOSEAMOUNT"` // 期货平仓金额 Spotbuyamount float64 `json:"spotbuyamount" xorm:"SPOTBUYAMOUNT"` // 现货采购金额 Spotbuyqty float64 `json:"spotbuyqty" xorm:"SPOTBUYQTY"` // 现货采购数量 Spotsellamount float64 `json:"spotsellamount" xorm:"SPOTSELLAMOUNT"` // 现货销售金额 Spotsellqty float64 `json:"spotsellqty" xorm:"SPOTSELLQTY"` // 现货销售数量 Updatetime time.Time `json:"updatetime" xorm:"UPDATETIME"` // 更新时间 } // TableName is ERMS2_ARBITRAGESTRATEGY func (Erms2Arbitragestrategy) TableName() string { return "ERMS2_ARBITRAGESTRATEGY" } // 期现套利详细信息. type Erms2AribitrageInfo struct { Asapplyid string `json:"asapplyid" xorm:"ASAPPLYID"` // 策略申请ID(342+Unix秒时间戳(10位)+xxxxxx) Deliverygoodsid int64 `json:"deliverygoodsid" xorm:"DELIVERYGOODSID"` // 现货品种ID Pricedspotqty float64 `json:"pricedspotqty" xorm:"PRICEDSPOTQTY"` // 已定价现货数量 Futureqty float64 `json:"futureqty" xorm:"FUTUREQTY"` // 期货持仓数量 Strategystatus int32 `json:"strategystatus" xorm:"STRATEGYSTATUS"` // 策略状态 - 0:未结束 1:已结束 Buyqty float64 `json:"buyqty" xorm:"BUYQTY"` // 采购量. Buyamount float64 `json:"buyamount" xorm:"BUYAMOUNT"` // 采购额. Sellqty float64 `json:"sellqty" xorm:"SELLQTY"` // 销售量. Sellamount float64 `json:"sellamount" xorm:"SELLAMOUNT"` // 销售额. } // Erms2spotcontract 现货合同表 type Erms2spotcontract struct { Spotcontractid int64 `json:"spotcontractid" xorm:"'SPOTCONTRACTID'" binding:"required"` // 现货合同ID(701+Unix秒时间戳(10位)+xxxxxx) Tradedate string `json:"tradedate" xorm:"'TRADEDATE'"` // 交易日(yyyyMMdd) Contractno string `json:"contractno" xorm:"'CONTRACTNO'"` // 现货合同编号 Contracttype int64 `json:"contracttype" xorm:"'CONTRACTTYPE'"` // 现货合同类型 - 1:采购合同 -1:销售合同 Areauserid int64 `json:"areauserid" xorm:"'AREAUSERID'"` // 所属机构 Userid int64 `json:"userid" xorm:"'USERID'"` // 业务员用户ID Accountid int64 `json:"accountid" xorm:"'ACCOUNTID'"` // 资金账户ID Customeruserid int64 `json:"customeruserid" xorm:"'CUSTOMERUSERID'"` // 客户ID Customeraccountid int64 `json:"customeraccountid" xorm:"'CUSTOMERACCOUNTID'"` // 客户资金账户ID Signdate time.Time `json:"signdate" xorm:"'SIGNDATE'"` // 签订日期 Lastdate time.Time `json:"lastdate" xorm:"'LASTDATE'"` // 交货时间 Contractattachment string `json:"contractattachment" xorm:"'CONTRACTATTACHMENT'"` // 合同附件 Producttype int64 `json:"producttype" xorm:"'PRODUCTTYPE'"` // 产品类型 - 1:标准仓单 2:等标 3:非标 Deliverygoodsid int64 `json:"deliverygoodsid" xorm:"'DELIVERYGOODSID'"` // 现货品种ID Deliverygoodsdesc string `json:"deliverygoodsdesc" xorm:"'DELIVERYGOODSDESC'"` // 品种说明 Warehouseid int64 `json:"warehouseid" xorm:"'WAREHOUSEID'"` // 仓库ID Wrfactortypeid int64 `json:"wrfactortypeid" xorm:"'WRFACTORTYPEID'"` // 仓单要素类型ID Contractqtychar string `json:"contractqtychar" xorm:"'CONTRACTQTYCHAR'"` // 合同数量\已订价数量 (用于显示) Spotprice float64 `json:"spotprice" xorm:"'SPOTPRICE'"` // 价格 Contractamount float64 `json:"contractamount" xorm:"'CONTRACTAMOUNT'"` // 合同金额 Marketid int64 `json:"marketid" xorm:"'MARKETID'"` // 市场ID Remark string `json:"remark" xorm:"'REMARK'"` // 备注 Handlestatus int64 `json:"handlestatus" xorm:"'HANDLESTATUS'"` // 处理状态 Contractqty float64 `json:"contractqty" xorm:"'CONTRACTQTY'"` // 合同数量(数值) (用于计算) Positionqty int64 `json:"positionqty" xorm:"'POSITIONQTY'"` // 头寸数量 - 合同数量去小数部分 Paystatus int64 `json:"paystatus" xorm:"'PAYSTATUS'"` // 收付款状态 - 0:未支付 1:已收款 2:已付款 Payremark string `json:"payremark" xorm:"'PAYREMARK'"` // 收付款备注 Paydatetime time.Time `json:"paydatetime" xorm:"'PAYDATETIME'"` // 收付款更新时间 Invoicestatus int64 `json:"invoicestatus" xorm:"'INVOICESTATUS'"` // 开收票状态 - 0:未开票 1:已开票 Invoiceremark string `json:"invoiceremark" xorm:"'INVOICEREMARK'"` // 发票备注 Invoiceatt string `json:"invoiceatt" xorm:"'INVOICEATT'"` // 发票附件 Invoicedatetime time.Time `json:"invoicedatetime" xorm:"'INVOICEDATETIME'"` // 开收票更新时间 Spotstatus int64 `json:"spotstatus" xorm:"'SPOTSTATUS'"` // 收发货状态 - 0:未交收 1:已发货 2:已发货 Spotremark string `json:"spotremark" xorm:"'SPOTREMARK'"` // 收发货备注 Spotdatetime time.Time `json:"spotdatetime" xorm:"'SPOTDATETIME'"` // 收发货更新时间 Relatedqty float64 `json:"relatedqty" xorm:"'RELATEDQTY'"` // 已关联数量 Contractstatus int64 `json:"contractstatus" xorm:"'CONTRACTSTATUS'"` // 合同状态 - 0:未结束 1:已结束 Closeremark string `json:"closeremark" xorm:"'CLOSEREMARK'"` // 结束备注 Closetradedate string `json:"closetradedate" xorm:"'CLOSETRADEDATE'"` // 完结交易日(yyyyMMdd) Relatedstatus int64 `json:"relatedstatus" xorm:"'RELATEDSTATUS'"` // 关联完结状态 - 0:未结束 1:已结束 Wrstandardid int64 `json:"wrstandardid" xorm:"'WRSTANDARDID'"` // 仓单标准ID(SEQ_WRSTANDARD) Invoiceopentime time.Time `json:"invoiceopentime" xorm:"'INVOICEOPENTIME'"` // 开票时间 Closetype int64 `json:"closetype" xorm:"'CLOSETYPE'"` // 终止类型 - 1:违约 2:提前终止 Closedate time.Time `json:"closedate" xorm:"'CLOSEDATE'"` // 终止日期 } // TableName is ERMS2_SPOTCONTRACT func (Erms2spotcontract) TableName() string { return "ERMS2_SPOTCONTRACT" } // Erms2asaccount 期现套利资金账户表 type Erms2asaccount struct { Asapplyid int64 `json:"asapplyid" xorm:"'ASAPPLYID'" binding:"required"` // 策略申请ID(702+Unix秒时间戳(10位)+xxxxxx) Accountid int64 `json:"accountid" xorm:"'ACCOUNTID'" binding:"required"` // 资金账户 Taaccounttype int64 `json:"taaccounttype" xorm:"'TAACCOUNTTYPE'"` // 账户类型 - 1:外部账号 2:内部账号 3:内部做市自营账号 4:内部做市接单账号 Taaccountbiztype int64 `json:"taaccountbiztype" xorm:"'TAACCOUNTBIZTYPE'"` // 账户业务类型 - 1:现货 2:期货 } // TableName is ERMS2_ASACCOUNT func (Erms2asaccount) TableName() string { return "ERMS2_ASACCOUNT" } // Erms2asspotdetail 期现套利现货明细表 - 导历史 type Erms2asspotdetail struct { Asapplyid int64 `json:"asapplyid" xorm:"'ASAPPLYID'" binding:"required"` // 策略申请ID Spotcontractid int64 `json:"spotcontractid" xorm:"'SPOTCONTRACTID'" binding:"required"` // 现货合同ID Contracttype int64 `json:"contracttype" xorm:"'CONTRACTTYPE'"` // 现货合同类型 - 1:采购合同 -1:销售合同 Pricedspotqty float64 `json:"pricedspotqty" xorm:"'PRICEDSPOTQTY'"` // 已定价数量(合同数量 * 合同类型) Pricedspotqtynotax float64 `json:"pricedspotqtynotax" xorm:"'PRICEDSPOTQTYNOTAX'"` // 已定价不含税数量( 已定价数量 /(1+对冲税率)) Vatrate float64 `json:"vatrate" xorm:"'VATRATE'"` // 税率 Spotprice float64 `json:"spotprice" xorm:"'SPOTPRICE'"` // 价格 Spotamount float64 `json:"spotamount" xorm:"'SPOTAMOUNT'"` // 收付款资金(合同金额 * 合同类型) Detailstatus int64 `json:"detailstatus" xorm:"'DETAILSTATUS'"` // 明细状态 - 0:未结束 1:已结束 Futureqty float64 `json:"futureqty" xorm:"'FUTUREQTY'"` // 期货已对冲数量 Futureamount float64 `json:"futureamount" xorm:"'FUTUREAMOUNT'"` // 期货成交金额 Closetradedate string `json:"closetradedate" xorm:"'CLOSETRADEDATE'"` // 完结交易日(yyyyMMdd) Remark string `json:"remark" xorm:"'REMARK'"` // 备注 Updatetime time.Time `json:"updatetime" xorm:"'UPDATETIME'"` // 更新时间 } // TableName is ERMS2_ASSPOTDETAIL func (Erms2asspotdetail) TableName() string { return "ERMS2_ASSPOTDETAIL" } // QueryASAccountInfoByAccountID 根据资金账号ID查询. func QueryASAccountInfoByAccountID(accountids []int64) ([]Erms2asaccount, error) { engine := db.GetEngine() data := make([]Erms2asaccount, 0) err := engine.In("ACCOUNTID", accountids).Find(&data) return data, err } // QueryASApplyIDSByAccountID 根据资金账号ID查询业务ID集合. func QueryASApplyIDSByAccountID(accountids []int64) ([]int64, error) { data, err := QueryASAccountInfoByAccountID(accountids) if err != nil { return nil, err } distinctID := make(map[int64]struct{}) applyids := make([]int64, 0, len(data)) for i := range data { if _, ok := distinctID[data[i].Asapplyid]; ok { continue } applyids = append(applyids, data[i].Asapplyid) distinctID[data[i].Asapplyid] = struct{}{} } return applyids, nil } // buildSQL 构建sql. func (asa Erms2Arbitragestrategy) buildSQL(accountids string, status int32) string { statement := `select to_char(asa.asapplyid) asapplyid, asa.deliverygoodsid, asa.pricedspotqty, asa.futureqty, asa.strategystatus, d.buyqty, d.buyamount, d.sellqty, d.sellamount from erms2_arbitragestrategy asa left join (select bt.relatedbizid, sum(case bt.contracttype when 1 then bt.relatedqty - bt.cancelledqty else 0 end) buyqty, sum(case bt.contracttype when 1 then bt.relatedamount - bt.cancelledamount else 0 end) buyamount, sum(case bt.contracttype when -1 then bt.relatedqty - bt.cancelledqty else 0 end) sellqty, sum(case bt.contracttype when -1 then bt.relatedamount - bt.cancelledamount else 0 end) sellamount from erms3_biztradedetail bt left join erms2_asaccount ea on bt.relatedbizid = ea.asapplyid where ea.accountid in (%v) group by bt.relatedbizid) d on asa.asapplyid = d.relatedbizid where asa.strategystatus = %v` return fmt.Sprintf(statement, accountids, status) } // GetByAccountIDSAndStatus 根据账号和状态获取期现套利详细信息. func (asa Erms2Arbitragestrategy) GetByAccountIDSAndStatus(accountids string, status int32) ([]Erms2AribitrageInfo, error) { engine := db.GetEngine() data := make([]Erms2AribitrageInfo, 0) err := engine.SQL(asa.buildSQL(accountids, status)).Find(&data) return data, err } func (Erms2Wrrcontract) buildSQL(accountids string, status int32) string { statement := `select to_char(wr.wrrcontractid) wrrcontractid, wr.deliverygoodsid, wr.contractqty, wr.contractstatus, sum(case bt.contracttype when 1 then bt.relatedqty - bt.cancelledqty else 0 end) buyqty, sum(case bt.contracttype when 1 then bt.relatedamount - bt.cancelledamount else 0 end) buyamount, sum(case bt.contracttype when -1 then bt.relatedqty - bt.cancelledqty else 0 end) sellqty, sum(case bt.contracttype when -1 then bt.relatedamount - bt.cancelledamount else 0 end) sellamount from erms3_biztradedetail bt left join erms2_wrrcontract wr on wr.wrrcontractid = bt.relatedbizid where wr.accountid in (%v) and wr.contractstatus = %v group by wr.wrrcontractid, wr.deliverygoodsid, wr.contractqty, wr.contractstatus` return fmt.Sprintf(statement, accountids, status) } // GetByAccountIDSAndStatus 根据账号和状态获取仓单回购业务. func (wr Erms2Wrrcontract) GetByAccountIDSAndStatus(accountids string, status int32) ([]Erms2WrrcontractInfo, error) { engine := db.GetEngine() data := make([]Erms2WrrcontractInfo, 0) err := engine.SQL(wr.buildSQL(accountids, status)).Find(&data) return data, err } // buildSQL 构建sql. func (Erms2Spottradebiz) buildSQL(accountids string, status int32) string { statement := `select to_char(sbt.spottradeid) spottradeid, sbt.deliverygoodsid, sbt.buyqty, sbt.sellqty, sbt.closestatus, sum(case bt.contracttype when 1 then bt.relatedqty - bt.cancelledqty else 0 end) tradebuyqty, sum(case bt.contracttype when 1 then bt.relatedamount - bt.cancelledamount else 0 end) tradebuyamount, sum(case bt.contracttype when -1 then bt.relatedqty - bt.cancelledqty else 0 end) tradesellqty, sum(case bt.contracttype when -1 then bt.relatedamount - bt.cancelledamount else 0 end) tradesellamount from erms3_biztradedetail bt left join erms2_spottradebiz sbt on sbt.spottradeid = bt.relatedbizid where sbt.spotaccountid in (%v) and sbt.closestatus = %v group by sbt.spottradeid, sbt.deliverygoodsid, sbt.buyqty, sbt.sellqty, sbt.closestatus` return fmt.Sprintf(statement, accountids, status) } // GetByAccountIDSAndStatus 根据账号和状态获取现货贸易业务. func (stb Erms2Spottradebiz) GetByAccountIDSAndStatus(accountids string, status int32) ([]Erms2SpottradebizInfo, error) { engine := db.GetEngine() data := make([]Erms2SpottradebizInfo, 0) err := engine.SQL(stb.buildSQL(accountids, status)).Find(&data) return data, err }