|
|
@@ -47,45 +47,47 @@ type QueryTradePositionReq struct {
|
|
|
|
|
|
// QueryTradePositionRsp 持仓汇总查询返回模型(合约市场)
|
|
|
type QueryTradePositionRsp struct {
|
|
|
- AccountID int64 `json:"accountid" xorm:"'ACCOUNTID'"` // 资金账户
|
|
|
- BuyOrSell int64 `json:"buyorsell" xorm:"'BUYORSELL'" ` // 方向 - 0:买 1:卖
|
|
|
- Goodsid int32 `json:"goodsid" xorm:"'GOODSID'" binding:"required"` // 商品Id
|
|
|
- GoodsCode string `json:"goodscode" xorm:"GOODSCODE"` // 商品代码
|
|
|
- GoodsName string `json:"goodsname" xorm:"GOODSNAME"` // 商品名称
|
|
|
- AgreeUnit float64 `json:"agreeunit" xorm:"'AGREEUNIT'"` // 合约单位
|
|
|
- CurrencyID int64 `json:"currencyid" xorm:"'CURRENCYID'"` // 报价货币ID - goods
|
|
|
- TaCurrencyid int64 `json:"tacurrencyid" xorm:"'TACURRENCYID'"` // 报价货币ID - taaccount
|
|
|
- GoodUnitID int64 `json:"goodunitid" xorm:"'GOODUNITID'"` // 报价单位ID
|
|
|
- Goodunit string `json:"goodunit" xorm:"'GOODUNIT'"` // 报价单位
|
|
|
- DecimalPlace int64 `json:"decimalplace" xorm:"'DECIMALPLACE'"` // 报价小数位
|
|
|
- MarketID int64 `json:"marketid" xorm:"'MARKETID'"` // 所属市场ID
|
|
|
- TradeMode int32 `json:"trademode" xorm:"'TRADEMODE'"` // 交易模式
|
|
|
- PositionQTY float64 `json:"positionqty" xorm:"'POSITIONQTY'"` // 期初持仓数量
|
|
|
- HolderAmount float64 `json:"holderamount" xorm:"'HOLDERAMOUNT'"` // 期初持仓总金额[商品币种]
|
|
|
- CurPositionQTY float64 `json:"curpositionqty" xorm:"'CURPOSITIONQTY'"` // 当前持仓总数量
|
|
|
- CurHolderAmount float64 `json:"curholderamount" xorm:"'CURHOLDERAMOUNT'"` // 当前持仓总金额[商品币种]
|
|
|
- FrozenQTY float64 `json:"frozenqty" xorm:"'FROZENQTY'"` // 持仓冻结数量
|
|
|
- OtherFrozenQTY float64 `json:"otherfrozenqty" xorm:"'OTHERFROZENQTY'"` // 持仓其他冻结数量(交割冻结)
|
|
|
- OpenReqQTY float64 `json:"openreqqty" xorm:"'OPENREQQTY'"` // 开仓申请数量(用于比较最大持仓数量)
|
|
|
- OpenTotalQTY float64 `json:"opentotalqty" xorm:"'OPENTOTALQTY'"` // 开仓总数量
|
|
|
- CloseTotalQTY float64 `json:"closetotalqty" xorm:"'CLOSETOTALQTY'"` // 平仓总数量
|
|
|
- TNQTY float64 `json:"tnqty" xorm:"'TNQTY'"` // T+N冻结总量
|
|
|
- TNUsedQTY float64 `json:"tnusedqty" xorm:"'TNUSEDQTY'"` // T+N使用量(可以使用T+N的冻结数量)
|
|
|
- CurTDPosition float64 `json:"curtdposition" xorm:"'CURTDPOSITION'"` // 期末今日头寸
|
|
|
- FreTDPosition float64 `json:"fretdposition" xorm:"'FRETDPOSITION'"` // 冻结今日头寸
|
|
|
- EnableQTY float64 `json:"enableqty" xorm:"'ENABLEQTY'"` // 可用量
|
|
|
- AveragePrice float64 `json:"averageprice" xorm:"AVERAGEPRICE"` // 持仓均价
|
|
|
- Usedmargin float64 `json:"usedmargin" xorm:"'USEDMARGIN'"` // 占用保证金[商品币种]
|
|
|
- QTYDECIMALPLACE int32 `json:"qtydecimalplace"` // 成交量小数位
|
|
|
- PositionPL float64 `json:"positionpl"` // 持仓盈亏 买方向 = (最新价 - 持仓均价) * 买期末头寸 * 合约单位;卖方向 = (持仓均价 - 最新价) * 卖期末头寸 * 合约单位
|
|
|
- PositionPLRate float64 `json:"positionplrate"` // 持仓盈亏比例【实时行情更新】 = 持仓盈亏 / 开仓成本
|
|
|
- MarketAmount float64 `json:"marketamount"` // 市值
|
|
|
- LastPrice float64 `json:"lastprice"` // 最新价
|
|
|
- Tradeproperty int32 `json:"tradeproperty"` // 交易属性
|
|
|
- REFGOODSID int32 `json:"refgoodsid" xorm:"'REFGOODSID'"` // 参考商品ID
|
|
|
- REFGOODSCODE string `json:"refgoodscode" xorm:"'REFGOODSCODE'"` // 参考商品代码
|
|
|
- MatchName string `json:"matchname" xorm:"'MATCHNAME'"` // ProviderUserID 企业名称
|
|
|
- Mindeliverylot int64 `json:"mindeliverylot" xorm:"MINDELIVERYLOT"` // 最小交收手数(50模式)
|
|
|
+ AccountID int64 `json:"accountid" xorm:"'ACCOUNTID'"` // 资金账户
|
|
|
+ BuyOrSell int64 `json:"buyorsell" xorm:"'BUYORSELL'" ` // 方向 - 0:买 1:卖
|
|
|
+ Goodsid int32 `json:"goodsid" xorm:"'GOODSID'" binding:"required"` // 商品Id
|
|
|
+ GoodsCode string `json:"goodscode" xorm:"GOODSCODE"` // 商品代码
|
|
|
+ GoodsName string `json:"goodsname" xorm:"GOODSNAME"` // 商品名称
|
|
|
+ AgreeUnit float64 `json:"agreeunit" xorm:"'AGREEUNIT'"` // 合约单位
|
|
|
+ CurrencyID int64 `json:"currencyid" xorm:"'CURRENCYID'"` // 报价货币ID - goods
|
|
|
+ TaCurrencyid int64 `json:"tacurrencyid" xorm:"'TACURRENCYID'"` // 报价货币ID - taaccount
|
|
|
+ GoodUnitID int64 `json:"goodunitid" xorm:"'GOODUNITID'"` // 报价单位ID
|
|
|
+ Goodunit string `json:"goodunit" xorm:"'GOODUNIT'"` // 报价单位
|
|
|
+ DecimalPlace int64 `json:"decimalplace" xorm:"'DECIMALPLACE'"` // 报价小数位
|
|
|
+ MarketID int64 `json:"marketid" xorm:"'MARKETID'"` // 所属市场ID
|
|
|
+ TradeMode int32 `json:"trademode" xorm:"'TRADEMODE'"` // 交易模式
|
|
|
+ PositionQTY float64 `json:"positionqty" xorm:"'POSITIONQTY'"` // 期初持仓数量
|
|
|
+ HolderAmount float64 `json:"holderamount" xorm:"'HOLDERAMOUNT'"` // 期初持仓总金额[商品币种]
|
|
|
+ CurPositionQTY float64 `json:"curpositionqty" xorm:"'CURPOSITIONQTY'"` // 当前持仓总数量
|
|
|
+ CurHolderAmount float64 `json:"curholderamount" xorm:"'CURHOLDERAMOUNT'"` // 当前持仓总金额[商品币种]
|
|
|
+ FrozenQTY float64 `json:"frozenqty" xorm:"'FROZENQTY'"` // 持仓冻结数量
|
|
|
+ OtherFrozenQTY float64 `json:"otherfrozenqty" xorm:"'OTHERFROZENQTY'"` // 持仓其他冻结数量(交割冻结)
|
|
|
+ OpenReqQTY float64 `json:"openreqqty" xorm:"'OPENREQQTY'"` // 开仓申请数量(用于比较最大持仓数量)
|
|
|
+ OpenTotalQTY float64 `json:"opentotalqty" xorm:"'OPENTOTALQTY'"` // 开仓总数量
|
|
|
+ CloseTotalQTY float64 `json:"closetotalqty" xorm:"'CLOSETOTALQTY'"` // 平仓总数量
|
|
|
+ TNQTY float64 `json:"tnqty" xorm:"'TNQTY'"` // T+N冻结总量
|
|
|
+ TNUsedQTY float64 `json:"tnusedqty" xorm:"'TNUSEDQTY'"` // T+N使用量(可以使用T+N的冻结数量)
|
|
|
+ CurTDPosition float64 `json:"curtdposition" xorm:"'CURTDPOSITION'"` // 期末今日头寸
|
|
|
+ FreTDPosition float64 `json:"fretdposition" xorm:"'FRETDPOSITION'"` // 冻结今日头寸
|
|
|
+ EnableQTY float64 `json:"enableqty" xorm:"'ENABLEQTY'"` // 可用量
|
|
|
+ AveragePrice float64 `json:"averageprice" xorm:"AVERAGEPRICE"` // 持仓均价
|
|
|
+ Usedmargin float64 `json:"usedmargin" xorm:"'USEDMARGIN'"` // 占用保证金[商品币种]
|
|
|
+ QTYDECIMALPLACE int32 `json:"qtydecimalplace"` // 成交量小数位
|
|
|
+ PositionPL float64 `json:"positionpl"` // 持仓盈亏 买方向 = (最新价 - 持仓均价) * 买期末头寸 * 合约单位;卖方向 = (持仓均价 - 最新价) * 卖期末头寸 * 合约单位
|
|
|
+ PositionPLRate float64 `json:"positionplrate"` // 持仓盈亏比例【实时行情更新】 = 持仓盈亏 / 开仓成本
|
|
|
+ MarketAmount float64 `json:"marketamount"` // 市值
|
|
|
+ LastPrice float64 `json:"lastprice"` // 最新价
|
|
|
+ Tradeproperty int32 `json:"tradeproperty"` // 交易属性
|
|
|
+ REFGOODSID int32 `json:"refgoodsid" xorm:"'REFGOODSID'"` // 参考商品ID
|
|
|
+ REFGOODSCODE string `json:"refgoodscode" xorm:"'REFGOODSCODE'"` // 参考商品代码
|
|
|
+ MatchName string `json:"matchname" xorm:"'MATCHNAME'"` // ProviderUserID 企业名称
|
|
|
+ Mindeliverylot int64 `json:"mindeliverylot" xorm:"MINDELIVERYLOT"` // 最小交收手数(50模式)
|
|
|
+ PROVIDERUSERID int64 `json:"provideruserid" xorm:"PROVIDERUSERID"` // 发售方用户ID(49)\供货商(50)
|
|
|
+ PROVIDERACCOUNTID int64 `json:"provideraccountid" xorm:"PROVIDERACCOUNTID"` // 发售方资金账户ID(49)\供货商资金账户ID(50)
|
|
|
|
|
|
PKID string `json:"pkid" xorm:"-"` // 自定义主键
|
|
|
}
|
|
|
@@ -125,21 +127,23 @@ func GetTradePosition(accIds string, tradeModes string) (rst []QueryTradePositio
|
|
|
// 查询数据
|
|
|
type tradePosition struct {
|
|
|
models.Tradeposition `xorm:"extends"`
|
|
|
- Goodscode string `json:"goodscode" xorm:"'GOODSCODE'"` // 商品代码(内部)
|
|
|
- Goodsname string `json:"goodsname" xorm:"'GOODSNAME'"` // 商品名称
|
|
|
- Currencyid int64 `json:"currencyid" xorm:"'CURRENCYID'"` // 报价货币ID - goods
|
|
|
- TaCurrencyid int64 `json:"tacurrencyid" xorm:"'TACURRENCYID'"` // 报价货币ID - taaccount
|
|
|
- Goodunitid int64 `json:"goodunitid" xorm:"'GOODUNITID'"` // 报价单位ID
|
|
|
- Goodunit string `json:"goodunit" xorm:"'GOODUNIT'"` // 报价单位
|
|
|
- Agreeunit float64 `json:"agreeunit" xorm:"'AGREEUNIT'"` // 合约单位
|
|
|
- Decimalplace int64 `json:"decimalplace" xorm:"'DECIMALPLACE'"` // 报价小数位
|
|
|
- Marketid int32 `json:"marketid" xorm:"'MARKETID'"` // 市场ID
|
|
|
- Trademode int32 `json:"trademode" xorm:"'TRADEMODE'"` // 交易模式
|
|
|
- QTYDECIMALPLACE int32 `json:"qtydecimalplace" xorm:"'QTYDECIMALPLACE'"` // 成交量小数位
|
|
|
- REFGOODSID int32 `json:"refgoodsid" xorm:"'REFGOODSID'"` // 参考商品ID
|
|
|
- REFGOODSCODE string `json:"refgoodscode" xorm:"'REFGOODSCODE'"` // 参考商品代码
|
|
|
- MatchName string `json:"matchname" xorm:"'MATCHNAME'"` // ProviderUserID 企业名称
|
|
|
- Mindeliverylot int64 `json:"mindeliverylot" xorm:"MINDELIVERYLOT"` // 最小交收手数(50模式)
|
|
|
+ Goodscode string `json:"goodscode" xorm:"'GOODSCODE'"` // 商品代码(内部)
|
|
|
+ Goodsname string `json:"goodsname" xorm:"'GOODSNAME'"` // 商品名称
|
|
|
+ Currencyid int64 `json:"currencyid" xorm:"'CURRENCYID'"` // 报价货币ID - goods
|
|
|
+ TaCurrencyid int64 `json:"tacurrencyid" xorm:"'TACURRENCYID'"` // 报价货币ID - taaccount
|
|
|
+ Goodunitid int64 `json:"goodunitid" xorm:"'GOODUNITID'"` // 报价单位ID
|
|
|
+ Goodunit string `json:"goodunit" xorm:"'GOODUNIT'"` // 报价单位
|
|
|
+ Agreeunit float64 `json:"agreeunit" xorm:"'AGREEUNIT'"` // 合约单位
|
|
|
+ Decimalplace int64 `json:"decimalplace" xorm:"'DECIMALPLACE'"` // 报价小数位
|
|
|
+ Marketid int32 `json:"marketid" xorm:"'MARKETID'"` // 市场ID
|
|
|
+ Trademode int32 `json:"trademode" xorm:"'TRADEMODE'"` // 交易模式
|
|
|
+ QTYDECIMALPLACE int32 `json:"qtydecimalplace" xorm:"'QTYDECIMALPLACE'"` // 成交量小数位
|
|
|
+ REFGOODSID int32 `json:"refgoodsid" xorm:"'REFGOODSID'"` // 参考商品ID
|
|
|
+ REFGOODSCODE string `json:"refgoodscode" xorm:"'REFGOODSCODE'"` // 参考商品代码
|
|
|
+ MatchName string `json:"matchname" xorm:"'MATCHNAME'"` // ProviderUserID 企业名称
|
|
|
+ Mindeliverylot int64 `json:"mindeliverylot" xorm:"MINDELIVERYLOT"` // 最小交收手数(50模式)
|
|
|
+ PROVIDERUSERID int64 `json:"provideruserid" xorm:"PROVIDERUSERID"` // 发售方用户ID(49)\供货商(50)
|
|
|
+ PROVIDERACCOUNTID int64 `json:"provideraccountid" xorm:"PROVIDERACCOUNTID"` // 发售方资金账户ID(49)\供货商资金账户ID(50)
|
|
|
}
|
|
|
datas := make([]tradePosition, 0)
|
|
|
engine := db.GetEngine()
|
|
|
@@ -151,7 +155,7 @@ func GetTradePosition(accIds string, tradeModes string) (rst []QueryTradePositio
|
|
|
Join("LEFT", "ENUMDICITEM", "GOODS.GOODUNITID = ENUMDICITEM.ENUMITEMNAME and ENUMDICITEM.ENUMDICCODE = 'goodsunit'").
|
|
|
Join("LEFT", "USERINFO UI", "UI.USERID = GOODS.PROVIDERUSERID").
|
|
|
Join("LEFT", "TAACCOUNT TA", "TA.ACCOUNTID = TRADEPOSITION.ACCOUNTID").
|
|
|
- Select("TRADEPOSITION.*, GOODS.GOODSCODE, GOODS.GOODSNAME, GOODS.CURRENCYID, TA.CURRENCYID TACURRENCYID, GOODS.GOODUNITID,GOODS.QTYDECIMALPLACE, GOODS.REFGOODSID, GOODS.REFGOODSCODE, " +
|
|
|
+ Select("TRADEPOSITION.*, GOODS.GOODSCODE, GOODS.GOODSNAME, GOODS.CURRENCYID, TA.CURRENCYID TACURRENCYID, GOODS.GOODUNITID,GOODS.QTYDECIMALPLACE, GOODS.REFGOODSID, GOODS.REFGOODSCODE, GOODS.PROVIDERUSERID, GOODS.PROVIDERACCOUNTID, " +
|
|
|
"ENUMDICITEM.ENUMDICNAME as GOODUNIT, GOODS.AGREEUNIT, GOODS.DECIMALPLACE, MARKET.MARKETID, MARKET.TRADEMODE, UI.CUSTOMERNAME as MATCHNAME, nvl(EX.MINDELIVERYLOT, 1) MINDELIVERYLOT").
|
|
|
Where(fmt.Sprintf(`TRADEPOSITION.ACCOUNTID in (%s)`, accIds))
|
|
|
if len(tradeModes) > 0 {
|