Forráskód Böngészése

1.重写套保商品详情接口
2.修复命令行参数BUG

zou.yingbin 4 éve
szülő
commit
8bdef416c7
6 módosított fájl, 655 hozzáadás és 337 törlés
  1. 3 4
      controllers/ermcp3/qryErmcp3.go
  2. 146 122
      docs/docs.go
  3. 146 122
      docs/swagger.json
  4. 106 88
      docs/swagger.yaml
  5. 2 1
      main.go
  6. 252 0
      models/ermcp3.go

+ 3 - 4
controllers/ermcp3/qryErmcp3.go

@@ -72,7 +72,7 @@ func QueryDeliveryGoodsDetail(c *gin.Context) {
 // @Param userid query int true  "用户id"
 // @Param usertype query int false "用户类型 2-机构 7-企业成员"
 // @Param middlegoodsid query int false  "套保品种id"
-// @Success 200 {array} models.Ermcp3MiddleGoodsDetailEx
+// @Success 200 {array} models.TBMiddleGoods
 // @Failure 500 {object} app.Response
 // @Router /Ermcp3/QueryMiddleGoodsDetail [get]
 // @Tags 企业风险管理v3(app)
@@ -84,9 +84,8 @@ func QueryMiddleGoodsDetail(c *gin.Context) {
 		MIDDLEGOODSID uint32 `form:"middlegoodsid"`             // 套保品种id
 	}{}
 	a.DoBindReq(&req)
-	m := models.Ermcp3MiddleGoodsDetailEx{}
-	m.Ermcp3MiddleGoodsDetail.Mg.AREAUSERID = mtpcache.GetAreaUserId(req.USERID, req.USERTYPE)
-	m.Ermcp3MiddleGoodsDetail.Mg.MIDDLEGOODSID = req.MIDDLEGOODSID
+	m := models.TBMiddleGoods{AREAUSERID: mtpcache.GetAreaUserId(req.USERID, req.USERTYPE),
+		MIDDLEGOODSID: int64(req.MIDDLEGOODSID)}
 	a.DoGetDataI(&m)
 }
 

+ 146 - 122
docs/docs.go

@@ -4472,7 +4472,7 @@ var doc = `{
                         "schema": {
                             "type": "array",
                             "items": {
-                                "$ref": "#/definitions/models.Ermcp3MiddleGoodsDetailEx"
+                                "$ref": "#/definitions/models.TBMiddleGoods"
                             }
                         }
                     },
@@ -19281,35 +19281,6 @@ var doc = `{
                 }
             }
         },
-        "models.Ermcp3Goods": {
-            "type": "object",
-            "properties": {
-                "agreeunit": {
-                    "description": "合约单位(合约乘数)",
-                    "type": "number"
-                },
-                "enumdicname": {
-                    "description": "单位名称",
-                    "type": "string"
-                },
-                "exexchangecode": {
-                    "description": "交易所代码",
-                    "type": "string"
-                },
-                "goodscode": {
-                    "description": "期货商品代码",
-                    "type": "string"
-                },
-                "goodsid": {
-                    "description": "期货商品id",
-                    "type": "integer"
-                },
-                "goodsname": {
-                    "description": "期货商品名称",
-                    "type": "string"
-                }
-            }
-        },
         "models.Ermcp3GoodsGroup": {
             "type": "object",
             "required": [
@@ -19430,46 +19401,6 @@ var doc = `{
                 }
             }
         },
-        "models.Ermcp3GoodsGroupEx": {
-            "type": "object",
-            "properties": {
-                "convertratio": {
-                    "description": "折算系数(品种系数)",
-                    "type": "number"
-                },
-                "enumdicname": {
-                    "description": "单位名称",
-                    "type": "string"
-                },
-                "exexchangecode": {
-                    "description": "交易所代码",
-                    "type": "string"
-                },
-                "glist": {
-                    "description": "合约列表",
-                    "type": "array",
-                    "items": {
-                        "$ref": "#/definitions/models.Ermcp3Goods"
-                    }
-                },
-                "goodsgroupid": {
-                    "description": "商品组id",
-                    "type": "integer"
-                },
-                "goodsgroupname": {
-                    "description": "商品组名称",
-                    "type": "string"
-                },
-                "goodsunitid": {
-                    "description": "单位id",
-                    "type": "integer"
-                },
-                "middlegoodsid": {
-                    "description": "套保商品id",
-                    "type": "integer"
-                }
-            }
-        },
         "models.Ermcp3HedgePlan": {
             "type": "object",
             "properties": {
@@ -19611,30 +19542,6 @@ var doc = `{
                 }
             }
         },
