Esempio n. 1
0
        /// <summary>
        /// 根据撮合ID在今日委托中查询对应的委托编号再在改单记录中查询回推通道
        /// </summary>
        /// <param name="macID">撮合ID</param>
        /// <param name="entrustNumber">输出原委托编号</param>
        /// <returns>返回改单回推通道,原entrustNumber</returns>
        public static string GetModifyOrderChannelIDByMacID(string macID, out string entrustNumber)
        {
            entrustNumber = "";
            List <HK_TodayEntrustInfo> tet  = null;
            HK_TodayEntrustDal         dal  = new HK_TodayEntrustDal();
            HK_ModifyOrderRequestDal   mdal = new HK_ModifyOrderRequestDal();

            try
            {
                tet = dal.GetListArray(" McOrderID='" + macID + "'");
                if (tet != null && tet.Count > 0)
                {
                    string str = tet[0].EntrustNumber.Trim();
                    entrustNumber = str;
                    var list = mdal.GetListArray(" EntrustNubmer='" + str + "'");
                    if (list != null && tet.Count > 0)
                    {
                        return(list[0].ChannelID);
                    }
                }
            }
            catch (Exception ex)
            {
                LogHelper.WriteError(ex.Message, ex);
            }
            return("");
        }
Esempio n. 2
0
        /// <summary>
        /// 撤单校验-检查委托单当前状态是否可撤
        /// </summary>
        /// <param name="entrustNumber">委托单号</param>
        /// <param name="tet">委托实体</param>
        /// <param name="strMessage">错误信息</param>
        /// <returns>校验是否通过</returns>
        public override bool CancelOrderValidate(string entrustNumber, out HK_TodayEntrustInfo tet,
                                                 ref string strMessage)
        {
            var result             = false;
            HK_TodayEntrustDal dal = new HK_TodayEntrustDal();

            tet = dal.GetModel(entrustNumber);
            if (tet != null)
            {
                if (tet.OrderStatusID == (int)Entity.Contants.Types.OrderStateType.DOSUnRequired ||
                    tet.OrderStatusID == (int)Entity.Contants.Types.OrderStateType.DOSRequiredSoon ||
                    tet.OrderStatusID == (int)Entity.Contants.Types.OrderStateType.DOSIsRequired ||
                    tet.OrderStatusID == (int)Entity.Contants.Types.OrderStateType.DOSPartDealed)
                {
                    result = true;
                }
                else
                {
                    strMessage = "GT-2400:[港股撤单校验]该委托状态的委托单不可撤.委托状态=" +
                                 Entity.Contants.Types.GetOrderStateMsg(tet.OrderStatusID);
                }
            }
            else
            {
                strMessage = "GT-2401:[港股撤单校验]委托单不存在.";
            }

            return(result);
        }
        /// <summary>
        /// 依据港股委托单号获取委托单对象
        /// </summary>
        /// <param name="strEntrustId"></param>
        /// <returns></returns>
        public static HK_TodayEntrustInfo GetHKEntrustEntity(string strEntrustId)
        {
            HK_TodayEntrustInfo result            = null;
            HK_TodayEntrustDal  hkTodayEntrustDal = new HK_TodayEntrustDal();


            result = hkTodayEntrustDal.GetModel(strEntrustId);

            return(result);
        }
        /// <summary>
        /// 依据港股委托单号获取委托单对象
        /// </summary>
        /// <param name="strEntrustId"></param>
        /// <param name="tm"></param>
        /// <returns></returns>
        public static HK_TodayEntrustInfo GetHKEntrustEntity(string strEntrustId, ReckoningTransaction tm)
        {
            HK_TodayEntrustInfo result = null;

            HK_TodayEntrustDal hkTodayEntrustDal = new HK_TodayEntrustDal();


            result = hkTodayEntrustDal.GetModel(strEntrustId);//TODO:trans

            return(result);
        }
