|
|
@@ -3273,6 +3273,99 @@ func (r *Ermcp3SCMiddleGoods) GetDataEx() (interface{}, error) {
|
|
|
return sData, err
|
|
|
}
|
|
|
|
|
|
+// Ermcp3HPMiddleGoods 业务关联套保计划
|
|
|
+type Ermcp3HPMiddleGoods struct {
|
|
|
+ USERID int64 `json:"userid" xorm:"'USERID'" form:"userid"` // 用户id
|
|
|
+ CUSTOMERUSERID int64 `json:"customeruserid" xorm:"'CUSTOMERUSERID'"` // 对手id
|
|
|
+ CUSTOMERNAME string `json:"customername" xorm:"'CUSTOMERNAME'" form:"customername"` // 对手手名称
|
|
|
+ HEDGEPLANNO string `json:"hedgeplanno" xorm:"'HEDGEPLANNO'" form:"hedgeplanno"` // 计划编号
|
|
|
+ HEDGEPLANID string `json:"hedgeplanid" xorm:"'HEDGEPLANID'"` // 计划id
|
|
|
+ WRSTANDARDID int64 `json:"wrstandardid" xorm:"'WRSTANDARDID'"` // 现货商品id
|
|
|
+ WRSTANDARDCODE string `json:"wrstandardcode" xorm:"'WRSTANDARDCODE'"` // 现货商品代码
|
|
|
+ WRSTANDARDNAME string `json:"wrstandardname" xorm:"'WRSTANDARDNAME'" form:"wrstandardname"` // 现货商品名称
|
|
|
+ UNITID int32 `json:"unitid" xorm:"'UNITID'"` // 现货单位id
|
|
|
+ VATRATE float64 `json:"vatrate" xorm:"'VATRATE'"` // 增值税率
|
|
|
+ MIDDLEGOODSPLANQTY3 float64 `json:"middlegoodsplanqty3" xorm:"'middlegoodsplanqty3'"` // 应套保计划量
|
|
|
+ RELATEDMIDDLEGOODSQTY float64 `json:"relatedmiddlegoodsqty" xorm:"'RELATEDMIDDLEGOODSQTY'"` // 已关联量(套保品种)(期货)
|
|
|
+ PRICEDQTY float64 `json:"pricedqty" xorm:"'PRICEDQTY'"` // 已定价量
|
|
|
+ MIDDLEGOODSID int64 `json:"middlegoodsid" xorm:"'MIDDLEGOODSID'"` // 套保品种ID
|
|
|
+ NEEDHEDGERATIO float64 `json:"needhedgeratio" xorm:"'NEEDHEDGERATIO'"` // 套保比例
|
|
|
+ CONTRACTTYPE int `json:"contracttype" xorm:"'CONTRACTTYPE'"` // 合同类型 1:采购 -1:销售
|
|
|
+ ENUMDICNAME string `json:"enumdicname" xorm:"'ENUMDICNAME'"` // 现货单位名称
|
|
|
+ BIZTYPE int `json:"biztype" xorm:"'BIZTYPE'" form:"biztype"` // 业务类型 1:套保 2:套利
|
|
|
+ CONVERTRATIO float64 `json:"convertratio" xorm:"'CONVERTRATIO'"` // 折算系数
|
|
|
+
|
|
|
+ BUYORSELL int32 `json:"-" form:"buyorsell"` // 买卖方向, 用作筛选
|
|
|
+ GOODSGROUPID int32 `json:"-" form:"goodsgroupid"` // 期货商品组id, 用作筛选
|
|
|
+}
|
|
|
+
|
|
|
+func (r *Ermcp3HPMiddleGoods) calc() {
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+func (r *Ermcp3HPMiddleGoods) buildSql() string {
|
|
|
+ var sqlId utils.SQLVal = `
|
|
|
+with tmp as
|
|
|
+ (select k.configid,
|
|
|
+ k.srcgoodsgroupid,
|
|
|
+ k.destgoodsgroupid,
|
|
|
+ k.convertratio,
|
|
|
+ m.middlegoodsid
|
|
|
+ from ermcp_ggconvertconfig k
|
|
|
+ inner join erms_middlegoods m
|
|
|
+ on k.destgoodsgroupid = m.goodsgroupid)
|
|
|
+select s.areauserid userid,
|
|
|
+ s.hedgeplanno,
|
|
|
+ s.contracttype,
|
|
|
+ s.biztype,
|
|
|
+ to_char(s.hedgeplanid) hedgeplanid,
|
|
|
+ w.wrstandardid,
|
|
|
+ w.wrstandardcode,
|
|
|
+ w.wrstandardname,
|
|
|
+ w.unitid,
|
|
|
+ w.vatrate,
|
|
|
+ t.middlegoodsplanqty3,
|
|
|
+ t.relatedmiddlegoodsqty,
|
|
|
+ t.planqty,
|
|
|
+ t.middlegoodsid,
|
|
|
+ mg.needhedgeratio,
|
|
|
+ e.enumdicname,
|
|
|
+ tmp.convertratio
|
|
|
+ from ermcp_hpmiddlegoods t
|
|
|
+ inner join ermcp_hedgeplan s
|
|
|
+ on t.hedgeplanid = s.hedgeplanid
|
|
|
+ left join wrstandard w
|
|
|
+ on t.wrstandardid = w.wrstandardid
|
|
|
+ left join erms_middlegoods mg
|
|
|
+ on t.middlegoodsid = mg.middlegoodsid
|
|
|
+ left join enumdicitem e on w.unitid=e.enumitemname and e.enumdiccode='goodsunit'
|
|
|
+ inner join tmp on t.middlegoodsid=tmp.middlegoodsid and tmp.srcgoodsgroupid = %v
|
|
|
+ where 1 = 1 and t.middlegoodsplanqty3 > t.relatedmiddlegoodsqty and s.hedgeplanstatus = 2
|
|
|
+`
|
|
|
+ sqlId.FormatParam(r.GOODSGROUPID)
|
|
|
+ if r.BUYORSELL == 0 {
|
|
|
+ r.CONTRACTTYPE = -1
|
|
|
+ } else {
|
|
|
+ r.CONTRACTTYPE = 1
|
|
|
+ }
|
|
|
+ sqlId.And("s.CONTRACTTYPE", r.CONTRACTTYPE)
|
|
|
+ sqlId.JoinFormat(" and %v in(s.areauserid, s.tradeuserid)", r.USERID)
|
|
|
+ sqlId.AndLike("s.HEDGEPLANNO", r.HEDGEPLANNO)
|
|
|
+ sqlId.AndLike("w.wrstandardname", r.WRSTANDARDNAME)
|
|
|
+
|
|
|
+ return sqlId.String()
|
|
|
+}
|
|
|
+
|
|
|
+// GetDataEx 获取业务关联套保计划
|
|
|
+func (r *Ermcp3HPMiddleGoods) GetDataEx() (interface{}, error) {
|
|
|
+ sData := make([]Ermcp3HPMiddleGoods, 0)
|
|
|
+ err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
|
|
|
+ for i := range sData {
|
|
|
+ sData[i].calc()
|
|
|
+ }
|
|
|
+ return sData, err
|
|
|
+}
|
|
|
+
|
|
|
// Ermcp3TradeLinkDetail 期现关联记录
|
|
|
type Ermcp3TradeLinkDetail struct {
|
|
|
LINKDETAILID string `json:"linkdetailid" xorm:"LINKDETAILID" form:"linkdetailid"` // 关联ID(614+Unix秒时间戳(10位)+xxxxxx)
|