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

70 lines
3.0 KiB
C#

using YLErp.Modules.TradeModule.DealModule;
namespace YLErp.Modules.EodModule.SettlementModule
{
class EodDelaySettlementTrade : EodSettleServiceBaseV2
{
public const string Step = "自动延期结算";
public EodDelaySettlementTrade(EodSettlementContextV2 context) : base(context)
{
}
public void Execute(Action<string> setErrorTips)
{
var settleDate = _context.SettleDate;
var delayUnderlyids = _context.Request.DelayUnderlyIds;
var startDate = _context.PreSettleDate.AddDays(1);
var clienIds = _context.Request.ClientIds;
var haveSettlementFlag_1 = DbContext.trade.Where(t => t.ExerciseDate <= settleDate
&& t.TradeStatus == ConsTrade.确认成交
&& t.ClientId > 0
&& t.SettlementFlag == 1
&& t.ValidState != ConsGlobal.InValid).Select(x => x.TradeNumber).ToHashSet();
if (delayUnderlyids.Any())
{
var predicate = PredicateBuilder.Create<trade>(t => t.ExerciseDate >= startDate
&& t.ExerciseDate <= settleDate
&& t.TradeStatus == ConsTrade.确认成交
&& t.ClientId > 0
&& delayUnderlyids.Contains(t.UnderlyingId) && t.SettlementFlag == 0 //检查费停牌状态下所有 持仓交易的是否已执行到期
&& t.ValidState != ConsGlobal.InValid);
#region 新增客户筛选 tw
if (clienIds != null)
{
predicate = predicate.And(l => clienIds.Contains(l.ClientId));
}
#endregion
var unDelayTrades = DbContext.trade.Where(predicate).ToList();
var tradeDelay = new TradeDelaySettlementService(OptUser);
using (var trans = BeginTransaction())
{
foreach (var tr in unDelayTrades)
{
tradeDelay.UpdateDelayStatus(tr, "自动延期结算");
}
DbContext.SaveChanges();
trans.Commit();
}
var tradeNumber = unDelayTrades.Select(x => x.TradeNumber).ToHashSet();
if (setErrorTips != null && tradeNumber.Any())
{
setErrorTips("<span style='word-break: break-all'>延期结算的交易:" + string.Join(",", tradeNumber) + ";" + "</span><br />");
}
}
if (haveSettlementFlag_1.Any())
{
setErrorTips($"<span style='word-break: break-all'>{settleDate.ToString("yyyy-MM-dd")}:当前存在已到期且设置过延期结算的交易:" + string.Join(",", haveSettlementFlag_1) + ";" + "</span><br />");
}
}
}
}