|
|
@@ -2898,7 +2898,7 @@ type Ermcp3PaTradeLink struct {
|
|
|
MIDDLEGOODSQTY float64 `json:"middlegoodsqty" xorm:"MIDDLEGOODSQTY"` // 套保品种数量 = TradeQty * AgreeUnit * ConvertRatio
|
|
|
RELATEDQTY float64 `json:"relatedqty" xorm:"RELATEDQTY"` // 关联数量
|
|
|
RELATEDLOT float64 `json:"relatedlot" xorm:"RELATEDLOT"` // 已关联数量(已关联数量手) | db:关联手数
|
|
|
- AREAUSERID string `json:"userid" xorm:"AREAUSERID" form:"areauserid"` // 所属机构 - 所属母账户的UserID
|
|
|
+ AREAUSERID string `json:"userid" xorm:"AREAUSERID" form:"userid"` // 所属机构 - 所属母账户的UserID
|
|
|
|
|
|
GOODSCODE string `json:"goodscode" xorm:"'GOODSCODE'"` // 合约代码
|
|
|
GOODSNAME string `json:"goodsname" xorm:"'GOODSNAME'"` // 合约名称
|
|
|
@@ -3194,3 +3194,124 @@ func (r *Ermcp3TradeLinkDetail) GetDataEx() (interface{}, error) {
|
|
|
}
|
|
|
return sData, err
|
|
|
}
|
|
|
+
|
|
|
+// Ermcp3OutTradeLink 外部成交单关联
|
|
|
+type Ermcp3OutTradeLink struct {
|
|
|
+ GOODSID int32 `json:"goodsid" xorm:"'GOODSID'"` // 合约id
|
|
|
+ GOODSCODE string `json:"goodscode" xorm:"'GOODSCODE'" form:"goodscode"` // 合约代码
|
|
|
+ GOODSNAME string `json:"goodsname" xorm:"'GOODSNAME'" form:"goodsname"` // 合约名称
|
|
|
+ TRADETIME string `json:"tradetime" xorm:"'TRADETIME'"` // 成交时间
|
|
|
+ HEDGEACCOUNTCODE string `json:"hedgeaccountcode" xorm:"'HEDGEACCOUNTCODE'"` // 外部账号 | 对冲账号
|
|
|
+ BUYORSELL int32 `json:"buyorsell" xorm:"'BUYORSELL'"` // 买卖方向 - 0:买 1:卖
|
|
|
+ TRADEQTY int64 `json:"tradeqty" xorm:"'TRADEQTY'"` // 成交数量
|
|
|
+ TRADEPRICE float64 `json:"tradeprice" xorm:"'TRADEPRICE'"` // 成交价格
|
|
|
+ HASINNERORDER int32 `json:"hasinnerorder" xorm:"'HASINNERORDER'" form:"hasinnerorder"` // 是否有内部单关联 - 0:无 1:有
|
|
|
+ CHANNELBUILDTYPE int32 `json:"channelbuildtype" xorm:"'CHANNELBUILDTYPE'"` // 开平标志- 0:无 1:建仓 2:平仓
|
|
|
+ OUTTRADEID string `json:"outtradeid" xorm:"'OUTTRADEID'" form:"outtradeid"` // 外部订单号 | 外部成交单ID(114+Unix秒时间戳(10位)+2位(MarketServiceID)+xxxx)
|
|
|
+ EXEXCHANGECODE string `json:"exexchangecode" xorm:"'EXEXCHANGECODE'"` // 交易所代码
|
|
|
+ EXEXCHANGENAME string `json:"exexchangename" xorm:"'EXEXCHANGENAME'"` // 交易所名称
|
|
|
+ CURRENCYID int32 `json:"-" xorm:"'CURRENCYID'"` // 币种id
|
|
|
+ CURRENCYNAME string `json:"currencyname" xorm:"'CURRENCYNAME'"` // 币种名称
|
|
|
+
|
|
|
+ USERID int64 `json:"-" form:"userid"` // 用户id, 用于过滤
|
|
|
+}
|
|
|
+
|
|
|
+func (r *Ermcp3OutTradeLink) calc() {
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+func (r *Ermcp3OutTradeLink) buildSql() string {
|
|
|
+ var sqlId utils.SQLVal = `
|
|
|
+select g.goodsid,
|
|
|
+ g.goodscode,
|
|
|
+ g.goodsname,
|
|
|
+ to_char(t.tradetime, 'yyyy-mm-dd hh24:mi:ss') tradetime,
|
|
|
+ c.hedgeaccountcode,
|
|
|
+ t.buyorsell,
|
|
|
+ t.tradeqty,
|
|
|
+ t.tradeprice,
|
|
|
+ t.hasinnerorder,
|
|
|
+ t.channelbuildtype,
|
|
|
+ to_char(t.outtradeid) outtradeid,
|
|
|
+ ex.exexchangecode,
|
|
|
+ ex.exexchangename,
|
|
|
+ ta.currencyid,
|
|
|
+ e.enumdicname currencyname
|
|
|
+ from hedge_outtradedetail t
|
|
|
+ inner join goods g
|
|
|
+ on t.hedgegoodsid = g.goodsid
|
|
|
+ left join goodsgroup gp
|
|
|
+ on g.goodsgroupid = gp.goodsgroupid
|
|
|
+ left join externalexchange ex
|
|
|
+ on gp.exexchangeid = ex.autoid
|
|
|
+ left join hedge_outmainconfig c
|
|
|
+ on t.accountid = c.accountid
|
|
|
+ left join taaccount ta
|
|
|
+ on t.accountid = ta.accountid
|
|
|
+ left join enumdicitem e
|
|
|
+ on ta.currencyid = e.enumitemname
|
|
|
+ and e.enumdiccode = 'currency'
|
|
|
+ where 1 = 1
|
|
|
+ and %v in (ta.userid, ta.relateduserid)
|
|
|
+`
|
|
|
+ sqlId.FormatParam(r.USERID)
|
|
|
+ sqlId.AndEx("t.hasinnerorder", r.HASINNERORDER, r.HASINNERORDER != -1)
|
|
|
+ sqlId.AndLike("t.outtradeid", r.OUTTRADEID)
|
|
|
+ sqlId.AndLike("g.goodscode||g.goodsname", r.GOODSNAME)
|
|
|
+ sqlId.Join(" order by t.tradetime desc")
|
|
|
+ return sqlId.String()
|
|
|
+}
|
|
|
+
|
|
|
+// GetDataEx 获取外部成交单关联
|
|
|
+func (r *Ermcp3OutTradeLink) GetDataEx() (interface{}, error) {
|
|
|
+ sData := make([]Ermcp3OutTradeLink, 0)
|
|
|
+ err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
|
|
|
+ for i := range sData {
|
|
|
+ sData[i].calc()
|
|
|
+ }
|
|
|
+ return sData, err
|
|
|
+}
|
|
|
+
|
|
|
+// Ermcp3SubTaaccount 期货子账户
|
|
|
+type Ermcp3SubTaaccount struct {
|
|
|
+ ACCOUNTID int64 `json:"accountid" xorm:"'ACCOUNTID'"` // 资金账户ID
|
|
|
+ TANAME string `json:"taname" xorm:"'TANAME'"` // 资金账号名称
|
|
|
+ TRADESTATUS int32 `json:"tradestatus" xorm:"'TRADESTATUS'"` // 交易状态 - 1:正常 2:受限 3:冻结(停用) 4:禁止建仓(人工受限) 5:禁止交易(人工冻结) 6:待激活 7:已删除(注销)
|
|
|
+ PARENTACCOUNTID int64 `json:"parentaccountid" xorm:"'PARENTACCOUNTID'" form:"parentaccountid"` // 所属根账号(母账号)
|
|
|
+ PARENTACCOUNTCODE string `json:"parentaccountcode" xorm:"'PARENTACCOUNTCODE'" form:"parentaccountcode"` // 所属根账号代码(母账号代码)
|
|
|
+ USERNAME string `json:"username" xorm:"'USERNAME'"` // 交易用户
|
|
|
+}
|
|
|
+
|
|
|
+func (r *Ermcp3SubTaaccount) calc() {
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+func (r *Ermcp3SubTaaccount) buildSql() string {
|
|
|
+ var sqlId utils.SQLVal = `
|
|
|
+select t.accountid,
|
|
|
+ t.accountname taname,
|
|
|
+ t.tradestatus,
|
|
|
+ t.parentaccountid,
|
|
|
+ c.hedgeaccountcode parentaccountcode,
|
|
|
+ u.accountname username
|
|
|
+ from taaccount t
|
|
|
+ inner join hedge_outmainconfig c
|
|
|
+ on t.parentaccountid = c.accountid
|
|
|
+ left join useraccount u
|
|
|
+ on t.relateduserid = u.userid
|
|
|
+ where 1 = 1 and t.ismain=0
|
|
|
+`
|
|
|
+ sqlId.AndEx("t.parentaccountid", r.PARENTACCOUNTID, r.PARENTACCOUNTID > 0)
|
|
|
+ sqlId.AndEx("c.hedgeaccountcode", r.PARENTACCOUNTCODE, r.PARENTACCOUNTCODE != "")
|
|
|
+ return sqlId.String()
|
|
|
+}
|
|
|
+
|
|
|
+// GetDataEx 获取期货子账户
|
|
|
+func (r *Ermcp3SubTaaccount) GetDataEx() (interface{}, error) {
|
|
|
+ sData := make([]Ermcp3SubTaaccount, 0)
|
|
|
+ err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
|
|
|
+ for i := range sData {
|
|
|
+ sData[i].calc()
|
|
|
+ }
|
|
|
+ return sData, err
|
|
|
+}
|