131 lines
5.1 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|
|
}
|