|
|
@@ -340,19 +340,29 @@ func (r *Ermcp3MiddleGoodsDetail) GetData() ([]Ermcp3MiddleGoodsDetail, error) {
|
|
|
if len(sData) == 0 {
|
|
|
return sData, nil
|
|
|
}
|
|
|
- mGoods := Ermcp3GoodsEx{AREAUSERID: r.Mg.AREAUSERID}
|
|
|
- if gLst, err := mGoods.GetData(); err == nil {
|
|
|
+ bExist := false
|
|
|
+ // 查关联期货商品组
|
|
|
+ mGp := Ermcp3MiddleGoodsRelateGroup{AREAUSERID: r.Mg.AREAUSERID}
|
|
|
+ if gpLst, err := mGp.GetData(); err == nil {
|
|
|
for i := range sData {
|
|
|
- sData[i].addGoodsGroup(gLst)
|
|
|
+ sData[i].addGoodsGroup(gpLst)
|
|
|
}
|
|
|
- for i := range sData {
|
|
|
- sData[i].addGoods(gLst)
|
|
|
+ bExist = len(gpLst) > 0
|
|
|
+ }
|
|
|
+
|
|
|
+ if bExist {
|
|
|
+ mGoods := Ermcp3GoodsEx{AREAUSERID: r.Mg.AREAUSERID}
|
|
|
+ if gLst, err := mGoods.GetData(); err == nil {
|
|
|
+ for i := range sData {
|
|
|
+ sData[i].addGoods(gLst)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
return sData, nil
|
|
|
}
|
|
|
|
|
|
-func (r *Ermcp3MiddleGoodsDetail) addGoodsGroup(gpLst []Ermcp3GoodsEx) {
|
|
|
+func (r *Ermcp3MiddleGoodsDetail) addGoodsGroup(gpLst []Ermcp3MiddleGoodsRelateGroup) {
|
|
|
for i := range gpLst {
|
|
|
if gpLst[i].MIDDLEGOODSID == r.Mg.MIDDLEGOODSID {
|
|
|
bExist := false
|
|
|
@@ -370,6 +380,7 @@ func (r *Ermcp3MiddleGoodsDetail) addGoodsGroup(gpLst []Ermcp3GoodsEx) {
|
|
|
EXEXCHANGECODE: gpLst[i].EXEXCHANGECODE,
|
|
|
GOODSGROUPNAME: gpLst[i].GOODSGROUPNAME,
|
|
|
ENUMDICNAME: gpLst[i].ENUMDICNAME,
|
|
|
+ GOODSUNITID: gpLst[i].GOODSUNITID,
|
|
|
GList: make([]Ermcp3Goods, 0),
|
|
|
}
|
|
|
r.GPList = append(r.GPList, val)
|
|
|
@@ -442,6 +453,58 @@ func (r *Ermcp3MiddleGoodsDetailEx) GetDataEx() (interface{}, error) {
|
|
|
return sData, nil
|
|
|
}
|
|
|
|
|
|
+// Ermcp3MiddleGoodsRelateGroup 套保商品关联的期货商品组
|
|
|
+type Ermcp3MiddleGoodsRelateGroup struct {
|
|
|
+ MIDDLEGOODSID uint32 `json:"middlegoodsid" xorm:"'middlegoodsid'"` // 套保商品id
|
|
|
+ GOODSGROUPID int32 `json:"goodsgroupid" xorm:"'goodsgroupid'"` // 商品组id
|
|
|
+ CONVERTRATIO float64 `json:"convertratio" xorm:"'convertratio'"` // 折算系数(品种系数)
|
|
|
+ EXEXCHANGECODE string `json:"exexchangecode" xorm:"'exexchangecode'"` // 交易所代码
|
|
|
+ GOODSGROUPNAME string `json:"goodsgroupname" xorm:"'goodsgroupname'"` // 商品组名称
|
|
|
+ GOODSUNITID int32 `json:"goodsunitid" xorm:"'GOODUNITID'"` // 单位id
|
|
|
+ ENUMDICNAME string `json:"enumdicname"` // 单位名称
|
|
|
+ AREAUSERID int64 `json:"-"` // 所属机构id
|
|
|
+}
|
|
|
+
|
|
|
+func (r *Ermcp3MiddleGoodsRelateGroup) calc() {
|
|
|
+ r.ENUMDICNAME = mtpcache.GetEnumDicitemName(r.GOODSUNITID)
|
|
|
+}
|
|
|
+
|
|
|
+func (r *Ermcp3MiddleGoodsRelateGroup) buildSql() string {
|
|
|
+ var sqlId utils.SQLVal = "select mg.areauserid," +
|
|
|
+ " mg.middlegoodsid," +
|
|
|
+ " gc.convertratio," +
|
|
|
+ " ex.exexchangecode," +
|
|
|
+ " gp.goodsgroupname," +
|
|
|
+ " gp.goodunitid," +
|
|
|
+ " gp.goodsgroupid" +
|
|
|
+ " from erms_middlegoods mg" +
|
|
|
+ " inner join ERMCP_GGConvertConfig gc" +
|
|
|
+ " on mg.goodsgroupid = gc.destgoodsgroupid" +
|
|
|
+ " inner join goodsgroup gp" +
|
|
|
+ " on gc.srcgoodsgroupid = gp.goodsgroupid" +
|
|
|
+ " left join externalexchange ex" +
|
|
|
+ " on gp.exexchangeid = ex.autoid" +
|
|
|
+ " where mg.isvalid = 1" +
|
|
|
+ " and gp.goodsgroupstatus = 1"
|
|
|
+ sqlId.AndEx("mg.AREAUSERID", r.AREAUSERID, r.AREAUSERID > 0)
|
|
|
+ return sqlId.String()
|
|
|
+}
|
|
|
+
|
|
|
+// GetData 套保品关联的期货商品组信息
|
|
|
+func (r *Ermcp3MiddleGoodsRelateGroup) GetData() ([]Ermcp3MiddleGoodsRelateGroup, error) {
|
|
|
+ sData := make([]Ermcp3MiddleGoodsRelateGroup, 0)
|
|
|
+ err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
|
|
|
+ for i := range sData {
|
|
|
+ sData[i].calc()
|
|
|
+ }
|
|
|
+ return sData, err
|
|
|
+}
|
|
|
+
|
|
|
+// GetDataEx 套保品关联的期货商品组信息
|
|
|
+func (r *Ermcp3MiddleGoodsRelateGroup) GetDataEx() (interface{}, error) {
|
|
|
+ return r.GetData()
|
|
|
+}
|
|
|
+
|
|
|
// Ermcp3GoodsGroupEx 商品组(含商品列表)
|
|
|
type Ermcp3GoodsGroupEx struct {
|
|
|
MIDDLEGOODSID uint32 `json:"middlegoodsid" xorm:"'middlegoodsid'"` // 套保商品id
|
|
|
@@ -449,6 +512,7 @@ type Ermcp3GoodsGroupEx struct {
|
|
|
CONVERTRATIO float64 `json:"convertratio" xorm:"'convertratio'"` // 折算系数(品种系数)
|
|
|
EXEXCHANGECODE string `json:"exexchangecode" xorm:"'exexchangecode'"` // 交易所代码
|
|
|
GOODSGROUPNAME string `json:"goodsgroupname" xorm:"'goodsgroupname'"` // 商品组名称
|
|
|
+ GOODSUNITID int32 `json:"goodsunitid" xorm:"'GOODSUNITID'"` // 单位id
|
|
|
ENUMDICNAME string `json:"enumdicname"` // 单位名称
|
|
|
GList []Ermcp3Goods `json:"glist"` // 合约列表
|
|
|
}
|
|
|
@@ -790,7 +854,7 @@ func (r *Ermcp3SellBuyContract) buildSql() string {
|
|
|
" when t.pricetype = 3 then" +
|
|
|
" t.qty - t.RECKONREALQTY" +
|
|
|
" else" +
|
|
|
- " t.pricedqty - t.ReckonRealQty" +
|
|
|
+ " t.pricedqty - nvl(t.ReckonRealQty,0)" +
|
|
|
" end) unsureqty," +
|
|
|
" t.reckonedamount PayAmount," +
|
|
|
" t.invoiceamount," +
|
|
|
@@ -1960,7 +2024,7 @@ func (r *Ermcp3GoodsGroup) buildSql() string {
|
|
|
str := "select t.goodsgroupid" +
|
|
|
" from ERMS_MiddleGoods t" +
|
|
|
" where t.isvalid=1 and t.areauserid = %v" +
|
|
|
- "union all" +
|
|
|
+ " union all " +
|
|
|
"select goodsgroupid" +
|
|
|
" from goodsgroup t" +
|
|
|
" where t.groupcategroyid not in" +
|