|
|
@@ -568,3 +568,280 @@ func (r *Ermcp3ReportAreaSpotSub) GetDataEx() (interface{}, error) {
|
|
|
}
|
|
|
return sData, err
|
|
|
}
|
|
|
+
|
|
|
+// Ermcp3ReckonExpourse 敞口日报表
|
|
|
+type Ermcp3ReckonExpourse struct {
|
|
|
+ ORITOTALSPOTQTY float64 `json:"oritotalspotqty" xorm:"'ORITOTALSPOTQTY'"` // 期初现货头寸总量
|
|
|
+ ORITOTALFUTUREQTY float64 `json:"oritotalfutureqty" xorm:"'ORITOTALFUTUREQTY'"` // 期初期货头寸总量
|
|
|
+ ORITOTALEXPOSURE float64 `json:"oritotalexposure" xorm:"'ORITOTALEXPOSURE'"` // 期初实时总敞口
|
|
|
+ ORINEEDHEDGEEXPOSOURE float64 `json:"orineedhedgeexposoure" xorm:"'ORINEEDHEDGEEXPOSOURE'"` // 期初应套保敞口
|
|
|
+ ORIHEDGEQTY float64 `json:"orihedgeqty" xorm:"'ORIHEDGEQTY'"` // 期初套保量
|
|
|
+ ORIARBITRAGEQTY float64 `json:"oriarbitrageqty" xorm:"'ORIARBITRAGEQTY'"` // 期初套利量
|
|
|
+ ORINEEDHEDGEQTY float64 `json:"orineedhedgeqty" xorm:"'ORINEEDHEDGEQTY'"` // 期初应套保量
|
|
|
+ ORINEEDARBITRAGEQTY float64 `json:"orineedarbitrageqty" xorm:"'ORINEEDARBITRAGEQTY'"` // 期初应套利量
|
|
|
+ ORITOTALNEEDHEDGEQTY float64 `json:"oritotalneedhedgeqty" xorm:"'ORITOTALNEEDHEDGEQTY'"` // 期初应套保总量
|
|
|
+ RECKONDATE string `json:"reckondate" xorm:"'RECKONDATE'"` // 日照时期(yyyyMMdd)
|
|
|
+ MIDDLEGOODSID int64 `json:"middlegoodsid" xorm:"'MIDDLEGOODSID'"` // 套保品种ID
|
|
|
+ AREAUSERID int64 `json:"areauserid" xorm:"'AREAUSERID'"` // 所属机构\交易用户ID
|
|
|
+ ACCOUNTID int64 `json:"accountid" xorm:"'ACCOUNTID'"` // 期货账户ID (作废, 默认为0)
|
|
|
+ ORIBUYPLANQTY float64 `json:"oribuyplanqty" xorm:"'ORIBUYPLANQTY'"` // 期初采购计划数量
|
|
|
+ ORIBUYPRICEDQTY float64 `json:"oribuypricedqty" xorm:"'ORIBUYPRICEDQTY'"` // 期初采购合同已定价数量
|
|
|
+ ORISELLPLANQTY float64 `json:"orisellplanqty" xorm:"'ORISELLPLANQTY'"` // 期初销售计划数量
|
|
|
+ ORISELLPRICEDQTY float64 `json:"orisellpricedqty" xorm:"'ORISELLPRICEDQTY'"` // 期初销售合同已定价数量
|
|
|
+ ORIBUYFUTUREQTY float64 `json:"oribuyfutureqty" xorm:"'ORIBUYFUTUREQTY'"` // 期初买入期货数量
|
|
|
+ ORISELLFUTUREQTY float64 `json:"orisellfutureqty" xorm:"'ORISELLFUTUREQTY'"` // 期初卖出期货数量
|
|
|
+ BUYPLANQTY float64 `json:"buyplanqty" xorm:"'BUYPLANQTY'"` // 采购计划数量
|
|
|
+ BUYPRICEDQTY float64 `json:"buypricedqty" xorm:"'BUYPRICEDQTY'"` // 采购合同已定价数量
|
|
|
+ SELLPLANQTY float64 `json:"sellplanqty" xorm:"'SELLPLANQTY'"` // 销售计划数量
|
|
|
+ SELLPRICEDQTY float64 `json:"sellpricedqty" xorm:"'SELLPRICEDQTY'"` // 销售合同已定价数量
|
|
|
+ BUYFUTUREQTY float64 `json:"buyfutureqty" xorm:"'BUYFUTUREQTY'"` // 买入期货数量
|
|
|
+ SELLFUTUREQTY float64 `json:"sellfutureqty" xorm:"'SELLFUTUREQTY'"` // 卖出期货数量
|
|
|
+ TOTALSPOTQTY float64 `json:"totalspotqty" xorm:"'TOTALSPOTQTY'"` // 现货头寸总量
|
|
|
+ TOTALFUTUREQTY float64 `json:"totalfutureqty" xorm:"'TOTALFUTUREQTY'"` // 期货头寸总量(期货总量)
|
|
|
+ TOTALEXPOSURE float64 `json:"totalexposure" xorm:"'TOTALEXPOSURE'"` // 实时总敞口(总敞口)
|
|
|
+ TOTALHEDGERATIO float64 `json:"totalhedgeratio" xorm:"'TOTALHEDGERATIO'"` // 敞口比例
|
|
|
+ TOTALNEEDHEDGEQTY float64 `json:"totalneedhedgeqty" xorm:"'TOTALNEEDHEDGEQTY'"` // 应套保总量(现货应套保总量)
|
|
|
+ NEEDHEDGEEXPOSOURE float64 `json:"needhedgeexposoure" xorm:"'NEEDHEDGEEXPOSOURE'"` // 应套保敞口(套保敞口)
|
|
|
+ NEEDHEDGERATIO float64 `json:"needhedgeratio" xorm:"'NEEDHEDGERATIO'"` // 应套保敞口比例
|
|
|
+ UPDATETIME string `json:"updatetime" xorm:"'UPDATETIME'"` // 更新时间
|
|
|
+ HEDGEQTY float64 `json:"hedgeqty" xorm:"'HEDGEQTY'"` // 套保量
|
|
|
+ ARBITRAGEQTY float64 `json:"arbitrageqty" xorm:"'ARBITRAGEQTY'"` // 套利量
|
|
|
+ NEEDHEDGEQTY float64 `json:"needhedgeqty" xorm:"'NEEDHEDGEQTY'"` // 应套保量
|
|
|
+ NEEDARBITRAGEQTY float64 `json:"needarbitrageqty" xorm:"'NEEDARBITRAGEQTY'"` // 应套利量
|
|
|
+ MIDDLEGOODSNAME string `json:"middlegoodsnam" xorm:"'MIDDLEGOODSNAME'"` // 套保商品名称
|
|
|
+ MIDDLEGOODSCODE string `json:"middlgoodscode" xorm:"'MIDDLEGOODSCODE'"` // 套保商品代码
|
|
|
+ UNITID int32 `json:"unitid" xorm:"'UNITID'"` // 单位id
|
|
|
+ MGNEEDHEDGERATIO float64 `json:"mgneedhedgeratio" xorm:"'MGNEEDHEDGERATIO'"` // 套保比例(套保品的)
|
|
|
+ NEEDARBITRAGERATIO float64 `json:"needarbitrageratio" xorm:"'NEEDARBITRAGERATIO'"` // 套利比例(套保品的)
|
|
|
+
|
|
|
+ ENUMDICNAME string `json:"enumdicname"` // 单位名称
|
|
|
+ ACCOUNTNAME string `json:"accountname"` // 机构名称
|
|
|
+
|
|
|
+ DiffSpotQty float64 `json:"diffspotqty"` // 变动量(现货)
|
|
|
+ DiffMgQtyA float64 `json:"diffmgqtya"` // 套保变动量
|
|
|
+ DiffMgQtyB float64 `json:"diffmgqtyb"` // 套利变动量
|
|
|
+ DiffFutuQty float64 `json:"difffutuqty"` // 变动量(期货)
|
|
|
+ DiffQty float64 `json:"diffqty"` // 变动量(总敞口)
|
|
|
+ DiffHedgeQty float64 `json:"diffhedgeqty"` // 变动量(现货应套保总量)
|
|
|
+ DiffExposure float64 `json:"diffexposure"` // 变动量(套保敞口)
|
|
|
+}
|
|
|
+
|
|
|
+func (r *Ermcp3ReckonExpourse) calc() {
|
|
|
+ r.ENUMDICNAME = mtpcache.GetEnumDicitemName(r.UNITID)
|
|
|
+ r.ACCOUNTNAME = mtpcache.GetUserNameByUserId(r.AREAUSERID)
|
|
|
+ // 变动量(现货) = 现货头寸总量 - 期初现货头寸总量
|
|
|
+ r.DiffSpotQty = r.TOTALSPOTQTY - r.ORITOTALSPOTQTY
|
|
|
+ // 套保变动量 = 套保量 - 期初套保量
|
|
|
+ r.DiffMgQtyA = r.HEDGEQTY - r.ORIHEDGEQTY
|
|
|
+ // 套利变动量 = 套利量 - 期初套利量
|
|
|
+ r.DiffMgQtyB = r.ARBITRAGEQTY - r.ORIARBITRAGEQTY
|
|
|
+ // 变动量(期货) = (买入 - 买入期初) - (卖出 - 卖出期初)
|
|
|
+ r.DiffFutuQty = (r.BUYFUTUREQTY - r.ORIBUYFUTUREQTY) - (r.SELLFUTUREQTY - r.ORISELLFUTUREQTY)
|
|
|
+ // 变动量(敞口) = 实时敞口 - 期初实时敞口
|
|
|
+ r.DiffQty = r.TOTALEXPOSURE - r.ORITOTALEXPOSURE
|
|
|
+ // 变动量(现货应套保总量)
|
|
|
+ r.DiffHedgeQty = r.TOTALNEEDHEDGEQTY - r.ORITOTALNEEDHEDGEQTY
|
|
|
+ // 变动量(套保敞口)
|
|
|
+ r.DiffExposure = r.NEEDHEDGEEXPOSOURE - r.ORINEEDHEDGEEXPOSOURE
|
|
|
+}
|
|
|
+
|
|
|
+func (r *Ermcp3ReckonExpourse) buildSql() string {
|
|
|
+ var sqlId utils.SQLVal = "SELECT t.ORITOTALSPOTQTY," +
|
|
|
+ " t.ORITOTALFUTUREQTY," +
|
|
|
+ " t.ORITOTALEXPOSURE," +
|
|
|
+ " t.ORINEEDHEDGEEXPOSOURE," +
|
|
|
+ " t.ORIHEDGEQTY," +
|
|
|
+ " t.ORIARBITRAGEQTY," +
|
|
|
+ " t.ORINEEDHEDGEQTY," +
|
|
|
+ " t.ORINEEDARBITRAGEQTY," +
|
|
|
+ " t.ORITOTALNEEDHEDGEQTY," +
|
|
|
+ " t.RECKONDATE," +
|
|
|
+ " t.MIDDLEGOODSID," +
|
|
|
+ " t.AREAUSERID," +
|
|
|
+ " t.ACCOUNTID," +
|
|
|
+ " t.ORIBUYPLANQTY," +
|
|
|
+ " t.ORIBUYPRICEDQTY," +
|
|
|
+ " t.ORISELLPLANQTY," +
|
|
|
+ " t.ORISELLPRICEDQTY," +
|
|
|
+ " t.ORIBUYFUTUREQTY," +
|
|
|
+ " t.ORISELLFUTUREQTY," +
|
|
|
+ " t.BUYPLANQTY," +
|
|
|
+ " t.BUYPRICEDQTY," +
|
|
|
+ " t.SELLPLANQTY," +
|
|
|
+ " t.SELLPRICEDQTY," +
|
|
|
+ " t.BUYFUTUREQTY," +
|
|
|
+ " t.SELLFUTUREQTY," +
|
|
|
+ " t.TOTALSPOTQTY," +
|
|
|
+ " t.TOTALFUTUREQTY," +
|
|
|
+ " t.TOTALEXPOSURE," +
|
|
|
+ " t.TOTALHEDGERATIO," +
|
|
|
+ " t.TOTALNEEDHEDGEQTY," +
|
|
|
+ " t.NEEDHEDGEEXPOSOURE," +
|
|
|
+ " t.NEEDHEDGERATIO," +
|
|
|
+ " to_char(t.UPDATETIME, 'yyyy-mm-dd hh24:mi:ss') UPDATETIME," +
|
|
|
+ " t.HEDGEQTY," +
|
|
|
+ " t.ARBITRAGEQTY," +
|
|
|
+ " t.NEEDHEDGEQTY," +
|
|
|
+ " t.NEEDARBITRAGEQTY," +
|
|
|
+ " g.middlegoodsname," +
|
|
|
+ " g.middlegoodscode," +
|
|
|
+ " g.goodsunitid unitid" +
|
|
|
+ " FROM RECKON_ERMCP_AREAEXPOSURE t" +
|
|
|
+ " LEFT JOIN ERMS_MIDDLEGOODS g" +
|
|
|
+ " on t.middlegoodsid = g.middlegoodsid" +
|
|
|
+ " WHERE 1 = 1"
|
|
|
+ sqlId.AndEx("t.AREAUSERID", r.AREAUSERID, r.AREAUSERID > 0)
|
|
|
+ sqlId.AndEx("t.RECKONDATE", r.RECKONDATE, len(r.RECKONDATE) > 0)
|
|
|
+ return sqlId.String()
|
|
|
+}
|
|
|
+
|
|
|
+// GetDataEx 获取敞口日报表
|
|
|
+func (r *Ermcp3ReckonExpourse) GetDataEx() (interface{}, error) {
|
|
|
+ sData := make([]Ermcp3ReckonExpourse, 0)
|
|
|
+ err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
|
|
|
+ for i := range sData {
|
|
|
+ sData[i].calc()
|
|
|
+ }
|
|
|
+ return sData, err
|
|
|
+}
|
|
|
+
|
|
|
+// Ermcp3ReportExpourse 获取敞口周期报表
|
|
|
+type Ermcp3ReportExpourse struct {
|
|
|
+ CYCLETIME string `json:"cycletime" xorm:"'CYCLETIME'"` // 周期时间 月(YYYYMM) 季(YYYYQ) 年(YYYY) 周(YYYYIW) 全(0)【原值】
|
|
|
+ CYCLETYPE int32 `json:"cycletype" xorm:"'CYCLETYPE'"` // 周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】
|
|
|
+ ORITOTALSPOTQTY float64 `json:"oritotalspotqty" xorm:"'ORITOTALSPOTQTY'"` // 期初现货头寸总量
|
|
|
+ ORITOTALFUTUREQTY float64 `json:"oritotalfutureqty" xorm:"'ORITOTALFUTUREQTY'"` // 期初期货头寸总量
|
|
|
+ ORITOTALEXPOSURE float64 `json:"oritotalexposure" xorm:"'ORITOTALEXPOSURE'"` // 期初实时总敞口
|
|
|
+ ORINEEDHEDGEEXPOSOURE float64 `json:"orineedhedgeexposoure" xorm:"'ORINEEDHEDGEEXPOSOURE'"` // 期初应套保敞口
|
|
|
+ ORIHEDGEQTY float64 `json:"orihedgeqty" xorm:"'ORIHEDGEQTY'"` // 期初套保量
|
|
|
+ ORIARBITRAGEQTY float64 `json:"oriarbitrageqty" xorm:"'ORIARBITRAGEQTY'"` // 期初套利量
|
|
|
+ ORINEEDHEDGEQTY float64 `json:"orineedhedgeqty" xorm:"'ORINEEDHEDGEQTY'"` // 期初应套保量
|
|
|
+ ORINEEDARBITRAGEQTY float64 `json:"orineedarbitrageqty" xorm:"'ORINEEDARBITRAGEQTY'"` // 期初应套利量
|
|
|
+ ORITOTALNEEDHEDGEQTY float64 `json:"oritotalneedhedgeqty" xorm:"'ORITOTALNEEDHEDGEQTY'"` // 期初应套保总量
|
|
|
+ MIDDLEGOODSID int64 `json:"middlegoodsid" xorm:"'MIDDLEGOODSID'"` // 套保品种ID
|
|
|
+ AREAUSERID int64 `json:"areauserid" xorm:"'AREAUSERID'"` // 所属机构\交易用户ID
|
|
|
+ ACCOUNTID int64 `json:"accountid" xorm:"'ACCOUNTID'"` // 期货账户ID (作废, 默认为0)
|
|
|
+ ORIBUYPLANQTY float64 `json:"oribuyplanqty" xorm:"'ORIBUYPLANQTY'"` // 期初采购计划数量
|
|
|
+ ORIBUYPRICEDQTY float64 `json:"oribuypricedqty" xorm:"'ORIBUYPRICEDQTY'"` // 期初采购合同已定价数量
|
|
|
+ ORISELLPLANQTY float64 `json:"orisellplanqty" xorm:"'ORISELLPLANQTY'"` // 期初销售计划数量
|
|
|
+ ORISELLPRICEDQTY float64 `json:"orisellpricedqty" xorm:"'ORISELLPRICEDQTY'"` // 期初销售合同已定价数量
|
|
|
+ ORIBUYFUTUREQTY float64 `json:"oribuyfutureqty" xorm:"'ORIBUYFUTUREQTY'"` // 期初买入期货数量
|
|
|
+ ORISELLFUTUREQTY float64 `json:"orisellfutureqty" xorm:"'ORISELLFUTUREQTY'"` // 期初卖出期货数量
|
|
|
+ BUYPLANQTY float64 `json:"buyplanqty" xorm:"'BUYPLANQTY'"` // 采购计划数量
|
|
|
+ BUYPRICEDQTY float64 `json:"buypricedqty" xorm:"'BUYPRICEDQTY'"` // 采购合同已定价数量
|
|
|
+ SELLPLANQTY float64 `json:"sellplanqty" xorm:"'SELLPLANQTY'"` // 销售计划数量
|
|
|
+ SELLPRICEDQTY float64 `json:"sellpricedqty" xorm:"'SELLPRICEDQTY'"` // 销售合同已定价数量
|
|
|
+ BUYFUTUREQTY float64 `json:"buyfutureqty" xorm:"'BUYFUTUREQTY'"` // 买入期货数量
|
|
|
+ SELLFUTUREQTY float64 `json:"sellfutureqty" xorm:"'SELLFUTUREQTY'"` // 卖出期货数量
|
|
|
+ TOTALSPOTQTY float64 `json:"totalspotqty" xorm:"'TOTALSPOTQTY'"` // 现货头寸总量
|
|
|
+ TOTALFUTUREQTY float64 `json:"totalfutureqty" xorm:"'TOTALFUTUREQTY'"` // 期货头寸总量(期货总量)
|
|
|
+ TOTALEXPOSURE float64 `json:"totalexposure" xorm:"'TOTALEXPOSURE'"` // 实时总敞口(总敞口)
|
|
|
+ TOTALHEDGERATIO float64 `json:"totalhedgeratio" xorm:"'TOTALHEDGERATIO'"` // 敞口比例
|
|
|
+ TOTALNEEDHEDGEQTY float64 `json:"totalneedhedgeqty" xorm:"'TOTALNEEDHEDGEQTY'"` // 应套保总量(现货应套保总量)
|
|
|
+ NEEDHEDGEEXPOSOURE float64 `json:"needhedgeexposoure" xorm:"'NEEDHEDGEEXPOSOURE'"` // 应套保敞口(套保敞口)
|
|
|
+ NEEDHEDGERATIO float64 `json:"needhedgeratio" xorm:"'NEEDHEDGERATIO'"` // 应套保敞口比例
|
|
|
+ UPDATETIME string `json:"updatetime" xorm:"'UPDATETIME'"` // 更新时间
|
|
|
+ HEDGEQTY float64 `json:"hedgeqty" xorm:"'HEDGEQTY'"` // 套保量
|
|
|
+ ARBITRAGEQTY float64 `json:"arbitrageqty" xorm:"'ARBITRAGEQTY'"` // 套利量
|
|
|
+ NEEDHEDGEQTY float64 `json:"needhedgeqty" xorm:"'NEEDHEDGEQTY'"` // 应套保量
|
|
|
+ NEEDARBITRAGEQTY float64 `json:"needarbitrageqty" xorm:"'NEEDARBITRAGEQTY'"` // 应套利量
|
|
|
+ MIDDLEGOODSNAME string `json:"middlegoodsnam" xorm:"'MIDDLEGOODSNAME'"` // 套保商品名称
|
|
|
+ MIDDLEGOODSCODE string `json:"middlgoodscode" xorm:"'MIDDLEGOODSCODE'"` // 套保商品代码
|
|
|
+ UNITID int32 `json:"unitid" xorm:"'UNITID'"` // 单位id
|
|
|
+ MGNEEDHEDGERATIO float64 `json:"mgneedhedgeratio" xorm:"'MGNEEDHEDGERATIO'"` // 套保比例(套保品的)
|
|
|
+ NEEDARBITRAGERATIO float64 `json:"needarbitrageratio" xorm:"'NEEDARBITRAGERATIO'"` // 套利比例(套保品的)
|
|
|
+
|
|
|
+ ENUMDICNAME string `json:"enumdicname"` // 单位名称
|
|
|
+ ACCOUNTNAME string `json:"accountname"` // 机构名称
|
|
|
+
|
|
|
+ DiffSpotQty float64 `json:"diffspotqty"` // 变动量(现货)
|
|
|
+ DiffMgQtyA float64 `json:"diffmgqtya"` // 套保变动量
|
|
|
+ DiffMgQtyB float64 `json:"diffmgqtyb"` // 套利变动量
|
|
|
+ DiffFutuQty float64 `json:"difffutuqty"` // 变动量(期货)
|
|
|
+ DiffQty float64 `json:"diffqty"` // 变动量(总敞口)
|
|
|
+ DiffHedgeQty float64 `json:"diffhedgeqty"` // 变动量(现货应套保总量)
|
|
|
+ DiffExposure float64 `json:"diffexposure"` // 变动量(套保敞口)
|
|
|
+}
|
|
|
+
|
|
|
+func (r *Ermcp3ReportExpourse) calc() {
|
|
|
+ r.ENUMDICNAME = mtpcache.GetEnumDicitemName(r.UNITID)
|
|
|
+ r.ACCOUNTNAME = mtpcache.GetUserNameByUserId(r.AREAUSERID)
|
|
|
+ // 变动量(现货) = 现货头寸总量 - 期初现货头寸总量
|
|
|
+ r.DiffSpotQty = r.TOTALSPOTQTY - r.ORITOTALSPOTQTY
|
|
|
+ // 套保变动量 = 套保量 - 期初套保量
|
|
|
+ r.DiffMgQtyA = r.HEDGEQTY - r.ORIHEDGEQTY
|
|
|
+ // 套利变动量 = 套利量 - 期初套利量
|
|
|
+ r.DiffMgQtyB = r.ARBITRAGEQTY - r.ORIARBITRAGEQTY
|
|
|
+ // 变动量(期货) = (买入 - 买入期初) - (卖出 - 卖出期初)
|
|
|
+ r.DiffFutuQty = (r.BUYFUTUREQTY - r.ORIBUYFUTUREQTY) - (r.SELLFUTUREQTY - r.ORISELLFUTUREQTY)
|
|
|
+ // 变动量(敞口) = 实时敞口 - 期初实时敞口
|
|
|
+ r.DiffQty = r.TOTALEXPOSURE - r.ORITOTALEXPOSURE
|
|
|
+ // 变动量(现货应套保总量)
|
|
|
+ r.DiffHedgeQty = r.TOTALNEEDHEDGEQTY - r.ORITOTALNEEDHEDGEQTY
|
|
|
+ // 变动量(套保敞口)
|
|
|
+ r.DiffExposure = r.NEEDHEDGEEXPOSOURE - r.ORINEEDHEDGEEXPOSOURE
|
|
|
+}
|
|
|
+
|
|
|
+func (r *Ermcp3ReportExpourse) buildSql() string {
|
|
|
+ var sqlId utils.SQLVal = "SELECT t.cycletime," +
|
|
|
+ " t.cycletype," +
|
|
|
+ " t.ORITOTALSPOTQTY," +
|
|
|
+ " t.ORITOTALFUTUREQTY," +
|
|
|
+ " t.ORITOTALEXPOSURE," +
|
|
|
+ " t.ORINEEDHEDGEEXPOSOURE," +
|
|
|
+ " t.ORIHEDGEQTY," +
|
|
|
+ " t.ORIARBITRAGEQTY," +
|
|
|
+ " t.ORINEEDHEDGEQTY," +
|
|
|
+ " t.ORINEEDARBITRAGEQTY," +
|
|
|
+ " t.ORITOTALNEEDHEDGEQTY," +
|
|
|
+ " t.MIDDLEGOODSID," +
|
|
|
+ " t.AREAUSERID," +
|
|
|
+ " t.ACCOUNTID," +
|
|
|
+ " t.ORIBUYPLANQTY," +
|
|
|
+ " t.ORIBUYPRICEDQTY," +
|
|
|
+ " t.ORISELLPLANQTY," +
|
|
|
+ " t.ORISELLPRICEDQTY," +
|
|
|
+ " t.ORIBUYFUTUREQTY," +
|
|
|
+ " t.ORISELLFUTUREQTY," +
|
|
|
+ " t.BUYPLANQTY," +
|
|
|
+ " t.BUYPRICEDQTY," +
|
|
|
+ " t.SELLPLANQTY," +
|
|
|
+ " t.SELLPRICEDQTY," +
|
|
|
+ " t.BUYFUTUREQTY," +
|
|
|
+ " t.SELLFUTUREQTY," +
|
|
|
+ " t.TOTALSPOTQTY," +
|
|
|
+ " t.TOTALFUTUREQTY," +
|
|
|
+ " t.TOTALEXPOSURE," +
|
|
|
+ " t.TOTALHEDGERATIO," +
|
|
|
+ " t.TOTALNEEDHEDGEQTY," +
|
|
|
+ " t.NEEDHEDGEEXPOSOURE," +
|
|
|
+ " t.NEEDHEDGERATIO," +
|
|
|
+ " to_char(t.UPDATETIME, 'yyyy-mm-dd hh24:mi:ss') UPDATETIME," +
|
|
|
+ " t.HEDGEQTY," +
|
|
|
+ " t.ARBITRAGEQTY," +
|
|
|
+ " t.NEEDHEDGEQTY," +
|
|
|
+ " t.NEEDARBITRAGEQTY," +
|
|
|
+ " g.middlegoodsname," +
|
|
|
+ " g.middlegoodscode," +
|
|
|
+ " g.goodsunitid unitid," +
|
|
|
+ " g.needhedgeratio," +
|
|
|
+ " g.needarbitrageratio" +
|
|
|
+ " FROM REPORT_ERMCP_AREAEXPOSURE t" +
|
|
|
+ " LEFT JOIN ERMS_MIDDLEGOODS g" +
|
|
|
+ " on t.middlegoodsid = g.middlegoodsid" +
|
|
|
+ " WHERE 1 = 1"
|
|
|
+ sqlId.And("t.AREAUSERID", r.AREAUSERID)
|
|
|
+ sqlId.And("t.CYCLETYPE", r.CYCLETYPE)
|
|
|
+ sqlId.And("t.CYCLETIME", r.CYCLETIME)
|
|
|
+ return sqlId.String()
|
|
|
+}
|
|
|
+
|
|
|
+// GetDataEx 获取获取敞周期报表
|
|
|
+func (r *Ermcp3ReportExpourse) GetDataEx() (interface{}, error) {
|
|
|
+ sData := make([]Ermcp3ReportExpourse, 0)
|
|
|
+ err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
|
|
|
+ for i := range sData {
|
|
|
+ sData[i].calc()
|
|
|
+ }
|
|
|
+ return sData, err
|
|
|
+}
|