-        "models.Ermcp3MiddleGoodsDetailEx": {
-            "type": "object",
-            "properties": {
-                "dglist": {
-                    "description": "关联的现货品种列表",
-                    "type": "array",
-                    "items": {
-                        "$ref": "#/definitions/models.ErmcpDeliveryGoodsDetail2"
-                    }
-                },
-                "gplist": {
-                    "description": "关联商品组列表",
-                    "type": "array",
-                    "items": {
-                        "$ref": "#/definitions/models.Ermcp3GoodsGroupEx"
-                    }
-                },
-                "mg": {
-                    "description": "套保商品信息",
-                    "type": "object",
-                    "$ref": "#/definitions/models.ErmcpMiddleGoodsModel"
-                }
-            }
-        },
         "models.Ermcp3PaAreaAuditCfg": {
             "type": "object",
             "properties": {
@@ -20888,34 +20795,6 @@ var doc = `{
                 }
             }
         },
-        "models.ErmcpDeliveryGoodsDetail2": {
-            "type": "object",
-            "properties": {
-                "convertratio": {
-                    "description": "套保系数(折算系数)",
-                    "type": "number"
-                },
-                "data": {
-                    "description": "现货商品基本信息(交割品种)",
-                    "type": "object",
-                    "$ref": "#/definitions/models.ErmcpDeliveryGoods"
-                },
-                "gblist": {
-                    "description": "品牌列表",
-                    "type": "array",
-                    "items": {
-                        "$ref": "#/definitions/models.Ermcp3Brand"
-                    }
-                },
-                "gmlist": {
-                    "description": "品类列表(仓单标准)",
-                    "type": "array",
-                    "items": {
-                        "$ref": "#/definitions/models.Ermcp3Wrstandard"
-                    }
-                }
-            }
-        },
         "models.ErmcpExposureDetailModel": {
             "type": "object",
             "properties": {
@@ -30079,6 +29958,151 @@ var doc = `{
                 }
             }
         },
+        "models.TBGoods": {
+            "type": "object",
+            "properties": {
+                "agreeunit": {
+                    "description": "合约乘数",
+                    "type": "number"
+                },
+                "enumdicname": {
+                    "description": "单位名称",
+                    "type": "string"
+                },
+                "goodscode": {
+                    "description": "商品代码(内部)",
+                    "type": "string"
+                },
+                "goodsid": {
+                    "description": "商品ID(自增ID SEQ_GOODS)",
+                    "type": "integer"
+                },
+                "goodsname": {
+                    "description": "商品名称",
+                    "type": "string"
+                }
+            }
+        },
+        "models.TBGoodsGroup": {
+            "type": "object",
+            "properties": {
+                "convertratio": {
+                    "description": "折算系数",
+                    "type": "number"
+                },
+                "enumdicname": {
+                    "description": "单位名称",
+                    "type": "string"
+                },
+                "exexchangecode": {
+                    "description": "交易所代码",
+                    "type": "string"
+                },
+                "exexchangename": {
+                    "description": "交易所名称",
+                    "type": "string"
+                },
+                "gdlst": {
+                    "description": "商品列表",
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/models.TBGoods"
+                    }
+                },
+                "goodsgroupid": {
+                    "description": "商品组ID(自增ID)",
+                    "type": "integer"
+                },
+                "goodsgroupname": {
+                    "description": "商品组名称",
+                    "type": "string"
+                },
+                "goodunitid": {
+                    "description": "报价单位ID",
+                    "type": "integer"
+                }
+            }
+        },
+        "models.TBMiddleGoods": {
+            "type": "object",
+            "properties": {
+                "areauserid": {
+                    "description": "机构用户ID",
+                    "type": "integer"
+                },
+                "enumdicname": {
+                    "description": "单位名称",
+                    "type": "string"
+                },
+                "gplst": {
+                    "description": "期货品种列表",
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/models.TBGoodsGroup"
+                    }
+                },
+                "middlegoodscode": {
+                    "description": "套保品种代码",
+                    "type": "string"
+                },
+                "middlegoodsid": {
+                    "description": "套保品种ID(SEQ_ERMS_MIDDLEGOODS)",
+                    "type": "integer"
+                },
+                "middlegoodsname": {
+                    "description": "套保品种名称",
+                    "type": "string"
+                },
+                "needarbitrageratio": {
+                    "description": "套利比率",
+                    "type": "number"
+                },
+                "needhedgeratio": {
+                    "description": "套保比率",
+                    "type": "number"
+                },
+                "wdlst": {
+                    "description": "商品信息列表(现货品类)",
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/models.TBWrstandard"
+                    }
+                }
+            }
+        },
+        "models.TBWrstandard": {
+            "type": "object",
+            "properties": {
+                "convertratio": {
+                    "description": "折算系数",
+                    "type": "number"
+                },
+                "deliverygoodsname": {
+                    "description": "品种名称",
+                    "type": "string"
+                },
+                "enumdicname": {
+                    "description": "单位名称",
+                    "type": "string"
+                },
+                "vatrate": {
+                    "description": "增值税率",
+                    "type": "number"
+                },
+                "wrstandardcode": {
+                    "description": "现货商品代码",
+                    "type": "string"
+                },
+                "wrstandardid": {
+                    "description": "现货商品ID(SEQ_WRSTANDARD)",
+                    "type": "integer"
+                },
+                "wrstandardname": {
+                    "description": "现货商品名称",
+                    "type": "string"
+                }
+            }
+        },
         "models.Taaccount": {
             "type": "object",
             "required": [

+ 146 - 122
docs/swagger.json

@@ -4456,7 +4456,7 @@
                         "schema": {
                             "type": "array",
                             "items": {
-                                "$ref": "#/definitions/models.Ermcp3MiddleGoodsDetailEx"
+                                "$ref": "#/definitions/models.TBMiddleGoods"
                             }
                         }
                     },
@@ -19265,35 +19265,6 @@
                 }
             }
         },
