소스 검색

新增接口:现货合同期现配置信息

zou.yingbin 3 년 전
부모
커밋
d46d5c8bba
7개의 변경된 파일305개의 추가작업 그리고 0개의 파일을 삭제
  1. 16 0
      controllers/ermcp3/qryErmcp3.go
  2. 82 0
      docs/docs.go
  3. 82 0
      docs/swagger.json
  4. 56 0
      docs/swagger.yaml
  5. 58 0
      models/ermcp3.go
  6. 10 0
      models/wrTrade3.go
  7. 1 0
      routers/router.go

+ 16 - 0
controllers/ermcp3/qryErmcp3.go

@@ -699,3 +699,19 @@ func QueryParamChangeApp(c *gin.Context) {
 	a.DoBindReq(&m)
 	a.DoGetDataI(&m)
 }
+
+// QueryErmcp3ContractMiddleGoodsCfg
+// @Summary 查询现货合同期现配置信息
+// @Produce json
+// @Security ApiKeyAuth
+// @Param spotcontractid query string true "合同id"
+// @Success 200 {array} models.Ermcp3ContractMiddleGoodsCfg
+// @Failure 500 {object} app.Response
+// @Router /Ermcp3/QueryErmcp3ContractMiddleGoodsCfg [get]
+// @Tags 企业风险管理v3(app)
+func QueryErmcp3ContractMiddleGoodsCfg(c *gin.Context) {
+	a := app.GinUtils{Gin: app.Gin{C: c}}
+	m := models.Ermcp3ContractMiddleGoodsCfg{}
+	a.DoBindReq(&m)
+	a.DoGetDataI(&m)
+}

+ 82 - 0
docs/docs.go

@@ -4213,6 +4213,48 @@ var doc = `{
                 }
             }
         },
+        "/Ermcp3/QueryErmcp3ContractMiddleGoodsCfg": {
+            "get": {
+                "security": [
+                    {
+                        "ApiKeyAuth": []
+                    }
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "企业风险管理v3(app)"
+                ],
+                "summary": "查询现货合同期现配置信息",
+                "parameters": [
+                    {
+                        "type": "string",
+                        "description": "合同id",
+                        "name": "spotcontractid",
+                        "in": "query",
+                        "required": true
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "$ref": "#/definitions/models.Ermcp3ContractMiddleGoodsCfg"
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Internal Server Error",
+                        "schema": {
+                            "$ref": "#/definitions/app.Response"
+                        }
+                    }
+                }
+            }
+        },
         "/Ermcp3/QueryExposureDetail": {
             "get": {
                 "security": [
@@ -21014,6 +21056,46 @@ var doc = `{
                 }
             }
         },
+        "models.Ermcp3ContractMiddleGoodsCfg": {
+            "type": "object",
+            "properties": {
+                "agreeunit": {
+                    "description": "合约乘数",
+                    "type": "number"
+                },
+                "convertratio": {
+                    "description": "期货品种系数",
+                    "type": "number"
+                },
+                "covertqty": {
+                    "description": "折算手数 =【待点价量  / (合约乘数*期货品种系数) 】",
+                    "type": "integer"
+                },
+                "middlegoodsid": {
+                    "description": "套保品种ID",
+                    "type": "integer"
+                },
+                "middlegoodspricedqty3": {
+                    "description": "已定价量(套保品种应套保量) = MiddleGoodsPricedQty2 *  套保比率",
+                    "type": "string",
+                    "example": "0"
+                },
+                "pendingpricedqty": {
+                    "description": "待点价量",
+                    "type": "string",
+                    "example": "0"
+                },
+                "relatedmiddlegoodsqty": {
+                    "description": "已关联量(套保品种-期货)",
+                    "type": "string",
+                    "example": "0"
+                },
+                "spotcontractid": {
+                    "description": "现货合同ID(602+Unix秒时间戳(10位)+xxxxxx)",
+                    "type": "string"
+                }
+            }
+        },
         "models.Ermcp3ExposureContractDetail": {
             "type": "object",
             "properties": {

+ 82 - 0
docs/swagger.json

@@ -4198,6 +4198,48 @@
                 }
             }
         },
