|
|
@@ -252,28 +252,70 @@ func (r *Ermcp2himiddlegoods) GetDataEx() (interface{}, error) {
|
|
|
|
|
|
// Ermcpjrlinkpos 项目期货关联头寸
|
|
|
type Ermcpjrlinkpos struct {
|
|
|
- SPOTCONTRACTID string `json:"spotcontractid" xorm:"SPOTCONTRACTID"` // 现货ID [套期项目ID - 金瑞:合同\虚拟合同ID
|
|
|
- GOODSID int32 `json:"goodsid" xorm:"GOODSID"` // 期货合约
|
|
|
- ORDERTYPE int32 `json:"ordertype" xorm:"ORDERTYPE"` // 单据类型 - 1:期货单 2:看涨期权单 3:看跌期权单
|
|
|
- EXECUTEPRICE int64 `json:"executeprice" xorm:"EXECUTEPRICE"` // 执行价 - 1:期货单 为 0
|
|
|
- OPTIONCODE string `json:"optioncode" xorm:"OPTIONCODE"` // 期权代码
|
|
|
- AREAUSERID int64 `json:"areauserid" xorm:"AREAUSERID"` // 所属企业
|
|
|
- TOTALBUYAMOUNT float64 `json:"totalbuyamount" xorm:"TOTALBUYAMOUNT"` // 买金额 [期货]
|
|
|
- TOTALBUYQTY float64 `json:"totalbuyqty" xorm:"TOTALBUYQTY"` // 买数量
|
|
|
- TOTALSELLAMOUNT float64 `json:"totalsellamount" xorm:"TOTALSELLAMOUNT"` // 卖金额 [期货]
|
|
|
- TOTALSELLQTY float64 `json:"totalsellqty" xorm:"TOTALSELLQTY"` // 卖数量
|
|
|
- NETQTY float64 `json:"netqty" xorm:"NETQTY"` // 净头寸
|
|
|
- TOTALCHARGE float64 `json:"totalcharge" xorm:"TOTALCHARGE"` // 手续费
|
|
|
- TOTALPREMIUM float64 `json:"totalpremium" xorm:"TOTALPREMIUM"` // 权利金 [期权]
|
|
|
- CLOSEPL float64 `json:"closepl" xorm:"CLOSEPL"` // 总平仓盈亏
|
|
|
- UPDATETIME time.Time `json:"updatetime" xorm:"UPDATETIME"` // 更新时间
|
|
|
- TOTALBUYHOLDAMOUNT float64 `json:"totalbuyholdamount" xorm:"TOTALBUYHOLDAMOUNT"` // 买持仓总金额[期货]
|
|
|
- TOTALSELLHOLDAMOUNT float64 `json:"totalsellholdamount" xorm:"TOTALSELLHOLDAMOUNT"` // 卖持仓总金额[期货]
|
|
|
- TODAYFUTURECLOSEPL float64 `json:"todayfutureclosepl" xorm:"TODAYFUTURECLOSEPL"` // 今日平仓盈亏
|
|
|
- RECKONPL float64 `json:"reckonpl" xorm:"RECKONPL"` // 总盈亏(平仓盈亏 + 结算盈亏 - 手续费)
|
|
|
+ SPOTCONTRACTID string `json:"spotcontractid" xorm:"SPOTCONTRACTID" form:"spotcontractid" binding:"required"` // 现货ID [套期项目ID - 金瑞:合同\虚拟合同ID
|
|
|
+ GOODSID int32 `json:"goodsid" xorm:"GOODSID"` // 期货合约
|
|
|
+ ORDERTYPE int32 `json:"ordertype" xorm:"ORDERTYPE"` // 单据类型 - 1:期货单 2:看涨期权单 3:看跌期权单
|
|
|
+ EXECUTEPRICE int64 `json:"executeprice" xorm:"EXECUTEPRICE"` // 执行价 - 1:期货单 为 0
|
|
|
+ OPTIONCODE string `json:"optioncode" xorm:"OPTIONCODE"` // 期权代码
|
|
|
+ AREAUSERID int64 `json:"areauserid" xorm:"AREAUSERID"` // 所属企业
|
|
|
+ TOTALBUYAMOUNT float64 `json:"totalbuyamount" xorm:"TOTALBUYAMOUNT"` // 买金额 [期货]
|
|
|
+ TOTALBUYQTY float64 `json:"totalbuyqty" xorm:"TOTALBUYQTY"` // 买数量
|
|
|
+ TOTALSELLAMOUNT float64 `json:"totalsellamount" xorm:"TOTALSELLAMOUNT"` // 卖金额 [期货]
|
|
|
+ TOTALSELLQTY float64 `json:"totalsellqty" xorm:"TOTALSELLQTY"` // 卖数量
|
|
|
+ NETQTY float64 `json:"netqty" xorm:"NETQTY"` // 净头寸
|
|
|
+ TOTALCHARGE float64 `json:"totalcharge" xorm:"TOTALCHARGE"` // 手续费
|
|
|
+ TOTALPREMIUM float64 `json:"totalpremium" xorm:"TOTALPREMIUM"` // 权利金 [期权]
|
|
|
+ CLOSEPL float64 `json:"closepl" xorm:"CLOSEPL"` // 总平仓盈亏
|
|
|
+ UPDATETIME time.Time `json:"updatetime" xorm:"UPDATETIME"` // 更新时间
|
|
|
+ TOTALBUYHOLDAMOUNT float64 `json:"totalbuyholdamount" xorm:"TOTALBUYHOLDAMOUNT"` // 买持仓总金额[期货]
|
|
|
+ TOTALSELLHOLDAMOUNT float64 `json:"totalsellholdamount" xorm:"TOTALSELLHOLDAMOUNT"` // 卖持仓总金额[期货]
|
|
|
+ TODAYFUTURECLOSEPL float64 `json:"todayfutureclosepl" xorm:"TODAYFUTURECLOSEPL"` // 今日平仓盈亏
|
|
|
+ RECKONPL float64 `json:"reckonpl" xorm:"RECKONPL"` // 总盈亏(平仓盈亏 + 结算盈亏 - 手续费)
|
|
|
+
|
|
|
+ Middlegoodsname string `json:"middlegoodsname" xorm:"'MIDDLEGOODSNAME'"` // 套保商品名称
|
|
|
+ Middlegoodscode string `json:"middlegoodscode" xorm:"'MIDDLEGOODSCODE'"` // 套保商品代码
|
|
|
+ FUTUREHEDGEQTY float64 `json:"futurehedgeqty" xorm:"FUTUREHEDGEQTY"` // 期货套期量
|
|
|
+
|
|
|
+ AVERAGEPRICE float64 `json:"averageprice" xorm:"AVERAGEPRICE"` // 持仓均价 (TotalBuyHoldAmount - TotalSellHoldAmount) / NetQty
|
|
|
}
|
|
|
|
|
|
// TableName is ERMCP_JR_LINKPOS
|
|
|
func (r *Ermcpjrlinkpos) TableName() string {
|
|
|
return "ERMCP_JR_LINKPOS"
|
|
|
}
|
|
|
+
|
|
|
+func (r *Ermcpjrlinkpos) calc() {
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+func (r *Ermcpjrlinkpos) buildSql() string {
|
|
|
+ var sqlId utils.SQLVal = `
|
|
|
+ SELECT
|
|
|
+ to_char(t.SPOTCONTRACTID) SPOTCONTRACTID,
|
|
|
+ t.ORDERTYPE,
|
|
|
+ t.OPTIONCODE,
|
|
|
+ t.CLOSEPL,
|
|
|
+ t.NETQTY,
|
|
|
+ ((t.TotalBuyHoldAmount - t.TotalSellHoldAmount) / NetQty) AVERAGEPRICE
|
|
|
+ FROM ERMCP_JR_LinkPos t
|
|
|
+ WHERE t.SPOTCONTRACTID = %v
|
|
|
+ ORDER BY t.OPTIONCODE
|
|
|
+ `
|
|
|
+ sqlId.FormatParam(r.SPOTCONTRACTID)
|
|
|
+
|
|
|
+ return sqlId.String()
|
|
|
+}
|
|
|
+
|
|
|
+// GetDataEx 从数据库中查询数据
|
|
|
+func (r *Ermcpjrlinkpos) GetDataEx() (interface{}, error) {
|
|
|
+ e := db.GetEngine()
|
|
|
+ s := e.SQL(r.buildSql())
|
|
|
+ sData := make([]Ermcpjrlinkpos, 0)
|
|
|
+ if err := s.Find(&sData); err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ for i := range sData {
|
|
|
+ sData[i].calc()
|
|
|
+ }
|
|
|
+ return sData, nil
|
|
|
+}
|