| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- //----------------------------------------------------------------
- //Module Name: $safeprojectname$
- //Purpose:
- //CopyRight: Muchinfo
- //History:
- //----------------------------------------------------------------
- //DateTime 2016/1/19 19:33:11
- //Author
- //Description Create
- //----------------------------------------------------------------
- using Muchinfo.MTPClient.Adapter.Abstract;
- using Muchinfo.MTPClient.Adapter.Utilities;
- using Muchinfo.MTPClient.Data;
- using Muchinfo.MTPClient.Data.Enums;
- using Muchinfo.MTPClient.Data.Model;
- using Muchinfo.MTPClient.Data.Model.Account;
- using tas;
- namespace Muchinfo.MTPClient.Adapter.ProtoBuf
- {
- public class OrderProtoBufAdapter : OrderAdapter
- {
- #region 即期委托请求参数
- //ClientSerialNo string optional 客户端流水号
- //ClientOrderTime string optional 客户端委托时间
- //ClientFlag string optional 终端标识
- //AccountID uint32 optional 交易账号
- //GoodsID uint32 optional 商品ID
- //MarketID uint32 optional 市场ID
- //ValidType int32 optional 校验类型
- //OperateType uint32 optional 操作类型:
- //OrderSrc uint32 optional 单据来源
- //OperatorID uint32 optional 操作员账号ID
- //OrderPrice double optional 委托价格
- //OrderQty double optional 委托数量
- //BuyOrSell uint32 optional 买卖方向
- //BuildType uint32 optional 下单类型
- //CurtQuotePrice double optional 保留,计算冻结金额使用
- //SpPrice double optional 止盈价格
- //SlPrice double optional 止损价格
- //PriceMode uint32 optional 取价方式
- //TimevalidType uint32 optional 时间有效类型
- //VolumeType uint32 optional 成交量类型
- #endregion
- /// <summary>
- /// 即期委托请求转换
- /// </summary>
- /// <param name="entrustOrder">下单内容对象</param>
- /// <returns></returns>
- public override byte[] ToMakeMarketEntrustOrder(Data.Model.NewEntrustOrder entrustOrder, uint userID)
- {
- var marketOrder = new OrderReq()
- {
- ClientSerialNo = Guid.NewGuid().ToString(),
- ClientOrderTime = entrustOrder.EntrurstTime.ToString("yyyy-MM-dd HH:mm:ss"),
- ClientType = (uint)eClientType.CLIENTTYPE_PC_TRADE_CLIENT, //NEW uint32 optional 终端类型
- LoginID = entrustOrder.LoginID, //NEW uint32 optional 登陆账号
- AccountID = entrustOrder.AccountId, //交易账号==? 资金账号吗
- GoodsID = entrustOrder.GoodsId,
- MarketID = entrustOrder.MarketId,//市场ID NEW
- ValidType = (int)entrustOrder.ValidType,
- OperateType = (uint)eOrderOperateType.ORDEROPERATETYPE_NORMAL,
- OrderSrc = (uint)eOrderSrc.ORDERSRC_CLIENT,
- OperatorID = entrustOrder.OperaterId,
- OrderPrice = Convert.ToDouble(entrustOrder.EntrustPrice),
- MarketMaxSub = (double)entrustOrder.AllowTradeSub, //NEW double optional 市价允许最大偏差(做市)?==允许成交偏差范围
- OrderQty = Convert.ToUInt64(entrustOrder.EntrustQuantity),
- BuyOrSell = (uint)entrustOrder.BuyOrSell,
- BuildType = (uint)entrustOrder.BuildType,
- CurtQuotePrice = Convert.ToDouble(entrustOrder.CurtQuotePrice),
- SlPrice = Convert.ToDouble(entrustOrder.SLPrice),
- SpPrice = Convert.ToDouble(entrustOrder.SPPrice),
- PriceMode = (uint)entrustOrder.PriceMode,
- TimevalidType = (int)eValidType.VALIDTYPE_DR, //NEW uint32 optional 时间有效类型 默认当日有效
- TriggerType = entrustOrder.TriggerType, //NEW uint32 optional 预埋单触发类型
- TriggerPrice = (double)entrustOrder.TriggerPrice, //NEW double optional 预埋单触发价格
- };
- if (entrustOrder.OrderFormType == eOrderFormType.Listting)
- {
- marketOrder.ListingSelectType = (uint)entrustOrder.ListingSelectType; //NEW uint32 optional 挂牌点选类型
- marketOrder.DelistingType = (uint)entrustOrder.DelistingType; ; //NEW uint32 optional 摘牌类型
- if (entrustOrder.ListingSelectType == eListingSelectType.LISTINGSELECTTYPE_DELISTING && entrustOrder.DelistingType == eDelistingType.DELISTINGTYPE_SELECTED)
- {
- marketOrder.RelatedID = (ulong)entrustOrder.RelationTicket; //NEW uint64 optional 关联单号?==关联委托单号
- }
- }
- marketOrder.Header = new MessageHead() { AccountID = entrustOrder.AccountId, MarketID = entrustOrder.MarketId, UserID = userID, GoodsID = entrustOrder.GoodsId, UUID = Guid.NewGuid().ToString() };
- return ProtoBufHelper.EntitySerialize(marketOrder, false);
- }
- public override byte[] ToCancelOrder(NewEntrustOrder entrustOrder, uint userID)
- {
- var cancelOrder = new CancelOrderReq()
- {
- ClientSerialNo = Guid.NewGuid().ToString(),
- ClientOrderTime = entrustOrder.EntrurstTime.ToString("yyyy-MM-dd HH:mm:ss"),
- ClientType = 2, //NEW uint32 optional 终端类型
- OperateType = 1,
- OldOrderId = entrustOrder.RelationTicket,
- AccountID = entrustOrder.AccountId,
- OrderSrc = 1,
- OperatorID = entrustOrder.AccountId
- };
- cancelOrder.Header = new MessageHead() { AccountID = entrustOrder.AccountId, MarketID = entrustOrder.MarketId, UserID = userID, GoodsID = entrustOrder.GoodsId, UUID = Guid.NewGuid().ToString() };
- return ProtoBufHelper.EntitySerialize(cancelOrder, false);
- }
- public override ResponeEntity<OrderDetail> ToResponseCancelOrder(object responseData)
- {
- var buffer = responseData as byte[];
- if (buffer == null)
- {
- throw new Exception(System.Reflection.MethodBase.GetCurrentMethod().Name + "进行反序列化对象内容为空!");
- }
- var mmOrderRsp = ProtoBufHelper.EntityDeSerialize<CancelOrderRsp>(buffer);
- return new ResponeEntity<OrderDetail>()
- {
- RetCode = mmOrderRsp.RetCode,
- RetMessage = mmOrderRsp.RetDesc,
- };
- }
- ///// <summary>
- ///// 竞价交易委托转换
- ///// </summary>
- ///// <param name="entrustOrder"></param>
- ///// <returns></returns>
- //public override byte[] ToBidMarketEntrustOrder(NewEntrustOrder entrustOrder)
- //{
- // var marketOrder = new BMOrderReq()
- // {
- // OrderPrice = Convert.ToDouble(entrustOrder.EntrustPrice), //// 委托价格
- // OrderQty = Convert.ToDouble(entrustOrder.EntrustQuantity), //// 委托数量
- // BuyOrSell = (uint) entrustOrder.BuyOrSell, //// 买卖方向
- // CurrentPrice = Convert.ToDouble(entrustOrder.CurtQuotePrice),
- // MarketID = uint.MaxValue, //不使用
- // //// OpenType ////下单类型:建仓,平仓,
- // BuildType = (uint)entrustOrder.BuildType,
- // ////CurrentPrice ////当前成交价格
- // OpenMode = (uint) entrustOrder.OrderMode, //// 建仓模式(FAK,FOK)
- // //CloseMode = (uint) entrustOrder.TradeCloseMode, //// 平仓模式(平今,平历史)
- // PriceMode =(uint) entrustOrder.PriceMode,
- // RelateOrderID = entrustOrder.RelationTicket,
- // TriggerPrice =Convert.ToDouble(entrustOrder.TriggerPrice),
- // TriggerType = entrustOrder.TriggerType,
- // OrderFlag = entrustOrder.OrderFlag
- // };
- // marketOrder.OrderHead = ToOrderHead(entrustOrder);
- // marketOrder.Header = new MessageHead() { AccountId = entrustOrder.AccountId, GoodsId = entrustOrder.GoodsId, UUID = Guid.NewGuid().ToByteArray() };
- // return ProtoBufHelper.EntitySerialize(marketOrder, false);
- //}
- #region OrderRsp委托单请求应答
- //OrderID int64 optional 一级生成的订单号
- //ExchOrderID int64 optional 交易所订单号
- //OrderTime string optional 接收委托交易的时间
- //OrderReq OrderReq optional 委托请求带回
- #endregion
- /// <summary>
- /// 反序列化OTC委托返回
- /// </summary>
- /// <param name="responeData">数据</param>
- /// <returns>单据类型</returns>
- public override ResponeEntity<OrderDetail> ToMakeLimitOrder(object responeData)
- {
- var buffer = responeData as byte[];
- if (buffer == null)
- {
- throw new Exception(System.Reflection.MethodBase.GetCurrentMethod().Name + "进行反序列化对象内容为空!");
- }
- var mmOrderRsp = ProtoBufHelper.EntityDeSerialize<OrderRsp>(buffer);
- return new ResponeEntity<OrderDetail>()
- {
- RetCode = mmOrderRsp.RetCode,
- RetMessage = mmOrderRsp.RetDesc,
- Entity = new OrderDetail()
- {
- OrderID = long.Parse(mmOrderRsp.OrderID.ToString()),
- //EntrustOrderType = (eOrderType)mmOrderRsp,
- ////todo:生成委托
- }
- };
- }
- public override ResponeEntity<OrderDetail> ToMixModifyRsp(object responeData)
- {
- return null;
- //var buffer = responeData as byte[];
- //if (buffer == null)
- //{
- // throw new Exception(System.Reflection.MethodBase.GetCurrentMethod().Name + "进行反序列化对象内容为空!");
- //}
- //var mmodifyRsp = ProtoBufHelper.EntityDeSerialize<XMModifyOrderRsp>(buffer);
- //return new ResponeEntity<OrderDetail>()
- //{
- // RetCode = mmodifyRsp.RetCode,
- // RetMessage = mmodifyRsp.RetDesc,
- // Entity = new OrderDetail()
- // {
- // //OrderID = mmodifyRsp.OrderID,
- // ////todo:生成委托
- // }
- //};
- }
- /// <summary>
- /// /// 反序列化竞价委托返回
- /// </summary>
- /// <param name="responeData"></param>
- /// <returns></returns>
- //public override ResponeEntity<OrderDetail> ToBidMarketLimitOrder(object responeData)
- //{
- // var buffer = responeData as byte[];
- // if (buffer == null)
- // {
- // throw new Exception(System.Reflection.MethodBase.GetCurrentMethod().Name + "进行反序列化对象内容为空!");
- // }
- // var bidOrderRsp = ProtoBufHelper.EntityDeSerialize<BMOrderRsp>(buffer);
- // return new ResponeEntity<OrderDetail>()
- // {
- // RetCode = bidOrderRsp.RetCode,
- // RetMessage = bidOrderRsp.RetDesc,
- // Entity = new OrderDetail()
- // {
- // OrderID = bidOrderRsp.OrderID,
- // EntrustOrderType = (eOrderType) bidOrderRsp.OrderType,
- // ////todo:生成委托
- // },
- // };
- //}
- //public override byte[] ToMixMarketEntrustOrder(NewEntrustOrder entrustOrder)
- //{
- // var marketOrder = new XMOrderReq()
- // {
- // SlPrice = Convert.ToDouble(entrustOrder.SLPrice),
- // SpPrice = Convert.ToDouble(entrustOrder.SPPrice),
- // OrderPrice = Convert.ToDouble(entrustOrder.EntrustPrice), //// 委托价格
- // OrderQty = Convert.ToDouble(entrustOrder.EntrustQuantity), //// 委托数量
- // BuyOrSell = (uint)entrustOrder.BuyOrSell, //// 买卖方向
- // CurrentPrice = Convert.ToDouble(entrustOrder.CurtQuotePrice),
- // MarketID = uint.MaxValue, //不使用
- // //// OpenType ////下单类型:建仓,平仓,
- // BuildType = (uint)entrustOrder.BuildType,
- // ////CurrentPrice ////当前成交价格
- // OpenMode = (uint)entrustOrder.OrderMode, //// 建仓模式(FAK,FOK)
- // //CloseMode = (uint) entrustOrder.TradeCloseMode, //// 平仓模式(平今,平历史)
- // PriceMode = (uint)entrustOrder.PriceMode,
- // RelateOrderID = entrustOrder.RelationTicket,
- // TriggerPrice = Convert.ToDouble(entrustOrder.TriggerPrice),
- // TriggerType=entrustOrder.TriggerType,
- // OrderFlag=entrustOrder.OrderFlag
- // };
- // marketOrder.OrderHead = ToOrderHead(entrustOrder);
- // marketOrder.Header = new MessageHead() { AccountId = entrustOrder.AccountId, GoodsId = entrustOrder.GoodsId, UUID = Guid.NewGuid().ToByteArray() };
- // return ProtoBufHelper.EntitySerialize(marketOrder, false);
- //}
- public override byte[] ToMixModifyEntrustOrder(NewEntrustOrder entrustOrder)
- {
- return null;
- // var marketOrder = new XMModifyOrderReq()
- // {
- // SLPrice = Convert.ToDouble(entrustOrder.SLPrice),
- // TPPrice = Convert.ToDouble(entrustOrder.SPPrice),
- // //OrderID = entrustOrder.RelationTicket,
- // AccountID = (long)entrustOrder.AccountId, //// 委托数量
- // BuyOrSell = (uint)entrustOrder.BuyOrSell, //// 买卖方向
- // };
- //// marketOrder.Header = ToOrderHead(entrustOrder);
- // marketOrder.Header = new MessageHead() { AccountID = entrustOrder.AccountId, GoodsID = entrustOrder.GoodsId, UUID = Guid.NewGuid().ToString() };
- // return ProtoBufHelper.EntitySerialize(marketOrder, false);
- }
- //public override ResponeEntity<OrderDetail> ToMixMarketLimitOrder(object responeData)
- //{
- // var buffer = responeData as byte[];
- // if (buffer == null)
- // {
- // throw new Exception(System.Reflection.MethodBase.GetCurrentMethod().Name + "进行反序列化对象内容为空!");
- // }
- // var bidOrderRsp = ProtoBufHelper.EntityDeSerialize<XMOrderRsp>(buffer);
- // return new ResponeEntity<OrderDetail>()
- // {
- // RetCode = bidOrderRsp.RetCode,
- // RetMessage = bidOrderRsp.RetDesc,
- // Entity = new OrderDetail()
- // {
- // OrderID = bidOrderRsp.OrderID,
- // EntrustOrderType = (eOrderType)bidOrderRsp.OrderType,
- // ////todo:生成委托
- // },
- // };
- //}
- public override byte[] ToRequestTaRiskRate(uint accountId)
- {
- return null;
- //var taRiskRate = new QueryMemberMonitorReq()
- //{
- // AccountId=accountId
- //};
- //return ProtoBufHelper.EntitySerialize(taRiskRate);
- }
- public override ResponeEntity<List<MemberAccountInfo>> ToLocalTaRiskRateInfo(object obj)
- {
- return null;
- //var buffer = obj as byte[];
- //if (buffer == null)
- //{
- // throw new Exception(System.Reflection.MethodBase.GetCurrentMethod().Name + "进行反序列化对象内容为空!");
- //}
- //var rspData = ProtoBufHelper.EntityDeSerialize<TaRiskRateInfoReport>(buffer);
- //var resultEntity = new ResponeEntity<List<MemberAccountInfo>>()
- //{
- // RetCode = rspData.RetCode,
- // Entity = new List<MemberAccountInfo>(),
- //};
- //if (rspData.TaRiskRateInfo == null || !rspData.TaRiskRateInfo.Any())
- //{
- // //todo:查询内容空
- // return resultEntity;
- //}
- //foreach (var taRiskRate in rspData.TaRiskRateInfo)
- //{
- // var memberAccountEntity= new MemberAccountInfo();
- // memberAccountEntity.UsedMargin = taRiskRate.UsedMargin == int.MinValue ? 0 : Convert.ToDecimal(taRiskRate.UsedMargin);
- // memberAccountEntity.FloatPL = taRiskRate.FloatPL == int.MinValue ? 0 : Convert.ToDecimal(taRiskRate.FloatPL);
- // memberAccountEntity.NetWorth = taRiskRate.NetWorth == int.MinValue ? 0 : Convert.ToDecimal(taRiskRate.NetWorth);
- // memberAccountEntity.Rate = taRiskRate.Rate == int.MinValue ? 0 : Convert.ToDecimal(taRiskRate.Rate);
- // memberAccountEntity.CustomerPosFloatPL = taRiskRate.CustomerPosFloatPL == int.MinValue ? 0 : Convert.ToDecimal(taRiskRate.CustomerPosFloatPL);
- // memberAccountEntity.SelfPosFloatPL = taRiskRate.SelfPosFloatPL == int.MinValue ? 0 : taRiskRate.SelfPosFloatPL;
- // memberAccountEntity.CutPosFloatPL = taRiskRate.CutPosFloatPL == int.MinValue ? 0 : taRiskRate.CutPosFloatPL;
- // memberAccountEntity.AvailMargin = taRiskRate.AvailMargin == int.MinValue ? 0 : Convert.ToDecimal(taRiskRate.AvailMargin);
- // memberAccountEntity.MemberPositions = GetMemberPositions(rspData);
- // memberAccountEntity.Balance = taRiskRate.Balance == int.MinValue ? 0 : Convert.ToDecimal(taRiskRate.Balance);
- // memberAccountEntity.AccountStatus = (eAccountStatus) taRiskRate.MemberStatus;//账户状态
- // resultEntity.Entity.Add(memberAccountEntity);
- //}
- //return resultEntity;
- }
- /// <summary>
- /// 自营盘 被动接收 转单头寸
- /// </summary>
- /// <param name="rspData"></param>
- /// <returns></returns>
- //private List<MemberPosition> GetMemberPositions(TaRiskRateInfoReport rspData)
- //{
- // var memberPositions = new List<MemberPosition>();
- // //以商品的GoodsID作为键
- // Dictionary<int, MemberPosition> memberPositionDic = new Dictionary<int, MemberPosition>();
- // if (rspData.TaRiskRateInfo == null || !rspData.TaRiskRateInfo.Any())
- // {
- // return memberPositions;
- // }
- // else
- // {
- // foreach (var taRiskRate in rspData.TaRiskRateInfo)
- // {
- // //自营盘 会员
- // if (taRiskRate.ProprietaryGoodsRisk != null && taRiskRate.ProprietaryGoodsRisk.Any())
- // {
- // foreach (var proprietaryGoodsRisk in taRiskRate.ProprietaryGoodsRisk)
- // {
- // if (!memberPositionDic.ContainsKey(proprietaryGoodsRisk.GoodsID))
- // {
- // memberPositionDic[proprietaryGoodsRisk.GoodsID] = new MemberPosition();
- // memberPositionDic[proprietaryGoodsRisk.GoodsID].GoodsCode =proprietaryGoodsRisk.GoodsCode;
- // memberPositionDic[proprietaryGoodsRisk.GoodsID].GoodsId = (uint)proprietaryGoodsRisk.GoodsID;
- // }
- // if ((Direction) proprietaryGoodsRisk.BuyOrSell == Direction.Bid)
- // {
- // memberPositionDic[proprietaryGoodsRisk.GoodsID].MemberBuyHolderQty += proprietaryGoodsRisk.QTY == int.MinValue ? 0 : Convert.ToDecimal(proprietaryGoodsRisk.QTY);
- // memberPositionDic[proprietaryGoodsRisk.GoodsID].MemberBuyFloatPL += proprietaryGoodsRisk.FloatPL == int.MinValue ? 0 : Convert.ToDecimal(proprietaryGoodsRisk.FloatPL);
- // }
- // else
- // {
- // memberPositionDic[proprietaryGoodsRisk.GoodsID].MemberSellHolderQty += proprietaryGoodsRisk.QTY == int.MinValue ? 0 : Convert.ToDecimal(proprietaryGoodsRisk.QTY);
- // memberPositionDic[proprietaryGoodsRisk.GoodsID].MemberSellFloatPL += proprietaryGoodsRisk.FloatPL == int.MinValue ? 0 : Convert.ToDecimal(proprietaryGoodsRisk.FloatPL);
- // }
- // }
- // }
- // //被动接收 投资者转的单
- // if (taRiskRate.PassiveGoodsRisk != null && taRiskRate.PassiveGoodsRisk.Any())
- // {
- // foreach (var passiveGoodsRisk in taRiskRate.PassiveGoodsRisk)
- // {
- // if (!memberPositionDic.ContainsKey(passiveGoodsRisk.GoodsID))
- // {
- // memberPositionDic[passiveGoodsRisk.GoodsID] = new MemberPosition();
- // memberPositionDic[passiveGoodsRisk.GoodsID].GoodsCode = passiveGoodsRisk.GoodsCode;
- // memberPositionDic[passiveGoodsRisk.GoodsID].GoodsId = (uint)passiveGoodsRisk.GoodsID;
- // }
- // if ((Direction)passiveGoodsRisk.BuyOrSell == Direction.Bid) ////风控已把方向转在会员
- // {
- // memberPositionDic[passiveGoodsRisk.GoodsID].SellHolderQty = passiveGoodsRisk.QTY == int.MinValue ? 0 : Convert.ToDecimal(passiveGoodsRisk.QTY);
- // memberPositionDic[passiveGoodsRisk.GoodsID].SellFloatPL = passiveGoodsRisk.FloatPL == int.MinValue ? 0 : Convert.ToDecimal(passiveGoodsRisk.FloatPL);
- // }
- // else
- // {
- // memberPositionDic[passiveGoodsRisk.GoodsID].BuyHolderQty = passiveGoodsRisk.QTY == int.MinValue ? 0 : Convert.ToDecimal(passiveGoodsRisk.QTY);
- // memberPositionDic[passiveGoodsRisk.GoodsID].BuyFloatPL = passiveGoodsRisk.FloatPL == int.MinValue ? 0 : Convert.ToDecimal(passiveGoodsRisk.FloatPL);
- // }
- // }
- // }
- // //转单头寸
- // if (taRiskRate.CutGoodsRisk != null && taRiskRate.CutGoodsRisk.Any())
- // {
- // foreach (var cutGoodsRisk in taRiskRate.CutGoodsRisk)
- // {
- // if (!memberPositionDic.ContainsKey(cutGoodsRisk.GoodsID))
- // {
- // memberPositionDic[cutGoodsRisk.GoodsID] = new MemberPosition();
- // memberPositionDic[cutGoodsRisk.GoodsID].GoodsCode = cutGoodsRisk.GoodsCode;
- // memberPositionDic[cutGoodsRisk.GoodsID].GoodsId = (uint) cutGoodsRisk.GoodsID;
- // }
- // if ((Direction) cutGoodsRisk.BuyOrSell == Direction.Bid)
- // {
- // memberPositionDic[cutGoodsRisk.GoodsID].MemberBuyHolderQty += cutGoodsRisk.QTY ==
- // int.MinValue
- // ? 0
- // : Convert.ToDecimal(cutGoodsRisk.QTY);
- // memberPositionDic[cutGoodsRisk.GoodsID].MemberBuyFloatPL += cutGoodsRisk.FloatPL ==
- // int.MinValue
- // ? 0
- // : Convert.ToDecimal(cutGoodsRisk.FloatPL);
- // }
- // else
- // {
- // memberPositionDic[cutGoodsRisk.GoodsID].MemberSellHolderQty += cutGoodsRisk.QTY ==
- // int.MinValue
- // ? 0
- // : Convert.ToDecimal(cutGoodsRisk.QTY);
- // memberPositionDic[cutGoodsRisk.GoodsID].MemberSellFloatPL += cutGoodsRisk.FloatPL ==
- // int.MinValue
- // ? 0
- // : Convert.ToDecimal(cutGoodsRisk.FloatPL);
- // }
- // }
- // }
- // }
- // }
- // return memberPositionDic.Values.ToList();
- //}
- public override byte[] ToRequestDealClose(DealCloseOrder closeOrder)
- {
- return null;
- //var taRiskRate = new DealCloseSettingReq()
- //{
- // AccountId = (uint)closeOrder.AccountId,
- // autoId = closeOrder.autoId,
- // BuyOrSell = (uint)closeOrder.Direction,
- // status = (uint)closeOrder.Status
- //};
- //return ProtoBufHelper.EntitySerialize(taRiskRate);
- }
- public override ResponeEntity<DealCloseOrder> ToLocalDealCloseInfo(object obj)
- {
- return null;
- //var buffer = obj as byte[];
- //if (buffer == null)
- //{
- // throw new Exception(System.Reflection.MethodBase.GetCurrentMethod().Name + "进行反序列化对象内容为空!");
- //}
- //var rspData = ProtoBufHelper.EntityDeSerialize<DealCloseSettingRsp>(buffer);
- //return new ResponeEntity<DealCloseOrder>()
- //{
- // RetCode = rspData.RetCode,
- // RetMessage = rspData.RetDesc,
- // Entity = new DealCloseOrder()
- // {
- // autoId = rspData.AccountId,
- // },
- //};
- }
- /// <summary>
- /// 通道交易下单转换
- /// </summary>
- /// <param name="entrustOrder"></param>
- /// <param name="userID"></param>
- /// <returns></returns>
- public override byte[] ToChannnelEntrustOrder(NewEntrustOrder entrustOrder, uint userID, ulong clientId)
- {
- var marketOrder = new ChannelOrderReq()
- {
- ClientOrderTime = entrustOrder.EntrurstTime.ToString("yyyy-MM-dd HH:mm:ss"), // 客户端委托时间string
- ClientType = (uint)eClientType.CLIENTTYPE_PC_TRADE_CLIENT, // 终端类型uint32
- AccountID = entrustOrder.AccountId, // 交易账号uint64
- GoodsID = entrustOrder.GoodsId, // 商品ID uint32
- MarketID = entrustOrder.MarketId, // 市场IDuint32
- ValidType = (int)entrustOrder.ValidType, // 有效类型-1当日有效int32
- ChannelOperateType = (uint)eChannelOperateType.CHANNELOPERATETYPE_ORDER, // 操作类型:uint32
- ChannelOrderSrc = 1, // 单据来源委托来源-1:客户端uint32
- HedgeFlag = 0, // 投机套保标志-0:无uint32
- OrderPrice = Convert.ToDouble(entrustOrder.EntrustPrice), // 委托价格double
- BuyOrSell = (uint)entrustOrder.BuyOrSell, // 买卖方向(买卖-0:买uint32
- CloseType = 0, // 平仓方式(平仓方式-0:无uint32
- PriceMode = (uint)entrustOrder.PriceMode, // 取价方式-1:市价uint32
- TimeValidType = (uint)entrustOrder.ValidType, // 时间有效类型uint32
- RelatedID = 0, // 关联单号uint64
- ChannelBuildType = (uint)entrustOrder.BuildType,
- ClientSerialNo = Guid.NewGuid().ToString(),
- LoginID = entrustOrder.LoginID, //NEW uint32 optional 登陆账号
- OperatorID = entrustOrder.OperaterId,
- OrderQty = Convert.ToUInt64(entrustOrder.EntrustQuantity),
- Header = new MessageHead()
- {
- AccountID = entrustOrder.AccountId,
- MarketID = entrustOrder.MarketId,
- UserID = userID,
- GoodsID = entrustOrder.GoodsId,
- UUID = Guid.NewGuid().ToString(),
- AccountID2 = clientId,
- },
- //IP = entrustOrder.Ip,
- };
- // 资管添加
- //if (entrustOrder.SLPoint != 0)
- //{
- // marketOrder.SLPoint = (uint) entrustOrder.SLPoint;
- //}
- //if (entrustOrder.SPPoint != 0)
- //{
- // marketOrder.SPPoint = (uint) entrustOrder.SPPoint;
- //}
- // 企业风管添加
- if (entrustOrder.HedgeFlag == 4)
- {
- marketOrder.HedgeFlag = entrustOrder.HedgeFlag;
- marketOrder.SpotContractID = entrustOrder.SpotContractID;
- marketOrder.SaleUserID = entrustOrder.SaleUserID;
- marketOrder.BizSubjectID = entrustOrder.BizSubjectID;
- }
- return ProtoBufHelper.EntitySerialize(marketOrder, false);
- }
- /// <summary>
- /// 通道SPSL下单转换
- /// </summary>
- /// <param name="entrustOrder">The entrust order.</param>
- /// <param name="userID">The user identifier.</param>
- /// <returns>System.Byte[][].</returns>
- /// <exception cref="System.NotImplementedException"></exception>
- public override byte[] ToChannnelSPSLOrderReq(NewEntrustOrder entrustOrder, uint userID)
- {
- var req = new ChannelSPSLOrderReq()
- {
- Header = new MessageHead()
- {
- AccountID = entrustOrder.AccountId,
- MarketID = entrustOrder.MarketId,
- UserID = userID,
- GoodsID = entrustOrder.GoodsId,
- UUID = Guid.NewGuid().ToString()
- },
- ClientType = (uint)eClientType.CLIENTTYPE_PC_TRADE_CLIENT, // 终端类型uint32
- LoginID = entrustOrder.LoginID, //NEW uint32 optional 登陆账号
- AccountID = entrustOrder.AccountId, // 交易账号uint64
- GoodsID = entrustOrder.GoodsId, // 商品ID uint32
- MarketID = entrustOrder.MarketId, // 市场IDuint32
- ValidType = (int)entrustOrder.ValidType, // 有效类型-1当日有效int32
- OperateType = (uint)entrustOrder.SPSLOrderType, //1 - 止盈 2 - 止损 3 - 撤单
- OrderSrc = 1, //1:客户端
- OrderQty = Convert.ToUInt64(entrustOrder.EntrustQuantity),
- BuyOrSell = (uint)entrustOrder.BuyOrSell, // 买卖方向(买卖-0:买uint32
- RelatedID = entrustOrder.SPSLOrderType == SPSLOrderType.Cancel? entrustOrder.RelationTicket:0, // 关联单号uint64
- SpPrice = entrustOrder.SPSLOrderType == SPSLOrderType.SPOrder || entrustOrder.SPSLOrderType == SPSLOrderType.SPSL ? (double)entrustOrder.SPPrice : 0.0,
- SlPrice = entrustOrder.SPSLOrderType == SPSLOrderType.SLOrder || entrustOrder.SPSLOrderType == SPSLOrderType.SPSL ? (double)entrustOrder.SLPrice : 0.0,
- PriceType = entrustOrder.ChannelPriceMode == ChannelPriceMode.LimitPrice ? 0 : (uint)entrustOrder.ChannelPriceMode, //1 - 最新价 2 - 对手价 3 - 市价
- TriggerType = 1, //1 - 触发价 2 - 追踪价差
- };
- return ProtoBufHelper.EntitySerialize(req, false);
- }
- /// <summary>
- /// 通道SPSL下单响应转换
- /// </summary>
- /// <param name="data">The data.</param>
- /// <returns>System.Int64.</returns>
- /// <exception cref="System.Exception"></exception>
- /// <exception cref="System.NotImplementedException"></exception>
- public override ResponeEntity<OrderDetail> ToLocalChannnelSPSLRsp(object data)
- {
- var byteArr = data as byte[];
- if (data == null)
- {
- throw new Exception(System.Reflection.MethodBase.GetCurrentMethod().Name + "进行反序列化对象内容为空!");
- }
- var itemResponeList = ProtoBufHelper.EntityDeSerialize<ChannelSPSLOrderRsp>(byteArr);
- var resultEntity = new ResponeEntity<OrderDetail>()
- {
- RetCode = itemResponeList.RetCode,
- RetMessage = itemResponeList.RetDesc,
- Entity = new OrderDetail() { OrderID = (long)itemResponeList.OrderID}
- };
- return resultEntity;
- }
- }
- }
|