+        "/Ermcp3/QueryErmcp3ContractMiddleGoodsCfg": {
+            "get": {
+                "security": [
+                    {
+                        "ApiKeyAuth": []
+                    }
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "企业风险管理v3(app)"
+                ],
+                "summary": "查询现货合同期现配置信息",
+                "parameters": [
+                    {
+                        "type": "string",
+                        "description": "合同id",
+                        "name": "spotcontractid",
+                        "in": "query",
+                        "required": true
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "$ref": "#/definitions/models.Ermcp3ContractMiddleGoodsCfg"
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Internal Server Error",
+                        "schema": {
+                            "$ref": "#/definitions/app.Response"
+                        }
+                    }
+                }
+            }
+        },
         "/Ermcp3/QueryExposureDetail": {
             "get": {
                 "security": [
@@ -20999,6 +21041,46 @@
                 }
             }
         },
+        "models.Ermcp3ContractMiddleGoodsCfg": {
+            "type": "object",
+            "properties": {
+                "agreeunit": {
+                    "description": "合约乘数",
+                    "type": "number"
+                },
+                "convertratio": {
+                    "description": "期货品种系数",
+                    "type": "number"
+                },
+                "covertqty": {
+                    "description": "折算手数 =【待点价量  / (合约乘数*期货品种系数) 】",
+                    "type": "integer"
+                },
+                "middlegoodsid": {
+                    "description": "套保品种ID",
+                    "type": "integer"
+                },
+                "middlegoodspricedqty3": {
+                    "description": "已定价量(套保品种应套保量) = MiddleGoodsPricedQty2 *  套保比率",
+                    "type": "string",
+                    "example": "0"
+                },
+                "pendingpricedqty": {
+                    "description": "待点价量",
+                    "type": "string",
+                    "example": "0"
+                },
+                "relatedmiddlegoodsqty": {
+                    "description": "已关联量(套保品种-期货)",
+                    "type": "string",
+                    "example": "0"
+                },
+                "spotcontractid": {
+                    "description": "现货合同ID(602+Unix秒时间戳(10位)+xxxxxx)",
+                    "type": "string"
+                }
+            }
+        },
         "models.Ermcp3ExposureContractDetail": {
             "type": "object",
             "properties": {

+ 56 - 0
docs/swagger.yaml

@@ -4810,6 +4810,36 @@ definitions:
         description: 品类名称
         type: string
     type: object
+  models.Ermcp3ContractMiddleGoodsCfg:
+    properties:
+      agreeunit:
+        description: 合约乘数
+        type: number
+      convertratio:
+        description: 期货品种系数
+        type: number
+      covertqty:
+        description: 折算手数 =【待点价量  / (合约乘数*期货品种系数) 】
+        type: integer
+      middlegoodsid:
+        description: 套保品种ID
+        type: integer
+      middlegoodspricedqty3:
+        description: 已定价量(套保品种应套保量) = MiddleGoodsPricedQty2 *  套保比率
+        example: "0"
+        type: string
+      pendingpricedqty:
+        description: 待点价量
+        example: "0"
+        type: string
+      relatedmiddlegoodsqty:
+        description: 已关联量(套保品种-期货)
+        example: "0"
+        type: string
+      spotcontractid:
+        description: 现货合同ID(602+Unix秒时间戳(10位)+xxxxxx)
+        type: string
+    type: object
   models.Ermcp3ExposureContractDetail:
     properties:
       biztype:
@@ -22501,6 +22531,32 @@ paths:
       summary: 查询现货商品详情
       tags:
       - 企业风险管理v3(app)
+  /Ermcp3/QueryErmcp3ContractMiddleGoodsCfg:
+    get:
+      parameters:
+      - description: 合同id
+        in: query
+        name: spotcontractid
+        required: true
+        type: string
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: OK
+          schema:
+            items:
+              $ref: '#/definitions/models.Ermcp3ContractMiddleGoodsCfg'
+            type: array
+        "500":
+          description: Internal Server Error
+          schema:
+            $ref: '#/definitions/app.Response'
+      security:
+      - ApiKeyAuth: []
+      summary: 查询现货合同期现配置信息
+      tags:
+      - 企业风险管理v3(app)
   /Ermcp3/QueryExposureDetail:
     get:
       parameters:

+ 58 - 0
models/ermcp3.go

@@ -3695,3 +3695,61 @@ func (r *Ermcp3ParamChangeApp) GetDataEx() (interface{}, error) {
 	}
 	return sData, err
 }
+
+// Ermcp3ContractMiddleGoodsCfg 现货合同期现配置信息
+type Ermcp3ContractMiddleGoodsCfg struct {
+	SPOTCONTRACTID        string  `json:"spotcontractid"  xorm:"'SPOTCONTRACTID'" form:"spotcontractid"` // 现货合同ID(602+Unix秒时间戳(10位)+xxxxxx)
+	MIDDLEGOODSPRICEDQTY3 float64 `json:"middlegoodspricedqty3,string"  xorm:"'MIDDLEGOODSPRICEDQTY3'"`  // 已定价量(套保品种应套保量) = MiddleGoodsPricedQty2 *  套保比率
+	RELATEDMIDDLEGOODSQTY float64 `json:"relatedmiddlegoodsqty,string"  xorm:"'RELATEDMIDDLEGOODSQTY'"`  // 已关联量(套保品种-期货)
+	AGREEUNIT             float64 `json:"agreeunit"  xorm:"'AGREEUNIT'"`                                 // 合约乘数
+	CONVERTRATIO          float64 `json:"convertratio"  xorm:"'CONVERTRATIO'"`                           // 期货品种系数
+	MIDDLEGOODSID         int64   `json:"middlegoodsid"  xorm:"'MIDDLEGOODSID'"`                         // 套保品种ID
+	SRCGOODSGROUPID       int     `json:"-"  xorm:"'SRCGOODSGROUPID'"`                                   // 源商品组id
+	DESTGOODSGROUPID      int     `json:"-"  xorm:"'DESTGOODSGROUPID'"`                                  // 目标商品组id
+
+	PENDINGPRICEDQTY float64 `json:"pendingpricedqty,string"` // 待点价量
+	COVERTQTY        int     `json:"covertqty"`               // 折算手数 =【待点价量  / (合约乘数*期货品种系数) 】
+}
+
+func (r *Ermcp3ContractMiddleGoodsCfg) calc() {
+	r.PENDINGPRICEDQTY = r.MIDDLEGOODSPRICEDQTY3 - r.RELATEDMIDDLEGOODSQTY
+	// 防止除数为0判断
+	if r.AGREEUNIT != 0 && r.CONVERTRATIO > 1e-10 {
+		r.COVERTQTY = int(r.PENDINGPRICEDQTY / (r.AGREEUNIT * r.CONVERTRATIO))
+	}
+}
+
+func (r *Ermcp3ContractMiddleGoodsCfg) buildSql() string {
+	var sqlId utils.SQLVal = `
+select t.MiddleGoodsPricedQty3, t.RelatedMiddleGoodsQty,
+       gogu.agreeunit,
+       gg.convertratio,
+       t.spotcontractid,
+       t.middlegoodsid,
+       gg.srcgoodsgroupid,
+       gg.destgoodsgroupid
+  from ERMCP_SCMiddleGoods t
+  left join ERMCP_SpotContract sc
+    on t.spotcontractid = sc.spotcontractid
+  left join erms_middlegoods m
+    on m.middlegoodsid = t.middlegoodsid
+   and m.areauserid = sc.userid
+  left join ERMCP_GGConvertConfig gg
+    on gg.destgoodsgroupid = m.goodsgroupid
+  left join goodsgroup gogu
+    on gogu.goodsgroupid = gg.srcgoodsgroupid
+ where t.spotcontractid = %v
+`
+	sqlId.FormatParam(r.SPOTCONTRACTID)
+	return sqlId.String()
+}
+
+// GetDataEx 获取现货合同期现配置信息
+func (r *Ermcp3ContractMiddleGoodsCfg) GetDataEx() (interface{}, error) {
+	sData := make([]Ermcp3ContractMiddleGoodsCfg, 0)
+	err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
+	for i := range sData {
+		sData[i].calc()
+	}
+	return sData, err
+}

+ 10 - 0
models/wrTrade3.go

@@ -0,0 +1,10 @@
+/**
+* @Author  : zou.yingbin
+* @Create  : 2022/4/12 13:06
+* @Modify  : 2022/4/12 13:06
+* @note    :
+ */
+
+package models
+
+

+ 1 - 0
routers/router.go

@@ -457,6 +457,7 @@ func InitRouter() *gin.Engine {
 		ermcp3R.GET("/QuerySubTaaccount", ermcp3.QuerySubTaaccount)
 		ermcp3R.GET("/QueryInnerTradeLink", ermcp3.QueryInnerTradeLink)
 		ermcp3R.GET("/QueryParamChangeApp", ermcp3.QueryParamChangeApp)
+		ermcp3R.GET("/QueryErmcp3ContractMiddleGoodsCfg", ermcp3.QueryErmcp3ContractMiddleGoodsCfg)
 
 		// 报表
 		ermcp3R.GET("/QryReportDaySpotDetail", ermcp3.QryReportDaySpotDetail)