Parcourir la source

增加查询敞口明细接口

zou.yingbin il y a 4 ans
Parent
commit
a22ae9c0dd
3 fichiers modifiés avec 120 ajouts et 2 suppressions
  1. 39 2
      controllers/ermcp/qryExposure.go
  2. 80 0
      models/ermcpExposure.go
  3. 1 0
      routers/router.go

+ 39 - 2
controllers/ermcp/qryExposure.go

@@ -37,16 +37,53 @@ type RealtimeExposureRsp models.ErmcpRealExposureModel
 func QueryRealtimeExposure(c *gin.Context) {
 	appG := app.Gin{C: c}
 	var req RealtimeExposureReq
-	if err := c.ShouldBind(&req); err != nil{
+	if err := c.ShouldBind(&req); err != nil {
 		logger.GetLogger().Errorf("QueryRealtimeExposure fail, %v", err)
 		appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
 		return
 	}
 
 	m := models.ErmcpRealExposureModel{AreaUserID: req.AreaUserID}
+	if d, err := m.GetData(); err == nil {
+		appG.Response(http.StatusOK, e.SUCCESS, d)
+	} else {
+		appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil)
+	}
+}
+
+/***********************敞口明细*************************/
+
+//敞口现货明细请求
+type ExposureDetailReq struct {
+	AreaUserId    uint32 `form:"areaUserId" json:"areaUserId"`       // 所属机构ID
+	MiddleGoodsId int32 `form:"middleGoodsId" json:"middlegoodsid"` // 套保商品
+}
+
+//敞口现货明细响应
+type ExposureDetailRsp models.ErmcpExposureDetailModel
+
+// QueryUserInfo 查询敞口现货明细
+// @Summary 查询敞口现货明细
+// @Produce json
+// @Security ApiKeyAuth
+// @Param areaUserId query int true "所属机构ID"
+// @Param middleGoodsId query int true "套保商品"
+// @Success 200 {array} ExposureDetailRsp
+// @Failure 500 {object} app.Response
+// @Router /Ermcp/QueryExposureDetail [get]
+// @Tags 企业风险管理(app)
+func QueryExposureDetail(c *gin.Context) {
+	appG := app.Gin{C: c}
+	var req ExposureDetailReq
+	if err := c.ShouldBind(&req); err != nil{
+		appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
+		return
+	}
+
+	var m = models.ErmcpExposureDetailModel{Areauserid: req.AreaUserId, MiddlegoodsId: req.MiddleGoodsId}
 	if d, err := m.GetData(); err == nil{
 		appG.Response(http.StatusOK, e.SUCCESS, d)
-	}else{
+	}else {
 		appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil)
 	}
 }

+ 80 - 0
models/ermcpExposure.go