-        "models.Ermcp3Goods": {
-            "type": "object",
-            "properties": {
-                "agreeunit": {
-                    "description": "合约单位(合约乘数)",
-                    "type": "number"
-                },
-                "enumdicname": {
-                    "description": "单位名称",
-                    "type": "string"
-                },
-                "exexchangecode": {
-                    "description": "交易所代码",
-                    "type": "string"
-                },
-                "goodscode": {
-                    "description": "期货商品代码",
-                    "type": "string"
-                },
-                "goodsid": {
-                    "description": "期货商品id",
-                    "type": "integer"
-                },
-                "goodsname": {
-                    "description": "期货商品名称",
-                    "type": "string"
-                }
-            }
-        },
         "models.Ermcp3GoodsGroup": {
             "type": "object",
             "required": [
@@ -19414,46 +19385,6 @@
                 }
             }
         },
-        "models.Ermcp3GoodsGroupEx": {
-            "type": "object",
-            "properties": {
-                "convertratio": {
-                    "description": "折算系数(品种系数)",
-                    "type": "number"
-                },
-                "enumdicname": {
-                    "description": "单位名称",
-                    "type": "string"
-                },
-                "exexchangecode": {
-                    "description": "交易所代码",
-                    "type": "string"
-                },
-                "glist": {
-                    "description": "合约列表",
-                    "type": "array",
-                    "items": {
-                        "$ref": "#/definitions/models.Ermcp3Goods"
-                    }
-                },
-                "goodsgroupid": {
-                    "description": "商品组id",
-                    "type": "integer"
-                },
-                "goodsgroupname": {
-                    "description": "商品组名称",
-                    "type": "string"
-                },
-                "goodsunitid": {
-                    "description": "单位id",
-                    "type": "integer"
-                },
-                "middlegoodsid": {
-                    "description": "套保商品id",
-                    "type": "integer"
-                }
-            }
-        },
         "models.Ermcp3HedgePlan": {
             "type": "object",
             "properties": {
@@ -19595,30 +19526,6 @@
                 }
             }
         },
-        "models.Ermcp3MiddleGoodsDetailEx": {
-            "type": "object",
-            "properties": {
-                "dglist": {
-                    "description": "关联的现货品种列表",
-                    "type": "array",
-                    "items": {
-                        "$ref": "#/definitions/models.ErmcpDeliveryGoodsDetail2"
-                    }
-                },
-                "gplist": {
-                    "description": "关联商品组列表",
-                    "type": "array",
-                    "items": {
-                        "$ref": "#/definitions/models.Ermcp3GoodsGroupEx"
-                    }
-                },
-                "mg": {
-                    "description": "套保商品信息",
-                    "type": "object",
-                    "$ref": "#/definitions/models.ErmcpMiddleGoodsModel"
-                }
-            }
-        },
         "models.Ermcp3PaAreaAuditCfg": {
             "type": "object",
             "properties": {
@@ -20872,34 +20779,6 @@
                 }
             }
         },
