//----------------------------------------------------------------
//Module Name: OrderService
//Purpose:
//CopyRight: Muchinfo
//History:
//----------------------------------------------------------------
//DateTime Author Description
//----------------------------------------------------------------
//2014-03-22 deng.yinping Create
//----------------------------------------------------------------
//#define test
using Muchinfo.MTPClient.Adapter.Abstract;
using Muchinfo.MTPClient.Data;
using Muchinfo.MTPClient.Data.Enums;
using Muchinfo.MTPClient.Data.Model;
using Muchinfo.MTPClient.Data.Model.Account;
using Muchinfo.MTPClient.Infrastructure.Cache;
using Muchinfo.MTPClient.Infrastructure.LinkProxy;
using Muchinfo.MTPClient.Infrastructure.Utilities;
using Muchinfo.MTPClient.IService;
using Muchinfo.MTPClient.NetworkCore;
using Muchinfo.MTPClient.Resources;
using Muchinfo.MTPClient.Service.Utilities;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
namespace Muchinfo.MTPClient.Service
{
public class OrderService : IOrderService
{
private OrderAdapter _orderAdapter;
public OrderService()
{
_orderAdapter = LinkManager.Instance.TradeAdapterFactory.CreateOrderAdapter();
}
#region 委托下单
///
/// OTC市场委托订单
///
///
///
///
public void MakeMarketEntrustOrder(Data.Model.NewEntrustOrder entrustOrder, Action successAction, Action errorAction)
{
var userId = UserManager.CurrentTradeAccount.CustomerId;
var reqeust = _orderAdapter.ToMakeMarketEntrustOrder(entrustOrder, userId);
var packgage = new TCPPackage() { Content = reqeust, FunCode = FuncCode.FID_OrderReq };
LinkManager.Instance.TradeTcpLinkProxy.SendPackage(packgage, new Action((revPackgage) =>
{
var responeEntrity = _orderAdapter.ToMakeLimitOrder(revPackgage.Content);
if (responeEntrity.RetCode == 0)
{
//todo:生成委托单
successAction(responeEntrity.Entity);
}
else
{
if (errorAction != null)
{
//RequestFunc = 市场委托订单
errorAction(new ErrorEntity() { ReturnCode = responeEntrity.RetCode, ReturnDesc = responeEntrity.RetMessage, RequestFunc = Client_Resource.Resources_Service_MakeMarketEntrustOrder });
}
}
}), new Action((errorCode, errorDesc) =>
{ ////通信错误
if (errorAction != null)
{
errorAction(new ErrorEntity() { ReturnCode = errorCode, ReturnDesc = errorDesc, RequestFunc = Client_Resource.Resources_Service_MakeMarketEntrustOrder });
}
}));
}
public void CancelOrder(NewEntrustOrder entrustOrder, Action successAction,
Action errorAction)
{
var userId = UserManager.CurrentTradeAccount.CustomerId;
var reqeust = _orderAdapter.ToCancelOrder(entrustOrder, userId);
var packgage = new TCPPackage() { Content = reqeust, FunCode = FuncCode.FID_CancelOrderReq };
LinkManager.Instance.TradeTcpLinkProxy.SendPackage(packgage, new Action((revPackgage) =>
{
var responeEntrity = _orderAdapter.ToResponseCancelOrder(revPackgage.Content);
if (responeEntrity.RetCode == 0)
{
successAction();
}
else
{
if (errorAction != null)
{
errorAction(new ErrorEntity() { ReturnCode = responeEntrity.RetCode, ReturnDesc = responeEntrity.RetMessage, RequestFunc = Client_Resource.Button_Cancellation });
}
}
}), new Action((errorCode, errorDesc) =>
{ ////通信错误
if (errorAction != null)
{
errorAction(new ErrorEntity() { ReturnCode = errorCode, ReturnDesc = errorDesc, RequestFunc = Client_Resource.Button_Cancellation });
}
}));
}
public void CancelOrderWithoutResult(NewEntrustOrder entrustOrder)
{
var userId = UserManager.CurrentTradeAccount.CustomerId;
var reqeust = _orderAdapter.ToCancelOrder(entrustOrder, userId);
var packgage = new TCPPackage() { Content = reqeust, FunCode = FuncCode.FID_CancelOrderReq };
LinkManager.Instance.TradeTcpLinkProxy.SendPackage(packgage, new Action((revPackgage) =>
{
var responeEntrity = _orderAdapter.ToResponseCancelOrder(revPackgage.Content);
//todo
}), new Action((errorCode, errorDesc) =>
{
}));
}
///
/// 竞价市场委托订单
///
///
///
///
public void BidMarketEntrustOrder(Data.Model.NewEntrustOrder entrustOrder, Action successAction, Action errorAction)
{
//var reqeust = _orderAdapter.ToBidMarketEntrustOrder(entrustOrder);
//var packgage = new TCPPackage() { Content = reqeust, FunCode = FuncCode.FID_BMOrderReq };
//LinkManager.Instance.TradeTcpLinkProxy.SendPackage(packgage, new Action((revPackgage) =>
//{
// var responeEntrity = _orderAdapter.ToBidMarketLimitOrder(revPackgage.Content);
// if (responeEntrity.RetCode == 0)
// {
// //todo:生成委托单
// successAction(responeEntrity.Entity);
// }
// else
// {
// if (errorAction != null)
// {
// //RequestFunc = 竞价市场委托订单 M
// errorAction(new ErrorEntity() { ReturnCode = responeEntrity.RetCode, ReturnDesc = responeEntrity.RetMessage, RequestFunc = Client_Resource.Resources_Service_BidMarketEntrustOrder });
// }
// }
//}), new Action((errorCode, errorDesc) =>
//{ ////通信错误
// if (errorAction != null)
// {
// errorAction(new ErrorEntity() { ReturnCode = errorCode, ReturnDesc = errorDesc, RequestFunc = Client_Resource.Resources_Service_BidMarketEntrustOrder });
// }
//}));
}
///
/// 混合市场委托订单
///
///
///
///
public void MixMarketEntrustOrder(Data.Model.NewEntrustOrder entrustOrder, Action successAction, Action errorAction)
{
//var reqeust = _orderAdapter.ToMixMarketEntrustOrder(entrustOrder);
//var packgage = new TCPPackage() { Content = reqeust, FunCode = FuncCode.FID_XMOrderReq };
//LinkManager.Instance.TradeTcpLinkProxy.SendPackage(packgage, new Action((revPackgage) =>
//{
// var responeEntrity = _orderAdapter.ToMixMarketLimitOrder(revPackgage.Content);
// if (responeEntrity.RetCode == 0)
// {
// //todo:生成委托单
// successAction(responeEntrity.Entity);
// }
// else
// {
// if (errorAction != null)
// {
// //RequestFunc = 混合市场委托订单
// errorAction(new ErrorEntity() { ReturnCode = responeEntrity.RetCode, ReturnDesc = responeEntrity.RetMessage, RequestFunc = Client_Resource.Resources_Service_MixMarketEntrustOrder });
// }
// }
//}), new Action((errorCode, errorDesc) =>
//{ ////通信错误
// if (errorAction != null)
// {
// errorAction(new ErrorEntity() { ReturnCode = errorCode, ReturnDesc = errorDesc, RequestFunc = Client_Resource.Resources_Service_MixMarketEntrustOrder });
// }
//}));
}
public void MixModifyEntrustOrder(NewEntrustOrder entrustOrder, Action successAction, Action errorAction)
{
return;
//var reqeust = _orderAdapter.ToMixModifyEntrustOrder(entrustOrder);
//var packgage = new TCPPackage() { Content = reqeust, FunCode = FuncCode.FID_XMModifyOrderReq};
//LinkManager.Instance.TradeTcpLinkProxy.SendPackage(packgage, new Action((revPackgage) =>
//{
// var responeEntrity = _orderAdapter.ToMixModifyRsp(revPackgage.Content);
// if (responeEntrity.RetCode == 0)
// {
// //todo:生成委托单
// successAction(responeEntrity.Entity);
// }
// else
// {
// if (errorAction != null)
// {
// //RequestFunc = 混合市场委托订单
// errorAction(new ErrorEntity() { ReturnCode = responeEntrity.RetCode, ReturnDesc = responeEntrity.RetMessage, RequestFunc = Client_Resource.Resources_Service_MixMarketEntrustOrder });
// }
// }
//}), new Action((errorCode, errorDesc) =>
//{ ////通信错误
// if (errorAction != null)
// {
// errorAction(new ErrorEntity() { ReturnCode = errorCode, ReturnDesc = errorDesc, RequestFunc = Client_Resource.Resources_Service_MixMarketEntrustOrder });
// }
//}));
}
#endregion
#region 单据查询
///
/// 查询持仓单明细
///
///
///
///
///
public void QueryHoldingPosistion(string statement, List queryCommonParams,
Action> successAction, Action errorAction)
{
QueryCommonHelper.QueryCommon(statement, queryCommonParams, new Action>((holdDetails) =>
{
if (successAction != null)
{
//更新缓存数据 - dyp
UserManager.UpdateCacheOrder(holdDetails);
// HoldingSummary to Dictionary> 生产List,按照不同的资金账号存储
CacheManager.HoldingSummaries.Clear();
foreach (HoldingSummary t in holdDetails)
{
// to TradePositionModel
bool isBuy = t.Direction == Direction.Bid;
TradePositionModel tradePosition = new TradePositionModel()// 初始化数据
{
AgreeUnit = (uint)t.AgreeUnit,
BuyCurHolderAmount = 0,
BuyCurPositionQty = 0,
BuyFrozenQty = 0,
BuyOtherFrozenQty = 0,
GoodsId = t.GoodsId,
SellCurHolderAmount = 0,
SellCurPositionQty = 0,
SellFrozenQty = 0,
SellOtherFrozenQty = 0
};
convertTo(isBuy, t, tradePosition);
// 不知道怎么通过资金账号分持仓单,就当做单资金账号先,后面再改
if (CacheManager.HoldingSummaries.ContainsKey(UserManager.CurrentTradeAccount.FundsAccountId))
// 如果已经有了,那就add进去
{
List itemOrder =
CacheManager.HoldingSummaries[UserManager.CurrentTradeAccount.FundsAccountId];// 如果已经存在一个买卖方向的汇总,那就需要合并另一个方向的信息
TradePositionModel temp = itemOrder.Find(i => i.GoodsId == tradePosition.GoodsId);
if (temp == null)//
{
CacheManager.HoldingSummaries[UserManager.CurrentTradeAccount.FundsAccountId].Add(tradePosition);
}
else// 这里,买卖需要合并,是不是很坑爹
{
convertTo(isBuy, t, temp);
}
}
else// 如果没有,就new List
{
List temps = new List {tradePosition};
CacheManager.HoldingSummaries.Add(UserManager.CurrentTradeAccount.FundsAccountId, temps);
}
}
successAction(holdDetails);
}
}), (error) =>
{
if (errorAction != null)
{
//RequestFunc = 查询持仓单明细
error.RequestFunc = Client_Resource.Resources_Service_QueryHoldingDetails;
errorAction(error);
}
});
}
///
/// 汇总的买卖方向部分信息,保存在一条单据里面。
///
///
///
///
private void convertTo(bool isBuy, HoldingSummary s, TradePositionModel t)
{
/*{
AgreeUnit = (uint) t.AgreeUnit,
BuyCurHolderAmount = (double) (isBuy ? t.CurHolderAmount : 0),
BuyCurPositionQty = (uint) (isBuy ? t.AvailQty : 0),
BuyFrozenQty = (uint) (isBuy ? t.FrozenQty : 0),
BuyOtherFrozenQty = (uint) (isBuy ? t.OtherFrozenQty : 0),
GoodsId = t.GoodsId,
SellCurHolderAmount = (double) (!isBuy ? t.CurHolderAmount : 0),
SellCurPositionQty = (uint)(!isBuy ? t.AvailQty : 0),
SellFrozenQty = (uint) (!isBuy ? t.FrozenQty : 0),
SellOtherFrozenQty = (uint) (!isBuy ? t.OtherFrozenQty : 0)
};*/
if (isBuy) // 买,
{
t.BuyCurHolderAmount = (double)s.CurHolderAmount;
t.BuyCurPositionQty = (uint)s.AvailQty;
t.BuyFrozenQty = (uint) s.FrozenQty;
t.BuyOtherFrozenQty = (uint)s.OtherFrozenQty;
}
else // 卖
{
t.SellCurHolderAmount = (double)s.CurHolderAmount;
t.SellCurPositionQty = (uint)s.AvailQty;
t.SellFrozenQty = (uint)s.FrozenQty;
t.SellOtherFrozenQty = (uint)s.OtherFrozenQty;
}
}
///
/// 查询持仓汇总
///
///
///
///
///
public void QueryHoldingSummarys(string statement, List queryCommonParams,
Action> successAction, Action errorAction)
{
QueryCommonHelper.QueryCommon(statement, queryCommonParams, new Action>((holdSummarys) =>
{
if (successAction != null)
{
//更新持仓缓存-dyp
UserManager.UpdateCacheOrder(holdSummarys);
successAction(holdSummarys);
}
}), (error) =>
{
if (errorAction != null)
{
//RequestFunc = 查询持仓单明细
error.RequestFunc = "查询持仓明细";
errorAction(error);
}
});
}
/////
///// 生成头寸
/////
/////
//private void CreatePosition(Dictionary> marketHoldDetails)
//{
// var marketPosition = new Dictionary>();
// foreach (var keyValue in marketHoldDetails.Keys)
// {
// var dicPosition = new Dictionary();
// foreach (var holdingOrder in marketHoldDetails[keyValue])
// {
// var goodsFlag = string.Format("{0}_{1}", holdingOrder.GoodsCode, holdingOrder.Direction); ////头寸标识
// if (!dicPosition.ContainsKey(goodsFlag))
// {
// dicPosition[goodsFlag] = new HoldingSummary();
// dicPosition[goodsFlag].Holders = new List();
// dicPosition[goodsFlag].GoodsName = holdingOrder.GoodsName;
// dicPosition[goodsFlag].GoodsCode = holdingOrder.GoodsCode;
// dicPosition[goodsFlag].GoodsId = holdingOrder.GoodsId;
// dicPosition[goodsFlag].Direction = holdingOrder.Direction;
// dicPosition[goodsFlag].QuoteGoods = holdingOrder.QuoteGoods;
// dicPosition[goodsFlag].DecimalPlace = holdingOrder.DecimalPlace;
// dicPosition[goodsFlag].TradeMode = holdingOrder.MarketType;
// }
// if (holdingOrder.PositionFzQty != 0)
// dicPosition[goodsFlag].PositionFzQty = holdingOrder.PositionFzQty;
// dicPosition[goodsFlag].TnFreezeqty = holdingOrder.tnFreezeqty;
// dicPosition[goodsFlag].currentAgreeunit = holdingOrder.currentAgreeunit;
// dicPosition[goodsFlag].MarketType = holdingOrder.MarketType;
// dicPosition[goodsFlag].HoldAmount += holdingOrder.HoldAmount;
// dicPosition[goodsFlag].OpenAmount += holdingOrder.OpenAmount;
// dicPosition[goodsFlag].TnAvailQty += holdingOrder.IsCanClose ? holdingOrder.Lot - holdingOrder.LockQty : 0; ////达到T+N的持仓数量
// dicPosition[goodsFlag].Lot += holdingOrder.Lot;
// dicPosition[goodsFlag].LockQty += holdingOrder.LockQty;
// dicPosition[goodsFlag].PLFloat += holdingOrder.PLFloat;
// dicPosition[goodsFlag].Holders.Add(holdingOrder);
// }
// //:todo:计算均价
// foreach (var key in dicPosition.Keys)
// {
// //var quoteGoods =
// // CacheManager.CacheGoodsBaseInfos.FirstOrDefault(
// // (goods) => goods.GoodsId == dicPosition[key].GoodsId);
// //if (quoteGoods != null && dicPosition[key].Lot != 0 && quoteGoods.GoodsParameters.AgreeUnit != 0)
// //{
// dicPosition[key].HoldingAVGPrice = dicPosition[key].HoldAmount / dicPosition[key].Lot /
// dicPosition[key].currentAgreeunit;
// //}
// }
// marketPosition[keyValue] = dicPosition.Values.ToList();
// }
// UserManager.UpdateMarketHoldOrders(marketPosition);
//}
/////
///// 生成头寸
/////
//private void CreatePosition(List holdingOrders)
//{
// var dicPosition = new Dictionary();
// foreach (var holdingOrder in holdingOrders)
// {
// var goodsFlag = string.Format("{0}_{1}", holdingOrder.GoodsCode, holdingOrder.Direction); ////头寸标识
// if (!dicPosition.ContainsKey(goodsFlag))
// {
// dicPosition[goodsFlag] = new HoldingSummary();
// dicPosition[goodsFlag].GoodsName = holdingOrder.GoodsName;
// dicPosition[goodsFlag].GoodsCode = holdingOrder.GoodsCode;
// dicPosition[goodsFlag].GoodsId = holdingOrder.GoodsId;
// dicPosition[goodsFlag].Direction = holdingOrder.Direction;
// dicPosition[goodsFlag].QuoteGoods = holdingOrder.QuoteGoods;
// }
// dicPosition[goodsFlag].HoldAmount += holdingOrder.HoldAmount;
// dicPosition[goodsFlag].OpenAmount += holdingOrder.OpenAmount;
// dicPosition[goodsFlag].Lot += holdingOrder.Lot;
// dicPosition[goodsFlag].PLFloat += holdingOrder.PLFloat;
// }
// //:todo:计算均价
// foreach (var key in dicPosition.Keys)
// {
// var quoteGoods =
// CacheManager.CacheGoodsBaseInfos.FirstOrDefault(
// (goods) => goods.GoodsId == dicPosition[key].GoodsId);
// if (quoteGoods != null && dicPosition[key].Lot != 0 && quoteGoods.GoodsParameters.AgreeUnit != 0)
// {
// dicPosition[key].HoldingAVGPrice = dicPosition[key].HoldAmount / dicPosition[key].Lot /
// quoteGoods.GoodsParameters.AgreeUnit;
// }
// }
// UserManager.UpdateCacheOrder(dicPosition.Values.ToList());
//}
///
/// 查询委托单
///
///
///
///
///
public void QueryEntrustOrder(string statement, List queryCommonParams, Action> successAction, Action errorAction)
{
QueryCommonHelper.QueryCommon(statement, queryCommonParams, new Action>((orderDetails) =>
{
orderDetails = orderDetails.OrderByDescending((order) => order.EntrustTime).ToList();
UserManager.UpdateCacheOrder(orderDetails);
if (successAction != null)
{
successAction(orderDetails);
}
}), (error) =>
{
if (errorAction != null)
{
//RequestFunc = 查询委托单
error.RequestFunc = Client_Resource.Resources_Service_QueryEntrustOrder;
errorAction(error);
}
});
}
///
/// 根据持仓汇总查询持仓明细
///
///
///
///
///
public void QueryHoldLstBySummary(string statement, List queryCommonParams, Action> successAction, Action errorAction)
{
QueryCommonHelper.QueryCommon(statement, queryCommonParams, new Action>((holderDetails) =>
{
holderDetails = holderDetails.OrderByDescending((order) => order.TradeTime).ToList();
if (successAction != null)
{
successAction(holderDetails);
}
}), (error) =>
{
if (errorAction != null)
{
error.RequestFunc = Client_Resource.Resources_Service_QueryHoldingDetails;
errorAction(error);
}
});
}
///
/// 查询成交单
///
///
///
///
///
public void QueryComplateOrders(string statement, List queryCommonParams, Action> successAction, Action errorAction)
{
QueryCommonHelper.QueryCommon(statement, queryCommonParams, new Action>((ComplateOrders) =>
{
ComplateOrders = ComplateOrders.OrderByDescending((order) => order.CompleteDate).ToList();
UserManager.UpdateCacheOrder(ComplateOrders);
if (successAction != null)
{
successAction(ComplateOrders);
}
}), (error) =>
{
if (errorAction != null)
{
//RequestFunc = 查询成交单
error.RequestFunc = Client_Resource.Resources_Service_QueryComplateOrders;
errorAction(error);
}
});
}
#endregion
///
/// 查询用户日志
///
///
///
///
///
public void QueryUserLogs(string statement, List queryCommonParams, Action> successAction, Action errorAction)
{
QueryCommonHelper.QueryCommon(statement, queryCommonParams, new Action>((userLogs) =>
{
if (successAction != null)
{
successAction(userLogs);
}
}), (error) =>
{
if (errorAction != null)
{
//RequestFunc = 查询用户日志
error.RequestFunc = Client_Resource.Resources_Service_QueryUserLogs;
errorAction(error);
}
});
}
///
/// 查询平仓单查询
///
///
///
///
///
public void QueryCloseOrders(string statement, List queryCommonParams, Action> successAction, Action errorAction)
{
QueryCommonHelper.QueryCommon(statement, queryCommonParams, new Action>((CloseOrders) =>
{
CloseOrders = CloseOrders.OrderByDescending((order) => order.CloseDate).ToList();
UserManager.UpdateCacheOrder(CloseOrders);
if (successAction != null)
{
successAction(CloseOrders);
}
}), (error) =>
{
if (errorAction != null)
{
//RequestFunc = 查询平仓单查询
error.RequestFunc = Client_Resource.Resources_Service_QueryCloseOrders;
errorAction(error);
}
});
}
///
/// 查询平仓明细-》查询成交单明细【不区分市场和方向】
///
///
///
///
///
public void QueryMarketCloseOrders(eTradeMode marketType, List queryCommonParams, Action> successAction, Action errorAction)
{
var searchId = QueryStatement.SearchAllTransactionDetailOrder;//查询成交单明细【不区分市场和方向】
//switch (marketType)
//{
// case eTradeMode.TRADEMODE_MARKETMAKE:
// searchId = QueryStatement.SearchOTCCloseOrder;
// break;
// case eTradeMode.TRADEMODE_BIDDING:
// searchId = QueryStatement.QueryAllBidCloseOrder;
// break;
// #region 保证金和全额合并
// //case eTradeMode.TRADEMODE_FullPay:
// // searchId = QueryStatement.SearchBidSumCloseOrder;
// // break;
// #endregion
// case eTradeMode.TRADEMODE_SALE:
// searchId = QueryStatement.SearchSaleCloseOrder;
// break;
// case eTradeMode.TRADEMODE_BIDDINGMARKETMAKE:
// searchId = QueryStatement.SearchOTCBidCloseOrder;
// break;
//}
//by zp
//searchId = QueryStatement.ClientInforInnerTradeDetail;
QueryCommonHelper.QueryCommon(searchId, queryCommonParams, new Action>((CloseOrders) =>
{
CloseOrders = CloseOrders.OrderByDescending((order) => order.CloseDate).ToList();
// UserManager.UpdateCacheOrder(CloseOrders);
UserManager.UpdateMarketOrders(marketType, CloseOrders);
if (successAction != null)
{
successAction(marketType, CloseOrders);
}
}), (error) =>
{
if (errorAction != null)
{
//RequestFunc = 查询平仓明细
error.RequestFunc = Client_Resource.Resources_Service_QueryMarketCloseOrders;
errorAction(error);
}
});
}
///
/// 查询建仓明细
///
///
///
///
///
public void QueryMarketOpenOrders(eTradeMode marketType, List queryCommonParams, Action> successAction, Action errorAction)
{
var searchId = string.Empty;
switch (marketType)
{
case eTradeMode.TRADEMODE_MARKETMAKE:
searchId = QueryStatement.SearchOTCOpenOrder;
break;
case eTradeMode.TRADEMODE_BIDDING:
searchId = QueryStatement.QueryAllBidOpenOrder;
break;
#region 保证金和全额合并
//case eTradeMode.TRADEMODE_FullPay:
// searchId = QueryStatement.SearchBidSumOpenOrder;
// break;
#endregion
case eTradeMode.TRADEMODE_SALE:
searchId = QueryStatement.SearchSaleOpenOrder;
break;
case eTradeMode.TRADEMODE_BIDDINGMARKETMAKE:
searchId = QueryStatement.SearchOTCBidOpenOrder;
break;
}
QueryCommonHelper.QueryCommon(searchId, queryCommonParams, new Action>((ComplateOrders) =>
{
ComplateOrders = ComplateOrders.OrderByDescending((order) => order.CompleteDate).ToList();
UserManager.UpdateMarketOrders(marketType, ComplateOrders);
if (successAction != null)
{
successAction(marketType, ComplateOrders);
}
}), (error) =>
{
if (errorAction != null)
{
//RequestFunc = 查询建仓明细
error.RequestFunc = Client_Resource.Resources_Service_QueryMarketOpenOrders;
errorAction(error);
}
});
}
///
/// 按市场类型查询预埋单
///
///
///
///
///
public void QueryPrePostOrders(eTradeMode marketType, List queryCommonParams, Action> successAction, Action errorAction)
{
var searchId = QueryStatement.SearchAllPrePostDetail;//查询所有预埋单-不区分市场
//switch (marketType)
//{
// case eTradeMode.TRADEMODE_MARKETMAKE:
// searchId = QueryStatement.QueryMarketPrePostDetail;
// break;
// //竞价
// case eTradeMode.TRADEMODE_BIDDING:
// searchId = QueryStatement.SearchBidPrePostOrder;
// break;
// //case eTradeMode.TRADEMODE_SALE:
// // searchId = QueryStatement.SearchSaleOrderDetail;
// // break;
// //混合
// case eTradeMode.TRADEMODE_BIDDINGMARKETMAKE:
// searchId = QueryStatement.SearchPrePostOrder;
// break;
//}
QueryCommonHelper.QueryCommon(searchId, queryCommonParams, new Action>((PrePostOrders) =>
{
PrePostOrders = PrePostOrders.OrderByDescending((order) => order.ClientOrderTime).ToList();
UserManager.UpdateMarketOrders(marketType, PrePostOrders);
if (successAction != null)
{
successAction(marketType, PrePostOrders);
}
}), (error) =>
{
if (errorAction != null)
{
//RequestFunc = 查询预埋单
error.RequestFunc = Client_Resource.Resources_Service_QueryPrePostOrders;
errorAction(error);
}
});
}
///
/// 查询委托单
///
///
///
///
///
public void QueryMarketOrderDetails(eTradeMode marketType, List queryCommonParams, Action> successAction, Action errorAction)
{
var searchId = QueryStatement.QueryAllMarketOrderDetail;//查询委托单[不区分市场]
//switch (marketType)
//{
// case eTradeMode.TRADEMODE_MARKETMAKE:
// searchId = QueryStatement.SearchOTCOrderDetail;
// break;
// case eTradeMode.TRADEMODE_BIDDING:
// searchId = QueryStatement.QueryAllBidOrderDetail;
// break;
// //竞价保证金与全额合并
// //case eTradeMode.TRADEMODE_FullPay:
// // searchId = QueryStatement.SearchBidSumOrderDetail;
// // break;
// case eTradeMode.TRADEMODE_SALE:
// searchId = QueryStatement.SearchSaleOrderDetail;
// break;
// case eTradeMode.TRADEMODE_BIDDINGMARKETMAKE:
// searchId = QueryStatement.SearchOTCBidOrderDetail;
// break;
//}
QueryCommonHelper.QueryCommon(searchId, queryCommonParams, new Action>((orderDetails) =>
{
orderDetails = orderDetails.OrderByDescending((order) => order.EntrustTime).ToList();
UserManager.UpdateMarketOrders(marketType, orderDetails);
if (successAction != null)
{
successAction(marketType, orderDetails);
}
}), (error) =>
{
if (errorAction != null)
{
//RequestFunc = 查询委托单
error.RequestFunc = Client_Resource.Resources_Service_QueryMarketOrderDetails;
errorAction(error);
}
});
}
///
/// 查询单据数量
///
///
///
///
///
public void QueryMarketOrderCount(string searchId, List queryCommonParams, Action> successAction, Action errorAction)
{
QueryCommonHelper.QueryCommon(searchId, queryCommonParams, new Action>((orderDetails) =>
{
if (successAction != null)
{
successAction(orderDetails);
}
}), (error) =>
{
if (errorAction != null)
{
//RequestFunc = 查询单据数量({0})
error.RequestFunc = string.Format(Client_Resource.Resources_Service_QueryMarketOrderCount, searchId);
errorAction(error);
}
});
}
///
/// 查询会员监控数据
///
///
///
///
public void QueryMemberMonitor(uint accountId, Action> successAction, Action errorAction)
{
return;
//var request = _orderAdapter.ToRequestTaRiskRate(accountId);
//var packgage = new TCPPackage() { Content = request, FunCode = FuncCode.FID_QueryMemberMonitorReq };
//LinkManager.Instance.TradeTcpLinkProxy.SendPackage(packgage, new Action((revPackgage) =>
//{
// var responeEntity = _orderAdapter.ToLocalTaRiskRateInfo(revPackgage.Content);
// ////更新GoodsName
// UpdateGoodsName(responeEntity.Entity);
// if (responeEntity.RetCode == 0)
// {
// successAction(responeEntity.Entity);
// }
// else
// {
// if (errorAction != null)
// {
// errorAction(new ErrorEntity()
// {
// RequestFunc = Client_Resource.Resources_Service_QueryMemberMonitor,
// ReturnCode = responeEntity.RetCode,
// ReturnDesc = responeEntity.RetMessage
// });
// }
// }
//}), new Action((errorCode, errorDesc) =>
//{
// ////通信错误
// if (errorAction != null)
// {
// //RequestFunc = 查询会员监控数据
// errorAction(new ErrorEntity() { ReturnCode = errorCode, ReturnDesc = errorDesc, RequestFunc = Client_Resource.Resources_Service_QueryMemberMonitor });
// }
//}));
}
///
/// 更新GoodsName
///
///
private void UpdateGoodsName(List infos)
{
if (infos == null || !infos.Any()) return;
foreach (var info in infos)
{
if (info == null || info.MemberPositions == null || !info.MemberPositions.Any()) continue;
foreach (var memberPosition in info.MemberPositions)
{
if (memberPosition == null) continue;
var goods = CacheManager.CacheGoodsBaseInfos.FirstOrDefault(z => z.GoodsId == memberPosition.GoodsId);
if (goods == null) continue;
memberPosition.GoodsName = goods.Name;
}
}
}
public void QueryTaAmountLog(bool isHistory,List < QueryCommonParam> queryCommonParams, Action> successAction, Action errorAction)
{
string statement = isHistory ? QueryStatement.QueryHisClientAmountLog : QueryStatement.QueryClientAmountLog;
QueryCommonHelper.QueryCommon(statement, queryCommonParams, new Action>((amountLogs) =>
{
if (successAction != null)
{
successAction(amountLogs);
}
}), (error) =>
{
if (errorAction != null)
{
//RequestFunc = 查询单据数量({0})
error.RequestFunc = Client_Resource.Content_AmountLog;
errorAction(error);
}
});
}
public void QueryDealCloseSetting(ulong accountId, Action> successAction, Action errorAction)
{
var queryCommonParams = new List();
queryCommonParams.Add(new QueryCommonParam() { ParamKey = "accountId", ParamValue = accountId + string.Empty });
QueryCommonHelper.QueryCommon(QueryStatement.QueryDealCloseSetting, queryCommonParams, new Action>((dealCloseModels) =>
{
if (successAction != null)
{
successAction(dealCloseModels);
}
}), (error) =>
{
if (errorAction != null)
{
//RequestFunc = 查询单据数量({0})
error.RequestFunc = Client_Resource.Content_QueryDealClosed;
errorAction(error);
}
});
}
public void DealCloseComfirm(DealCloseOrder dealClose, Action successAction, Action errorAction)
{
return;
//var reqeust = _orderAdapter.ToRequestDealClose(dealClose);
//var packgage = new TCPPackage() { Content = reqeust, FunCode = FuncCode.FID_DealCloseSettingReq };
//LinkManager.Instance.TradeTcpLinkProxy.SendPackage(packgage, new Action((revPackgage) =>
//{
// var responeEntrity = _orderAdapter.ToLocalDealCloseInfo(revPackgage.Content);
// if (responeEntrity.RetCode == 0)
// {
// //todo:生成委托单
// successAction(responeEntrity.Entity);
// }
// else
// {
// if (errorAction != null)
// {
// //RequestFunc = 查询单据数量({0})
// var error = new ErrorEntity() { ReturnCode = responeEntrity.RetCode, ReturnDesc = responeEntrity.RetMessage };
// error.RequestFunc = Client_Resource.Content_DealClosedComfrim;
// errorAction(error);
// }
// }
//}),(errorCode,errorDesc) =>
//{
// if (errorAction != null)
// {
// //RequestFunc = 查询单据数量({0})
// var error= new ErrorEntity(){ReturnCode = errorCode,ReturnDesc = errorDesc};
// error.RequestFunc = Client_Resource.Content_DealClosedComfrim;
// errorAction(error);
// }
//});
}
public void QueryMarketTypeStatus(Action> successAction, Action errorAction)
{
List queryCommonParams = new List();
queryCommonParams.Add(new QueryCommonParam() { ParamKey = "0000", ParamValue = "0000" });
QueryCommonHelper.QueryCommon(QueryStatement.SearchClientMarketTypeStatus, queryCommonParams, new Action>((MarketType) =>
{
if (successAction != null)
{
successAction(MarketType);
}
}), (error) =>
{
if (errorAction != null)
{
//RequestFunc = 查询单据数量({0})
// error.RequestFunc = Client_Resource.Content_AmountLog;
errorAction(error);
}
});
}
///
/// 查询历史持仓单
///
// public const string QueryHistoryHolding = "QueryHistoryHolding";
///
/// 查询历史委托单
///
// public const string QueryHistoryEntrustOrder = "QueryHistoryEntrustOrder";
///
/// 查询历史成交明细
///
/// public const string QueryHistoryComplete = "QueryHistoryComplete";
///
/// 查询历史交割单
///
/// public const string QueryHistoryDeliveryOrder = "QueryHistoryDeliveryOrder";
public void QueryHistoryOrderBase(ulong accountId, HistoryOrder history, DateTime strarTime, DateTime endTime, Action> successAction, Action errorAction)
{
var queryCommonParams = new List();
queryCommonParams.Add(new QueryCommonParam() { ParamKey = "accountId", ParamValue = accountId + "" });
queryCommonParams.Add(new QueryCommonParam() { ParamKey = "startDate", ParamValue = strarTime.ToString("yyyy-MM-dd") });
queryCommonParams.Add(new QueryCommonParam() { ParamKey = "endDate", ParamValue = endTime.Date.ToString("yyyy-MM-dd HH:mm:ss") });
string format = QueryStatement.QueryHistoryEntrustOrder;
switch (history)
{
////委托单
case HistoryOrder.EntrsuctOrder:
format = QueryStatement.QueryHistoryEntrustOrder;
QueryCommonHelper.QueryCommon(format, queryCommonParams, new Action>((orders) =>
{
var orderList = new List();
if (orders.Any())
{
foreach (var order in orders)
{
orderList.Add(order);
}
}
if (successAction != null)
{
successAction(orderList);
}
}), errorAction);
break;
case HistoryOrder.HoldingOrder: ///持仓单
format = QueryStatement.QueryHistoryHolding;
QueryCommonHelper.QueryCommon(format, queryCommonParams, new Action>((holds) =>
{
var orderList = new List();
if (holds.Any())
{
foreach (var holdingOrder in holds)
{
orderList.Add(holdingOrder);
}
}
if (successAction != null)
{
successAction(orderList);
}
}), errorAction);
break;
case HistoryOrder.CompleteOrder: ////成交明细
format = QueryStatement.QueryHistoryComplete;
QueryCommonHelper.QueryCommon(format, queryCommonParams, new Action>((closes) =>
{
var orderList = new List();
if (closes.Any())
{
foreach (var close in closes)
{
orderList.Add(close);
}
}
if (successAction != null)
{
successAction(orderList);
}
}), errorAction);
break;
case HistoryOrder.DeliveryOrder: ////交割明细
format = QueryStatement.QueryHistoryDeliveryOrder;
QueryCommonHelper.QueryCommon(format, queryCommonParams, new Action>((deliveries) =>
{
var orderList = new List();
if (deliveries.Any())
{
foreach (var delivery in deliveries)
{
orderList.Add(delivery);
}
}
if (successAction != null)
{
successAction(orderList);
}
}), errorAction);
break;
default:
break;
}
}
public void QueryAccountArea(uint AreaId, Action> successAction, Action errorAction)
{
var queryCommonParams = new List();
queryCommonParams.Add(new QueryCommonParam() { ParamKey = "areaId", ParamValue = AreaId + string.Empty });
QueryCommonHelper.QueryCommon(QueryStatement.SearchAccountAreaInfo, queryCommonParams, new Action>((areaModels) =>
{
if (successAction != null)
{
successAction(areaModels);
}
}), (error) =>
{
if (errorAction != null)
{
//RequestFunc = 查询单据数量({0})
// error.RequestFunc = Client_Resource.Content_AmountLog;
errorAction(error);
}
});
}
///
/// 资管下单委托
///
/// 委托内容
/// 成功回应
/// 失败回应
public void ChannelEntrustOrder(NewEntrustOrder entrustOrder, Action successAction, Action errorAction)
{
var userId = UserManager.CurrentTradeAccount.CustomerId;
var clientId = UserManager.CurrentTradeAccount.ClientId;
var reqeust = _orderAdapter.ToChannnelEntrustOrder(entrustOrder, userId, clientId);
var packgage = new TCPPackage() { Content = reqeust, FunCode = FuncCode.FID_ChannelOrderReq };
LinkManager.Instance.TradeTcpLinkProxy.SendPackage(packgage, new Action((revPackgage) =>
{
var responeEntrity = _orderAdapter.ToMakeLimitOrder(revPackgage.Content);
if (responeEntrity.RetCode == 0)
{
//todo:生成委托单
successAction(responeEntrity.Entity);
}
else
{
if (errorAction != null)
{
//RequestFunc = 市场委托订单
errorAction(new ErrorEntity() { ReturnCode = responeEntrity.RetCode, ReturnDesc = responeEntrity.RetMessage, RequestFunc = Client_Resource.Resources_Service_MakeMarketEntrustOrder });
}
}
}), new Action((errorCode, errorDesc) =>
{ ////通信错误
if (errorAction != null)
{
errorAction(new ErrorEntity() { ReturnCode = errorCode, ReturnDesc = errorDesc, RequestFunc = Client_Resource.Resources_Service_MakeMarketEntrustOrder });
}
}));
}
///
/// 资管止盈止损下单
///
/// The entrust order.
/// The success action.
/// The error action.
///
public void ChannelSPSLOrder(NewEntrustOrder entrustOrder, Action successAction, Action errorAction)
{
var userId = UserManager.CurrentTradeAccount.CustomerId;
var reqeust = _orderAdapter.ToChannnelSPSLOrderReq(entrustOrder, userId);
var packgage = new TCPPackage() { Content = reqeust, FunCode = FuncCode.FID_ChannelSPSLOrderReq };
LinkManager.Instance.TradeTcpLinkProxy.SendPackage(packgage, new Action((revPackgage) =>
{
var responeEntrity = _orderAdapter.ToLocalChannnelSPSLRsp(revPackgage.Content);
if (responeEntrity.RetCode == 0)
{
//todo:生成委托单
successAction(responeEntrity.Entity);
}
else
{
if (errorAction != null)
{
//RequestFunc = 市场委托订单
errorAction(new ErrorEntity() { ReturnCode = responeEntrity.RetCode, ReturnDesc = responeEntrity.RetMessage, RequestFunc = Client_Resource.Resources_Service_MakeMarketEntrustOrder });
}
}
}), new Action((errorCode, errorDesc) =>
{ ////通信错误
if (errorAction != null)
{
errorAction(new ErrorEntity() { ReturnCode = errorCode, ReturnDesc = errorDesc, RequestFunc = Client_Resource.Resources_Service_MakeMarketEntrustOrder });
}
}));
}
}
}