Files
zszq-trs/YLErpDAL/Modules/TradeModule/DealModule/ChangeConfirmBookGenerator.cs
T
2024-05-09 14:06:26 +08:00

131 lines
5.1 KiB
C#

using iTextSharp.text;
using iTextSharp.text.pdf;
using System.Text;
using YLErp.BLL;
using YLErp.Configuration;
using YLErp.Modules.TradeDalModule;
using YLErp.Office.iTextModule;
namespace YLErp.Modules.TradeModule.DealModule
{
/// <summary>
/// 变更确认书生成
/// </summary>
public class ChangeConfirmBookGenerator : TradeServiceBase
{
public ChangeConfirmBookGenerator(YLBaseService baseService) : base(baseService)
{
}
public ChangeConfirmBookGenerator(OptUserInfo userInfo) : base(userInfo)
{
}
/// <summary>
/// 生成变更确认书并返回文件生成路径
/// </summary>
public string GenerateChangeConfirmBook(int tradeId, out string errorMsg)
{
errorMsg = null;
if (!PS.Config.TradeElement.IsGenerateAmendDoc)
{
return null;
}
//var td = DbContext.trade.FirstOrDefault(n => n.id == tradeId);
var td = new TradeDalService(this).GetTradeOrEodTrade(new[] { tradeId }, SystemValueDate).FirstOrDefault();
if (td.TradeStatus != ConsTrade.确认成交)
{
throw new ServiceException("交易状态不是确认成交");
}
var changes = new TradeAuditLogService(this).GetLastConfirmChangeMsg(tradeId);
if (changes == null || !changes.Any())
{
errorMsg = "没有交易确认变更的信息";
return null;
}
//--------------------------------------------------
// 生成交易变更文档
//--------------------------------------------------
//设置文件夹名称
var saveFileDir = OtcAppContext.MapPath("~/App_Docs/ChangeConfirmBook");
if (!Directory.Exists(saveFileDir))
{
Directory.CreateDirectory(saveFileDir);
}
var fileName = $"{td.TradeNumber}交易变更确认书{DateTime.Now:yyyyMMddHHmmss}.pdf";
var filePath = Path.Combine(saveFileDir, fileName);
var document = new Document(HeaderAndFooterEvent.rect);
var writer = PdfWriter.GetInstance(document, new FileStream(filePath, FileMode.Create));
try
{
document.Open();
writer.PageEvent = new HeaderAndFooterEvent();
HeaderAndFooterEvent.PAGE_NUMBER = true; //实现页眉跟页脚
HeaderAndFooterEvent.tpl = writer.DirectContent.CreateTemplate(1000, 1000); //定义模板
HeaderAndFooterEvent.HeaderLeft = "";
HeaderAndFooterEvent.HeaderRight = "";
//每次在添加文本内容之前可以先设置字体,有效期持续到重新设置之前
HeaderAndFooterEvent.SetFont(BaseColor.DARK_GRAY, "宋体", 16, Font.BOLD);
document.Add(HeaderAndFooterEvent.AddParagraph("交易信息变更确认书", 1, 1.5f));
//每次在添加文本内容之前可以先设置字体,有效期持续到重新设置之前
HeaderAndFooterEvent.SetFont(BaseColor.DARK_GRAY, "宋体", 12);
//增加空行
document.Add(HeaderAndFooterEvent.AddParagraph(" ", 0, 1.5f));
#region 添加变更信息
var contentSB = new StringBuilder();
contentSB.Append($"经双方协商确定,编号为{td.TradeNumber}的交易信息,");
foreach (var change in changes)
{
contentSB.Append(change.DisplayName).Append("由")
.Append(change.OldValue).Append("变更为").Append(change.NewValue).AppendLine(";");
}
//添加信息
HeaderAndFooterEvent.SetFont(BaseColor.DARK_GRAY, "宋体", 12);
document.Add(HeaderAndFooterEvent.AddParagraph(contentSB.ToString(), 0, 1.5f));
#endregion
HeaderAndFooterEvent.SetFont(BaseColor.DARK_GRAY, "宋体", 12);
//增加空行
document.Add(HeaderAndFooterEvent.AddParagraph(" ", 0, 1.5f));
var clientInfo = $"{PS.Config.CompanyName ?? ""} {td.ClientName} {valuedateBLL.ValueDate:yyyy年M月d日}";
//添加客户信息
HeaderAndFooterEvent.SetFont(BaseColor.DARK_GRAY, "宋体", 12, Font.BOLD);
document.Add(HeaderAndFooterEvent.AddParagraph(clientInfo, 2, 1.5f));
var webPath = "/App_Docs/ChangeConfirmBook/" + fileName;
//保存文件路径
SaveTradeMeta(td.id, "变更确认书", webPath);
return webPath;
}
catch (Exception ex)
{
LogFactory.GetLogger("生成变更确认书出错").Error(ex, "交易编号:" + td.TradeNumber);
throw new ServiceException("生成变更确认书出错", ex);
}
finally
{
document?.Close();
}
}
}
}