Esempio n. 5
0
        //public static string GetTraderIdByFundAccount(string strFundAccountId)
        //{
        //    string result = string.Empty;
        //    UA_UserAccountAllocationTableDal dal = new UA_UserAccountAllocationTableDal();

        //    if (!string.IsNullOrEmpty(strFundAccountId))
        //    {
        //        //var userAccounts =
        //        // DataRepository.UaUserAccountAllocationTableProvider.GetByUserAccountDistributeLogo(strFundAccountId);
        //        var userAccount = AccountManager.Instance.GetUserByAccount(strFundAccountId);
        //        if (userAccount != null)
        //        {
        //            result = userAccount.UserID;
        //        }
        //        else
        //        {
        //            userAccount = dal.GetModel(strFundAccountId);
        //            if (userAccount != null)
        //                result = userAccount.UserID;
        //        }
        //    }

        //    return result;
        //}

        #region 港股更新

        /// <summary>
        /// 更新港股委托单
        /// </summary>
        /// <param name="stockOrder">委托单</param>
        public static bool UpdateHKOrder(HK_TodayEntrustInfo stockOrder)
        {
            bool isSuccess         = false;
            HK_TodayEntrustDal dal = new HK_TodayEntrustDal();

            try
            {
                // var sxtetp = new SqlXhTodayEntrustTableProvider(TransactionFactory.RC_ConnectionString, true,
                // string.Empty);
                //sxtetp.Update(stockOrder);
                //===update 李健华 2009-11-08 此更新报盘时更,所以使用更新不包括是否为改单这两个字段
                //dal.Update(stockOrder);
                dal.UpdateNoIsModifyOrder(stockOrder);
                //=======
                isSuccess = true;
            }
            catch (Exception ex)
            {
                LogHelper.WriteDebug("OrderOfferDataLogic.UpdateHKOrder改使用企业库执行第1次" + ex.Message);
            }

            //使用企业库执行第1次
            if (!isSuccess)
            {
                try
                {
                    // XhTodayEntrustTableDao.Update(stockOrder);
                    dal.Update(stockOrder);
                    isSuccess = true;
                }
                catch (Exception ex)
                {
                    LogHelper.WriteDebug("OrderOfferDataLogic.UpdateHKOrder使用企业库执行第2次" + ex.Message);
                }
            }

            //使用企业库执行第2次
            if (!isSuccess)
            {
                try
                {
                    // XhTodayEntrustTableDao.Update(stockOrder);
                    dal.Update(stockOrder);
                    isSuccess = true;
                }
                catch (Exception ex)
                {
                    LogHelper.WriteError("OrderOfferDataLogic.UpdateHKOrder彻底失败!", ex);
                }
            }

            return(isSuccess);
        }
Esempio n. 6
0
        /// <summary>
        /// 更新当前委托中的撮合编号
        /// </summary>
        /// <param name="entrustNubmer">委托单号</param>
        /// <param name="macID">撮合编号</param>
        /// <returns></returns>
        public static bool UpdateEntrustMcOrderID(string entrustNubmer, string macID)
        {
            try
            {
                HK_TodayEntrustDal dal = new HK_TodayEntrustDal();
                dal.UpdateEntrustMcOrderID(entrustNubmer, macID);
            }
            catch (Exception ex)
            {
                LogHelper.WriteError(ex.Message, ex);
                return(false);
            }

            return(true);
        }
Esempio n. 7
0
        /// <summary>
        /// 更新当前委托中的原始改单委托单号和IsModifyOrder是否为改单委托标识为True
        /// </summary>
        /// <param name="entrustNubmer">委托单号</param>
        /// <param name="originalNumber">原始委托单号</param>
        /// <returns></returns>
        public static bool UpdateEntrustModifyOrderNumber(string entrustNubmer, string originalNumber)
        {
            try
            {
                HK_TodayEntrustDal dal = new HK_TodayEntrustDal();
                dal.UpdateEntrustModifyOrderNumber(entrustNubmer, originalNumber);
            }
            catch (Exception ex)
            {
                LogHelper.WriteError(ex.Message, ex);
                return(false);
            }

            return(true);
        }
