|
|
@@ -1914,65 +1914,71 @@ func (r *Ermcp3ArealSumPL) GetDataEx() (interface{}, error) {
|
|
|
|
|
|
// Ermcp3TaFutuReDataReport 期货报表
|
|
|
type Ermcp3TaFutuReDataReport struct {
|
|
|
- RECKONDATE string `json:"reckondate" xorm:"RECKONDATE"` // 日照时期(yyyyMMdd)
|
|
|
- CYCLETIME string `json:"cycletime" xorm:"CYCLETIME"` // 周期时间 月(YYYYMM) 季(YYYYQ) 年(YYYY) 周(YYYYIW) 全(0)【原值】
|
|
|
- CYCLETYPE int32 `json:"cycletype" xorm:"CYCLETYPE"` // 周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】
|
|
|
- ACCOUNTID int64 `json:"accountid" xorm:"ACCOUNTID"` // 交易账户
|
|
|
- GOODSID int32 `json:"goodsid" xorm:"GOODSID"` // 交易合约
|
|
|
- BUYORSELL int32 `json:"buyorsell" xorm:"BUYORSELL"` // 持仓方向
|
|
|
- CURRENCYID int32 `json:"currencyid" xorm:"CURRENCYID"` // 结算币种ID
|
|
|
- USERID int64 `json:"userid" xorm:"USERID"` // 账户所属用户ID
|
|
|
- RELATEDUSERID int64 `json:"relateduserid" xorm:"RELATEDUSERID"` // 账户关联用户ID
|
|
|
- GOODSGROUPID int32 `json:"goodsgroupid" xorm:"GOODSGROUPID"` // 交易品种
|
|
|
- ORIHOLDQTY float64 `json:"oriholdqty" xorm:"ORIHOLDQTY"` // 期初持仓量
|
|
|
- ORIOPENAMOUNT float64 `json:"oriopenamount" xorm:"ORIOPENAMOUNT"` // 期初开仓额
|
|
|
- ORIHOLDAMOUNT float64 `json:"oriholdamount" xorm:"ORIHOLDAMOUNT"` // 期初持仓额
|
|
|
- TODAYOPENQTY float64 `json:"todayopenqty" xorm:"TODAYOPENQTY"` // 今开仓量
|
|
|
- TODAYOPENAMOUNT float64 `json:"todayopenamount" xorm:"TODAYOPENAMOUNT"` // 今开仓额
|
|
|
- TODAYCLOSEQTY float64 `json:"todaycloseqty" xorm:"TODAYCLOSEQTY"` // 今平仓量
|
|
|
- TODAYCLOSEAMOUNT float64 `json:"todaycloseamount" xorm:"TODAYCLOSEAMOUNT"` // 今平仓额
|
|
|
- HOLDQTY float64 `json:"holdqty" xorm:"HOLDQTY"` // 期末持仓量
|
|
|
- OPENAMOUNT float64 `json:"openamount" xorm:"OPENAMOUNT"` // 期末开仓额
|
|
|
- HOLDAMOUNT float64 `json:"holdamount" xorm:"HOLDAMOUNT"` // 期末持仓额
|
|
|
- RECKONPRICE float64 `json:"reckonprice" xorm:"RECKONPRICE"` // 结算价
|
|
|
- RECKONHOLDAMOUNT float64 `json:"reckonholdamount" xorm:"RECKONHOLDAMOUNT"` // 结算持仓额
|
|
|
- CHARGE float64 `json:"charge" xorm:"CHARGE"` // 手续费
|
|
|
- CLOSEPL float64 `json:"closepl" xorm:"CLOSEPL"` // 平仓损益
|
|
|
- RECKONPL float64 `json:"reckonpl" xorm:"RECKONPL"` // 结算损益
|
|
|
- LASTPRICE float64 `json:"lastprice" xorm:"LASTPRICE"` // 最新价
|
|
|
- LASTHOLDAMOUNT float64 `json:"lastholdamount" xorm:"LASTHOLDAMOUNT"` // 当前持仓额
|
|
|
- FLOATPL float64 `json:"floatpl" xorm:"FLOATPL"` // 浮动损益
|
|
|
- GOODSGROUPSPOTQTY float64 `json:"goodsgroupspotqty" xorm:"GOODSGROUPSPOTQTY"` // 交易品种期末量 (= 期末持仓量 * 合约乘数)
|
|
|
- TODAYGOODSGROUPSPOTQTY float64 `json:"todaygoodsgroupspotqty" xorm:"TODAYGOODSGROUPSPOTQTY"` // 交易品种变化量 (=(期末持仓量 - 期初持仓量)* 合约乘数)
|
|
|
- MIDDLEGOODSQTY float64 `json:"middlegoodsqty" xorm:"MIDDLEGOODSQTY"` // 套保品种期末量 (=交易品种期末量 * 期货品种折算系数)
|
|
|
- TODAYMIDDLEGOODSQTY float64 `json:"todaymiddlegoodsqty" xorm:"TODAYMIDDLEGOODSQTY"` // 套保品种变化量 (= 交易品种变化量*期货品种折算系数)
|
|
|
- RECKONPL2 float64 `json:"reckonpl2" xorm:"RECKONPL2"` // 结算逐笔盈亏
|
|
|
- OUTERGROUPCODE string `json:"outergroupcode" xorm:"'OUTERGROUPCODE'"` // 交易品种代码
|
|
|
- GOODSGROUPNAME string `json:"goodsgroupname" xorm:"'GOODSGROUPNAME'"` // 交易品种名称
|
|
|
- GOODSCODE string `json:"goodscode" xorm:"'GOODSCODE'"` // 交易合约代码
|
|
|
- GOODSNAME string `json:"goodsname" xorm:"'GOODSNAME'"` // 交易合约名称
|
|
|
- GOODUNITID int32 `json:"goodunitid" xorm:"'GOODUNITID'"` // 交易合约单位id
|
|
|
- ACCOUNTNAME string `json:"accountname" xorm:"'ACCOUNTNAME'"` // 交易账号名称
|
|
|
- MIDDLEGOODSID int32 `json:"middlegoodsid" xorm:"'MIDDLEGOODSID'"` // 套保品种id
|
|
|
- MIDDLEGOODSNAME string `json:"middlegoodsname" xorm:"'MIDDLEGOODSNAME'"` // 套保商品名称
|
|
|
- MIDDLEGOODSCODE string `json:"middlgoodscode" xorm:"'MIDDLEGOODSCODE'"` // 套保商品代码
|
|
|
-
|
|
|
- OPENAVGPRICE float64 `json:"openavgprice"` // 开仓均价
|
|
|
- CLOSEAVGPRICE float64 `json:"closeavgprice"` // 平仓均价
|
|
|
- ENUMDICNAME string `json:"enumdicname"` // 单位名称
|
|
|
- CURRENCYNAME string `json:"currencyname"` // 币种名称
|
|
|
- QueryType int32 `json:"-"` // 查询类型 1-报表 2-报表明细
|
|
|
- BeginDate string `json:"begindate"` // 开始交易日
|
|
|
- EndDate string `json:"enddate"` // 结束交易日
|
|
|
+ RECKONDATE string `json:"reckondate" xorm:"RECKONDATE"` // 日照时期(yyyyMMdd)
|
|
|
+ CYCLETIME string `json:"cycletime" xorm:"CYCLETIME"` // 周期时间 月(YYYYMM) 季(YYYYQ) 年(YYYY) 周(YYYYIW) 全(0)【原值】
|
|
|
+ CYCLETYPE int32 `json:"cycletype" xorm:"CYCLETYPE"` // 周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】
|
|
|
+ ACCOUNTID int64 `json:"accountid" xorm:"ACCOUNTID"` // 交易账户
|
|
|
+ GOODSID int32 `json:"goodsid" xorm:"GOODSID"` // 交易合约
|
|
|
+ BUYORSELL int32 `json:"buyorsell" xorm:"BUYORSELL"` // 持仓方向
|
|
|
+ CURRENCYID int32 `json:"currencyid" xorm:"CURRENCYID"` // 结算币种ID
|
|
|
+ USERID int64 `json:"userid" xorm:"USERID"` // 账户所属用户ID
|
|
|
+ RELATEDUSERID int64 `json:"relateduserid" xorm:"RELATEDUSERID"` // 账户关联用户ID
|
|
|
+ GOODSGROUPID int32 `json:"goodsgroupid" xorm:"GOODSGROUPID"` // 交易品种
|
|
|
+ ORIHOLDQTY float64 `json:"oriholdqty" xorm:"ORIHOLDQTY"` // 期初持仓量
|
|
|
+ ORIOPENAMOUNT float64 `json:"oriopenamount" xorm:"ORIOPENAMOUNT"` // 期初开仓额
|
|
|
+ ORIHOLDAMOUNT float64 `json:"oriholdamount" xorm:"ORIHOLDAMOUNT"` // 期初持仓额
|
|
|
+ TODAYOPENQTY SFLOAT64 `json:"todayopenqty" xorm:"TODAYOPENQTY"` // 今开仓量
|
|
|
+ TODAYOPENAMOUNT float64 `json:"todayopenamount" xorm:"TODAYOPENAMOUNT"` // 今开仓额
|
|
|
+ TODAYCLOSEQTY SFLOAT64 `json:"todaycloseqty" xorm:"TODAYCLOSEQTY"` // 今平仓量
|
|
|
+ TODAYCLOSEAMOUNT float64 `json:"todaycloseamount" xorm:"TODAYCLOSEAMOUNT"` // 今平仓额
|
|
|
+ HOLDQTY float64 `json:"holdqty" xorm:"HOLDQTY"` // 期末持仓量
|
|
|
+ OPENAMOUNT float64 `json:"openamount" xorm:"OPENAMOUNT"` // 期末开仓额
|
|
|
+ HOLDAMOUNT float64 `json:"holdamount" xorm:"HOLDAMOUNT"` // 期末持仓额
|
|
|
+ RECKONPRICE float64 `json:"reckonprice" xorm:"RECKONPRICE"` // 结算价
|
|
|
+ RECKONHOLDAMOUNT float64 `json:"reckonholdamount" xorm:"RECKONHOLDAMOUNT"` // 结算持仓额
|
|
|
+ CHARGE float64 `json:"charge" xorm:"CHARGE"` // 手续费
|
|
|
+ CLOSEPL float64 `json:"closepl" xorm:"CLOSEPL"` // 平仓损益
|
|
|
+ RECKONPL float64 `json:"reckonpl" xorm:"RECKONPL"` // 结算损益
|
|
|
+ LASTPRICE float64 `json:"lastprice" xorm:"LASTPRICE"` // 最新价
|
|
|
+ LASTHOLDAMOUNT float64 `json:"lastholdamount" xorm:"LASTHOLDAMOUNT"` // 当前持仓额
|
|
|
+ FLOATPL float64 `json:"floatpl" xorm:"FLOATPL"` // 浮动损益
|
|
|
+ GOODSGROUPSPOTQTY float64 `json:"goodsgroupspotqty" xorm:"GOODSGROUPSPOTQTY"` // 交易品种期末量 (= 期末持仓量 * 合约乘数)
|
|
|
+ TODAYGOODSGROUPSPOTQTY float64 `json:"todaygoodsgroupspotqty" xorm:"TODAYGOODSGROUPSPOTQTY"` // 交易品种变化量 (=(期末持仓量 - 期初持仓量)* 合约乘数)
|
|
|
+ MIDDLEGOODSQTY float64 `json:"middlegoodsqty" xorm:"MIDDLEGOODSQTY"` // 套保品种期末量 (=交易品种期末量 * 期货品种折算系数)
|
|
|
+ TODAYMIDDLEGOODSQTY float64 `json:"todaymiddlegoodsqty" xorm:"TODAYMIDDLEGOODSQTY"` // 套保品种变化量 (= 交易品种变化量*期货品种折算系数)
|
|
|
+ RECKONPL2 float64 `json:"reckonpl2" xorm:"RECKONPL2"` // 结算逐笔盈亏
|
|
|
+ OUTERGROUPCODE string `json:"outergroupcode" xorm:"'OUTERGROUPCODE'"` // 交易品种代码
|
|
|
+ GOODSGROUPNAME string `json:"goodsgroupname" xorm:"'GOODSGROUPNAME'"` // 交易品种名称
|
|
|
+ GOODSCODE string `json:"goodscode" xorm:"'GOODSCODE'"` // 交易合约代码
|
|
|
+ GOODSNAME string `json:"goodsname" xorm:"'GOODSNAME'"` // 交易合约名称
|
|
|
+ GOODUNITID int32 `json:"goodunitid" xorm:"'GOODUNITID'"` // 交易合约单位id
|
|
|
+ AGREEUNIT float64 `json:"agreeunit" xorm:"'AGREEUNIT'"` // 商品合约单位
|
|
|
+ QTYDECIMALPLACE int `json:"qtydecimalplace" xorm:"'QTYDECIMALPLACE'"` // 成交量小数位
|
|
|
+ ACCOUNTNAME string `json:"accountname" xorm:"'ACCOUNTNAME'"` // 交易账号名称
|
|
|
+ MIDDLEGOODSID int32 `json:"middlegoodsid" xorm:"'MIDDLEGOODSID'"` // 套保品种id
|
|
|
+ MIDDLEGOODSNAME string `json:"middlegoodsname" xorm:"'MIDDLEGOODSNAME'"` // 套保商品名称
|
|
|
+ MIDDLEGOODSCODE string `json:"middlgoodscode" xorm:"'MIDDLEGOODSCODE'"` // 套保商品代码
|
|
|
+
|
|
|
+ OPENAVGPRICE SFLOAT64 `json:"openavgprice"` // 开仓均价
|
|
|
+ CLOSEAVGPRICE SFLOAT64 `json:"closeavgprice"` // 平仓均价
|
|
|
+ ENUMDICNAME string `json:"enumdicname"` // 单位名称
|
|
|
+ CURRENCYNAME string `json:"currencyname"` // 币种名称
|
|
|
+ QueryType int32 `json:"-"` // 查询类型 1-报表 2-报表明细
|
|
|
+ BeginDate string `json:"begindate"` // 开始交易日
|
|
|
+ EndDate string `json:"enddate"` // 结束交易日
|
|
|
}
|
|
|
|
|
|
func (r *Ermcp3TaFutuReDataReport) calc() {
|
|
|
- if r.TODAYOPENQTY != 0 {
|
|
|
- r.OPENAVGPRICE = r.TODAYOPENAMOUNT / r.TODAYOPENQTY
|
|
|
+ if r.TODAYOPENQTY != 0 && r.AGREEUNIT > 1e-8 {
|
|
|
+ r.TODAYOPENQTY.Power10(r.QTYDECIMALPLACE * -1)
|
|
|
+ r.OPENAVGPRICE = SFLOAT64(r.TODAYOPENAMOUNT / r.TODAYOPENQTY.Float64() / r.AGREEUNIT)
|
|
|
+ r.OPENAVGPRICE.Round(3)
|
|
|
}
|
|
|
|
|
|
- if r.TODAYCLOSEQTY != 0 {
|
|
|
- r.CLOSEAVGPRICE = r.TODAYCLOSEAMOUNT / r.TODAYCLOSEQTY
|
|
|
+ if r.TODAYCLOSEQTY != 0 && r.AGREEUNIT > 1e-8 {
|
|
|
+ r.TODAYCLOSEQTY.Power10(r.QTYDECIMALPLACE * -1)
|
|
|
+ r.CLOSEAVGPRICE = SFLOAT64(r.TODAYCLOSEAMOUNT / r.TODAYCLOSEQTY.Float64() / r.AGREEUNIT)
|
|
|
+ r.CLOSEAVGPRICE.Round(3)
|
|
|
}
|
|
|
r.ENUMDICNAME = mtpcache.GetEnumDicitemName(r.GOODUNITID)
|
|
|
r.CURRENCYNAME = mtpcache.GetCurrencyName(r.CURRENCYID)
|
|
|
@@ -2010,6 +2016,8 @@ func (r *Ermcp3TaFutuReDataReport) buildSqlReckon(userType int32) string {
|
|
|
" g.goodscode," +
|
|
|
" g.goodsname," +
|
|
|
" g.goodunitid," +
|
|
|
+ " g.agreeunit," +
|
|
|
+ " g.qtydecimalplace," +
|
|
|
" mg.middlegoodsid," +
|
|
|
" mg.middlegoodscode," +
|
|
|
" mg.middlegoodsname" +
|
|
|
@@ -2083,6 +2091,8 @@ func (r *Ermcp3TaFutuReDataReport) buildSqlReckonDetail(userType int32) string {
|
|
|
" g.goodscode," +
|
|
|
" g.goodsname," +
|
|
|
" g.goodunitid," +
|
|
|
+ " g.agreeunit," +
|
|
|
+ " g.qtydecimalplace," +
|
|
|
" ta.accountname," +
|
|
|
" mg.middlegoodsid," +
|
|
|
" mg.middlegoodscode," +
|
|
|
@@ -2165,6 +2175,8 @@ func (r *Ermcp3TaFutuReDataReport) buildSqlReport(userType int32) string {
|
|
|
" g.goodscode," +
|
|
|
" g.goodsname," +
|
|
|
" g.goodunitid," +
|
|
|
+ " g.agreeunit," +
|
|
|
+ " g.qtydecimalplace," +
|
|
|
" mg.middlegoodsid," +
|
|
|
" mg.middlegoodscode," +
|
|
|
" mg.middlegoodsname" +
|