|
|
@@ -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
|
|
|
+}
|