Procházet zdrojové kódy

增加查询接口:套保品种

zou.yingbin před 4 roky
rodič
revize
377cf3b844

+ 37 - 0
controllers/ermcp/qryMiddleGoods.go

@@ -0,0 +1,37 @@
+/**
+* @Author: zou.yingbin
+* @Create  : 2021/1/26 13:41
+* @Modify  : 2021/1/26 13:41
+ */
+
+package ermcp
+
+import (
+	"github.com/gin-gonic/gin"
+	"mtp2_if/global/app"
+	"mtp2_if/models"
+)
+
+// 查询套保品种请求
+type QryMiddleGoodsReq struct {
+	UserId uint32 `form:"userid" binding:"required"` //用户ID
+}
+
+// 查询套保品种应答
+type QryMiddleGoodsRsp models.ErmcpMiddleGoodsModel
+
+// @Summary 查询套保品种(菜单:套保品种)
+// @Produce json
+// @Security ApiKeyAuth
+// @Param userid query int true  "所属机构ID"
+// @Success 200 {array} QryMiddleGoodsRsp
+// @Failure 500 {object} app.Response
+// @Router /Ermcp/QueryMiddleGoods [get]
+// @Tags 企业风险管理(app)
+func QueryMiddleGoods(c *gin.Context) {
+	appG := app.GinUtils{Gin:app.Gin{C: c}}
+	var req QryMiddleGoodsReq
+	appG.DoBindReq(&req)
+	m := models.ErmcpMiddleGoodsModel{AREAUSERID: req.UserId}
+	appG.DoGetData(&m)
+}

+ 102 - 0
docs/docs.go

