Explorar o código

增加接口:查套保品种详情

zou.yingbin %!s(int64=4) %!d(string=hai) anos
pai
achega
5981823c54
Modificáronse 3 ficheiros con 112 adicións e 4 borrados
  1. 35 0
      controllers/ermcp/qryMiddleGoods.go
  2. 76 4
      models/ermcpMiddleGoods.go
  3. 1 0
      routers/router.go

+ 35 - 0
controllers/ermcp/qryMiddleGoods.go

@@ -9,7 +9,9 @@ package ermcp
 import (
 	"github.com/gin-gonic/gin"
 	"mtp2_if/global/app"
+	"mtp2_if/global/e"
 	"mtp2_if/models"
+	"net/http"
 )
 
 // 查询套保品种请求
@@ -36,4 +38,37 @@ func QueryMiddleGoods(c *gin.Context) {
 	appG.DoBindReq(&req)
 	m := models.ErmcpMiddleGoodsModel{AREAUSERID: req.UserId, ISVALID: *req.Status}
 	appG.DoGetData(&m)
+}
+
+// 查询套保品种详情请求
+type QryMiddleGoodsDetailReq struct {
+	UserId uint32 `form:"userid" binding:"required"` //用户ID
+	MiddleGoodsId uint32 `form:"middlegoodsid" binding:"required"` // 套保品种ID
+}
+
+// 查询套保品种详情应答
+type QryMiddleGoodsDetailRsp models.ErmcpMiddleGoodsDetail
+
+// @Summary 查询套保品种详情(菜单:套保品种/商品详情)
+// @Produce json
+// @Security ApiKeyAuth
+// @Param userid query int true  "所属机构ID"
+// @Param middlegoodsid query int true  "套保品种id"
+// @Success 200 {array} QryMiddleGoodsDetailRsp
+// @Failure 500 {object} app.Response
+// @Router /Ermcp/QueryMiddleGoodsDetail [get]
+// @Tags 企业风险管理(app)
+func QueryMiddleGoodsDetail(c *gin.Context) {
+	appG := app.Gin{C: c}
+	var req QryMiddleGoodsDetailReq
+	if err := c.ShouldBind(&req); err != nil {
+		appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
+		return
+	}
+	m := models.ErmcpMiddleGoodsDetail{Mg: models.ErmcpMiddleGoodsModel{AREAUSERID: req.UserId, MIDDLEGOODSID: req.MiddleGoodsId}}
+	if d, err := m.GetData(); err == nil {
+		appG.Response(http.StatusOK, e.SUCCESS, d)
+	} else {
+		appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil)
+	}
 }

+ 76 - 4
models/ermcpMiddleGoods.go

