Files
zszq-trs/YLErpDAL/Modules/EodModule/SettlementModule/EodCheckCurrency.cs
T
2024-05-09 14:06:26 +08:00

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