namespace YLErp.Modules.EodModule.SettlementModule { /// /// 检查日终汇率 /// public class EodCheckCurrency : EodSettleServiceBaseV2 { public const string Step = "检查日终汇率"; public EodCheckCurrency(EodSettlementContextV2 context) : base(context) { } /// /// 检查结算汇率 /// public void Execute() { var missingList = _context.EodCurrencyProvider.GetCurrencyPairsOfMissingRate(_context.CurrencyCodes); if (missingList.Any()) { var codes = string.Join(",", missingList); _context.RaiseError(Step, "缺失汇率的货币对:" + codes); } } /// /// 检查结算汇率 /// public void Execute1() { var otcTrades = _context.OtcTrades; var missingSet = new HashSet(); foreach (var t in otcTrades) { if (_context.IsHolidayTrade(t.id)) { continue; } if (string.IsNullOrEmpty(t.QuoteCurrency) || string.IsNullOrEmpty(t.SettlementCurrency) || t.QuoteCurrency.Equals(t.SettlementCurrency, StringComparison.OrdinalIgnoreCase)) { continue; } var arr = new[] { t.QuoteCurrency, t.SettlementCurrency }; if (ConsGlobal.Currency.IsCnCurrency(arr[0]?.ToUpperInvariant())) { Array.Reverse(arr); } if (!missingSet.Contains(arr[0] + arr[1]) && !_context.EodCurrencyProvider.TryGetCurrencyRate(arr[0], arr[1], out _)) { missingSet.Add(arr[0] + arr[1]); } } if (missingSet.Any()) { var codes = string.Join(",", missingSet); _context.RaiseError(Step, "缺失汇率的货币对:" + codes); } } } }