예제 #1
0
        private void DoHoldFreezeCheck()
        {
            var holdMemoryTables = MemoryDataManager.XHHoldMemoryList.GetAll();

            foreach (var holdMemoryTable in holdMemoryTables)
            {
                var hold = holdMemoryTable.Data;
                try
                {
                    int accountHoldId = hold.AccountHoldLogoId;

                    XH_AcccountHoldFreezeTableDal freezeTableDal = new XH_AcccountHoldFreezeTableDal();
                    int sum = freezeTableDal.GetAllFreezeAmount(accountHoldId);
                    holdMemoryTable.ReadAndWrite(h =>
                    {
                        if (h.FreezeAmount != sum)
                        {
                            string format =
                                "XHReckonUnitManager.DoHoldFreezeCheck[AccountHoldLogoId={0},FreezeAmount={1},TrueSum={2}]";
                            string desc = string.Format(format, accountHoldId,
                                                        h.FreezeAmount, sum);
                            LogHelper.WriteDebug(desc);

                            h.FreezeAmount = sum;
                        }

                        return(h);
                    });
                }
                catch (Exception ex)
                {
                    LogHelper.WriteError(ex.Message, ex);
                }
            }
        }
        /// <summary>
        /// 现货持仓冻结处理
        /// </summary>
        /// <param name="tm"></param>
        /// <returns></returns>
        private int PO_BuildHoldFreezeRecord(ReckoningTransaction tm)
        {
            LogHelper.WriteDebug("现货持仓冻结处理XHSellOrderLogicFlow.PO_ProcessXhHoldingAccountFreeze");

            var ahft = new XH_AcccountHoldFreezeTableInfo();

            //现货持仓帐户标识
            ahft.AccountHoldLogo = HoldingAccountId;
            //委托单号
            ahft.EntrustNumber = EntrustNumber;
            //冻结时间
            ahft.FreezeTime = DateTime.Now;
            //解冻时间
            ahft.ThawTime = DateTime.Now;
            //冻结数量
            //decimal unitMultiple = MCService.GetTradeUnitScale(stockorder.Code, stockorder.OrderUnitType);
            decimal orderAmount = Convert.ToDecimal(Request.OrderAmount); // *unitMultiple;

            ahft.PrepareFreezeAmount = Convert.ToInt32(orderAmount);
            //冻结类型
            ahft.FreezeTypeLogo = (int)Types.FreezeType.DelegateFreeze;

            //string format = "现货持仓冻结处理[委托单号={0},冻结总量={1},冻结时间={2},解冻时间={3},冻结类型={4},现货帐户持仓标识={5},]";
            //string desc = string.Format(format, ahft.EntrustNumber, ahft.PrepareFreezeAmount, ahft.FreezeTime,
            //                            ahft.ThawTime, ahft.FreezeTypeLogo, ahft.HoldFreezeLogoId);
            //LogHelper.WriteDebug(desc);

            XH_AcccountHoldFreezeTableDal dal = new XH_AcccountHoldFreezeTableDal();

            return(dal.Add(ahft, tm.Database, tm.Transaction));
        }
예제 #3
0
        /// <summary>
        /// 获取现货对应委托单的持仓冻结对象
        /// </summary>
        /// <param name="entrustNumber">委托单号</param>
        /// <param name="ft">冻结类型</param>
        /// <returns>委托单的持仓冻结实体</returns>
        public static XH_AcccountHoldFreezeTableInfo GetHoldAccountFreeze(string entrustNumber, Types.FreezeType ft)
        {
            XH_AcccountHoldFreezeTableDal dal = new XH_AcccountHoldFreezeTableDal();
            string format = "EntrustNumber='{0}' AND FreezeTypeLogo={1}";

            string where = string.Format(format, entrustNumber, (int)ft);

            IList <XH_AcccountHoldFreezeTableInfo> list = null;

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

            if (list == null)
            {
                return(null);
            }

            if (list.Count == 0)
            {
                return(null);
            }

            return(list[0]);
        }
예제 #4
0
        /// <summary>
        /// 清除持仓冻结
        /// </summary>
        /// <param name="persistHoldFreezeId"></param>
        /// <param name="db"></param>
        /// <param name="transaction"></param>
        /// <returns></returns>
        public static bool ClearHoldFreeze(int persistHoldFreezeId, Database db, DbTransaction transaction)
        {
            if (persistHoldFreezeId != -1)
            {
                try
                {
                    XH_AcccountHoldFreezeTableDal hDal = new XH_AcccountHoldFreezeTableDal();
                    hDal.Clear(persistHoldFreezeId, db, transaction);
                }
                catch (Exception ex)
                {
                    LogHelper.WriteError(ex.Message, ex);
                    return(false);
                }
            }

            return(true);
        }
예제 #5
0
        /// <summary>
        /// 删除资金冻结记录
        /// </summary>
        /// <param name="persistHoldFreezeId">资金冻结记录id</param>
        /// <returns>是否成功</returns>
        public static bool DeleteHoldFreeze(int persistHoldFreezeId)
        {
            if (persistHoldFreezeId != -1)
            {
                try
                {
                    XH_AcccountHoldFreezeTableDal hDal = new XH_AcccountHoldFreezeTableDal();
                    hDal.Delete(persistHoldFreezeId);
                }
                catch (Exception ex)
                {
                    LogHelper.WriteError(ex.Message, ex);
                    return(false);
                }
            }

            return(true);
        }