using YLErp.Helpers; using YLErp.Modules.ClientModule; using YLErp.QdpModule; namespace YLErp.Modules.EodModule.SettlementModule { /// /// PS.Config.IsEodSendMaturityEmail /// 发送近期到期交易列表邮件 /// class EodSendMaturityEmail : EodSettleServiceBaseV2 { public EodSendMaturityEmail(EodSettlementContextV2 context) : base(context) { } /// /// 尚未完善 /// public void SendMaturityEmail() { var maturityDate = _context.SettleDate; var a = 0; //获取之后三个交易日 for (var i = 0; i < 3;) { a++; maturityDate = maturityDate.AddDays(1); if (!QdpCalendarHelper.IsHoliday(maturityDate)) { i++; } else { continue; } if (a >= 20) { throw new Exception("日历记录异常," + _context.SettleDateStr + "后未查找到有效的3个交易日!"); }; } //获取交易 var tradeList = _context.OtcTrades.Where(trade => trade.TradeStatus == "确认成交" && trade.ValidState != "InValid" && trade.ClientId > 0 && trade.MaturityDate > _context.SettleDate && trade.MaturityDate <= maturityDate).ToArray(); if (!tradeList.Any()) { return; } var clientIds = tradeList.Select(t => t.ClientId).ToList(); if (!clientIds.Any()) { return; } var clientList = ClientDataQueryService.GetClientsFromDB(t => clientIds.Contains(t.id)); var errorClientList = new List(); var errorMsg = new List(); foreach (var client in clientList) { var clientTradeList = tradeList.Where(t => t.ClientId == client.id).ToList(); var bodyhtml = string.Empty; bodyhtml += ""; bodyhtml += $"

近期到期交易列表

"; bodyhtml += $"

客户名称:{client.Name}

"; bodyhtml += $"

日期:{_context.SettleDateStr}

"; bodyhtml += ""; bodyhtml += ""; bodyhtml += " "; bodyhtml += " "; bodyhtml += " "; bodyhtml += " "; bodyhtml += " "; bodyhtml += " "; bodyhtml += " "; bodyhtml += " "; bodyhtml += " "; bodyhtml += " "; foreach (var trade in clientTradeList) { bodyhtml += " "; bodyhtml += $" "; bodyhtml += $" "; bodyhtml += $" "; bodyhtml += $" "; bodyhtml += $" "; bodyhtml += $" "; bodyhtml += $" "; bodyhtml += $" "; //股票类期权 行权价给实际行权价 if (trade.IsMoneynessOptionData) { bodyhtml += $" "; } else { bodyhtml += $" "; } bodyhtml += " "; } bodyhtml += "
交易编号 交易日期 交易方向 标的代码 结构类型 看涨看跌 行权方式 到期日 行权价
{trade.TradeNumber}{(trade.TradeDate == null ? "" : trade.TradeDate.Value.ToString("yyyy-MM-dd")):F}{trade.BuySell}{trade.UnderlyingCode}{trade.TradeType:F}{("Call".Equals(trade.CallPut) ? "看涨" : "看跌")}{trade.ExerciseModeCn:F}{(trade.ExerciseDate == null ? "" : trade.ExerciseDate.Value.ToString("yyyy-MM-dd"))}{trade.Strike * (trade.SpotPrice ?? 0):F}{trade.Strike:F}
"; // 要向该客户的所有订阅了邮件通知的人员发送邮件 var emails = ClientDataQueryService.GetClientEmails(client.id, false); if (emails != null & emails.Any()) { var sendMail = EmailHelper.SendMail(string.Join(";", emails), "近期到期交易列表", bodyhtml, true, null); if (!string.IsNullOrEmpty(sendMail)) { errorClientList.Add(client.Name); if (!errorMsg.Contains(sendMail)) { errorMsg.Add(sendMail); } } } } //判断是否有发送失败的客户 if (errorClientList.Count > 0) { var msg = $"错误:{string.Join(",", errorClientList.ToArray())}发送报告时出错,{string.Join(",", errorMsg.ToArray())}。"; } } } }