@@ -1245,6 +1245,48 @@ var doc = `{
                 }
             }
         },
+        "/Ermcp/QueryMiddleGoods": {
+            "get": {
+                "security": [
+                    {
+                        "ApiKeyAuth": []
+                    }
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "企业风险管理(app)"
+                ],
+                "summary": "查询套保品种(菜单:套保品种)",
+                "parameters": [
+                    {
+                        "type": "integer",
+                        "description": "所属机构ID",
+                        "name": "userid",
+                        "in": "query",
+                        "required": true
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "$ref": "#/definitions/ermcp.QryMiddleGoodsRsp"
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Internal Server Error",
+                        "schema": {
+                            "$ref": "#/definitions/app.Response"
+                        }
+                    }
+                }
+            }
+        },
         "/Ermcp/QueryRealtimeExposure": {
             "get": {
                 "security": [
@@ -6376,6 +6418,9 @@ var doc = `{
         "ermcp.QryHedgePlanRsp": {
             "$ref": "#/definitions/models.ErmcpHedgePlan"
         },
+        "ermcp.QryMiddleGoodsRsp": {
+            "$ref": "#/definitions/models.ErmcpMiddleGoodsModel"
+        },
         "ermcp.QryOPLogRsp": {
             "$ref": "#/definitions/models.ErmcpOPLogModel"
         },
@@ -8401,6 +8446,63 @@ var doc = `{
                 }
             }
         },
+        "models.ErmcpMiddleGoodsModel": {
+            "type": "object",
+            "properties": {
+                "areauserid": {
+                    "description": "机构用户ID",
+                    "type": "integer"
+                },
+                "enumdicname": {
+                    "description": "单位名称",
+                    "type": "string"
+                },
+                "evaluateratio": {
+                    "description": "估价系数",
+                    "type": "number"
+                },
+                "goodsgroupid": {
+                    "description": "关联期货品种ID",
+                    "type": "integer"
+                },
+                "isvalid": {
+                    "description": "状态 0-无效(停用) 1-有效(正常)",
+                    "type": "integer"
+                },
+                "middlegoodscode": {
+                    "description": "套保品种代码",
+                    "type": "string"
+                },
+                "middlegoodsid": {
+                    "description": "套保品种ID(SEQ_ERMS_MIDDLEGOODS)",
+                    "type": "integer"
+                },
+                "middlegoodsname": {
+                    "description": "套保品种名称",
+                    "type": "string"
+                },
+                "modifytime": {
+                    "description": "修改时间",
+                    "type": "string"
+                },
+                "needhedgeratio": {
+                    "description": "套保比率",
+                    "type": "number"
+                },
+                "qtydecimalplace": {
+                    "description": "数量小数位",
+                    "type": "integer"
+                },
+                "relatedgoodsid": {
+                    "description": "关联交易商品ID",
+                    "type": "integer"
+                },
+                "relatedgoodstype": {
+                    "description": "关联商品类型 - 1:期货合约 2:现货品种",
+                    "type": "integer"
+                }
+            }
+        },
         "models.ErmcpModel": {
             "type": "object",
             "properties": {

+ 102 - 0
docs/swagger.json

@@ -1229,6 +1229,48 @@
                 }
             }
         },
+        "/Ermcp/QueryMiddleGoods": {
+            "get": {
+                "security": [
+                    {
+                        "ApiKeyAuth": []
+                    }
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "企业风险管理(app)"
+                ],
+                "summary": "查询套保品种(菜单:套保品种)",
+                "parameters": [
+                    {
+                        "type": "integer",
+                        "description": "所属机构ID",
+                        "name": "userid",
+                        "in": "query",
+                        "required": true
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "$ref": "#/definitions/ermcp.QryMiddleGoodsRsp"
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Internal Server Error",
+                        "schema": {
+                            "$ref": "#/definitions/app.Response"
+                        }
+                    }
+                }
+            }
+        },
         "/Ermcp/QueryRealtimeExposure": {
             "get": {
                 "security": [
@@ -6360,6 +6402,9 @@
         "ermcp.QryHedgePlanRsp": {
             "$ref": "#/definitions/models.ErmcpHedgePlan"
         },
+        "ermcp.QryMiddleGoodsRsp": {
+            "$ref": "#/definitions/models.ErmcpMiddleGoodsModel"
+        },
         "ermcp.QryOPLogRsp": {
             "$ref": "#/definitions/models.ErmcpOPLogModel"
         },
@@ -8385,6 +8430,63 @@
                 }
             }
         },
+        "models.ErmcpMiddleGoodsModel": {
+            "type": "object",
+            "properties": {
+                "areauserid": {
+                    "description": "机构用户ID",
+                    "type": "integer"
+                },
+                "enumdicname": {
+                    "description": "单位名称",
+                    "type": "string"
+                },
+                "evaluateratio": {
+                    "description": "估价系数",
+                    "type": "number"
+                },
+                "goodsgroupid": {
+                    "description": "关联期货品种ID",
+                    "type": "integer"
+                },
+                "isvalid": {
+                    "description": "状态 0-无效(停用) 1-有效(正常)",
+                    "type": "integer"
+                },
+                "middlegoodscode": {
+                    "description": "套保品种代码",
+                    "type": "string"
+                },
+                "middlegoodsid": {
+                    "description": "套保品种ID(SEQ_ERMS_MIDDLEGOODS)",
+                    "type": "integer"
+                },
+                "middlegoodsname": {
+                    "description": "套保品种名称",
+                    "type": "string"
+                },
+                "modifytime": {
+                    "description": "修改时间",
+                    "type": "string"
+                },
+                "needhedgeratio": {
+                    "description": "套保比率",
+                    "type": "number"
+                },
+                "qtydecimalplace": {
+                    "description": "数量小数位",
+                    "type": "integer"
+                },
+                "relatedgoodsid": {
+                    "description": "关联交易商品ID",
+                    "type": "integer"
+                },
+                "relatedgoodstype": {
+                    "description": "关联商品类型 - 1:期货合约 2:现货品种",
+                    "type": "integer"
+                }
+            }
+        },
         "models.ErmcpModel": {
             "type": "object",
             "properties": {

+ 70 - 0
docs/swagger.yaml

@@ -1144,6 +1144,8 @@ definitions:
     $ref: '#/definitions/models.ErmcpModel'
   ermcp.QryHedgePlanRsp:
     $ref: '#/definitions/models.ErmcpHedgePlan'
+  ermcp.QryMiddleGoodsRsp:
+    $ref: '#/definitions/models.ErmcpMiddleGoodsModel'
   ermcp.QryOPLogRsp:
     $ref: '#/definitions/models.ErmcpOPLogModel'
   ermcp.QrySpotContractRsp:
@@ -2642,6 +2644,48 @@ definitions:
         description: 现货头寸总量
         type: number
     type: object
+  models.ErmcpMiddleGoodsModel:
+    properties:
+      areauserid:
+        description: 机构用户ID
+        type: integer
+      enumdicname:
+        description: 单位名称
+        type: string
+      evaluateratio:
+        description: 估价系数
+        type: number
+      goodsgroupid:
+        description: 关联期货品种ID
+        type: integer
+      isvalid:
+        description: 状态 0-无效(停用) 1-有效(正常)
+        type: integer
+      middlegoodscode:
+        description: 套保品种代码
+        type: string
+      middlegoodsid:
+        description: 套保品种ID(SEQ_ERMS_MIDDLEGOODS)
+        type: integer
+      middlegoodsname:
+        description: 套保品种名称
+        type: string
+      modifytime:
+        description: 修改时间
+        type: string
+      needhedgeratio:
+        description: 套保比率
+        type: number
+      qtydecimalplace:
+        description: 数量小数位
+        type: integer
+      relatedgoodsid:
+        description: 关联交易商品ID
+        type: integer
+      relatedgoodstype:
+        description: 关联商品类型 - 1:期货合约 2:现货品种
+        type: integer
+    type: object
   models.ErmcpModel:
     properties:
       accountid:
@@ -7528,6 +7572,32 @@ paths:
       summary: 查询历史敞口(菜单:敞口/历史敞口)
       tags:
       - 企业风险管理(app)
+  /Ermcp/QueryMiddleGoods:
+    get:
+      parameters:
+      - description: 所属机构ID
+        in: query
+        name: userid
+        required: true
+        type: integer
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: OK
+          schema:
+            items:
+              $ref: '#/definitions/ermcp.QryMiddleGoodsRsp'
+            type: array
+        "500":
+          description: Internal Server Error
+          schema:
+            $ref: '#/definitions/app.Response'
+      security:
+      - ApiKeyAuth: []
+      summary: 查询套保品种(菜单:套保品种)
+      tags:
+      - 企业风险管理(app)
   /Ermcp/QueryRealtimeExposure:
     get:
       parameters:

+ 72 - 0
models/ermcpMiddleGoods.go

@@ -0,0 +1,72 @@
+/**
+* @Author: zou.yingbin
+* @Create  : 2021/1/26 13:42
+* @Modify  : 2021/1/26 13:42
+ */
+
+package models
+
+import (
+	"fmt"
+	"mtp2_if/db"
+	"mtp2_if/logger"
+	"mtp2_if/mtpcache"
+)
+
+// 套保品种
+type ErmcpMiddleGoodsModel struct {
+	MIDDLEGOODSID    uint32  `json:"middlegoodsid"  xorm:"'MIDDLEGOODSID'"`       // 套保品种ID(SEQ_ERMS_MIDDLEGOODS)
+	MIDDLEGOODSNAME  string  `json:"middlegoodsname"  xorm:"'MIDDLEGOODSNAME'"`   // 套保品种名称
+	MIDDLEGOODSCODE  string  `json:"middlegoodscode"  xorm:"'MIDDLEGOODSCODE'"`   // 套保品种代码
+	GOODSUNITID      int32   `json:"-"  xorm:"'GOODSUNITID'"`                     // 单位ID
+	RELATEDGOODSID   int32   `json:"relatedgoodsid"  xorm:"'RELATEDGOODSID'"`     // 关联交易商品ID
+	EVALUATERATIO    float64 `json:"evaluateratio"  xorm:"'EVALUATERATIO'"`       // 估价系数
+	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
+	GOODSGROUPID     int32   `json:"goodsgroupid"  xorm:"'GOODSGROUPID'"`         // 关联期货品种ID
+	ISVALID          int32   `json:"isvalid"  xorm:"'ISVALID'"`                   // 状态 0-无效(停用) 1-有效(正常)
+	MODIFYTIME       string  `json:"modifytime"  xorm:"'MODIFYTIME'"`             // 修改时间
+	ENUMDICNAME      string  `json:"enumdicname"`                                 // 单位名称
+}
+
+func (r *ErmcpMiddleGoodsModel) Calc() {
+	r.ENUMDICNAME = mtpcache.GetEnumDicitemName(r.GOODSUNITID)
+}
+
+// 获取套保品种数据
+func (r *ErmcpMiddleGoodsModel) GetData() ([]interface{}, error) {
+	sData := make([]ErmcpMiddleGoodsModel, 0)
+	if err := db.GetEngine().SQL(r.buildSql()).Find(&sData); err != nil{
+		logger.GetLogger().Error(err)
+		return nil, err
+	}
+	iData := make([]interface{}, 0)
+	for i := range sData {
+		iData = append(iData, &sData[i])
+	}
+	return iData, nil
+}
+
+func (r *ErmcpMiddleGoodsModel) buildSql() string {
+	sqlId := "select MIDDLEGOODSID," +
+		"       MIDDLEGOODSNAME," +
+		"       MIDDLEGOODSCODE," +
+		"       GOODSUNITID," +
+		"       RELATEDGOODSID," +
+		"       EVALUATERATIO," +
+		"       QTYDECIMALPLACE," +
+		"       RELATEDGOODSTYPE," +
+		"       NEEDHEDGERATIO," +
+		"       AREAUSERID," +
+		"       GOODSGROUPID," +
+		"       to_char(MODIFYTIME, 'yyyy-mm-dd hh24:mi:ss') MODIFYTIME," +
+		"       ISVALID" +
+		"  from erms_middlegoods t" +
+		"  where 1=1 "
+	if r.AREAUSERID > 0{
+		sqlId = sqlId + fmt.Sprintf(" and AREAUSERID = %v", r.AREAUSERID)
+	}
+	return sqlId
+}

+ 7 - 5
mtpcache/middlegoods.go

@@ -37,6 +37,7 @@ type MiddleGoods struct {
 	AREAUSERID       uint32  `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'"`             // 修改时间
 }
 
 func (r *middleGoodsMgr) isNeedLoad() bool {
@@ -67,7 +68,8 @@ func (r *middleGoodsMgr) load() {
 		"       RELATEDGOODSTYPE," +
 		"       NEEDHEDGERATIO," +
 		"       AREAUSERID," +
-		"       GOODSGROUPID" +
+		"       GOODSGROUPID," +
+		"       MODIFYTIME," +
 		"       ISVALID" +
 		"  from erms_middlegoods t"
 	sData := make([]MiddleGoods, 0)
@@ -102,7 +104,7 @@ func (r *middleGoodsMgr) getByUserID(userId uint32) ([]MiddleGoods, error) {
 	defer r.mtx.RUnlock()
 	ret := make([]MiddleGoods, 0)
 	for _, v := range r.data {
-		if v.AREAUSERID == userId{
+		if v.AREAUSERID == userId {
 			ret = append(ret, v)
 		}
 	}
@@ -123,14 +125,14 @@ func GetMiddleGoods(middlGoodsId uint32) (MiddleGoods, error) {
 
 // 获取指定用户套保商品
 func GetMiddleGoodsByUserID(userId uint32) ([]MiddleGoods, error) {
-	if vGoodMgr.isNeedLoad(){
+	if vGoodMgr.isNeedLoad() {
 		vGoodMgr.load()
 	}
 	return vGoodMgr.getByUserID(userId)
 }
 
 // 从数据库中获取套保商品
-func GetMiddleGoodsFromDB(userId uint32)([]MiddleGoods, error)  {
+func GetMiddleGoodsFromDB(userId uint32) ([]MiddleGoods, error) {
 	vGoodMgr.load()
 	return vGoodMgr.getByUserID(userId)
-}
+}

+ 1 - 0
routers/router.go

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