|
|
@@ -2553,3 +2553,255 @@ func (r *XHMiddleGoods) GetDataEx() (interface{}, error) {
|
|
|
}
|
|
|
return sData, err
|
|
|
}
|
|
|
+
|
|
|
+// TBMiddleGoods 商品信息-套保品种
|
|
|
+type TBMiddleGoods struct {
|
|
|
+ AREAUSERID int64 `json:"areauserid" xorm:"'AREAUSERID'" form:"areauserid"` // 机构用户ID
|
|
|
+ MIDDLEGOODSID int64 `json:"middlegoodsid" xorm:"'MIDDLEGOODSID'" form:"middlegoodsid"` // 套保品种ID(SEQ_ERMS_MIDDLEGOODS)
|
|
|
+ MIDDLEGOODSCODE string `json:"middlegoodscode" xorm:"'MIDDLEGOODSCODE'"` // 套保品种代码
|
|
|
+ MIDDLEGOODSNAME string `json:"middlegoodsname" xorm:"'MIDDLEGOODSNAME'"` // 套保品种名称
|
|
|
+ NEEDHEDGERATIO float64 `json:"needhedgeratio" xorm:"'NEEDHEDGERATIO'"` // 套保比率
|
|
|
+ NEEDARBITRAGERATIO float64 `json:"needarbitrageratio" xorm:"'NEEDARBITRAGERATIO'"` // 套利比率
|
|
|
+ GOODSGROUPID int64 `json:"-" xorm:"'GOODSGROUPID'"` // 关联期货商品组id
|
|
|
+ ENUMDICNAME string `json:"enumdicname" xorm:"'ENUMDICNAME'"` // 单位名称
|
|
|
+
|
|
|
+ GPLST []TBGoodsGroup // 期货品种列表
|
|
|
+ WDLST []TBWrstandard // 商品信息列表(现货品类)
|
|
|
+}
|
|
|
+
|
|
|
+func (r *TBMiddleGoods) calc() {
|
|
|
+ r.GPLST = make([]TBGoodsGroup, 0)
|
|
|
+ r.WDLST = make([]TBWrstandard, 0)
|
|
|
+}
|
|
|
+
|
|
|
+func (r *TBMiddleGoods) buildSql() string {
|
|
|
+ var sqlId utils.SQLVal = `
|
|
|
+select t.areauserid,
|
|
|
+ t.middlegoodsid,
|
|
|
+ t.middlegoodscode,
|
|
|
+ t.middlegoodsname,
|
|
|
+ t.needhedgeratio,
|
|
|
+ t.needarbitrageratio,
|
|
|
+ t.goodsgroupid,
|
|
|
+ e.enumdicname
|
|
|
+ from erms_middlegoods t
|
|
|
+ left join enumdicitem e
|
|
|
+ on t.goodsunitid = e.enumitemname
|
|
|
+ and e.enumdiccode = 'goodsunit'
|
|
|
+ where 1 = 1 and t.isvalid=1
|
|
|
+`
|
|
|
+ sqlId.AndEx("t.areauserid", r.AREAUSERID, r.AREAUSERID > 0)
|
|
|
+ sqlId.AndEx("t.middlegoodsid", r.MIDDLEGOODSID, r.MIDDLEGOODSID > 0)
|
|
|
+ return sqlId.String()
|
|
|
+}
|
|
|
+
|
|
|
+// GetDataEx 获取商品信息-套保品种
|
|
|
+func (r *TBMiddleGoods) GetDataEx() (interface{}, error) {
|
|
|
+ sData := make([]TBMiddleGoods, 0)
|
|
|
+ err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
|
|
|
+ for i := range sData {
|
|
|
+ sData[i].calc()
|
|
|
+ }
|
|
|
+ if len(sData) > 0 {
|
|
|
+ // 获取关联期货品种
|
|
|
+ m1 := TBGoodsGroup{}
|
|
|
+ if d1, err := m1.GetDataEx(); err == nil {
|
|
|
+ gpLst := d1.([]TBGoodsGroup)
|
|
|
+ for i := range sData {
|
|
|
+ sData[i].addGpLst(gpLst)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取关联现货商品
|
|
|
+ m2 := TBWrstandard{}
|
|
|
+ if d2, err := m2.GetDataEx(); err == nil {
|
|
|
+ wdLst := d2.([]TBWrstandard)
|
|
|
+ for i := range sData {
|
|
|
+ sData[i].addWdLst(wdLst)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return sData, err
|
|
|
+}
|
|
|
+
|
|
|
+func (r *TBMiddleGoods) addGpLst(lst []TBGoodsGroup) {
|
|
|
+ for i := range lst {
|
|
|
+ if r.GOODSGROUPID == lst[i].DESTGOODSGROUPID {
|
|
|
+ r.GPLST = append(r.GPLST, lst[i])
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func (r *TBMiddleGoods) addWdLst(lst []TBWrstandard) {
|
|
|
+ for i := range lst {
|
|
|
+ if r.MIDDLEGOODSID == lst[i].MIDDLEGOODSID {
|
|
|
+ r.WDLST = append(r.WDLST, lst[i])
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// TBGoodsGroup 套保品种/期货品种
|
|
|
+type TBGoodsGroup struct {
|
|
|
+ GOODSGROUPID int64 `json:"goodsgroupid" xorm:"'GOODSGROUPID'"` // 商品组ID(自增ID)
|
|
|
+ GOODSGROUPNAME string `json:"goodsgroupname" xorm:"'GOODSGROUPNAME'"` // 商品组名称
|
|
|
+ GOODUNITID int32 `json:"goodunitid" xorm:"'GOODUNITID'"` // 报价单位ID
|
|
|
+ CONVERTRATIO float64 `json:"convertratio" xorm:"'CONVERTRATIO'"` // 折算系数
|
|
|
+ DESTGOODSGROUPID int64 `json:"-" xorm:"'DESTGOODSGROUPID'"` // 目标商品组id
|
|
|
+ EXEXCHANGECODE string `json:"exexchangecode" xorm:"'EXEXCHANGECODE'"` // 交易所代码
|
|
|
+ EXEXCHANGENAME string `json:"exexchangename" xorm:"'EXEXCHANGENAME'"` // 交易所名称
|
|
|
+ ENUMDICNAME string `json:"enumdicname" xorm:"'ENUMDICNAME'"` // 单位名称
|
|
|
+ GDLST []TBGoods // 商品列表
|
|
|
+}
|
|
|
+
|
|
|
+func (r *TBGoodsGroup) calc() {
|
|
|
+ r.GDLST = make([]TBGoods, 0)
|
|
|
+}
|
|
|
+
|
|
|
+func (r *TBGoodsGroup) buildSql() string {
|
|
|
+ var sqlId utils.SQLVal = `
|
|
|
+select t.goodsgroupid,
|
|
|
+ t.goodsgroupname,
|
|
|
+ t.goodunitid,
|
|
|
+ c.convertratio,
|
|
|
+ c.destgoodsgroupid,
|
|
|
+ ex.exexchangecode,
|
|
|
+ ex.exexchangename,
|
|
|
+ e.enumdicname
|
|
|
+ from goodsgroup t
|
|
|
+ inner join ermcp_ggconvertconfig c
|
|
|
+ on t.goodsgroupid = c.srcgoodsgroupid
|
|
|
+ left join externalexchange ex on t.exexchangeid=ex.autoid
|
|
|
+ left join enumdicitem e
|
|
|
+ on t.goodunitid = e.enumitemname
|
|
|
+ and e.enumdiccode = 'goodsunit'
|
|
|
+ where 1 = 1 and t.goodsgroupstatus=1
|
|
|
+`
|
|
|
+
|
|
|
+ return sqlId.String()
|
|
|
+}
|
|
|
+
|
|
|
+// GetDataEx 获取套保品种/期货品种
|
|
|
+func (r *TBGoodsGroup) GetDataEx() (interface{}, error) {
|
|
|
+ sData := make([]TBGoodsGroup, 0)
|
|
|
+ err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
|
|
|
+ for i := range sData {
|
|
|
+ sData[i].calc()
|
|
|
+ }
|
|
|
+ if len(sData) > 0 {
|
|
|
+ // 获取关联商品
|
|
|
+ m := TBGoods{}
|
|
|
+ if d, err := m.GetDataEx(); err == nil {
|
|
|
+ gdLst := d.([]TBGoods)
|
|
|
+ for i := range sData {
|
|
|
+ sData[i].addGdLst(gdLst)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return sData, err
|
|
|
+}
|
|
|
+
|
|
|
+func (r *TBGoodsGroup) addGdLst(lst []TBGoods) {
|
|
|
+ for i := range lst {
|
|
|
+ if r.GOODSGROUPID == lst[i].GOODSGROUPID {
|
|
|
+ r.GDLST = append(r.GDLST, lst[i])
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// TBGoods 套保品种/期货品种/期货合约
|
|
|
+type TBGoods struct {
|
|
|
+ GOODSID int64 `json:"goodsid" xorm:"'GOODSID'"` // 商品ID(自增ID SEQ_GOODS)
|
|
|
+ GOODSCODE string `json:"goodscode" xorm:"'GOODSCODE'"` // 商品代码(内部)
|
|
|
+ GOODSNAME string `json:"goodsname" xorm:"'GOODSNAME'"` // 商品名称
|
|
|
+ GOODSGROUPID int64 `json:"-" xorm:"'GOODSGROUPID'"` // 所属商品组ID
|
|
|
+ AGREEUNIT float64 `json:"agreeunit" xorm:"'AGREEUNIT'"` // 合约乘数
|
|
|
+ ENUMDICNAME string `json:"enumdicname" xorm:"'ENUMDICNAME'"` // 单位名称
|
|
|
+}
|
|
|
+
|
|
|
+func (r *TBGoods) calc() {
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+func (r *TBGoods) buildSql() string {
|
|
|
+ var sqlId utils.SQLVal = `
|
|
|
+select t.goodsid,
|
|
|
+ t.goodscode,
|
|
|
+ t.goodsname,
|
|
|
+ t.goodsgroupid,
|
|
|
+ t.agreeunit,
|
|
|
+ e.enumdicname
|
|
|
+ from goods t
|
|
|
+ left join enumdicitem e
|
|
|
+ on t.goodunitid = e.enumitemname
|
|
|
+ and e.enumdiccode = 'goodsunit'
|
|
|
+ where 1 = 1
|
|
|
+ and t.goodsstatus not in (4, 5, 6)
|
|
|
+ and t.goodsgroupid in
|
|
|
+ (select srcgoodsgroupid from ermcp_ggconvertconfig)
|
|
|
+`
|
|
|
+
|
|
|
+ return sqlId.String()
|
|
|
+}
|
|
|
+
|
|
|
+// GetDataEx 获取套保品种/期货品种/期货合约
|
|
|
+func (r *TBGoods) GetDataEx() (interface{}, error) {
|
|
|
+ sData := make([]TBGoods, 0)
|
|
|
+ err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
|
|
|
+ for i := range sData {
|
|
|
+ sData[i].calc()
|
|
|
+ }
|
|
|
+ return sData, err
|
|
|
+}
|
|
|
+
|
|
|
+// TBWrstandard 套保品种/商品信息(现货商品)
|
|
|
+type TBWrstandard struct {
|
|
|
+ WRSTANDARDID int64 `json:"wrstandardid" xorm:"'WRSTANDARDID'"` // 现货商品ID(SEQ_WRSTANDARD)
|
|
|
+ WRSTANDARDCODE string `json:"wrstandardcode" xorm:"'WRSTANDARDCODE'"` // 现货商品代码
|
|
|
+ WRSTANDARDNAME string `json:"wrstandardname" xorm:"'WRSTANDARDNAME'"` // 现货商品名称
|
|
|
+ DELIVERYGOODSID int64 `json:"-" xorm:"'DELIVERYGOODSID'"` // 品种ID
|
|
|
+ VATRATE float64 `json:"vatrate" xorm:"'VATRATE'"` // 增值税率
|
|
|
+ DELIVERYGOODSNAME string `json:"deliverygoodsname" xorm:"'DELIVERYGOODSNAME'"` // 品种名称
|
|
|
+ CONVERTRATIO float64 `json:"convertratio" xorm:"'CONVERTRATIO'"` // 折算系数
|
|
|
+ MIDDLEGOODSID int64 `json:"-" xorm:"'MIDDLEGOODSID'"` // 品种id
|
|
|
+ ENUMDICNAME string `json:"enumdicname" xorm:"'ENUMDICNAME'"` // 单位名称
|
|
|
+}
|
|
|
+
|
|
|
+func (r *TBWrstandard) calc() {
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+func (r *TBWrstandard) buildSql() string {
|
|
|
+ var sqlId utils.SQLVal = `
|
|
|
+select t.wrstandardid,
|
|
|
+ t.wrstandardcode,
|
|
|
+ t.wrstandardname,
|
|
|
+ t.deliverygoodsid,
|
|
|
+ t.vatrate,
|
|
|
+ g.deliverygoodsname,
|
|
|
+ c.convertratio,
|
|
|
+ c.middlegoodsid,
|
|
|
+ e.enumdicname
|
|
|
+ from wrstandard t
|
|
|
+ left join deliverygoods g
|
|
|
+ on t.deliverygoodsid = g.deliverygoodsid
|
|
|
+ inner join erms2_wrsconvertdetail c
|
|
|
+ on t.wrstandardid = c.wrstandardid
|
|
|
+ left join enumdicitem e
|
|
|
+ on t.unitid = e.enumitemname
|
|
|
+ and e.enumdiccode = 'goodsunit'
|
|
|
+ where 1 = 1 and t.isvalid=1
|
|
|
+ order by c.middlegoodsid
|
|
|
+`
|
|
|
+
|
|
|
+ return sqlId.String()
|
|
|
+}
|
|
|
+
|
|
|
+// GetDataEx 获取套保品种/商品信息(现货商品)
|
|
|
+func (r *TBWrstandard) GetDataEx() (interface{}, error) {
|
|
|
+ sData := make([]TBWrstandard, 0)
|
|
|
+ err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
|
|
|
+ for i := range sData {
|
|
|
+ sData[i].calc()
|
|
|
+ }
|
|
|
+ return sData, err
|
|
|
+}
|