@@ -38,7 +38,7 @@ func (r *ErmcpMiddleGoodsModel) Calc() {
 // 获取套保品种数据
 func (r *ErmcpMiddleGoodsModel) GetData() ([]interface{}, error) {
 	sData := make([]ErmcpMiddleGoodsModel, 0)
-	if err := db.GetEngine().SQL(r.buildSql()).Find(&sData); err != nil{
+	if err := db.GetEngine().SQL(r.buildSql()).Find(&sData); err != nil {
 		logger.GetLogger().Error(err)
 		return nil, err
 	}
@@ -49,6 +49,19 @@ func (r *ErmcpMiddleGoodsModel) GetData() ([]interface{}, error) {
 	return iData, nil
 }
 
+// 获取套保品种数据2
+func (r *ErmcpMiddleGoodsModel) GetData2() ([]ErmcpMiddleGoodsModel, error) {
+	sData := make([]ErmcpMiddleGoodsModel, 0)
+	if err := db.GetEngine().SQL(r.buildSql()).Find(&sData); err != nil {
+		logger.GetLogger().Error(err)
+		return nil, err
+	}
+	for i := range sData {
+		sData[i].Calc()
+	}
+	return sData, nil
+}
+
 func (r *ErmcpMiddleGoodsModel) buildSql() string {
 	sqlId := "select MIDDLEGOODSID," +
 		"       MIDDLEGOODSNAME," +
@@ -65,9 +78,68 @@ func (r *ErmcpMiddleGoodsModel) buildSql() string {
 		"       ISVALID" +
 		"  from erms_middlegoods t" +
 		"  where 1=1 "
-	if r.AREAUSERID > 0{
+	if r.AREAUSERID > 0 {
 		sqlId = sqlId + fmt.Sprintf(" and AREAUSERID = %v", r.AREAUSERID)
 	}
-	sqlId = sqlId + fmt.Sprintf(" and ISVALID=%v", r.ISVALID)
+	if r.ISVALID >= 0{
+		sqlId = sqlId + fmt.Sprintf(" and ISVALID=%v", r.ISVALID)
+	}
 	return sqlId
-}
+}
+
+///////////////////////////////
+
+// 期货品种折算配置表
+type GoodsGroupConvert struct {
+	Middlegoodsid  uint32  `json:"middlegoodsid"  xorm:"'Middlegoodsid'"`   // 套保品种ID
+	Convertratio   float64 `json:"convertratio"  xorm:"'Convertratio'"`     // 折算系数
+	Goodsgroupid   int32   `json:"goodsgroupid"  xorm:"'Goodsgroupid'"`     // 期货品种ID
+	Goodsgroupname string  `json:"goodsgroupname"  xorm:"'Goodsgroupname'"` // 期货品种名称
+	Outergroupcode string  `json:"outergroupcode"  xorm:"'Outergroupcode'"` // 期货品种代码
+}
+
+func (r *GoodsGroupConvert) buildSql() string {
+	sqlId := "select t.middlegoodsid," +
+		"       t.convertratio," +
+		"       t.goodsgroupid," +
+		"       g.goodsgroupname," +
+		"       g.outergroupcode" +
+		"  from erms_goodsgroupconvert t" +
+		"  left join goodsgroup g" +
+		"    on t.goodsgroupid = g.goodsgroupid" +
+		" where 1=1"
+	if r.Middlegoodsid > 0 {
+		sqlId = sqlId + fmt.Sprintf(" and Middlegoodsid=%v", r.Middlegoodsid)
+	}
+	return sqlId
+}
+
+// 获取期货品种配置详情
+func (r *GoodsGroupConvert) GetData() ([]GoodsGroupConvert, error) {
+	sData := make([]GoodsGroupConvert, 0)
+	err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
+	return sData, err
+}
+
+// 套保品种详情
+type ErmcpMiddleGoodsDetail struct {
+	Mg     ErmcpMiddleGoodsModel // 套保品种基本信息
+	CvList []GoodsGroupConvert   // 期货品种折算列表
+}
+
+// 获取套保品种详情
+func (r *ErmcpMiddleGoodsDetail) GetData() (ErmcpMiddleGoodsDetail, error) {
+	// 查基本信息
+	m := ErmcpMiddleGoodsModel{AREAUSERID: r.Mg.AREAUSERID, MIDDLEGOODSID: r.Mg.MIDDLEGOODSID, ISVALID: -1}
+	d, err := m.GetData2()
+	if err != nil || len(d) == 0 {
+		return ErmcpMiddleGoodsDetail{}, fmt.Errorf("no record")
+	}
+	rsp := ErmcpMiddleGoodsDetail{Mg: d[0]}
+	// 查折算表
+	md := GoodsGroupConvert{Middlegoodsid: r.Mg.MIDDLEGOODSID}
+	if val, err := md.GetData(); err == nil {
+		rsp.CvList = val
+	}
+	return rsp, nil
+}

+ 1 - 0
routers/router.go

@@ -325,6 +325,7 @@ func InitRouter() *gin.Engine {
 		ermcpR.GET("/QueryExposureSpotDetail", ermcp.QueryExposureSpotDetail)
 		ermcpR.GET("/QueryHisExposure", ermcp.QueryHisExposure)
 		ermcpR.GET("/QueryMiddleGoods", ermcp.QueryMiddleGoods)
+		ermcpR.GET("/QueryMiddleGoodsDetail", ermcp.QueryMiddleGoodsDetail)
 	}
 
 	return r