|
|
@@ -252,25 +252,25 @@ func (r *Ermcp2himiddlegoods) GetDataEx() (interface{}, error) {
|
|
|
|
|
|
// Ermcpjrlinkpos 项目期货关联头寸
|
|
|
type Ermcpjrlinkpos struct {
|
|
|
- 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"` // 总盈亏(平仓盈亏 + 结算盈亏 - 手续费)
|
|
|
+ SPOTCONTRACTID string `json:"spotcontractid" xorm:"SPOTCONTRACTID" form:"hedgeditemid" 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'"` // 套保商品代码
|
|
|
@@ -296,11 +296,17 @@ func (r *Ermcpjrlinkpos) buildSql() string {
|
|
|
t.OPTIONCODE,
|
|
|
t.CLOSEPL,
|
|
|
t.NETQTY,
|
|
|
- ((t.TotalBuyHoldAmount - t.TotalSellHoldAmount) / NetQty) AVERAGEPRICE
|
|
|
- FROM ERMCP_JR_LinkPos t
|
|
|
- WHERE t.SPOTCONTRACTID = %v
|
|
|
+ ((t.TotalBuyHoldAmount - t.TotalSellHoldAmount) / NetQty) AVERAGEPRICE,
|
|
|
+ mg.middlegoodsname,
|
|
|
+ mg.middlegoodscode
|
|
|
+ FROM ERMCP_JR_LinkPos t
|
|
|
+ LEFT JOIN Goods g ON g.goodsid = t.goodsid
|
|
|
+ LEFT JOIN ERMCP_GGConvertConfig gc on gc.srcgoodsgroupid = g.goodsgroupid
|
|
|
+ LEFT JOIN ERMS_MiddleGoods mg ON mg.goodsgroupid = gc.destgoodsgroupid
|
|
|
+ WHERE mg.areauserid = t.areauserid AND t.SPOTCONTRACTID = %v
|
|
|
ORDER BY t.OPTIONCODE
|
|
|
`
|
|
|
+ // 只有期货合约ID(GoodsID)的情况下获取套保商品名称,需要以上的关联
|
|
|
sqlId.FormatParam(r.SPOTCONTRACTID)
|
|
|
|
|
|
return sqlId.String()
|
|
|
@@ -319,3 +325,73 @@ func (r *Ermcpjrlinkpos) GetDataEx() (interface{}, error) {
|
|
|
}
|
|
|
return sData, nil
|
|
|
}
|
|
|
+
|
|
|
+// Ermcp2hedgeditemspot 项目现货明细
|
|
|
+type Ermcp2hedgeditemspot struct {
|
|
|
+ HEDGEDITEMSPOTID string `json:"hedgeditemspotid" xorm:"HEDGEDITEMSPOTID"` // 现货明细ID(625+Unix秒时间戳(10位)+xxxxxx)
|
|
|
+ HEDGEDITEMID string `json:"hedgeditemid" xorm:"HEDGEDITEMID" form:"hedgeditemid" binding:"required"` // 被套期项目ID
|
|
|
+ HEDGEDTYPE int32 `json:"hedgedtype" xorm:"HEDGEDTYPE"` // 套期类型[计划类型] - 1:采购计划项目 2:销售计划项目 3:现货贸易项目 4:库存存货项目 5:定价采购合同项目
|
|
|
+ SPOTTYPE int32 `json:"spottype" xorm:"SPOTTYPE"` // 现货类型 - 1:采购计划 2:销售计划 3:采购合同 4:销售合同 5:库存存货
|
|
|
+ RELATEDTYPE int32 `json:"relatedtype" xorm:"RELATEDTYPE"` // 关联类型 - 1:套期关联 2:执行关联
|
|
|
+ RELATEDHEDGEPLANID int64 `json:"relatedhedgeplanid" xorm:"RELATEDHEDGEPLANID"` // 关联计划ID 【1:采购计划 2:销售计划】
|
|
|
+ RELATEDSPOTCONTRACTID int64 `json:"relatedspotcontractid" xorm:"RELATEDSPOTCONTRACTID"` // 关联合同ID 【3:采购合同 4:销售合同】
|
|
|
+ CUSTOMERUSERID int64 `json:"customeruserid" xorm:"CUSTOMERUSERID"` // 对手方 【3:采购合同 4:销售合同】
|
|
|
+ DELIVERYGOODSID int64 `json:"deliverygoodsid" xorm:"DELIVERYGOODSID"` // 现货品种ID
|
|
|
+ WRSTANDARDID int64 `json:"wrstandardid" xorm:"WRSTANDARDID"` // 现货商品ID
|
|
|
+ SPOTGOODSBRANDID int32 `json:"spotgoodsbrandid" xorm:"SPOTGOODSBRANDID"` // 现货品牌ID - 存“DGFactoryItem”表"DGFactoryItemID" = 2
|
|
|
+ RELATEDQTY float64 `json:"relatedqty" xorm:"RELATEDQTY"` // 关联数量[数量]
|
|
|
+ ORIAVGPRICE float64 `json:"oriavgprice" xorm:"ORIAVGPRICE"` // 期初市场价[当初市场价]
|
|
|
+ RELATEDAMOUNT float64 `json:"relatedamount" xorm:"RELATEDAMOUNT"` // 市价总额 = 关联数量 * 期初市场价
|
|
|
+ SPOTPRICEDAMOUNT float64 `json:"spotpricedamount" xorm:"SPOTPRICEDAMOUNT"` // 定价总额
|
|
|
+ SPOTPRICEDAVGPRICE float64 `json:"spotpricedavgprice" xorm:"SPOTPRICEDAVGPRICE"` // 现货均价 = 定价总额 / 关联数量
|
|
|
+ CREATETIME time.Time `json:"createtime" xorm:"CREATETIME"` // 创建时间
|
|
|
+ TRADEUSERID int64 `json:"tradeuserid" xorm:"TRADEUSERID"` // 交易用户ID
|
|
|
+ AREAUSERID int64 `json:"areauserid" xorm:"AREAUSERID"` // 企业ID
|
|
|
+
|
|
|
+ Wrstandardname string `json:"wrstandardname" xorm:"'WRSTANDARDNAME'"` // 现货商品
|
|
|
+ EnumdicName string `json:"enumdicname" xorm:"'ENUMDICNAME'"` // 单位
|
|
|
+ Hedgeplanno string `json:"hedgeplanno" xorm:"'HEDGEPLANNO'"` // 计划编号
|
|
|
+}
|
|
|
+
|
|
|
+// TableName is ERMCP2_HEDGEDITEMSPOT
|
|
|
+func (r *Ermcp2hedgeditemspot) TableName() string {
|
|
|
+ return "ERMCP2_HEDGEDITEMSPOT"
|
|
|
+}
|
|
|
+
|
|
|
+func (r *Ermcp2hedgeditemspot) calc() {
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+func (r *Ermcp2hedgeditemspot) buildSql() string {
|
|
|
+ var sqlId utils.SQLVal = `
|
|
|
+ SELECT
|
|
|
+ to_char(t.hedgeditemspotid) HEDGEDITEMSPOTID,
|
|
|
+ to_char(t.hedgeditemid) HEDGEDITEMID,
|
|
|
+ t.HEDGEDTYPE,
|
|
|
+ wr.WRSTANDARDNAME,
|
|
|
+ e.ENUMDICNAME,
|
|
|
+ t.RELATEDQTY,
|
|
|
+ t.ORIAVGPRICE
|
|
|
+ FROM ERMCP2_HEDGEDITEMSPOT t
|
|
|
+ LEFT JOIN WRStandard wr ON wr.wrstandardid = t.wrstandardid
|
|
|
+ LEFT JOIN enumdicitem e on wr.unitid=e.enumitemname and e.enumdiccode='goodsunit'
|
|
|
+ LEFT JOIN ermcp_hedgeplan s ON s.HedgePlanID = t.RELATEDHEDGEPLANID
|
|
|
+ `
|
|
|
+ sqlId.FormatParam(r.HEDGEDITEMID)
|
|
|
+
|
|
|
+ return sqlId.String()
|
|
|
+}
|
|
|
+
|
|
|
+// GetDataEx 从数据库中查询数据
|
|
|
+func (r *Ermcp2hedgeditemspot) GetDataEx() (interface{}, error) {
|
|
|
+ e := db.GetEngine()
|
|
|
+ s := e.SQL(r.buildSql())
|
|
|
+ sData := make([]Ermcp2hedgeditemspot, 0)
|
|
|
+ if err := s.Find(&sData); err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ for i := range sData {
|
|
|
+ sData[i].calc()
|
|
|
+ }
|
|
|
+ return sData, nil
|
|
|
+}
|