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)); }
/// <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]); }
/// <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); }
/// <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); }