-        "models.ErmcpDeliveryGoodsDetail2": {
-            "type": "object",
-            "properties": {
-                "convertratio": {
-                    "description": "套保系数(折算系数)",
-                    "type": "number"
-                },
-                "data": {
-                    "description": "现货商品基本信息(交割品种)",
-                    "type": "object",
-                    "$ref": "#/definitions/models.ErmcpDeliveryGoods"
-                },
-                "gblist": {
-                    "description": "品牌列表",
-                    "type": "array",
-                    "items": {
-                        "$ref": "#/definitions/models.Ermcp3Brand"
-                    }
-                },
-                "gmlist": {
-                    "description": "品类列表(仓单标准)",
-                    "type": "array",
-                    "items": {
-                        "$ref": "#/definitions/models.Ermcp3Wrstandard"
-                    }
-                }
-            }
-        },
         "models.ErmcpExposureDetailModel": {
             "type": "object",
             "properties": {
@@ -30063,6 +29942,151 @@
                 }
             }
         },
+        "models.TBGoods": {
+            "type": "object",
+            "properties": {
+                "agreeunit": {
+                    "description": "合约乘数",
+                    "type": "number"
+                },
+                "enumdicname": {
+                    "description": "单位名称",
+                    "type": "string"
+                },
+                "goodscode": {
+                    "description": "商品代码(内部)",
+                    "type": "string"
+                },
+                "goodsid": {
+                    "description": "商品ID(自增ID SEQ_GOODS)",
+                    "type": "integer"
+                },
+                "goodsname": {
+                    "description": "商品名称",
+                    "type": "string"
+                }
+            }
+        },
+        "models.TBGoodsGroup": {
+            "type": "object",
+            "properties": {
+                "convertratio": {
+                    "description": "折算系数",
+                    "type": "number"
+                },
+                "enumdicname": {
+                    "description": "单位名称",
+                    "type": "string"
+                },
+                "exexchangecode": {
+                    "description": "交易所代码",
+                    "type": "string"
+                },
+                "exexchangename": {
+                    "description": "交易所名称",
+                    "type": "string"
+                },
+                "gdlst": {
+                    "description": "商品列表",
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/models.TBGoods"
+                    }
+                },
+                "goodsgroupid": {
+                    "description": "商品组ID(自增ID)",
+                    "type": "integer"
+                },
+                "goodsgroupname": {
+                    "description": "商品组名称",
+                    "type": "string"
+                },
+                "goodunitid": {
+                    "description": "报价单位ID",
+                    "type": "integer"
+                }
+            }
+        },
+        "models.TBMiddleGoods": {
+            "type": "object",
+            "properties": {
+                "areauserid": {
+                    "description": "机构用户ID",
+                    "type": "integer"
+                },
+                "enumdicname": {
+                    "description": "单位名称",
+                    "type": "string"
+                },
+                "gplst": {
+                    "description": "期货品种列表",
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/models.TBGoodsGroup"
+                    }
+                },
+                "middlegoodscode": {
+                    "description": "套保品种代码",
+                    "type": "string"
+                },
+                "middlegoodsid": {
+                    "description": "套保品种ID(SEQ_ERMS_MIDDLEGOODS)",
+                    "type": "integer"
+                },
+                "middlegoodsname": {
+                    "description": "套保品种名称",
+                    "type": "string"
+                },
+                "needarbitrageratio": {
+                    "description": "套利比率",
+                    "type": "number"
+                },
+                "needhedgeratio": {
+                    "description": "套保比率",
+                    "type": "number"
+                },
+                "wdlst": {
+                    "description": "商品信息列表(现货品类)",
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/models.TBWrstandard"
+                    }
+                }
+            }
+        },
+        "models.TBWrstandard": {
+            "type": "object",
+            "properties": {
+                "convertratio": {
+                    "description": "折算系数",
+                    "type": "number"
+                },
+                "deliverygoodsname": {
+                    "description": "品种名称",
+                    "type": "string"
+                },
+                "enumdicname": {
+                    "description": "单位名称",
+                    "type": "string"
+                },
+                "vatrate": {
+                    "description": "增值税率",
+                    "type": "number"
+                },
+                "wrstandardcode": {
+                    "description": "现货商品代码",
+                    "type": "string"
+                },
+                "wrstandardid": {
+                    "description": "现货商品ID(SEQ_WRSTANDARD)",
+                    "type": "integer"
+                },
+                "wrstandardname": {
+                    "description": "现货商品名称",
+                    "type": "string"
+                }
+            }
+        },
         "models.Taaccount": {
             "type": "object",
             "required": [

+ 106 - 88
docs/swagger.yaml

@@ -4588,27 +4588,6 @@ definitions:
         description: 品类名称
         type: string
     type: object
-  models.Ermcp3Goods:
-    properties:
-      agreeunit:
-        description: 合约单位(合约乘数)
-        type: number
-      enumdicname:
-        description: 单位名称
-        type: string
-      exexchangecode:
-        description: 交易所代码
-        type: string
-      goodscode:
-        description: 期货商品代码
-        type: string
-      goodsid:
-        description: 期货商品id
-        type: integer
-      goodsname:
-        description: 期货商品名称
-        type: string
-    type: object
   models.Ermcp3GoodsGroup:
     properties:
       agreeunit:
@@ -4698,35 +4677,6 @@ definitions:
     required:
     - areauserid
     type: object
-  models.Ermcp3GoodsGroupEx:
-    properties:
-      convertratio:
-        description: 折算系数(品种系数)
-        type: number
-      enumdicname:
-        description: 单位名称
-        type: string
-      exexchangecode:
-        description: 交易所代码
-        type: string
-      glist:
-        description: 合约列表
-        items:
-          $ref: '#/definitions/models.Ermcp3Goods'
-        type: array
-      goodsgroupid:
-        description: 商品组id
-        type: integer
-      goodsgroupname:
-        description: 商品组名称
-        type: string
-      goodsunitid:
-        description: 单位id
-        type: integer
-      middlegoodsid:
-        description: 套保商品id
-        type: integer
-    type: object
   models.Ermcp3HedgePlan:
     properties:
       accountid:
@@ -4832,23 +4782,6 @@ definitions:
         description: 品类单位名称
         type: string
     type: object
-  models.Ermcp3MiddleGoodsDetailEx:
-    properties:
-      dglist:
-        description: 关联的现货品种列表
-        items:
-          $ref: '#/definitions/models.ErmcpDeliveryGoodsDetail2'
-        type: array
-      gplist:
-        description: 关联商品组列表
-        items:
-          $ref: '#/definitions/models.Ermcp3GoodsGroupEx'
-        type: array
-      mg:
-        $ref: '#/definitions/models.ErmcpMiddleGoodsModel'
-        description: 套保商品信息
-        type: object
-    type: object
   models.Ermcp3PaAreaAuditCfg:
     properties:
       areauserid:
@@ -5777,26 +5710,6 @@ definitions:
         description: 标准数量偏差范围 [标准品特有]
         type: integer
     type: object
-  models.ErmcpDeliveryGoodsDetail2:
-    properties:
-      convertratio:
-        description: 套保系数(折算系数)
-        type: number
-      data:
-        $ref: '#/definitions/models.ErmcpDeliveryGoods'
-        description: 现货商品基本信息(交割品种)
-        type: object
-      gblist:
-        description: 品牌列表
-        items:
-          $ref: '#/definitions/models.Ermcp3Brand'
-        type: array
-      gmlist:
-        description: 品类列表(仓单标准)
-        items:
-          $ref: '#/definitions/models.Ermcp3Wrstandard'
-        type: array
-    type: object
   models.ErmcpExposureDetailModel:
     properties:
       areauserid:
@@ -12647,6 +12560,111 @@ definitions:
     required:
     - userid
     type: object
+  models.TBGoods:
+    properties:
+      agreeunit:
+        description: 合约乘数
+        type: number
+      enumdicname:
+        description: 单位名称
+        type: string
+      goodscode:
+        description: 商品代码(内部)
+        type: string
+      goodsid:
+        description: 商品ID(自增ID SEQ_GOODS)
+        type: integer
+      goodsname:
+        description: 商品名称
+        type: string
+    type: object
+  models.TBGoodsGroup:
+    properties:
+      convertratio:
+        description: 折算系数
+        type: number
+      enumdicname:
+        description: 单位名称
+        type: string
+      exexchangecode:
+        description: 交易所代码
+        type: string
+      exexchangename:
+        description: 交易所名称
+        type: string
+      gdlst:
+        description: 商品列表
+        items:
+          $ref: '#/definitions/models.TBGoods'
+        type: array
+      goodsgroupid:
+        description: 商品组ID(自增ID)
+        type: integer
+      goodsgroupname:
+        description: 商品组名称
+        type: string
+      goodunitid:
+        description: 报价单位ID
+        type: integer
+    type: object
+  models.TBMiddleGoods:
+    properties:
+      areauserid:
+        description: 机构用户ID
+        type: integer
+      enumdicname:
+        description: 单位名称
+        type: string
+      gplst:
+        description: 期货品种列表
+        items:
+          $ref: '#/definitions/models.TBGoodsGroup'
+        type: array
+      middlegoodscode:
+        description: 套保品种代码
+        type: string
+      middlegoodsid:
+        description: 套保品种ID(SEQ_ERMS_MIDDLEGOODS)
+        type: integer
+      middlegoodsname:
+        description: 套保品种名称
+        type: string
+      needarbitrageratio:
+        description: 套利比率
+        type: number
+      needhedgeratio:
+        description: 套保比率
+        type: number
+      wdlst:
+        description: 商品信息列表(现货品类)
+        items:
+          $ref: '#/definitions/models.TBWrstandard'
+        type: array
+    type: object
+  models.TBWrstandard:
+    properties:
+      convertratio:
+        description: 折算系数
+        type: number
+      deliverygoodsname:
+        description: 品种名称
+        type: string
+      enumdicname:
+        description: 单位名称
+        type: string
+      vatrate:
+        description: 增值税率
+        type: number
+      wrstandardcode:
+        description: 现货商品代码
+        type: string
+      wrstandardid:
+        description: 现货商品ID(SEQ_WRSTANDARD)
+        type: integer
+      wrstandardname:
+        description: 现货商品名称
+        type: string
+    type: object
   models.Taaccount:
     properties:
       accountflag:
@@ -20799,7 +20817,7 @@ paths:
           description: OK
           schema:
             items:
-              $ref: '#/definitions/models.Ermcp3MiddleGoodsDetailEx'
+              $ref: '#/definitions/models.TBMiddleGoods'
             type: array
         "500":
           description: Internal Server Error

+ 2 - 1
main.go

@@ -45,10 +45,11 @@ func (r *cmdLine) IsInit(item string) bool {
 		if r.StrCmd[1] == "init" {
 			for i := 2; i < len(r.StrCmd); i++ {
 				if r.StrCmd[i] == item {
-					logger.GetLogger().Info("cmdline init", item)
+					logger.GetLogger().Info("cmdline init ", item)
 					return true
 				}
 			}
+			return false
 		} else {
 			return true
 		}

+ 252 - 0
models/ermcp3.go

@@ -2553,3 +2553,255 @@ func (r *XHMiddleGoods) GetDataEx() (interface{}, error) {
 	}
 	return sData, err
 }
+
+// TBMiddleGoods 商品信息-套保品种
+type TBMiddleGoods struct {
+	AREAUSERID         int64   `json:"areauserid"  xorm:"'AREAUSERID'" form:"areauserid"`          // 机构用户ID
+	MIDDLEGOODSID      int64   `json:"middlegoodsid"  xorm:"'MIDDLEGOODSID'" form:"middlegoodsid"` // 套保品种ID(SEQ_ERMS_MIDDLEGOODS)
+	MIDDLEGOODSCODE    string  `json:"middlegoodscode"  xorm:"'MIDDLEGOODSCODE'"`                  // 套保品种代码
+	MIDDLEGOODSNAME    string  `json:"middlegoodsname"  xorm:"'MIDDLEGOODSNAME'"`                  // 套保品种名称
+	NEEDHEDGERATIO     float64 `json:"needhedgeratio"  xorm:"'NEEDHEDGERATIO'"`                    // 套保比率
+	NEEDARBITRAGERATIO float64 `json:"needarbitrageratio"  xorm:"'NEEDARBITRAGERATIO'"`            // 套利比率
+	GOODSGROUPID       int64   `json:"-"  xorm:"'GOODSGROUPID'"`                                   // 关联期货商品组id
+	ENUMDICNAME        string  `json:"enumdicname"  xorm:"'ENUMDICNAME'"`                          // 单位名称
+
+	GPLST []TBGoodsGroup // 期货品种列表
+	WDLST []TBWrstandard // 商品信息列表(现货品类)
+}
+
+func (r *TBMiddleGoods) calc() {
+	r.GPLST = make([]TBGoodsGroup, 0)
+	r.WDLST = make([]TBWrstandard, 0)
+}
+
+func (r *TBMiddleGoods) buildSql() string {
+	var sqlId utils.SQLVal = `
+select t.areauserid,
+       t.middlegoodsid,
+       t.middlegoodscode,
+       t.middlegoodsname,
+       t.needhedgeratio,
+       t.needarbitrageratio,
+       t.goodsgroupid,
+       e.enumdicname
+  from erms_middlegoods t
+  left join enumdicitem e
+    on t.goodsunitid = e.enumitemname
+   and e.enumdiccode = 'goodsunit'
+ where 1 = 1 and t.isvalid=1
+`
+	sqlId.AndEx("t.areauserid", r.AREAUSERID, r.AREAUSERID > 0)
+	sqlId.AndEx("t.middlegoodsid", r.MIDDLEGOODSID, r.MIDDLEGOODSID > 0)
+	return sqlId.String()
+}
+
+// GetDataEx 获取商品信息-套保品种
+func (r *TBMiddleGoods) GetDataEx() (interface{}, error) {
+	sData := make([]TBMiddleGoods, 0)
+	err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
+	for i := range sData {
+		sData[i].calc()
+	}
+	if len(sData) > 0 {
+		// 获取关联期货品种
+		m1 := TBGoodsGroup{}
+		if d1, err := m1.GetDataEx(); err == nil {
+			gpLst := d1.([]TBGoodsGroup)
+			for i := range sData {
+				sData[i].addGpLst(gpLst)
+			}
+		}
+
+		// 获取关联现货商品
+		m2 := TBWrstandard{}
+		if d2, err := m2.GetDataEx(); err == nil {
+			wdLst := d2.([]TBWrstandard)
+			for i := range sData {
+				sData[i].addWdLst(wdLst)
+			}
+		}
+	}
+	return sData, err
+}
+
+func (r *TBMiddleGoods) addGpLst(lst []TBGoodsGroup) {
+	for i := range lst {
+		if r.GOODSGROUPID == lst[i].DESTGOODSGROUPID {
+			r.GPLST = append(r.GPLST, lst[i])
+		}
+	}
+}
+
+func (r *TBMiddleGoods) addWdLst(lst []TBWrstandard) {
+	for i := range lst {
+		if r.MIDDLEGOODSID == lst[i].MIDDLEGOODSID {
+			r.WDLST = append(r.WDLST, lst[i])
+		}
+	}
+}
+
+// TBGoodsGroup 套保品种/期货品种
+type TBGoodsGroup struct {
+	GOODSGROUPID     int64     `json:"goodsgroupid"  xorm:"'GOODSGROUPID'"`     // 商品组ID(自增ID)
+	GOODSGROUPNAME   string    `json:"goodsgroupname"  xorm:"'GOODSGROUPNAME'"` // 商品组名称
+	GOODUNITID       int32     `json:"goodunitid"  xorm:"'GOODUNITID'"`         // 报价单位ID
+	CONVERTRATIO     float64   `json:"convertratio"  xorm:"'CONVERTRATIO'"`     // 折算系数
+	DESTGOODSGROUPID int64     `json:"-"  xorm:"'DESTGOODSGROUPID'"`            // 目标商品组id
+	EXEXCHANGECODE   string    `json:"exexchangecode"  xorm:"'EXEXCHANGECODE'"` // 交易所代码
+	EXEXCHANGENAME   string    `json:"exexchangename"  xorm:"'EXEXCHANGENAME'"` // 交易所名称
+	ENUMDICNAME      string    `json:"enumdicname"  xorm:"'ENUMDICNAME'"`       // 单位名称
+	GDLST            []TBGoods // 商品列表
+}
+
+func (r *TBGoodsGroup) calc() {
+	r.GDLST = make([]TBGoods, 0)
+}
+
+func (r *TBGoodsGroup) buildSql() string {
+	var sqlId utils.SQLVal = `
+select t.goodsgroupid,
+       t.goodsgroupname,
+       t.goodunitid,
+       c.convertratio,
+       c.destgoodsgroupid,
+       ex.exexchangecode,
+       ex.exexchangename,
+       e.enumdicname
+  from goodsgroup t
+  inner join ermcp_ggconvertconfig c
+    on t.goodsgroupid = c.srcgoodsgroupid
+  left join externalexchange ex on t.exexchangeid=ex.autoid
+  left join enumdicitem e
+    on t.goodunitid = e.enumitemname
+   and e.enumdiccode = 'goodsunit'
+ where 1 = 1 and t.goodsgroupstatus=1
+`
+
+	return sqlId.String()
+}
+
+// GetDataEx 获取套保品种/期货品种
+func (r *TBGoodsGroup) GetDataEx() (interface{}, error) {
+	sData := make([]TBGoodsGroup, 0)
+	err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
+	for i := range sData {
+		sData[i].calc()
+	}
+	if len(sData) > 0 {
+		// 获取关联商品
+		m := TBGoods{}
+		if d, err := m.GetDataEx(); err == nil {
+			gdLst := d.([]TBGoods)
+			for i := range sData {
+				sData[i].addGdLst(gdLst)
+			}
+		}
+	}
+	return sData, err
+}
+
+func (r *TBGoodsGroup) addGdLst(lst []TBGoods) {
+	for i := range lst {
+		if r.GOODSGROUPID == lst[i].GOODSGROUPID {
+			r.GDLST = append(r.GDLST, lst[i])
+		}
+	}
+}
+
+// TBGoods 套保品种/期货品种/期货合约
+type TBGoods struct {
+	GOODSID      int64   `json:"goodsid"  xorm:"'GOODSID'"`         // 商品ID(自增ID SEQ_GOODS)
+	GOODSCODE    string  `json:"goodscode"  xorm:"'GOODSCODE'"`     // 商品代码(内部)
+	GOODSNAME    string  `json:"goodsname"  xorm:"'GOODSNAME'"`     // 商品名称
+	GOODSGROUPID int64   `json:"-"  xorm:"'GOODSGROUPID'"`          // 所属商品组ID
+	AGREEUNIT    float64 `json:"agreeunit"  xorm:"'AGREEUNIT'"`     // 合约乘数
+	ENUMDICNAME  string  `json:"enumdicname"  xorm:"'ENUMDICNAME'"` // 单位名称
+}
+
+func (r *TBGoods) calc() {
+
+}
+
+func (r *TBGoods) buildSql() string {
+	var sqlId utils.SQLVal = `
+select t.goodsid,
+       t.goodscode,
+       t.goodsname,
+       t.goodsgroupid,
+       t.agreeunit,
+       e.enumdicname
+  from goods t
+  left join enumdicitem e
+    on t.goodunitid = e.enumitemname
+   and e.enumdiccode = 'goodsunit'
+ where 1 = 1
+   and t.goodsstatus not in (4, 5, 6)
+   and t.goodsgroupid in
+       (select srcgoodsgroupid from ermcp_ggconvertconfig)
+`
+
+	return sqlId.String()
+}
+
+// GetDataEx 获取套保品种/期货品种/期货合约
+func (r *TBGoods) GetDataEx() (interface{}, error) {
+	sData := make([]TBGoods, 0)
+	err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
+	for i := range sData {
+		sData[i].calc()
+	}
+	return sData, err
+}
+
+// TBWrstandard 套保品种/商品信息(现货商品)
+type TBWrstandard struct {
+	WRSTANDARDID      int64   `json:"wrstandardid"  xorm:"'WRSTANDARDID'"`           // 现货商品ID(SEQ_WRSTANDARD)
+	WRSTANDARDCODE    string  `json:"wrstandardcode"  xorm:"'WRSTANDARDCODE'"`       // 现货商品代码
+	WRSTANDARDNAME    string  `json:"wrstandardname"  xorm:"'WRSTANDARDNAME'"`       // 现货商品名称
+	DELIVERYGOODSID   int64   `json:"-"  xorm:"'DELIVERYGOODSID'"`                   // 品种ID
+	VATRATE           float64 `json:"vatrate"  xorm:"'VATRATE'"`                     // 增值税率
+	DELIVERYGOODSNAME string  `json:"deliverygoodsname"  xorm:"'DELIVERYGOODSNAME'"` // 品种名称
+	CONVERTRATIO      float64 `json:"convertratio"  xorm:"'CONVERTRATIO'"`           // 折算系数
+	MIDDLEGOODSID     int64   `json:"-"  xorm:"'MIDDLEGOODSID'"`                     // 品种id
+	ENUMDICNAME       string  `json:"enumdicname"  xorm:"'ENUMDICNAME'"`             // 单位名称
+}
+
+func (r *TBWrstandard) calc() {
+
+}
+
+func (r *TBWrstandard) buildSql() string {
+	var sqlId utils.SQLVal = `
+select t.wrstandardid,
+       t.wrstandardcode,
+       t.wrstandardname,
+       t.deliverygoodsid,
+       t.vatrate,
+       g.deliverygoodsname,
+       c.convertratio,
+       c.middlegoodsid,
+       e.enumdicname
+  from wrstandard t
+  left join deliverygoods g
+    on t.deliverygoodsid = g.deliverygoodsid
+ inner join erms2_wrsconvertdetail c
+    on t.wrstandardid = c.wrstandardid
+  left join enumdicitem e
+    on t.unitid = e.enumitemname
+   and e.enumdiccode = 'goodsunit'
+ where 1 = 1 and t.isvalid=1
+ order by c.middlegoodsid
+`
+
+	return sqlId.String()
+}
+
+// GetDataEx 获取套保品种/商品信息(现货商品)
+func (r *TBWrstandard) GetDataEx() (interface{}, error) {
+	sData := make([]TBWrstandard, 0)
+	err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
+	for i := range sData {
+		sData[i].calc()
+	}
+	return sData, err
+}