|
|
@@ -475,3 +475,80 @@ func (r *Ermcp2hedgeditemspotDetail) GetDataEx() (interface{}, error) {
|
|
|
}
|
|
|
return sData, nil
|
|
|
}
|
|
|
+
|
|
|
+// Ermcppatradelinkdetail 期货成交单关联明细表
|
|
|
+type Ermcppatradelinkdetail struct {
|
|
|
+ LINKDETAILID string `json:"linkdetailid" xorm:"LINKDETAILID"` // 期货明细ID(614+Unix秒时间戳(10位)+xxxxxx)
|
|
|
+ TRADEID int64 `json:"tradeid" xorm:"TRADEID"` // 内部成交单ID
|
|
|
+ BUYORSELL int32 `json:"buyorsell" xorm:"BUYORSELL"` // 方向 - 0:买 1:卖
|
|
|
+ HEDGEFLAG int32 `json:"hedgeflag" xorm:"HEDGEFLAG"` // 投机套保标志 - 0:无 1:投机 2:套保 3:套利 4:套期保值(平安\合同) 5:单边(平安) 6:移仓(平安) 7:错单处理(平安) 8:跨期套利(平安) 9:套期保值(计划) 10:套利(合同) 11:换月(合同) 12:交割(金瑞) 13:被套期项目
|
|
|
+ SPOTCONTRACTID int64 `json:"hedgeditemid" xorm:"SPOTCONTRACTID" form:"hedgeditemid" binding:"required"` // 现货ID[套期项目ID] [13 - 被套期项目ID] [4,10,11 - 现货合同ID] [9 - 套保计划ID]
|
|
|
+ RELATEDLOT float64 `json:"relatedlot" xorm:"RELATEDLOT"` // [数量]关联手数
|
|
|
+ GOODSID int32 `json:"goodsid" xorm:"GOODSID"` // 商品ID
|
|
|
+ GOODSGROUPID int32 `json:"goodsgroupid" xorm:"GOODSGROUPID"` // 对冲品种ID[期货合约商品组ID]
|
|
|
+ MIDDLEGOODSID int64 `json:"middlegoodsid" xorm:"MIDDLEGOODSID"` // 套保品种ID
|
|
|
+ RELATEDQTY float64 `json:"relatedqty" xorm:"RELATEDQTY"` // 关联数量 = RelatedLot * AgreeUnit * ConvertRatio
|
|
|
+ TRADEDATE string `json:"tradedate" xorm:"TRADEDATE"` // 关联交易日(yyyyMMdd)
|
|
|
+ RELATEDMODE int32 `json:"relatedmode" xorm:"RELATEDMODE"` // 关联方式 - 1:自动关联 2:手动关联 3:解绑关联
|
|
|
+ TRADETRADEDATE string `json:"tradetradedate" xorm:"TRADETRADEDATE"` // 成交交易日(yyyyMMdd)
|
|
|
+ TRADEPRICE float64 `json:"tradeprice" xorm:"TRADEPRICE"` // [价格]成交价格
|
|
|
+ TRADELOT int64 `json:"tradelot" xorm:"TRADELOT"` // 成交手数
|
|
|
+ SALEUSERID int64 `json:"saleuserid" xorm:"SALEUSERID"` // 业务员ID
|
|
|
+ BIZSUBJECTID int64 `json:"bizsubjectid" xorm:"BIZSUBJECTID"` // 归属业务部门ID - SubjectID
|
|
|
+ AGREEUNIT float64 `json:"agreeunit" xorm:"AGREEUNIT"` // 合约乘数
|
|
|
+ CONVERTRATIO float64 `json:"convertratio" xorm:"CONVERTRATIO"` // 品种系数
|
|
|
+ AREAUSERID int64 `json:"areauserid" xorm:"AREAUSERID"` // 所属机构
|
|
|
+ CREATORSRC int32 `json:"creatorsrc" xorm:"CREATORSRC"` // 创建人来源 - 1:管理端 2:终端 3:交易
|
|
|
+ CREATORID int64 `json:"creatorid" xorm:"CREATORID"` // 创建人ID
|
|
|
+ CREATETIME time.Time `json:"createtime" xorm:"CREATETIME"` // 创建时间
|
|
|
+ LINKSTATUS int32 `json:"linkstatus" xorm:"LINKSTATUS"` // 关联状态 - 1:成功 2:失败 3:解绑
|
|
|
+ RETCODE int32 `json:"retcode" xorm:"RETCODE"` // 返回码
|
|
|
+
|
|
|
+ TRADETIME time.Time `json:"tradetime" xorm:"TRADETIME"` // 日期时间
|
|
|
+ ORDERTYPE int32 `json:"ordertype" xorm:"ORDERTYPE"` // 单据类型[套期工具] - 1:期货单 2:看涨期权单 3:看跌期权单
|
|
|
+ OPTIONCODE string `json:"optioncode" xorm:"OPTIONCODE"` // [期货合约]期权代码 [期权]
|
|
|
+ AMOUNT float64 `json:"amount" xorm:"AMOUNT"` // 金额 = RelatedLot * TradePrice * AgreeUnit
|
|
|
+ NAME string `json:"name" xorm:"NAME"` // 账户名/子账户
|
|
|
+}
|
|
|
+
|
|
|
+func (r *Ermcppatradelinkdetail) calc() {
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+func (r *Ermcppatradelinkdetail) buildSql() string {
|
|
|
+ var sqlId utils.SQLVal = `
|
|
|
+ SELECT
|
|
|
+ p.TRADETIME,
|
|
|
+ p.ORDERTYPE,
|
|
|
+ p.OPTIONCODE,
|
|
|
+ t.BUYORSELL,
|
|
|
+ t.TRADEPRICE,
|
|
|
+ t.RELATEDLOT,
|
|
|
+ (t.RelatedLot * t.TradePrice * t.AgreeUnit) AMOUNT,
|
|
|
+ t.TRADEID,
|
|
|
+ (u.ACCOUNTNAME || '/' || to_char(t.ACCOUNTID)) NAME
|
|
|
+ FROM ERMCP_PA_TradeLinkDetail t
|
|
|
+ LEFT JOIN ERMCP_PA_TradeLink p ON p.TradeID = t.TradeID AND p.BuyorSell = t.BuyorSell
|
|
|
+ LEFT JOIN TAACCOUNT ta ON ta.ACCOUNTID = t.ACCOUNTID
|
|
|
+ LEFT JOIN USERACCOUNT u on u.userid = ta.relateduserid
|
|
|
+ WHERE t.HedgeFlag = 13 AND t.SpotContractID = %v
|
|
|
+ ORDER BY p.TradeTime
|
|
|
+ `
|
|
|
+ sqlId.FormatParam(r.SPOTCONTRACTID)
|
|
|
+
|
|
|
+ return sqlId.String()
|
|
|
+}
|
|
|
+
|
|
|
+// GetDataEx 从数据库中查询数据
|
|
|
+func (r *Ermcppatradelinkdetail) GetDataEx() (interface{}, error) {
|
|
|
+ e := db.GetEngine()
|
|
|
+ s := e.SQL(r.buildSql())
|
|
|
+ sData := make([]Ermcppatradelinkdetail, 0)
|
|
|
+ if err := s.Find(&sData); err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ for i := range sData {
|
|
|
+ sData[i].calc()
|
|
|
+ }
|
|
|
+ return sData, nil
|
|
|
+}
|