|
|
@@ -626,3 +626,68 @@ func (r *ErmcpExposurePostion) GetDataEx() (interface{}, error) {
|
|
|
}
|
|
|
return sData, nil
|
|
|
}
|
|
|
+
|
|
|
+// 敞口/期货头寸/期货明细
|
|
|
+type ErmcpHedgePositionDetail struct {
|
|
|
+ HEDGEGOODSID int32 `json:"hedgegoodsid" xorm:"'HEDGEGOODSID'"` // 商品id
|
|
|
+ BUYORSELL int32 `json:"buyorsell" xorm:"'BUYORSELL'"` // 买卖方向 0-买 1-卖
|
|
|
+ TRADEQTY int32 `json:"tradeqty" xorm:"'TRADEQTY'"` // 数量(成交数量)
|
|
|
+ CHANNELBUILDTYPE int32 `json:"channelbuildtype" xorm:"'CHANNELBUILDTYPE'"` // 开平方向 1-建仓 2-平仓
|
|
|
+ TRADETIME string `json:"tradetime" xorm:"'TRADETIME'"` // 时间(成交时间)
|
|
|
+ GOODSCODE string `json:"goodscode" xorm:"'GOODSCODE'"` // 商品代码
|
|
|
+ GOODSNAME string `json:"goodsname" xorm:"'GOODSNAME'"` // 商品名称
|
|
|
+ AREAUSERID int32 `json:"-"` // 所属机构id
|
|
|
+}
|
|
|
+
|
|
|
+func (r *ErmcpHedgePositionDetail) Calc() {
|
|
|
+ if r.BUYORSELL == 1 && r.TRADEQTY > 0{
|
|
|
+ r.TRADEQTY = r.TRADEQTY * -1
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func (r *ErmcpHedgePositionDetail) buildSql() string {
|
|
|
+ sqlId := "select t.hedgegoodsid," +
|
|
|
+ " t.buyorsell," +
|
|
|
+ " tradeqty," +
|
|
|
+ " t.channelbuildtype," +
|
|
|
+ " to_char(t.tradetime, 'yyyy-mm-dd hh24:mi:ss') tradetime," +
|
|
|
+ " g.goodscode," +
|
|
|
+ " g.goodsname" +
|
|
|
+ " from hedge_outtradedetail t" +
|
|
|
+ " inner join taaccount ta" +
|
|
|
+ " on t.accountid = ta.accountid" +
|
|
|
+ " and ta.ismain = 1" +
|
|
|
+ " and ta.relateduserid = %v" +
|
|
|
+ " left join goods g" +
|
|
|
+ " on t.hedgegoodsid = g.goodsid" +
|
|
|
+ " where t.hedgegoodsid = %v" +
|
|
|
+ " union all " +
|
|
|
+ "select t.hedgegoodsid," +
|
|
|
+ " t.buyorsell," +
|
|
|
+ " tradeqty," +
|
|
|
+ " t.channelbuildtype," +
|
|
|
+ " to_char(t.tradetime, 'yyyy-mm-dd hh24:mi:ss') tradetime," +
|
|
|
+ " g.goodscode," +
|
|
|
+ " g.goodsname" +
|
|
|
+ " from his_hedge_outtradedetail t" +
|
|
|
+ " inner join taaccount ta" +
|
|
|
+ " on t.accountid = ta.accountid" +
|
|
|
+ " and ta.ismain = 1" +
|
|
|
+ " and ta.relateduserid = %v" +
|
|
|
+ " left join goods g" +
|
|
|
+ " on t.hedgegoodsid = g.goodsid" +
|
|
|
+ " where t.isvalid = 1" +
|
|
|
+ " and t.hedgegoodsid = %v"
|
|
|
+ sqlId = fmt.Sprintf(sqlId, r.AREAUSERID, r.HEDGEGOODSID, r.AREAUSERID, r.HEDGEGOODSID)
|
|
|
+ return sqlId
|
|
|
+}
|
|
|
+
|
|
|
+// 获取持仓头寸明细(成交记录)
|
|
|
+func (r *ErmcpHedgePositionDetail) GetDataEx() (interface{}, error) {
|
|
|
+ sData := make([]ErmcpHedgePositionDetail, 0)
|
|
|
+ err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
|
|
|
+ for i := range sData {
|
|
|
+ sData[i].Calc()
|
|
|
+ }
|
|
|
+ return sData, err
|
|
|
+}
|