74 lines
2.1 KiB
C#
74 lines
2.1 KiB
C#
namespace YLErp.Modules.EodModule.SettlementModule
|
|
{
|
|
/// <summary>
|
|
/// 检查日终汇率
|
|
/// </summary>
|
|
public class EodCheckCurrency : EodSettleServiceBaseV2
|
|
{
|
|
public const string Step = "检查日终汇率";
|
|
|
|
public EodCheckCurrency(EodSettlementContextV2 context) : base(context)
|
|
{
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 检查结算汇率
|
|
/// </summary>
|
|
public void Execute()
|
|
{
|
|
var missingList = _context.EodCurrencyProvider.GetCurrencyPairsOfMissingRate(_context.CurrencyCodes);
|
|
|
|
if (missingList.Any())
|
|
{
|
|
var codes = string.Join(",", missingList);
|
|
|
|
_context.RaiseError(Step, "缺失汇率的货币对:" + codes);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 检查结算汇率
|
|
/// </summary>
|
|
public void Execute1()
|
|
{
|
|
var otcTrades = _context.OtcTrades;
|
|
var missingSet = new HashSet<string>();
|
|
|
|
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);
|
|
}
|
|
}
|
|
}
|
|
}
|