|
|
@@ -3695,3 +3695,61 @@ func (r *Ermcp3ParamChangeApp) GetDataEx() (interface{}, error) {
|
|
|
}
|
|
|
return sData, err
|
|
|
}
|
|
|
+
|
|
|
+// Ermcp3ContractMiddleGoodsCfg 现货合同期现配置信息
|
|
|
+type Ermcp3ContractMiddleGoodsCfg struct {
|
|
|
+ SPOTCONTRACTID string `json:"spotcontractid" xorm:"'SPOTCONTRACTID'" form:"spotcontractid"` // 现货合同ID(602+Unix秒时间戳(10位)+xxxxxx)
|
|
|
+ MIDDLEGOODSPRICEDQTY3 float64 `json:"middlegoodspricedqty3,string" xorm:"'MIDDLEGOODSPRICEDQTY3'"` // 已定价量(套保品种应套保量) = MiddleGoodsPricedQty2 * 套保比率
|
|
|
+ RELATEDMIDDLEGOODSQTY float64 `json:"relatedmiddlegoodsqty,string" xorm:"'RELATEDMIDDLEGOODSQTY'"` // 已关联量(套保品种-期货)
|
|
|
+ AGREEUNIT float64 `json:"agreeunit" xorm:"'AGREEUNIT'"` // 合约乘数
|
|
|
+ CONVERTRATIO float64 `json:"convertratio" xorm:"'CONVERTRATIO'"` // 期货品种系数
|
|
|
+ MIDDLEGOODSID int64 `json:"middlegoodsid" xorm:"'MIDDLEGOODSID'"` // 套保品种ID
|
|
|
+ SRCGOODSGROUPID int `json:"-" xorm:"'SRCGOODSGROUPID'"` // 源商品组id
|
|
|
+ DESTGOODSGROUPID int `json:"-" xorm:"'DESTGOODSGROUPID'"` // 目标商品组id
|
|
|
+
|
|
|
+ PENDINGPRICEDQTY float64 `json:"pendingpricedqty,string"` // 待点价量
|
|
|
+ COVERTQTY int `json:"covertqty"` // 折算手数 =【待点价量 / (合约乘数*期货品种系数) 】
|
|
|
+}
|
|
|
+
|
|
|
+func (r *Ermcp3ContractMiddleGoodsCfg) calc() {
|
|
|
+ r.PENDINGPRICEDQTY = r.MIDDLEGOODSPRICEDQTY3 - r.RELATEDMIDDLEGOODSQTY
|
|
|
+ // 防止除数为0判断
|
|
|
+ if r.AGREEUNIT != 0 && r.CONVERTRATIO > 1e-10 {
|
|
|
+ r.COVERTQTY = int(r.PENDINGPRICEDQTY / (r.AGREEUNIT * r.CONVERTRATIO))
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func (r *Ermcp3ContractMiddleGoodsCfg) buildSql() string {
|
|
|
+ var sqlId utils.SQLVal = `
|
|
|
+select t.MiddleGoodsPricedQty3, t.RelatedMiddleGoodsQty,
|
|
|
+ gogu.agreeunit,
|
|
|
+ gg.convertratio,
|
|
|
+ t.spotcontractid,
|
|
|
+ t.middlegoodsid,
|
|
|
+ gg.srcgoodsgroupid,
|
|
|
+ gg.destgoodsgroupid
|
|
|
+ from ERMCP_SCMiddleGoods t
|
|
|
+ left join ERMCP_SpotContract sc
|
|
|
+ on t.spotcontractid = sc.spotcontractid
|
|
|
+ left join erms_middlegoods m
|
|
|
+ on m.middlegoodsid = t.middlegoodsid
|
|
|
+ and m.areauserid = sc.userid
|
|
|
+ left join ERMCP_GGConvertConfig gg
|
|
|
+ on gg.destgoodsgroupid = m.goodsgroupid
|
|
|
+ left join goodsgroup gogu
|
|
|
+ on gogu.goodsgroupid = gg.srcgoodsgroupid
|
|
|
+ where t.spotcontractid = %v
|
|
|
+`
|
|
|
+ sqlId.FormatParam(r.SPOTCONTRACTID)
|
|
|
+ return sqlId.String()
|
|
|
+}
|
|
|
+
|
|
|
+// GetDataEx 获取现货合同期现配置信息
|
|
|
+func (r *Ermcp3ContractMiddleGoodsCfg) GetDataEx() (interface{}, error) {
|
|
|
+ sData := make([]Ermcp3ContractMiddleGoodsCfg, 0)
|
|
|
+ err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
|
|
|
+ for i := range sData {
|
|
|
+ sData[i].calc()
|
|
|
+ }
|
|
|
+ return sData, err
|
|
|
+}
|