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