|
|
@@ -201,13 +201,9 @@ func (r *ErmcpRelatedGoods) GetData() ([]ErmcpRelatedGoods, error) {
|
|
|
|
|
|
// ErmcpDeliveryGoodsDetail 现货商品详情
|
|
|
type ErmcpDeliveryGoodsDetail struct {
|
|
|
- Data ErmcpDeliveryGoods `json:"data"` // 现货商品基本信息(交割品种)
|
|
|
- GmList []Ermcp3Wrstandard `json:"gmlist"` // 品类列表(仓单标准)
|
|
|
- GbList []Ermcp3Brand `json:"gblist"` // 品牌列表
|
|
|
- WrsList []WRSConverTDetail `json:"wrslist"` // 套保信息列表
|
|
|
- GoodsList []ErmcpRelatedGoods `json:"goodslist"` // 关联交易商品列表
|
|
|
-
|
|
|
- QryTradeGoods int32 `json:"-"` // 是否查询关联交易商品 1-查询
|
|
|
+ Data ErmcpDeliveryGoods `json:"data"` // 现货商品基本信息(交割品种)
|
|
|
+ GmList []Ermcp3Wrstandard `json:"gmlist"` // 品类列表(仓单标准)
|
|
|
+ GbList []Ermcp3Brand `json:"gblist"` // 品牌列表
|
|
|
}
|
|
|
|
|
|
func (r *ErmcpDeliveryGoodsDetail) addGmList(lst []Ermcp3Wrstandard) {
|
|
|
@@ -226,24 +222,8 @@ func (r *ErmcpDeliveryGoodsDetail) addGbList(lst []Ermcp3Brand) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-func (r *ErmcpDeliveryGoodsDetail) addWrsList(lst []WRSConverTDetail) {
|
|
|
- for i := range lst {
|
|
|
- if lst[i].DELIVERYGOODSID == r.Data.DELIVERYGOODSID {
|
|
|
- r.WrsList = append(r.WrsList, lst[i])
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-func (r *ErmcpDeliveryGoodsDetail) addGoodsList(lst []ErmcpRelatedGoods) {
|
|
|
- for i := range lst {
|
|
|
- if lst[i].DELIVERYGOODSID == r.Data.DELIVERYGOODSID {
|
|
|
- r.GoodsList = append(r.GoodsList, lst[i])
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-// GetDataEx
|
|
|
-func (r *ErmcpDeliveryGoodsDetail) GetDataEx() (interface{}, error) {
|
|
|
+// GetData
|
|
|
+func (r *ErmcpDeliveryGoodsDetail) GetData() ([]ErmcpDeliveryGoodsDetail, error) {
|
|
|
sData := make([]ErmcpDeliveryGoodsDetail, 0)
|
|
|
m := ErmcpDeliveryGoods{AREAUSERID: r.Data.AREAUSERID, DELIVERYGOODSID: r.Data.DELIVERYGOODSID}
|
|
|
data, err := m.GetData()
|
|
|
@@ -257,33 +237,210 @@ func (r *ErmcpDeliveryGoodsDetail) GetDataEx() (interface{}, error) {
|
|
|
for i := range data {
|
|
|
val := ErmcpDeliveryGoodsDetail{Data: data[i],
|
|
|
GmList: make([]Ermcp3Wrstandard, 0), GbList: make([]Ermcp3Brand, 0),
|
|
|
- WrsList: make([]WRSConverTDetail, 0), GoodsList: make([]ErmcpRelatedGoods, 0),
|
|
|
}
|
|
|
sData = append(sData, val)
|
|
|
}
|
|
|
//品类/品牌/套保信息
|
|
|
gm := Ermcp3Wrstandard{AREAUSERID: int(r.Data.AREAUSERID), DELIVERYGOODSID: r.Data.DELIVERYGOODSID, ISVALID: 1}
|
|
|
gb := Ermcp3Brand{DELIVERYGOODSID: r.Data.DELIVERYGOODSID}
|
|
|
- WrsC := WRSConverTDetail{DELIVERYGOODSID: r.Data.DELIVERYGOODSID}
|
|
|
gmLst, _ := gm.GetDataEx()
|
|
|
gbLst, _ := gb.GetData()
|
|
|
- wrsLst, _ := WrsC.GetData()
|
|
|
- var goodLst []ErmcpRelatedGoods
|
|
|
- if r.QryTradeGoods == 1 {
|
|
|
- goodsM := ErmcpRelatedGoods{AREAUSERID: r.Data.AREAUSERID, DELIVERYGOODSID: r.Data.DELIVERYGOODSID}
|
|
|
- goodLst, _ = goodsM.GetData()
|
|
|
- }
|
|
|
|
|
|
for i := range sData {
|
|
|
sData[i].addGmList(gmLst.([]Ermcp3Wrstandard))
|
|
|
sData[i].addGbList(gbLst)
|
|
|
- sData[i].addWrsList(wrsLst)
|
|
|
- sData[i].addGoodsList(goodLst)
|
|
|
}
|
|
|
|
|
|
return sData, nil
|
|
|
}
|
|
|
|
|
|
+// GetDataEx
|
|
|
+func (r *ErmcpDeliveryGoodsDetail) GetDataEx() (interface{}, error) {
|
|
|
+ return r.GetData()
|
|
|
+}
|
|
|
+
|
|
|
+// ErmcpDeliveryGoodsDetailEx 现货商品详情(含套保列表)
|
|
|
+type ErmcpDeliveryGoodsDetailEx struct {
|
|
|
+ ErmcpDeliveryGoodsDetail
|
|
|
+ MgList []Ermcp3MiddleGoodsDetail `json:"mgList"` // 套保列表
|
|
|
+}
|
|
|
+
|
|
|
+// GetData 获取现货商品详情(含套保信息列表)
|
|
|
+func (r *ErmcpDeliveryGoodsDetailEx) GetDataEx() (interface{}, error) {
|
|
|
+ sData := make([]ErmcpDeliveryGoodsDetailEx, 0)
|
|
|
+ mDg := r.ErmcpDeliveryGoodsDetail
|
|
|
+ // 查现货商品列表
|
|
|
+ if dgList, err := mDg.GetData(); err == nil {
|
|
|
+ for i := range dgList {
|
|
|
+ sData = append(sData, ErmcpDeliveryGoodsDetailEx{ErmcpDeliveryGoodsDetail: dgList[i],
|
|
|
+ MgList: make([]Ermcp3MiddleGoodsDetail, 0)})
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if len(sData) == 0 {
|
|
|
+ return sData, nil
|
|
|
+ }
|
|
|
+ // 查转换关系
|
|
|
+ mWc := WRSConverTDetail{}
|
|
|
+ if wc, err := mWc.GetData(); err == nil {
|
|
|
+ // 查套保商品列表
|
|
|
+ mMg := Ermcp3MiddleGoodsDetail{}
|
|
|
+ mMg.Mg.AREAUSERID = r.Data.AREAUSERID
|
|
|
+ if mgLst, err := mMg.GetData(); err == nil {
|
|
|
+ for i := range sData {
|
|
|
+ sData[i].addMgList(mgLst, wc)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return sData, nil
|
|
|
+}
|
|
|
+
|
|
|
+// addMgList 添加关联的套保信息列表
|
|
|
+func (r *ErmcpDeliveryGoodsDetailEx) addMgList(lst []Ermcp3MiddleGoodsDetail, wc []WRSConverTDetail) {
|
|
|
+ for i := range wc {
|
|
|
+ if r.Data.DELIVERYGOODSID == wc[i].DELIVERYGOODSID {
|
|
|
+ for k := range lst {
|
|
|
+ if int64(lst[k].Mg.MIDDLEGOODSID) == wc[i].MIDDLEGOODSID {
|
|
|
+ r.MgList = append(r.MgList, lst[k])
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// Ermcp3MiddleGoodsDetail 套保品种详情
|
|
|
+type Ermcp3MiddleGoodsDetail struct {
|
|
|
+ Mg ErmcpMiddleGoodsModel `json:"mg"` // 套保商品信息
|
|
|
+ GList []Ermcp3GoodsEx `json:"glist"` // 关联商品列表
|
|
|
+}
|
|
|
+
|
|
|
+// GetData 获取套保品种详情(不含现货列表)
|
|
|
+func (r *Ermcp3MiddleGoodsDetail) GetData() ([]Ermcp3MiddleGoodsDetail, error) {
|
|
|
+ sData := make([]Ermcp3MiddleGoodsDetail, 0)
|
|
|
+ // 查基本信息
|
|
|
+ mMg := ErmcpMiddleGoodsModel{AREAUSERID: r.Mg.AREAUSERID, MIDDLEGOODSID: r.Mg.MIDDLEGOODSID, ISVALID: 1}
|
|
|
+ if mgLst, err := mMg.GetData2(); err == nil {
|
|
|
+ for i := range mgLst {
|
|
|
+ sData = append(sData, Ermcp3MiddleGoodsDetail{Mg: mgLst[i], GList: make([]Ermcp3GoodsEx, 0)})
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if len(sData) == 0 {
|
|
|
+ return sData, nil
|
|
|
+ }
|
|
|
+ mGoods := Ermcp3GoodsEx{AREAUSERID: r.Mg.AREAUSERID}
|
|
|
+ if gLst, err := mGoods.GetData(); err == nil {
|
|
|
+ for i := range sData {
|
|
|
+ for _, ex := range gLst {
|
|
|
+ if sData[i].Mg.MIDDLEGOODSID == ex.MIDDLEGOODSID {
|
|
|
+ sData[i].GList = append(sData[i].GList, ex)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return sData, nil
|
|
|
+}
|
|
|
+
|
|
|
+// Ermcp3MiddleGoodsDetailEx 套保品种详情(含现货列表)
|
|
|
+type Ermcp3MiddleGoodsDetailEx struct {
|
|
|
+ Ermcp3MiddleGoodsDetail
|
|
|
+ DgList []ErmcpDeliveryGoodsDetail `json:"dglist"` // 关联的现货品种列表
|
|
|
+}
|
|
|
+
|
|
|
+func (r *Ermcp3MiddleGoodsDetailEx) addDgList(dglst []ErmcpDeliveryGoodsDetail, wc []WRSConverTDetail) {
|
|
|
+ for i := range wc {
|
|
|
+ if wc[i].MIDDLEGOODSID == int64(r.Mg.MIDDLEGOODSID) {
|
|
|
+ for _, detail := range dglst {
|
|
|
+ if wc[i].DELIVERYGOODSID == detail.Data.DELIVERYGOODSID {
|
|
|
+ r.DgList = append(r.DgList, detail)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// GetDataEx
|
|
|
+func (r *Ermcp3MiddleGoodsDetailEx) GetDataEx() (interface{}, error) {
|
|
|
+ sData := make([]Ermcp3MiddleGoodsDetailEx, 0)
|
|
|
+ // 查套保品种基本信息
|
|
|
+ m := r.Ermcp3MiddleGoodsDetail
|
|
|
+ if mgLst, err := m.GetData(); err == nil {
|
|
|
+ for i := range mgLst {
|
|
|
+ sData = append(sData, Ermcp3MiddleGoodsDetailEx{Ermcp3MiddleGoodsDetail: mgLst[i],
|
|
|
+ DgList: make([]ErmcpDeliveryGoodsDetail, 0)})
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 查转换关系
|
|
|
+ mWc := WRSConverTDetail{}
|
|
|
+ if wc, err := mWc.GetData(); err == nil {
|
|
|
+ // 查现货商品列表
|
|
|
+ mDg := ErmcpDeliveryGoodsDetail{}
|
|
|
+ mDg.Data.AREAUSERID = r.Mg.AREAUSERID
|
|
|
+ if dgLst, err := mDg.GetData(); err == nil {
|
|
|
+ for i := range sData {
|
|
|
+ sData[i].addDgList(dgLst, wc)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return sData, nil
|
|
|
+}
|
|
|
+
|
|
|
+// Ermcp3GoodsEx 套保品关联的期货商品(少量字段)
|
|
|
+type Ermcp3GoodsEx struct {
|
|
|
+ MIDDLEGOODSID uint32 `json:"middlegoodsid" xorm:"'middlegoodsid'"` // 套保商品id
|
|
|
+ GOODSID int32 `json:"goodsid" xorm:"'goodsid'"` // 期货商品id
|
|
|
+ GOODSCODE string `json:"goodscode" xorm:"'goodscode'"` // 期货商品代码
|
|
|
+ GOODSNAME string `json:"goodsname" xorm:"'goodsname'"` // 期货商品名称
|
|
|
+ GOODUNITID int32 `json:"goodunitid" xorm:"'goodunitid'"` // 期货商品单位id
|
|
|
+ CONVERTRATIO float64 `json:"convertratio" xorm:"'convertratio'"` // 折算系数(品种系数)
|
|
|
+ EXEXCHANGECODE string `json:"exexchangecode" xorm:"'exexchangecode'"` // 交易所代码
|
|
|
+
|
|
|
+ ENUMDICNAME string `json:"enumdicname"` // 单位名称
|
|
|
+ AREAUSERID int64 `json:"-"` // 所属机构id
|
|
|
+}
|
|
|
+
|
|
|
+func (r *Ermcp3GoodsEx) calc() {
|
|
|
+ r.ENUMDICNAME = mtpcache.GetEnumDicitemName(r.GOODUNITID)
|
|
|
+}
|
|
|
+
|
|
|
+func (r *Ermcp3GoodsEx) buildSql() string {
|
|
|
+ var sqlId utils.SQLVal = "select mg.areauserid," +
|
|
|
+ " mg.middlegoodsid," +
|
|
|
+ " g.goodsid," +
|
|
|
+ " g.goodscode," +
|
|
|
+ " g.goodsname," +
|
|
|
+ " g.goodunitid," +
|
|
|
+ " gc.convertratio," +
|
|
|
+ " ex.exexchangecode" +
|
|
|
+ " from erms_middlegoods mg" +
|
|
|
+ " inner join ERMCP_GGConvertConfig gc" +
|
|
|
+ " on mg.goodsgroupid = gc.destgoodsgroupid" +
|
|
|
+ " inner join goodsgroup gp" +
|
|
|
+ " on gc.srcgoodsgroupid = gp.goodsgroupid" +
|
|
|
+ " inner join goods g" +
|
|
|
+ " on gp.goodsgroupid = g.goodsgroupid" +
|
|
|
+ " left join externalexchange ex" +
|
|
|
+ " on gp.exexchangeid = ex.autoid" +
|
|
|
+ " where 1 = 1"
|
|
|
+ sqlId.AndEx("mg.areauserid", r.AREAUSERID, r.AREAUSERID > 0)
|
|
|
+ sqlId.Join(" order by mg.middlegoodsid")
|
|
|
+ return sqlId.String()
|
|
|
+}
|
|
|
+
|
|
|
+// GetData
|
|
|
+func (r *Ermcp3GoodsEx) GetData() ([]Ermcp3GoodsEx, error) {
|
|
|
+ sData := make([]Ermcp3GoodsEx, 0)
|
|
|
+ err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
|
|
|
+ for i := range sData {
|
|
|
+ sData[i].calc()
|
|
|
+ }
|
|
|
+ return sData, err
|
|
|
+}
|
|
|
+
|
|
|
+// GetDataEx
|
|
|
+func (r *Ermcp3GoodsEx) GetDataEx() (interface{}, error) {
|
|
|
+ return r.GetData()
|
|
|
+}
|
|
|
+
|
|
|
// Ermcp3Contract 现货合同
|
|
|
type Ermcp3Contract struct {
|
|
|
SPOTCONTRACTID string `json:"spotcontractid" xorm:"'SPOTCONTRACTID'"` // 现货合同ID(602+Unix秒时间戳(10位)+xxxxxx)
|
|
|
@@ -1706,7 +1863,7 @@ func (r *Ermcp3GoodsGroup) buildSql() string {
|
|
|
if r.ExcludeCfg == 1 {
|
|
|
str := "select t.goodsgroupid" +
|
|
|
" from ERMS_MiddleGoods t" +
|
|
|
- " where t.areauserid = %v" +
|
|
|
+ " where t.isvalid=1 and t.areauserid = %v" +
|
|
|
"union all" +
|
|
|
"select goodsgroupid" +
|
|
|
" from goodsgroup t" +
|
|
|
@@ -1715,15 +1872,15 @@ func (r *Ermcp3GoodsGroup) buildSql() string {
|
|
|
" from erms_middlegoods t" +
|
|
|
" left join goodsgroup g" +
|
|
|
" on t.goodsgroupid = g.goodsgroupid" +
|
|
|
- " where t.areauserid = %v)"
|
|
|
+ " where t.isvalid=1 and t.areauserid = %v)"
|
|
|
str = fmt.Sprintf(str, r.AreaUserId, r.AreaUserId)
|
|
|
sqlId.Join(fmt.Sprintf("and t.groupcategroyid not in(%v)", str))
|
|
|
}
|
|
|
return sqlId.String()
|
|
|
}
|
|
|
|
|
|
-// GetDataEx 商品组信息
|
|
|
-func (r *Ermcp3GoodsGroup) GetDataEx() (interface{}, error) {
|
|
|
+// GetData
|
|
|
+func (r *Ermcp3GoodsGroup) GetData() ([]Ermcp3GoodsGroup, error) {
|
|
|
sData := make([]Ermcp3GoodsGroup, 0)
|
|
|
err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
|
|
|
for i := range sData {
|
|
|
@@ -1731,3 +1888,8 @@ func (r *Ermcp3GoodsGroup) GetDataEx() (interface{}, error) {
|
|
|
}
|
|
|
return sData, err
|
|
|
}
|
|
|
+
|
|
|
+// GetDataEx 商品组信息
|
|
|
+func (r *Ermcp3GoodsGroup) GetDataEx() (interface{}, error) {
|
|
|
+ return r.GetData()
|
|
|
+}
|