|
|
@@ -8,7 +8,6 @@ package models
|
|
|
|
|
|
import (
|
|
|
"fmt"
|
|
|
- "github.com/shopspring/decimal"
|
|
|
"mtp2_if/db"
|
|
|
"mtp2_if/mtpcache"
|
|
|
"mtp2_if/utils"
|
|
|
@@ -678,6 +677,7 @@ type Ermcp3ExposureContractDetail struct {
|
|
|
EnumdicName string `json:"enumdicname"` // 单位名称
|
|
|
BUYUSERNAME string `json:"buyusername"` // 采购方名称
|
|
|
SELLUSERNAME string `json:"sellusername"` // 销售方名称
|
|
|
+ USERNAME string `json:"username"` // 交易用户
|
|
|
CurQty float64 `json:"curqty"` // 今定价量
|
|
|
DiffQty float64 `json:"diffqty"` // 套保品种今变动量
|
|
|
DiffHedgeQty float64 `json:"diffhedgeqty"` // 套保变动量
|
|
|
@@ -699,6 +699,9 @@ func (r *Ermcp3ExposureContractDetail) calc() {
|
|
|
r.EnumdicName = mtpcache.GetEnumDicitemName(r.UNITID)
|
|
|
r.BUYUSERNAME = mtpcache.GetUserNameByUserId(r.BUYUSERID)
|
|
|
r.SELLUSERNAME = mtpcache.GetUserNameByUserId(r.SELLUSERID)
|
|
|
+ r.USERNAME = mtpcache.GetUserNameByUserId(r.USERID)
|
|
|
+ // 终端取的是BUYUSERNAME显示, USERNAME是新加的, 把r.BUYUSERNAME = r.USERNAME 这样终端不用改
|
|
|
+ r.BUYUSERNAME = r.USERNAME
|
|
|
}
|
|
|
|
|
|
func (r *Ermcp3ExposureContractDetail) buildSql() string {
|
|
|
@@ -757,6 +760,7 @@ func (r *Ermcp3ExposureContractDetail) GetDataEx() (interface{}, error) {
|
|
|
sData := make([]Ermcp3ExposureContractDetail, 0)
|
|
|
err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
|
|
|
for i := range sData {
|
|
|
+ sData[i].USERID = r.USERID
|
|
|
sData[i].calc()
|
|
|
}
|
|
|
return sData, err
|
|
|
@@ -864,51 +868,51 @@ func (r *Ermcp3ExposureHedgeplanDetail) GetDataEx() (interface{}, error) {
|
|
|
|
|
|
// Ermcp3AreaSpotPLReport 现货报表(日/月/周/季/年)
|
|
|
type Ermcp3AreaSpotPLReport struct {
|
|
|
- RECKONDATE string `json:"reckondate" xorm:"RECKONDATE"` // 日照时期(yyyyMMdd)
|
|
|
- CYCLETIME string `json:"cycletime" xorm:"'CYCLETIME'"` // 周期时间 月(YYYYMM) 季(YYYYQ) 年(YYYY) 周(YYYYIW) 全(0)【原值】
|
|
|
- CYCLETYPE int32 `json:"cycletype" xorm:"'CYCLETYPE'"` // 周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】
|
|
|
- AREAUSERID int64 `json:"areauserid" xorm:"AREAUSERID"` // 所属机构\交易用户ID
|
|
|
- ACCOUNTID int64 `json:"accountid" xorm:"ACCOUNTID"` // 期货账户ID (作废, 默认为0)
|
|
|
- WRFACTORTYPEID int64 `json:"wrfactortypeid" xorm:"WRFACTORTYPEID"` // 仓单要素类型ID(212+Unix秒时间戳(10位)+xxxxxx)
|
|
|
- CURRENCYID int32 `json:"currencyid" xorm:"CURRENCYID"` // 结算币种ID【原值】
|
|
|
- BIZTYPE int32 `json:"biztype" xorm:"BIZTYPE"` // 业务类型 - 1:套保 2:套利
|
|
|
- DELIVERYGOODSID int64 `json:"deliverygoodsid" xorm:"DELIVERYGOODSID"` // 现货品种ID
|
|
|
- WRSTANDARDID int64 `json:"wrstandardid" xorm:"WRSTANDARDID"` // 现货品类ID
|
|
|
- SPOTGOODSBRANDID int32 `json:"spotgoodsbrandid" xorm:"SPOTGOODSBRANDID"` // 现货品牌ID
|
|
|
- ORIBUYQTY float64 `json:"oribuyqty" xorm:"ORIBUYQTY"` // 期初采购总量
|
|
|
- ORIBUYAMOUNT float64 `json:"oribuyamount" xorm:"ORIBUYAMOUNT"` // 期初采购总额
|
|
|
- ORISELLQTY float64 `json:"orisellqty" xorm:"ORISELLQTY"` // 期初销售总量
|
|
|
- ORISELLAMOUNT float64 `json:"orisellamount" xorm:"ORISELLAMOUNT"` // 期初销售总额
|
|
|
- ORIQTY float64 `json:"oriqty" xorm:"ORIQTY"` // 期初量
|
|
|
- ORIAVERAGEPRICE float64 `json:"oriaverageprice" xorm:"ORIAVERAGEPRICE"` // 期初均价
|
|
|
- ORIAMOUNT float64 `json:"oriamount" xorm:"ORIAMOUNT"` // 期初额
|
|
|
- TODAYBUYQTY float64 `json:"todaybuyqty" xorm:"TODAYBUYQTY"` // 今日采购量(今采购量)
|
|
|
- TODAYBUYAMOUNT float64 `json:"todaybuyamount" xorm:"TODAYBUYAMOUNT"` // 今日采购额(今采购额)
|
|
|
- TODAYBUYAVERAGEPRICE float64 `json:"todaybuyaverageprice" xorm:"TODAYBUYAVERAGEPRICE"` // 今日采购均价
|
|
|
- TODAYSELLQTY float64 `json:"todaysellqty" xorm:"TODAYSELLQTY"` // 今日销售量(今销售量)
|
|
|
- TODAYSELLAMOUNT float64 `json:"todaysellamount" xorm:"TODAYSELLAMOUNT"` // 今日销售额(今销售额)
|
|
|
- TODAYSELLAVERAGEPRICE float64 `json:"todaysellaverageprice" xorm:"TODAYSELLAVERAGEPRICE"` // 今日销售均价
|
|
|
- CURBUYQTY float64 `json:"curbuyqty" xorm:"CURBUYQTY"` // 期末采购总量
|
|
|
- CURBUYAMOUNT float64 `json:"curbuyamount" xorm:"CURBUYAMOUNT"` // 期末采购总额
|
|
|
- CURSELLQTY float64 `json:"cursellqty" xorm:"CURSELLQTY"` // 期末销售总量
|
|
|
- CURSELLAMOUNT float64 `json:"cursellamount" xorm:"CURSELLAMOUNT"` // 期末销售总额
|
|
|
- CURQTY float64 `json:"curqty" xorm:"CURQTY"` // 期末量
|
|
|
- CURAVERAGEPRICE float64 `json:"curaverageprice" xorm:"CURAVERAGEPRICE"` // 期末均价
|
|
|
- CURAMOUNT float64 `json:"curamount" xorm:"CURAMOUNT"` // 期末额
|
|
|
- CURSPOTPRICE float64 `json:"curspotprice" xorm:"CURSPOTPRICE"` // 参考市价(最新价)
|
|
|
- CURMARKETVALUE float64 `json:"curmarketvalue" xorm:"CURMARKETVALUE"` // 参考市值(期末市值)
|
|
|
- ACTUALPL float64 `json:"actualpl" xorm:"ACTUALPL"` // 现货损益
|
|
|
- FLOATPL float64 `json:"floatpl" xorm:"FLOATPL"` // 浮动损益
|
|
|
- UPDATETIME string `json:"updatetime" xorm:"UPDATETIME"` // 更新时间
|
|
|
- TODAYINQTY float64 `json:"todayinqty" xorm:"TODAYINQTY"` // 今日入库量(今入库量)
|
|
|
- TODAYOUTQTY float64 `json:"todayoutqty" xorm:"TODAYOUTQTY"` // 今日出库量(今出库量)
|
|
|
- DELIVERYGOODSCODE string `json:"deliverygoodscode" xorm:"'DELIVERYGOODSCODE'"` // 现货商品代码
|
|
|
- DELIVERYGOODSNAME string `json:"deliverygoodsname" xorm:"'DELIVERYGOODSNAME'"` // 现货商品名称
|
|
|
- GOODSUNITID int32 `json:"goodsunitid" xorm:"'GOODSUNITID'"` // 现货商品单位id
|
|
|
- WRSTANDARDCODE string `json:"wrstandardcode" xorm:"'WRSTANDARDCODE'"` // 品类代码
|
|
|
- WRSTANDARDNAME string `json:"wrstandardname" xorm:"'WRSTANDARDNAME'"` // 品类名称
|
|
|
- UNITID int32 `json:"unitid" xorm:"'UNITID'"` // 品类单位id
|
|
|
- BRANDNAME string `json:"brandname" xorm:"'BRANDNAME'"` // 品牌名称
|
|
|
+ RECKONDATE string `json:"reckondate" xorm:"RECKONDATE"` // 日照时期(yyyyMMdd)
|
|
|
+ CYCLETIME string `json:"cycletime" xorm:"'CYCLETIME'"` // 周期时间 月(YYYYMM) 季(YYYYQ) 年(YYYY) 周(YYYYIW) 全(0)【原值】
|
|
|
+ CYCLETYPE int32 `json:"cycletype" xorm:"'CYCLETYPE'"` // 周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】
|
|
|
+ AREAUSERID int64 `json:"areauserid" xorm:"AREAUSERID"` // 所属机构\交易用户ID
|
|
|
+ ACCOUNTID int64 `json:"accountid" xorm:"ACCOUNTID"` // 期货账户ID (作废, 默认为0)
|
|
|
+ WRFACTORTYPEID int64 `json:"wrfactortypeid" xorm:"WRFACTORTYPEID"` // 仓单要素类型ID(212+Unix秒时间戳(10位)+xxxxxx)
|
|
|
+ CURRENCYID int32 `json:"currencyid" xorm:"CURRENCYID"` // 结算币种ID【原值】
|
|
|
+ BIZTYPE int32 `json:"biztype" xorm:"BIZTYPE"` // 业务类型 - 1:套保 2:套利
|
|
|
+ DELIVERYGOODSID int64 `json:"deliverygoodsid" xorm:"DELIVERYGOODSID"` // 现货品种ID
|
|
|
+ WRSTANDARDID int64 `json:"wrstandardid" xorm:"WRSTANDARDID"` // 现货品类ID
|
|
|
+ SPOTGOODSBRANDID int32 `json:"spotgoodsbrandid" xorm:"SPOTGOODSBRANDID"` // 现货品牌ID
|
|
|
+ ORIBUYQTY float64 `json:"oribuyqty" xorm:"ORIBUYQTY"` // 期初采购总量
|
|
|
+ ORIBUYAMOUNT float64 `json:"oribuyamount" xorm:"ORIBUYAMOUNT"` // 期初采购总额
|
|
|
+ ORISELLQTY float64 `json:"orisellqty" xorm:"ORISELLQTY"` // 期初销售总量
|
|
|
+ ORISELLAMOUNT float64 `json:"orisellamount" xorm:"ORISELLAMOUNT"` // 期初销售总额
|
|
|
+ ORIQTY float64 `json:"oriqty" xorm:"ORIQTY"` // 期初量
|
|
|
+ ORIAVERAGEPRICE SFLOAT64 `json:"oriaverageprice" xorm:"ORIAVERAGEPRICE"` // 期初均价
|
|
|
+ ORIAMOUNT float64 `json:"oriamount" xorm:"ORIAMOUNT"` // 期初额
|
|
|
+ TODAYBUYQTY float64 `json:"todaybuyqty" xorm:"TODAYBUYQTY"` // 今日采购量(今采购量)
|
|
|
+ TODAYBUYAMOUNT float64 `json:"todaybuyamount" xorm:"TODAYBUYAMOUNT"` // 今日采购额(今采购额)
|
|
|
+ TODAYBUYAVERAGEPRICE SFLOAT64 `json:"todaybuyaverageprice" xorm:"TODAYBUYAVERAGEPRICE"` // 今日采购均价
|
|
|
+ TODAYSELLQTY float64 `json:"todaysellqty" xorm:"TODAYSELLQTY"` // 今日销售量(今销售量)
|
|
|
+ TODAYSELLAMOUNT float64 `json:"todaysellamount" xorm:"TODAYSELLAMOUNT"` // 今日销售额(今销售额)
|
|
|
+ TODAYSELLAVERAGEPRICE SFLOAT64 `json:"todaysellaverageprice" xorm:"TODAYSELLAVERAGEPRICE"` // 今日销售均价
|
|
|
+ CURBUYQTY float64 `json:"curbuyqty" xorm:"CURBUYQTY"` // 期末采购总量
|
|
|
+ CURBUYAMOUNT float64 `json:"curbuyamount" xorm:"CURBUYAMOUNT"` // 期末采购总额
|
|
|
+ CURSELLQTY float64 `json:"cursellqty" xorm:"CURSELLQTY"` // 期末销售总量
|
|
|
+ CURSELLAMOUNT float64 `json:"cursellamount" xorm:"CURSELLAMOUNT"` // 期末销售总额
|
|
|
+ CURQTY float64 `json:"curqty" xorm:"CURQTY"` // 期末量
|
|
|
+ CURAVERAGEPRICE SFLOAT64 `json:"curaverageprice" xorm:"CURAVERAGEPRICE"` // 期末均价
|
|
|
+ CURAMOUNT float64 `json:"curamount" xorm:"CURAMOUNT"` // 期末额
|
|
|
+ CURSPOTPRICE SFLOAT64 `json:"curspotprice" xorm:"CURSPOTPRICE"` // 参考市价(最新价)
|
|
|
+ CURMARKETVALUE SFLOAT64 `json:"curmarketvalue" xorm:"CURMARKETVALUE"` // 参考市值(期末市值)
|
|
|
+ ACTUALPL float64 `json:"actualpl" xorm:"ACTUALPL"` // 现货损益
|
|
|
+ FLOATPL SFLOAT64 `json:"floatpl" xorm:"FLOATPL"` // 浮动损益
|
|
|
+ UPDATETIME string `json:"updatetime" xorm:"UPDATETIME"` // 更新时间
|
|
|
+ TODAYINQTY float64 `json:"todayinqty" xorm:"TODAYINQTY"` // 今日入库量(今入库量)
|
|
|
+ TODAYOUTQTY float64 `json:"todayoutqty" xorm:"TODAYOUTQTY"` // 今日出库量(今出库量)
|
|
|
+ DELIVERYGOODSCODE string `json:"deliverygoodscode" xorm:"'DELIVERYGOODSCODE'"` // 现货商品代码
|
|
|
+ DELIVERYGOODSNAME string `json:"deliverygoodsname" xorm:"'DELIVERYGOODSNAME'"` // 现货商品名称
|
|
|
+ GOODSUNITID int32 `json:"goodsunitid" xorm:"'GOODSUNITID'"` // 现货商品单位id
|
|
|
+ WRSTANDARDCODE string `json:"wrstandardcode" xorm:"'WRSTANDARDCODE'"` // 品类代码
|
|
|
+ WRSTANDARDNAME string `json:"wrstandardname" xorm:"'WRSTANDARDNAME'"` // 品类名称
|
|
|
+ UNITID int32 `json:"unitid" xorm:"'UNITID'"` // 品类单位id
|
|
|
+ BRANDNAME string `json:"brandname" xorm:"'BRANDNAME'"` // 品牌名称
|
|
|
|
|
|
EnumdicName string `json:"enumdicname"` // 现货商品单位名称
|
|
|
UNITIDNAME string `json:"unitidname"` // 品类单位名称
|
|
|
@@ -925,12 +929,13 @@ func (r *Ermcp3AreaSpotPLReport) calc() {
|
|
|
r.UNITIDNAME = mtpcache.GetEnumDicitemName(r.UNITID)
|
|
|
r.ACCOUNTNAME = mtpcache.GetUserNameByUserId(r.AREAUSERID)
|
|
|
r.CURRENCYNAME = mtpcache.GetCurrencyName(r.CURRENCYID)
|
|
|
- fCalcAvePrice := func(avePrice *float64, amount, qty float64) {
|
|
|
+ fCalcAvePrice := func(avePrice *SFLOAT64, amount, qty float64) {
|
|
|
if qty > 1e-10 {
|
|
|
- *avePrice = amount / qty
|
|
|
+ avePrice.Set(amount / qty)
|
|
|
+ avePrice.Round(3)
|
|
|
} else if qty < -1e-10 {
|
|
|
- *avePrice = amount / qty
|
|
|
- *avePrice, _ = decimal.NewFromFloat(*avePrice).Round(3).Float64()
|
|
|
+ avePrice.Set(amount / qty)
|
|
|
+ avePrice.Round(3)
|
|
|
} else {
|
|
|
*avePrice = 0
|
|
|
}
|