|
|
@@ -384,8 +384,6 @@ func (r *WrPosition) buildSql() string {
|
|
|
// 现货明细 仓单编号 + 品种 + 仓库 + 仓单要素 即全维度 跟库存汇总一样
|
|
|
return r.buildSql3()
|
|
|
}
|
|
|
-
|
|
|
- // TODO: 获取履约中的数量
|
|
|
}
|
|
|
|
|
|
func (r *WrPosition) buildSql1() string {
|
|
|
@@ -571,10 +569,11 @@ func (r *WrOrderDetail) buildSql() string {
|
|
|
" on t.wrtradeorderid = c.wrtradeorderid" +
|
|
|
" left join tmp k" +
|
|
|
" on t.wrfactortypeid = k.wrfactortypeid" +
|
|
|
- " where t.WRTRADETYPE = 1"
|
|
|
+ " where t.WRTRADETYPE = 1 and t.isspecified=0"
|
|
|
sqlId.And("t.USERID", r.USERID)
|
|
|
sqlId.And("t.haswr", r.HASWR)
|
|
|
sqlId.AndEx("t.marketid", r.MARKETID, r.MARKETID > 0)
|
|
|
+ sqlId.Join(" order by t.ORDERTIME desc")
|
|
|
sqlId.Page(r.Page, r.PageSize)
|
|
|
return sqlId.String()
|
|
|
}
|
|
|
@@ -661,6 +660,7 @@ func (r *WrTradeDetail) buildSql() string {
|
|
|
sqlId.And("ta1.userid", r.USERID)
|
|
|
sqlId.And("t.haswr", r.HASWR)
|
|
|
sqlId.AndEx("t.marketid", r.MARKETID, r.MARKETID > 0)
|
|
|
+ sqlId.Join(" order by t.tradetime desc")
|
|
|
sqlId.Page(r.Page, r.PageSize)
|
|
|
return sqlId.String()
|
|
|
}
|
|
|
@@ -676,3 +676,108 @@ func (r *WrTradeDetail) GetDataByPage() (interface{}, error, int, int, int) {
|
|
|
}
|
|
|
return sData, err, r.Page, r.PageSize, total
|
|
|
}
|
|
|
+
|
|
|
+// WrSpecialMatchOrder 指定对手委托
|
|
|
+type WrSpecialMatchOrder struct {
|
|
|
+ HASWR int32 `json:"haswr" xorm:"HASWR" form:"haswr"` // 是否有仓单-卖方 - 0:无仓单 1:有仓单
|
|
|
+ WRTRADEORDERID string `json:"wrtradeorderid" xorm:"WRTRADEORDERID"` // 仓单贸易委托单ID(320+Unix秒时间戳(10位)+xxxxxx)
|
|
|
+ TRADEDATE string `json:"tradedate" xorm:"TRADEDATE" form:"tradedate"` // 交易日(yyyyMMdd)
|
|
|
+ WRTRADETYPE int32 `json:"wrtradetype" xorm:"WRTRADETYPE" form:"wrtradetype"` // 仓单贸易类型 - 1:挂牌 2:摘牌 3:提货卖(文化中国) 4:提货买(文化中国)
|
|
|
+ BUYORSELL int32 `json:"buyorsell" xorm:"BUYORSELL" form:"buyorsell"` // 买卖 - 0:买 1:卖(挂牌类型 买为采购 卖为销售)
|
|
|
+ MARKETID int64 `json:"marketid" xorm:"MARKETID" form:"marketid"` // 市场ID
|
|
|
+ USERID int64 `json:"userid" xorm:"USERID" form:"userid"` // 用户ID
|
|
|
+ WRFACTORTYPEID int64 `json:"wrfactortypeid" xorm:"WRFACTORTYPEID"` // 仓单要素类型ID/商品ID(77)
|
|
|
+ ORDERQTY float64 `json:"orderqty" xorm:"ORDERQTY" form:"orderqty"` // 委托数量
|
|
|
+ TRADEQTY float64 `json:"tradeqty" xorm:"TRADEQTY" form:"tradeqty"` // 成交数量
|
|
|
+ CANCELQTY float64 `json:"cancelqty" xorm:"CANCELQTY" form:"cancelqty"` // 撤销数量
|
|
|
+ WRPRICETYPE int32 `json:"wrpricetype" xorm:"WRPRICETYPE" form:"wrpricetype"` // 价格方式 - 1:固定价 2-浮动价 - [挂牌]
|
|
|
+ FIXEDPRICE float64 `json:"fixedprice" xorm:"FIXEDPRICE" form:"fixedprice"` // 固定价格(价格)
|
|
|
+ PRICEMOVE float64 `json:"pricemove" xorm:"PRICEMOVE" form:"pricemove"` // 升贴水(浮动价时填写) - [挂牌]
|
|
|
+ TRADEPRICE float64 `json:"tradeprice" xorm:"TRADEPRICE" form:"tradeprice"` // 成交价格
|
|
|
+ ORDERTIME string `json:"ordertime" xorm:"ORDERTIME" form:"ordertime"` // 委托时间
|
|
|
+ WRTRADEORDERSTATUS int32 `json:"wrtradeorderstatus" xorm:"WRTRADEORDERSTATUS"` // 委托状态 - 1:委托请求 2:待冻结 3:委托成功 4:委托失败 5:配对成功 6:已撤 7:已成 8:成交失败 9:委托拒绝 10:挂牌部分成交 11:仓单生成失败 12:首付扣款失败 13:履约失败 14:撤单解冻贷款失败 15:部成部撤
|
|
|
+ USERNAME string `json:"username" xorm:"'USERNAME'"` // 发起方
|
|
|
+ MATCHUSERNAME string `json:"matchusername" xorm:"'MATCHUSERNAME'"` // 指定方
|
|
|
+ MATCHUSERID int64 `json:"matchuserid" xorm:"'MATCHUSERID'"` // 指定方资金账号(字段名为userid,实际存的是accountid by:邓工)
|
|
|
+ Wr2FactorType `xorm:"extends"`
|
|
|
+ PageEx `xorm:"extends"`
|
|
|
+
|
|
|
+ AMOUNT float64 `json:"amount"` // 金额 = 数量 * 价格
|
|
|
+}
|
|
|
+
|
|
|
+func (r *WrSpecialMatchOrder) calc() {
|
|
|
+ r.AMOUNT = r.FIXEDPRICE * r.ORDERQTY
|
|
|
+}
|
|
|
+
|
|
|
+func (r *WrSpecialMatchOrder) buildSql() string {
|
|
|
+ var sqlId utils.SQLVal = "with tmp as" +
|
|
|
+ " (select t.wrfactortypeid," +
|
|
|
+ " t.wrfactortypename," +
|
|
|
+ " t.wrstandardid," +
|
|
|
+ " t.deliverygoodsid," +
|
|
|
+ " g.deliverygoodscode," +
|
|
|
+ " g.deliverygoodsname," +
|
|
|
+ " w.wrstandardcode," +
|
|
|
+ " w.wrstandardname," +
|
|
|
+ " h.warehousecode," +
|
|
|
+ " h.warehousename," +
|
|
|
+ " e.enumdicname," +
|
|
|
+ " w.wrstandardname || '-' || t.wrfactortypename as wrtypename" +
|
|
|
+ " from wrfactortype t" +
|
|
|
+ " left join deliverygoods g" +
|
|
|
+ " on t.deliverygoodsid = g.deliverygoodsid" +
|
|
|
+ " left join wrstandard w" +
|
|
|
+ " on t.wrstandardid = w.wrstandardid" +
|
|
|
+ " left join warehouseinfo h" +
|
|
|
+ " on t.warehouseid = h.autoid" +
|
|
|
+ " left join enumdicitem e" +
|
|
|
+ " on w.unitid = e.enumitemname" +
|
|
|
+ " and e.enumdiccode = 'goodsunit')" +
|
|
|
+ "select t.HASWR," +
|
|
|
+ " to_char(t.WRTRADEORDERID) WRTRADEORDERID," +
|
|
|
+ " t.WRTRADETYPE," +
|
|
|
+ " t.BUYORSELL," +
|
|
|
+ " t.MARKETID," +
|
|
|
+ " t.USERID," +
|
|
|
+ " t.ORDERQTY," +
|
|
|
+ " t.TRADEQTY," +
|
|
|
+ " t.CANCELQTY," +
|
|
|
+ " t.WRPRICETYPE," +
|
|
|
+ " t.FIXEDPRICE," +
|
|
|
+ " t.PRICEMOVE," +
|
|
|
+ " t.TRADEPRICE," +
|
|
|
+ " to_char(t.ORDERTIME, 'yyyy-mm-dd hh24:mi:ss') ORDERTIME," +
|
|
|
+ " t.WRTRADEORDERSTATUS," +
|
|
|
+ " m.matchuserid," +
|
|
|
+ " u1.accountname username," +
|
|
|
+ " u2.accountname matchusername," +
|
|
|
+ " k.*" +
|
|
|
+ " from wrtrade_orderdetail t" +
|
|
|
+ " left join WRTrade_MatchDetail m on t.wrtradeorderid=m.wrtradeorderid" +
|
|
|
+ " left join useraccount u1 on t.userid=u1.userid" +
|
|
|
+ " left join taaccount ta2 on m.matchuserid=ta2.accountid" +
|
|
|
+ " left join useraccount u2 on ta2.userid=u2.userid" +
|
|
|
+ " left join tmp k" +
|
|
|
+ " on t.wrfactortypeid = k.wrfactortypeid" +
|
|
|
+ " where t.WRTRADETYPE = 1" +
|
|
|
+ " and t.isspecified = 1" +
|
|
|
+ " and t.WRTRADEORDERSTATUS = 3"
|
|
|
+ sqlId.And("t.USERID", r.USERID)
|
|
|
+ sqlId.And("t.haswr", r.HASWR)
|
|
|
+ sqlId.AndEx("t.marketid", r.MARKETID, r.MARKETID > 0)
|
|
|
+ sqlId.Join(" order by t.ORDERTIME desc")
|
|
|
+ sqlId.Page(r.Page, r.PageSize)
|
|
|
+ return sqlId.String()
|
|
|
+}
|
|
|
+
|
|
|
+// GetDataEx 获取指定对手委托
|
|
|
+func (r *WrSpecialMatchOrder) GetDataByPage() (interface{}, error, int, int, int) {
|
|
|
+ sData := make([]WrSpecialMatchOrder, 0)
|
|
|
+ err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
|
|
|
+ total := 0
|
|
|
+ for i := range sData {
|
|
|
+ sData[i].calc()
|
|
|
+ total = sData[i].Total
|
|
|
+ }
|
|
|
+ return sData, err, r.Page, r.PageSize, total
|
|
|
+}
|