@@ -9,6 +9,7 @@ package models
 import (
 	"fmt"
 	"github.com/golang/protobuf/proto"
+	"mtp2_if/db"
 	"mtp2_if/mtpcache"
 	"mtp2_if/pb"
 	"mtp2_if/rediscli"
@@ -102,3 +103,82 @@ func (r *ErmcpRealExposureModel) GetData() ([]ErmcpRealExposureModel, error) {
 
 	return nil, nil
 }
+
+/*************敞口明细**************/
+
+//敞口明细结构
+type ErmcpExposureDetailModel struct {
+	Createtime      string  `json:"createtime"  xorm:"'createtime'"`           // 时间
+	Areauserid      uint32  `json:"areauserid"  xorm:"'areauserid'"`           // 机构ID
+	Logtype         int32   `json:"logtype"  xorm:"'logtype'"`                 // 类型 - 1:套保计划 2:现货合同
+	Contracttype    int32   `json:"contracttype"  xorm:"'contracttype'"`       // 现货合同类型 - 1:采购 -1:销售
+	Wrstandardid    int32   `json:"wrstandardid"  xorm:"'wrstandardid'"`       // 现货商品ID
+	Qty             float64 `json:"qty"  xorm:"'qty'"`                         // 数量
+	RelateNo        string  `json:"relateNo"  xorm:"'relateNo'"`               // 现货合同/套保计划编号
+	Middlegoodsname string  `json:"middlegoodsname"  xorm:"'middlegoodsname'"` // 套保商品名称
+	Middlegoodscode string  `json:"middlegoodscode"  xorm:"'middlegoodscode'"` // 套保商品代码
+	MiddlegoodsId   int32   `json:"middlegoodsId"  xorm:"'middlegoodsId'"`     // 套保商品id
+	Unitid          int32   `json:"-"  xorm:"'unitid'"`                        // 现货商品单位ID
+	Wrstandardname  string  `json:"wrstandardname"  xorm:"'wrstandardname'"`   // 现货商品名称
+	Wrstandardcode  string  `json:"wrstandardcode"  xorm:"'wrstandardcode'"`   // 现货商品代码
+	Enumdicname     string  `json:"enumdicname"  xorm:"'enumdicname'"`         // 现货商品单位名称
+	ChangeQty       float64 `json:"changeQty"  xorm:"'changeQty'"`             // 套保变动量
+	Convertfactor   float64 `json:"convertfactor"  xorm:"'convertfactor'"`     // 标仓系数
+	Convertratio    float64 `json:"convertratio"  xorm:"'convertratio'"`       // 套保系数
+}
+
+func (r *ErmcpExposureDetailModel) buildSql() string {
+	str := "with tmp as" +
+		" (select 2                as LogType," +
+		"         s.spotcontractid as relatedid," +
+		"         s.contractno     as relateNo" +
+		"    from ermcp_spotcontract s" +
+		"  union all" +
+		"  select 1, t.hedgeplanid as relateid, t.hedgeplanno as relateNo" +
+		"    from ermcp_hedgeplan t)" +
+		"select to_char(t.createtime, 'yyyy-mm-dd hh:mi:ss') createtime," +
+		"       t.middlegoodsid," +
+		"       t.areauserid," +
+		"       t.logtype," +
+		"       t.contracttype," +
+		"       wc.wrstandardid," +
+		"       t.qty," +
+		"       t.convertfactor," +
+		"       t.convertratio," +
+		"       t.qty * t.convertfactor * t.convertratio as changeQty," +
+		"       tmp.relateNo," +
+		"       m.middlegoodsname," +
+		"       m.middlegoodscode," +
+		"       w.unitid," +
+		"       w.wrstandardname," +
+		"       w.wrstandardcode," +
+		"       e.enumdicname" +
+		"  from ermcp_spotexposurelog t" +
+		"  left join erms2_wrsconvertdetail wc" +
+		"    on t.wrstandardid = wc.wrstandardid" +
+		"   and t.middlegoodsid = wc.middlegoodsid" +
+		"  left join erms_middlegoods m" +
+		"    on t.middlegoodsid = m.middlegoodsid" +
+		"  left join wrstandard w" +
+		"    on t.wrstandardid = w.wrstandardid" +
+		"  left join enumdicitem e" +
+		"    on w.unitid = e.enumitemname" +
+		"   and e.enumdiccode = 'goodsunit'" +
+		"  left join tmp" +
+		"    on t.logtype = tmp.LogType" +
+		"   and t.relatedid = tmp.relatedid" +
+		"  where t.middlegoodsid=%v and t.areauserid=%v"
+
+	return fmt.Sprintf(str, r.MiddlegoodsId, r.Areauserid)
+}
+
+// 查询敞口现货明细
+func (r *ErmcpExposureDetailModel) GetData() ([]ErmcpExposureDetailModel, error) {
+	e := db.GetEngine()
+	s := e.SQL(r.buildSql())
+	sData := make([]ErmcpExposureDetailModel, 0)
+	if err := s.Find(&sData); err != nil {
+		return nil, err
+	}
+	return sData, nil
+}

+ 1 - 0
routers/router.go

@@ -313,6 +313,7 @@ func InitRouter() *gin.Engine {
 		ermcpR.GET("/QueryBusinessFp", ermcp.QueryBusinessFp)
 		ermcpR.GET("/QueryChangeLog", ermcp.QueryChangeLog)
 		ermcpR.GET("/QueryRealtimeExposure", ermcp.QueryRealtimeExposure)
+		ermcpR.GET("/QueryExposureDetail", ermcp.QueryExposureDetail)
 	}
 
 	return r