using YLErp.Modules.TradeModule.AccumulatorOptionModule; namespace YLErp.Modules.TradeModule { /// /// 期权交易步骤还原服务(等待设计完善) /// public class OptionTradeActionRestoreService : TradeServiceBase { public OptionTradeActionRestoreService(YLBaseService baseService) : base(baseService) { } public OptionTradeActionRestoreService(OptUserInfo userInfo) : base(userInfo) { } /// /// 将交易数据还原到编辑状态 /// public bool RestoreTradeDataForEditiing(OtcOptionTradeFull td, out List restoredActions) { restoredActions = null; if (td is null) { return false; } var valueDate = td.TradeDate.Value; if (td.TradeType == "累计期权") { var query = from a in DbContext.TradeAction.AsNoTracking() where a.IsValid && a.TradeId == td.id && a.ValueDate == valueDate && a.ActionType == TradeActionType.AccumulatorChange select new { a.ActionData }; var action = query.FirstOrDefault(); if (action != null) { restoredActions = new List { TradeActionType.AccumulatorChange }; TradeAccumulatorHelper.RestoreAccumulatorChangeData(td, action.ActionData); return true; } } return false; } /// /// 将交易数据还原到特定日期 /// public bool RestoreTradeDataToSpecialDay(trade td, DateTime valueDate) { if (td is null) { return false; } if (td.TradeType == "累计期权") { var query = from a in DbContext.TradeAction.AsNoTracking() where a.IsValid && a.TradeId == td.id && a.ValueDate <= valueDate && a.ActionType == TradeActionType.AccumulatorChange orderby a.ValueDate descending select new { a.ActionData }; var action = query.FirstOrDefault(); if (action != null) { TradeAccumulatorHelper.RestoreAccumulatorChangeData(td, action.ActionData); return true; } } return false; } /// /// 将交易基础要素还原到特定日期 /// public bool RestoreTradeDataToSpecialDay2(OtcTradeBase td, DateTime valueDate) { if (td is null) { return false; } if (td.TradeType == "累计期权") { var query = from a in DbContext.TradeAction.AsNoTracking() where a.IsValid && a.TradeId == td.id && a.ValueDate <= valueDate && a.ActionType == TradeActionType.AccumulatorChange orderby a.ValueDate descending select new { a.ActionData }; var action = query.FirstOrDefault(); if (action != null) { TradeAccumulatorHelper.RestoreAccumulatorChangeData(td, tdAcc: default(trade_accumulator_option), changeDataJson: action.ActionData); return true; } } return false; } } }