Esempio n. 8
0
        /// <summary>
        /// 更新委托表(带事务)
        /// </summary>
        /// <param name="tet">委托表</param>
        /// <param name="db"></param>
        /// <param name="transaction"></param>
        /// <returns>是否成功</returns>
        public static bool UpdateEntrustTable(HK_TodayEntrustInfo tet, Database db, DbTransaction transaction)
        {
            try
            {
                HK_TodayEntrustDal dal = new HK_TodayEntrustDal();
                dal.Update(tet, db, transaction);
            }
            catch (Exception ex)
            {
                LogHelper.WriteError(ex.Message, ex);
                return(false);
            }

            return(true);
        }
Esempio n. 9
0
        /// <summary>
        /// 删除当日委托
        /// </summary>
        /// <param name="entrustNumber">委托单号</param>
        public static bool DeleteTodayEntrust(string entrustNumber)
        {
            try
            {
                HK_TodayEntrustDal dal = new HK_TodayEntrustDal();
                dal.Delete(entrustNumber);
            }
            catch (Exception ex)
            {
                LogHelper.WriteError(ex.Message, ex);
                return(false);
            }

            return(true);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="strMcOrderNo"></param>
        /// <returns></returns>
        protected override OrderCacheItem LoadCacheItemFromDB(string strMcOrderNo)
        {
            OrderCacheItem result = null;

            string where = string.Format("McOrderId = '{0}' ", strMcOrderNo);

            HK_TodayEntrustDal dal = new HK_TodayEntrustDal();
            var tets = dal.GetListArrayWithNoLock(where);

            if (!Utils.IsNullOrEmpty(tets))
            {
                try
                {
                    var tet       = tets[0];
                    var cacheItem = new OrderCacheItem(tet.CapitalAccount, tet.HoldAccount,
                                                       tet.EntrustNumber,
                                                       (
                                                           GTA.VTS.Common.CommonObject.Types.TransactionDirection)
                                                       Enum.Parse(
                                                           typeof(
                                                               GTA.VTS.Common.CommonObject.Types.TransactionDirection),
                                                           tet.BuySellTypeID.ToString
                                                               ()));
                    cacheItem.EntrustAmount = tet.EntrustAmount;
                    cacheItem.Code          = tet.Code;
                    var user = AccountManager.Instance.GetUserByAccount(tet.CapitalAccount);
                    if (user != null)
                    {
                        cacheItem.TraderId = user.UserID;
                    }
                    //else
                    //{
                    //    cacheItem.TraderId = GetTraderIdByFundAccount(tet.CapitalAccount); //TODO:需要根据资金账户获取用户ID
                    //}

                    AddOrderMappingInfo(tet.McOrderID, cacheItem);
                    result = cacheItem;
                }
                catch (Exception ex)
                {
                    LogHelper.WriteError(ex.Message, ex);
                }
            }

            return(result);
        }
Esempio n. 11
0
        /// <summary>
        /// 根据委托单号获取今日委托
        /// </summary>
        /// <param name="entrustNumber">委托单号</param>
        /// <returns>今日委托</returns>
        public static HK_TodayEntrustInfo GetTodayEntrustTable(string entrustNumber)
        {
            HK_TodayEntrustInfo tet = null;

            HK_TodayEntrustDal dal = new HK_TodayEntrustDal();

            try
            {
                tet = dal.GetModel(entrustNumber);
            }
            catch (Exception ex)
            {
                LogHelper.WriteError(ex.Message, ex);
            }

            return(tet);
        }
        private void LoadHKOrderFromDB()
        {
            string format = "OrderStatusId = '{0}'";

            string where = string.Format(format, (int)Entity.Contants.Types.OrderStateType.DOSUnRequired);
            HK_TodayEntrustDal         dal  = new HK_TodayEntrustDal();
            List <HK_TodayEntrustInfo> list = null;

            try
            {
                //list = DataRepository.XhTodayEntrustTableProvider.Find(where);
                list = dal.GetListArray(where);
            }
            catch (Exception ex)
            {
                LogHelper.WriteError(ex.Message, ex);
            }

            if (Utils.IsNullOrEmpty(list))
            {
                return;
            }

            DateTime now = DateTime.Now;

            foreach (HK_TodayEntrustInfo table in list)
            {
                //DateTime entrustTime = table.EntrustTime.Value;
                //if (entrustTime.Year == now.Year && entrustTime.Month == now.Month && entrustTime.Day == now.Day)
                //{
                //    CacheStockOrder(new XhTodayEntrustTableEx(table));
                //}

                //不再判断是否是当天
                var order = new HkTodayEntrustEx(table);
                CacheHKOrder(order);
            }
        }
Esempio n. 13
0
        /// <summary>
        /// 构建港股委托单
        /// </summary>
        /// <param name="order"></param>
        /// <param name="originalOrder"></param>
        /// <param name="strHoldingAccount"></param>
        /// <param name="strCapitalAccount"></param>
        /// <param name="iCurType"></param>
        /// <param name="modifyOrderNumber">原始委托单号</param>
        /// <param name="strMessage"></param>
        /// <param name="isModifyOrder">是否是改单</param>
        /// <returns></returns>
        public static string BuildHKOrder(ref HK_TodayEntrustInfo order, HKOrderRequest originalOrder,
                                          string strHoldingAccount, string strCapitalAccount, int iCurType,
                                          bool isModifyOrder, string modifyOrderNumber, ref string strMessage)
        {
            if (order == null)
            {
                order = new HK_TodayEntrustInfo();
            }

            order.EntrustNumber  = BuildHKOrderNo();
            order.CurrencyTypeID = iCurType;
            order.TradeUnitID    = (int)originalOrder.OrderUnitType;
            order.EntrustAmount  = (int)originalOrder.OrderAmount;
            order.EntrustPrice   = Convert.ToDecimal(originalOrder.OrderPrice);
            order.EntrustTime    = DateTime.Now;
            order.OfferTime      = DateTime.Now;
            order.OrderPriceType = (int)originalOrder.OrderWay;
            order.BuySellTypeID  = (int)originalOrder.BuySell;
            order.OrderStatusID  = (int)Types.OrderStateType.DOSUnRequired;

            if (strHoldingAccount == null)
            {
                strHoldingAccount = "";
            }
            order.HoldAccount = strHoldingAccount.Trim();

            if (strCapitalAccount == null)
            {
                strCapitalAccount = "";
            }
            order.CapitalAccount = strCapitalAccount.Trim();

            if (originalOrder.PortfoliosId == null)
            {
                originalOrder.PortfoliosId = "";
            }
            order.PortfolioLogo = originalOrder.PortfoliosId.Trim();

            if (originalOrder.Code == null)
            {
                originalOrder.Code = "";
            }
            order.Code = originalOrder.Code.Trim();

            order.TradeAmount       = 0;
            order.TradeAveragePrice = 0;
            order.CancelAmount      = 0;
            order.CancelLogo        = true;

            if (originalOrder.ChannelID == null)
            {
                originalOrder.ChannelID = "";
            }
            order.CallbackChannlID = originalOrder.ChannelID.Trim();

            order.IsModifyOrder     = isModifyOrder;
            order.ModifyOrderNumber = modifyOrderNumber;

            order.OrderMessage = "";
            order.McOrderID    = "";
            CheckEntrustLength(order);

#if (DEBUG)
            LogHelper.WriteDebug("HKCommonLogic.BuildHKOrder:" + order);
#endif

            HK_TodayEntrustDal dal = new HK_TodayEntrustDal();
            dal.Add(order);

            return(order.EntrustNumber);
        }
Esempio n. 14
0
        /// <summary>
        ///  Title:根据用户和密码查询该用户所拥有的港股资金帐户今日期货委托信息
        ///  Des.:此方法因为一个用户(交易员)可能拥有多个港股资金账号(如:-商品港股资金帐号,-股指港股资金帐号)
        ///  所以返回的数据会回多个资金账号的数据
        /// </summary>
        /// <param name="userID">用户(交易员)ID</param>
        /// <param name="pwd">用户(交易员)密码--如果密码为空时不验证密码</param>
        /// <param name="accountType">账号类型(数据库中BD_AccountType的九种) 如果传为0时查询对应的港股持仓账号类别(3--证券股东代码,9--港股股东代码)</param>
        /// <param name="filter">过滤条件数据</param>
        /// <param name="pageInfo">分页信息</param>
        /// <param name="total">返回数页数</param>
        /// <param name="errorMsg">异常信息</param>
        /// <returns>返回当日期货委托信息</returns>
        public List <HK_TodayEntrustInfo> PagingHK_TodayEntrustByFilter(string userID, string pwd, int accountType, HKEntrustConditionFindEntity filter, PagingInfo pageInfo, out int total, out string errorMsg)
        {
            List <HK_TodayEntrustInfo> list = null;
            HK_TodayEntrustDal         dal  = new HK_TodayEntrustDal();

            errorMsg = "";
            total    = 0;

            #region 密码不为空时先验证用户
            if (string.IsNullOrEmpty(userID))
            {
                errorMsg = "查询失败!失败原因为:交易员ID不能为空!";
                return(list);
            }
            if (!string.IsNullOrEmpty(pwd))
            {
                #region 从数据库中判断
                //UA_UserBasicInformationTableDal usDal = new UA_UserBasicInformationTableDal();
                //if (!usDal.Exists(userID, pwd))
                //{
                //    errorMsg = "查询失败!失败原因为:交易员ID或密码输入错误 !";
                //    return list;
                //}
                #endregion

                #region 从缓存中判断
                UA_UserBasicInformationTableInfo userInfo = AccountManager.Instance.GetBasicUserByUserId(userID);
                if (userInfo == null)
                {
                    errorMsg = "交易员对应类型的帐号不存在";
                    return(list);
                }
                if (userInfo.Password != pwd)
                {
                    errorMsg = "交易员密码错误";
                    return(list);
                }
                #endregion
            }
            #endregion

            if (filter != null && !string.IsNullOrEmpty(filter.EntrustNumber))  //委托单号(当只根据委托单号查询时)
            {
                #region 如果有委托单号直接查询唯一记录
                try
                {
                    list = dal.GetListArray(" EntrustNumber='" + filter.EntrustNumber + "'");
                    if (!Utils.IsNullOrEmpty(list))
                    {
                        total = 1;
                    }
                }
                catch (Exception ex)
                {
                    errorMsg = ex.Message;
                    LogHelper.WriteError(ex.ToString(), ex);
                }
                #endregion
            }
            else //当不带委托单号时
            {
                #region 如果分页信息为空返回异常
                if (pageInfo == null)
                {
                    errorMsg = "分页信息不能为空!";
                    return(null);
                }
                #endregion

                #region 分页存储过程相关信息组装
                PagingProceduresInfo ppInfo = new PagingProceduresInfo();
                ppInfo.IsCount    = pageInfo.IsCount;
                ppInfo.PageNumber = pageInfo.CurrentPage;
                ppInfo.PageSize   = pageInfo.PageLength;
                ppInfo.Fields     = "  EntrustNumber,PortfolioLogo,EntrustPrice,EntrustAmount,Code,TradeAmount,TradeAveragePrice,CancelAmount,CancelLogo,BuySellTypeID,HoldAccount,CapitalAccount,OrderStatusID,OrderPriceType,OrderMessage,CurrencyTypeID,TradeUnitID,CallbackChannlID,McOrderID,HasDoneProfit,OfferTime,EntrustTime,IsModifyOrder,ModifyOrderNumber";

                ppInfo.PK = "EntrustNumber";
                if (pageInfo.Sort == 0)
                {
                    ppInfo.Sort = " EntrustTime asc ";
                }
                else
                {
                    ppInfo.Sort = " EntrustTime desc ";
                }
                ppInfo.Tables = "HK_TodayEntrust";
                #endregion

                #region 过滤条件组装
                ppInfo.Filter = BuildHKEntrustQueryWhere(filter, userID, accountType, true);
                #endregion

                #region 执行查询
                try
                {
                    CommonDALOperate <HK_TodayEntrustInfo> com = new CommonDALOperate <HK_TodayEntrustInfo>();
                    list = com.PagingQueryProcedures(ppInfo, out total, dal.ReaderBind);
                    //list = dal.PagingXH_TodayEntrustByFilter(ppInfo, out total);
                }
                catch (Exception ex)
                {
                    errorMsg = ex.Message;
                    LogHelper.WriteError(ex.ToString(), ex);
                }
                #endregion
            }
            return(list);
        }