|
|
@@ -1797,22 +1797,27 @@ func (r *Ermcp3AreaStockReportEx) buildSqlReportSum(fields []string) string {
|
|
|
|
|
|
// Ermcp3ArealSumPL 损益汇总表
|
|
|
type Ermcp3ArealSumPL 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
|
|
|
- MIDDLEGOODSID int64 `json:"middlegoodsid" xorm:"MIDDLEGOODSID"` // 套保品种ID(SEQ_ERMS_MIDDLEGOODS)
|
|
|
- CURRENCYID int32 `json:"currencyid" xorm:"CURRENCYID"` // 结算币种ID
|
|
|
- SPOTACTUALPL float64 `json:"spotactualpl" xorm:"SPOTACTUALPL"` // 现货损益
|
|
|
- SPOTFLOATPL float64 `json:"spotfloatpl" xorm:"SPOTFLOATPL"` // 现货浮动损益
|
|
|
- FUTUREACTUALPL float64 `json:"futureactualpl" xorm:"FUTUREACTUALPL"` // 期货损益
|
|
|
- FUTUREFLOATPL float64 `json:"futurefloatpl" xorm:"FUTUREFLOATPL"` // 期货浮动损益
|
|
|
- SUMACTUALPL float64 `json:"sumactualpl" xorm:"SUMACTUALPL"` // 实际损益 = (ActualPL + FutureActualPL)
|
|
|
- SUMPL float64 `json:"sumpl" xorm:"'SUMPL'"` // 汇总损益
|
|
|
- UPDATETIME string `json:"updatetime" xorm:"UPDATETIME"` // 更新时间
|
|
|
- MIDDLEGOODSNAME string `json:"middlegoodsname" xorm:"'MIDDLEGOODSNAME'"` // 套保品种名称
|
|
|
- MIDDLEGOODSCODE string `json:"middlegoodscode" xorm:"'MIDDLEGOODSCODE'"` // 套保品种代码
|
|
|
- GOODSUNITID int32 `json:"goodsunitid" xorm:"'GOODSUNITID'"` // 套保品种单位id
|
|
|
+ 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
|
|
|
+ MIDDLEGOODSID int64 `json:"middlegoodsid" xorm:"MIDDLEGOODSID"` // 套保品种ID(SEQ_ERMS_MIDDLEGOODS)
|
|
|
+ CURRENCYID int32 `json:"currencyid" xorm:"CURRENCYID"` // 结算币种ID
|
|
|
+ SPOTACTUALPL float64 `json:"spotactualpl" xorm:"SPOTACTUALPL"` // 现货损益
|
|
|
+ SPOTFLOATPL float64 `json:"spotfloatpl" xorm:"SPOTFLOATPL"` // 现货浮动损益
|
|
|
+ FUTUREACTUALPL float64 `json:"futureactualpl" xorm:"FUTUREACTUALPL"` // 期货损益
|
|
|
+ FUTUREFLOATPL float64 `json:"futurefloatpl" xorm:"FUTUREFLOATPL"` // 期货浮动损益
|
|
|
+ SUMACTUALPL float64 `json:"sumactualpl" xorm:"SUMACTUALPL"` // 实际损益 = (ActualPL + FutureActualPL)
|
|
|
+ SUMPL float64 `json:"sumpl" xorm:"'SUMPL'"` // 总敞口损益 | 汇总损益
|
|
|
+ UPDATETIME string `json:"updatetime" xorm:"UPDATETIME"` // 更新时间
|
|
|
+ MIDDLEGOODSNAME string `json:"middlegoodsname" xorm:"'MIDDLEGOODSNAME'"` // 套保品种名称
|
|
|
+ MIDDLEGOODSCODE string `json:"middlegoodscode" xorm:"'MIDDLEGOODSCODE'"` // 套保品种代码
|
|
|
+ GOODSUNITID int32 `json:"goodsunitid" xorm:"'GOODSUNITID'"` // 套保品种单位id
|
|
|
+ TOTALSPOTQTY float64 `json:"totalspotqty" xorm:"'TOTALSPOTQTY'"` // 现货头寸总量
|
|
|
+ TOTALFUTUREQTY float64 `json:"totalfutureqty" xorm:"'TOTALFUTUREQTY'"` // 期货头寸总量
|
|
|
+ TOTALNEEDHEDGEQTY float64 `json:"totalneedhedgeqty" xorm:"'TOTALNEEDHEDGEQTY'"` // 应套保总量
|
|
|
+ FUTURESPOTRATIO float64 `json:"futurespotratio" xorm:"'FUTURESPOTRATIO'"` // 期现比例 = 期货头寸总量 / 现货头寸总量
|
|
|
+ HEDGEEXPOSUREPL float64 `json:"hedgeexposurepl" xorm:"'HEDGEEXPOSUREPL'"` // 套保敞口损益
|
|
|
|
|
|
ACCOUNTNAME string `json:"accountname"` // 机构名称
|
|
|
ENUMDICNAME string `json:"enumdicname"` // 单位名称(套保品种)
|
|
|
@@ -1842,45 +1847,66 @@ func (r *Ermcp3ArealSumPL) buildSql() string {
|
|
|
|
|
|
// buildSqlDay 损益汇总日报表(需要汇总维度)
|
|
|
func (r *Ermcp3ArealSumPL) buildSqlDay() string {
|
|
|
- var sqlId utils.SQLVal = "SELECT t.RECKONDATE," +
|
|
|
- " t.AREAUSERID," +
|
|
|
- " t.CURRENCYID," +
|
|
|
- " sum(t.SPOTACTUALPL) SPOTACTUALPL," +
|
|
|
- " sum(t.SPOTFLOATPL) SPOTFLOATPL," +
|
|
|
- " sum(t.FUTUREACTUALPL) FUTUREACTUALPL," +
|
|
|
- " sum(t.FUTUREFLOATPL) FUTUREFLOATPL," +
|
|
|
- " sum(t.SUMACTUALPL) SUMACTUALPL," +
|
|
|
- " sum(t.SUMPL) SUMPL" +
|
|
|
- " FROM RECKON_ERMCP_AREASUMPL t" +
|
|
|
- " WHERE 1 = 1"
|
|
|
+ var sqlId utils.SQLVal = `
|
|
|
+SELECT t.RECKONDATE,
|
|
|
+ t.AREAUSERID,
|
|
|
+ t.MIDDLEGOODSID,
|
|
|
+ t.CURRENCYID,
|
|
|
+ t.SPOTACTUALPL,
|
|
|
+ t.SPOTFLOATPL,
|
|
|
+ t.FUTUREACTUALPL,
|
|
|
+ t.FUTUREFLOATPL,
|
|
|
+ t.SUMACTUALPL,
|
|
|
+ t.SUMPL,
|
|
|
+ to_char(t.UPDATETIME, 'yyyy-mm-dd hh24:mi:ss') UPDATETIME,
|
|
|
+ g.middlegoodsname,
|
|
|
+ g.middlegoodscode,
|
|
|
+ g.goodsunitid,
|
|
|
+ t.totalspotqty,
|
|
|
+ t.totalfutureqty,
|
|
|
+ t.totalneedhedgeqty,
|
|
|
+ t.futurespotratio,
|
|
|
+ t.hedgeexposurepl
|
|
|
+ FROM RECKON_ERMCP_AREASUMPL t
|
|
|
+ LEFT JOIN ERMS_MIDDLEGOODS g
|
|
|
+ on t.middlegoodsid = g.middlegoodsid
|
|
|
+ WHERE 1 = 1
|
|
|
+`
|
|
|
sqlId.And("t.AREAUSERID", r.AREAUSERID)
|
|
|
if r.QueryType == 1 {
|
|
|
sqlId.And("t.RECKONDATE", r.RECKONDATE)
|
|
|
} else if r.QueryType == 2 {
|
|
|
sqlId.Join(fmt.Sprintf(" and t.RECKONDATE >= '%v' and t.RECKONDATE <= '%v' ", r.BeginDate, r.EndDate))
|
|
|
}
|
|
|
- sqlId.Join(" GROUP BY t.RECKONDATE, t.AREAUSERID, t.CURRENCYID")
|
|
|
return sqlId.String()
|
|
|
}
|
|
|
|
|
|
func (r *Ermcp3ArealSumPL) buildSqlDayDetail() string {
|
|
|
- var sqlId utils.SQLVal = "SELECT t.RECKONDATE," +
|
|
|
- " t.AREAUSERID," +
|
|
|
- " t.MIDDLEGOODSID," +
|
|
|
- " t.CURRENCYID," +
|
|
|
- " t.SPOTACTUALPL," +
|
|
|
- " t.SPOTFLOATPL," +
|
|
|
- " t.FUTUREACTUALPL," +
|
|
|
- " t.FUTUREFLOATPL," +
|
|
|
- " t.SUMACTUALPL," +
|
|
|
- " t.SUMPL," +
|
|
|
- " to_char(t.UPDATETIME, 'yyyy-mm-dd hh24:mi:ss') UPDATETIME," +
|
|
|
- " g.middlegoodsname," +
|
|
|
- " g.middlegoodscode," +
|
|
|
- " g.goodsunitid" +
|
|
|
- " FROM RECKON_ERMCP_AREASUMPL t" +
|
|
|
- " LEFT JOIN ERMS_MIDDLEGOODS g on t.middlegoodsid=g.middlegoodsid" +
|
|
|
- " WHERE 1 = 1"
|
|
|
+ var sqlId utils.SQLVal = `
|
|
|
+SELECT t.RECKONDATE,
|
|
|
+ t.AREAUSERID,
|
|
|
+ t.MIDDLEGOODSID,
|
|
|
+ t.CURRENCYID,
|
|
|
+ t.SPOTACTUALPL,
|
|
|
+ t.SPOTFLOATPL,
|
|
|
+ t.FUTUREACTUALPL,
|
|
|
+ t.FUTUREFLOATPL,
|
|
|
+ t.SUMACTUALPL,
|
|
|
+ t.SUMPL,
|
|
|
+ to_char(t.UPDATETIME, 'yyyy-mm-dd hh24:mi:ss') UPDATETIME,
|
|
|
+ g.middlegoodsname,
|
|
|
+ g.middlegoodscode,
|
|
|
+ g.goodsunitid,
|
|
|
+ t.totalspotqty,
|
|
|
+ t.totalfutureqty,
|
|
|
+ t.totalneedhedgeqty,
|
|
|
+ t.futurespotratio,
|
|
|
+ t.hedgeexposurepl
|
|
|
+ FROM RECKON_ERMCP_AREASUMPL t
|
|
|
+ LEFT JOIN ERMS_MIDDLEGOODS g
|
|
|
+ on t.middlegoodsid = g.middlegoodsid
|
|
|
+ WHERE 1 = 1
|
|
|
+`
|
|
|
sqlId.And("t.AREAUSERID", r.AREAUSERID)
|
|
|
sqlId.AndEx("t.RECKONDATE", r.RECKONDATE, len(r.RECKONDATE) > 0)
|
|
|
if len(r.BeginDate) > 0 && len(r.EndDate) > 0 {
|
|
|
@@ -1891,22 +1917,35 @@ func (r *Ermcp3ArealSumPL) buildSqlDayDetail() string {
|
|
|
}
|
|
|
|
|
|
func (r *Ermcp3ArealSumPL) buildSqlCycle() string {
|
|
|
- var sqlId utils.SQLVal = "SELECT t.AREAUSERID," +
|
|
|
- " t.CYCLETIME," +
|
|
|
- " t.CYCLETYPE," +
|
|
|
- " t.CURRENCYID," +
|
|
|
- " sum(t.SPOTACTUALPL) SPOTACTUALPL," +
|
|
|
- " sum(t.SPOTFLOATPL) SPOTFLOATPL," +
|
|
|
- " sum(t.FUTUREACTUALPL) FUTUREACTUALPL," +
|
|
|
- " sum(t.FUTUREFLOATPL) FUTUREFLOATPL," +
|
|
|
- " sum(t.SUMACTUALPL) SUMACTUALPL," +
|
|
|
- " sum(t.SUMPL) SUMPL" +
|
|
|
- " FROM REPORT_ERMCP_AREASUMPL t" +
|
|
|
- " WHERE 1 = 1"
|
|
|
+ var sqlId utils.SQLVal = `
|
|
|
+SELECT t.CYCLETYPE,
|
|
|
+ t.CYCLETIME,
|
|
|
+ t.AREAUSERID,
|
|
|
+ t.MIDDLEGOODSID,
|
|
|
+ t.CURRENCYID,
|
|
|
+ t.SPOTACTUALPL,
|
|
|
+ t.SPOTFLOATPL,
|
|
|
+ t.FUTUREACTUALPL,
|
|
|
+ t.FUTUREFLOATPL,
|
|
|
+ t.SUMACTUALPL,
|
|
|
+ t.SUMPL,
|
|
|
+ to_char(t.UPDATETIME, 'yyyy-mm-dd hh24:mi:ss') UPDATETIME,
|
|
|
+ g.middlegoodsname,
|
|
|
+ g.middlegoodscode,
|
|
|
+ g.goodsunitid,
|
|
|
+ t.totalspotqty,
|
|
|
+ t.totalfutureqty,
|
|
|
+ t.totalneedhedgeqty,
|
|
|
+ t.futurespotratio,
|
|
|
+ t.hedgeexposurepl
|
|
|
+ FROM REPORT_ERMCP_AREASUMPL t
|
|
|
+ LEFT JOIN ERMS_MIDDLEGOODS g
|
|
|
+ on t.middlegoodsid = g.middlegoodsid
|
|
|
+ WHERE 1 = 1
|
|
|
+`
|
|
|
sqlId.And("t.AREAUSERID", r.AREAUSERID)
|
|
|
sqlId.And("t.cycletype", r.CYCLETYPE)
|
|
|
sqlId.And("t.cycletime", r.CYCLETIME)
|
|
|
- sqlId.Join(" GROUP BY t.AREAUSERID, t.CURRENCYID, t.CYCLETIME, t.CYCLETYPE")
|
|
|
return sqlId.String()
|
|
|
}
|
|
|
|