/// <summary> /// 进行撤单校验 /// </summary> /// <param name="errMsg">错误信息</param> /// <returns>校验结果</returns> public bool Check(ref string errMsg) { bool result = CheckDelegateExist(ref errMsg); if (result) { int state = todayEntrustTable.OrderStatusId; Types.OrderStateType orderState = (Types.OrderStateType)state; result = CheckCanCancelDelegate(orderState, ref errMsg); } return(result); }
/// <summary> /// 根据撮合中心的委托单号移除一个处理单元 /// </summary> /// <param name="matchOrderNo">撮合中心的委托单号</param> /// <param name="ost">当前委托状态</param> /// <returns>是否成功</returns> public bool RemoveReckonUnitByMatchOrderNo(string matchOrderNo, Types.OrderStateType ost) { if (string.IsNullOrEmpty(matchOrderNo)) { return(false); } bool result = false; cacheLock.EnterUpgradeableReadLock(); try { if (cache.ContainsKey(matchOrderNo)) { if (ost == Types.OrderStateType.DOSCanceled || ost == Types.OrderStateType.DOSDealed || ost == Types.OrderStateType.DOSPartRemoved || ost == Types.OrderStateType.DOSRemoved) { cacheLock.EnterWriteLock(); try { LogHelper.WriteDebug( "ReckonUnitManager.RemoveReckonUnitByMatchOrderNo根据撮合中心的委托单号移除一个处理单元,委托单号=" + matchOrderNo); T unit = cache[matchOrderNo]; cache.Remove(matchOrderNo); //timer.Check -= unit.DoReckonCommitCheck; } finally { cacheLock.ExitWriteLock(); } } result = true; } } finally { cacheLock.ExitUpgradeableReadLock(); } return(result); }
/// <summary> /// 检查是否可撤单 /// </summary> /// <param name="orderState">委托状态</param> /// <param name="errMsg">错误信息</param> /// <returns>校验结果</returns> private bool CheckCanCancelDelegate(Types.OrderStateType orderState, ref string errMsg) { bool result = false; errMsg = ""; if (orderState == Types.OrderStateType.DOSUnRequired || orderState == Types.OrderStateType.DOSRequiredSoon || orderState == Types.OrderStateType.DOSIsRequired || orderState == Types.OrderStateType.DOSPartDealed) { result = true; } else { string errCode = "GT-1501"; errMsg = "委托不可撤。"; errMsg = errCode + ":" + errMsg; LogHelper.WriteInfo(errMsg); } return(result); }