Parcourir la source

新增查询套保商品明细、现货商品明细接口

zou.yingbin il y a 4 ans
Parent
commit
f8edc035b4
8 fichiers modifiés avec 1646 ajouts et 3306 suppressions
  1. 2 2
      controllers/ermcp/qryMiddleGoods.go
  2. 27 7
      controllers/ermcp3/qryErmcp3.go
  3. 278 485
      docs/docs.go
  4. 278 485
      docs/swagger.json
  5. 858 2287
      docs/swagger.yaml
  6. 201 39
      models/ermcp3.go
  7. 1 1
      models/ermcpMiddleGoods.go
  8. 1 0
      routers/router.go

+ 2 - 2
controllers/ermcp/qryMiddleGoods.go

@@ -16,7 +16,7 @@ import (
 
 // 查询套保品种请求
 type QryMiddleGoodsReq struct {
-	UserId uint32 `form:"userid" binding:"required"` //用户ID
+	UserId int64  `form:"userid" binding:"required"` //用户ID
 	Status *int32 `form:"status" binding:"required"` //状态
 }
 
@@ -42,7 +42,7 @@ func QueryMiddleGoods(c *gin.Context) {
 
 // 查询套保品种详情请求
 type QryMiddleGoodsDetailReq struct {
-	UserId        uint32 `form:"userid" binding:"required"` //用户ID
+	UserId        int64  `form:"userid" binding:"required"` //用户ID
 	MiddleGoodsId uint32 `form:"middlegoodsid"`             // 套保品种ID
 }
 

+ 27 - 7
controllers/ermcp3/qryErmcp3.go

@@ -42,8 +42,7 @@ func QueryDeliveryGoods(c *gin.Context) {
 // @Security ApiKeyAuth
 // @Param areauserid query int true "所属机构id"
 // @Param deliverygoodsid query int false "现货商品id"
-// @Param qrytradegoods query int false "是否查询关联交易商品 1-查询"
-// @Success 200 {array} models.ErmcpDeliveryGoodsDetail
+// @Success 200 {array} models.ErmcpDeliveryGoodsDetailEx
 // @Failure 500 {object} app.Response
 // @Router /Ermcp3/QueryDeliveryGoodsDetail [get]
 // @Tags 企业风险管理v3(app)
@@ -51,13 +50,34 @@ func QueryDeliveryGoodsDetail(c *gin.Context) {
 	a := app.GinUtils{Gin: app.Gin{C: c}}
 	req := struct {
 		AreaUserId      int64 `form:"areauserid" binding:"required"` // 所属机构id
-		DeliveryGoodsId int32 `form:"deliverygoodsid"`               // 排除已配置的商品
-		QryTradeGoods   int32 `form:"qrytradegoods"`                 // 查询关联交易商品
+		DeliveryGoodsId int32 `form:"deliverygoodsid"`               // 现货商品id
 	}{}
 	a.DoBindReq(&req)
-	m := models.ErmcpDeliveryGoodsDetail{
-		Data:          models.ErmcpDeliveryGoods{AREAUSERID: req.AreaUserId, DELIVERYGOODSID: req.DeliveryGoodsId},
-		QryTradeGoods: req.QryTradeGoods}
+	m := models.ErmcpDeliveryGoodsDetailEx{}
+	m.Data = models.ErmcpDeliveryGoods{AREAUSERID: req.AreaUserId, DELIVERYGOODSID: req.DeliveryGoodsId}
+	a.DoGetDataI(&m)
+}
+
+// QueryMiddleGoodsDetail
+// @Summary 查询套保品种详情(套保品种/商品详情)
+// @Produce json
+// @Security ApiKeyAuth
+// @Param areauserid query int true  "所属机构ID"
+// @Param middlegoodsid query int false  "套保品种id"
+// @Success 200 {array} models.Ermcp3MiddleGoodsDetailEx
+// @Failure 500 {object} app.Response
+// @Router /Ermcp3/QueryMiddleGoodsDetail [get]
+// @Tags 企业风险管理v3(app)
+func QueryMiddleGoodsDetail(c *gin.Context) {
+	a := app.GinUtils{Gin: app.Gin{C: c}}
+	req := struct {
+		AREAUSERID    int64  `form:"areauserid" binding:"required"` // 所属机构id
+		MIDDLEGOODSID uint32 `form:"middlegoodsid"`                 // 套保品种id
+	}{}
+	a.DoBindReq(&req)
+	m := models.Ermcp3MiddleGoodsDetailEx{}
+	m.Ermcp3MiddleGoodsDetail.Mg.AREAUSERID = req.AREAUSERID
+	m.Ermcp3MiddleGoodsDetail.Mg.MIDDLEGOODSID = req.MIDDLEGOODSID
 	a.DoGetDataI(&m)
 }
 

Fichier diff supprimé car celui-ci est trop grand
+ 278 - 485
docs/docs.go


Fichier diff supprimé car celui-ci est trop grand
+ 278 - 485
docs/swagger.json


Fichier diff supprimé car celui-ci est trop grand
+ 858 - 2287
docs/swagger.yaml


+ 201 - 39
models/ermcp3.go

@@ -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()
+}

+ 1 - 1
models/ermcpMiddleGoods.go

@@ -24,7 +24,7 @@ type ErmcpMiddleGoodsModel struct {
 	QTYDECIMALPLACE  int32   `json:"qtydecimalplace"  xorm:"'QTYDECIMALPLACE'"`   // 数量小数位
 	RELATEDGOODSTYPE int32   `json:"relatedgoodstype"  xorm:"'RELATEDGOODSTYPE'"` // 关联商品类型 - 1:期货合约 2:现货品种
 	NEEDHEDGERATIO   float64 `json:"needhedgeratio"  xorm:"'NEEDHEDGERATIO'"`     // 套保比率
-	AREAUSERID       uint32  `json:"areauserid"  xorm:"'AREAUSERID'"`             // 机构用户ID
+	AREAUSERID       int64   `json:"areauserid"  xorm:"'AREAUSERID'"`             // 机构用户ID
 	GOODSGROUPID     int32   `json:"goodsgroupid"  xorm:"'GOODSGROUPID'"`         // 关联期货品种ID
 	ISVALID          int32   `json:"isvalid"  xorm:"'ISVALID'"`                   // 状态 0-无效(停用) 1-有效(正常)
 	MODIFYTIME       string  `json:"modifytime"  xorm:"'MODIFYTIME'"`             // 修改时间

+ 1 - 0
routers/router.go

@@ -434,6 +434,7 @@ func InitRouter() *gin.Engine {
 		ermcp3R.GET("/QuerySpotGoodsPriceLog", ermcp3.QuerySpotGoodsPriceLog)
 		ermcp3R.GET("/QueryHedgePlan", ermcp3.QueryHedgePlan)
 		ermcp3R.GET("/QueryGoodsGroup", ermcp3.QueryGoodsGroup)
+		ermcp3R.GET("/QueryMiddleGoodsDetail", ermcp3.QueryMiddleGoodsDetail)
 	}
 
 	return r

Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff