添加确认书生成日志

This commit is contained in:
锦麟 王
2026-03-26 16:21:59 +08:00
parent 069f608073
commit a4806722df
2 changed files with 110 additions and 4 deletions
@@ -144,17 +144,23 @@ namespace YLErp.Modules.TradeModule.DocGenerateModule
}
/// <summary>
///
///
/// </summary>
private TradeDocGenerateResult GenerateSingleV1(trade_contract_group contractGroup, string docType = "DOCX")
{
var logger = LogFactory.GetLogger("生成确认书详细日志");
logger.Info($"[BatchGenerateSingleV1] 开始处理 - docType: {docType}");
if (contractGroup == null)
{
logger.Error("[BatchGenerateSingleV1] contractGroup 为 null");
throw new ArgumentNullException(nameof(contractGroup));
}
var contractBLL = new TradeContractBLL(this);
var trade = contractGroup.trade;
logger.Info($"[BatchGenerateSingleV1] 交易信息 - TradeId: {trade?.id}, TradeNumber: {trade?.TradeNumber}, TradeType: {trade?.TradeType}");
var contractBLL = new TradeContractBLL(this);
tradeBLL.SetFieldsByTradeType(trade);
var needAddData = true;
@@ -399,25 +405,54 @@ namespace YLErp.Modules.TradeModule.DocGenerateModule
dic["{{结算方式}}"] = "人民币现金结算";
dic["{{补充}}"] = "补充";
var batchLogger = LogFactory.GetLogger("生成确认书详细日志");
try
{
batchLogger.Info($"[BatchGenerateSingleV1] 开始生成文档 - TradeId: {trade?.id}");
batchLogger.Info($"[BatchGenerateSingleV1] 模板类型: {trade.TradeType}, IsUsePremiumRate: {trade.IsUsePremiumRate}");
var templateDir = OtcAppContext.MapPath("~/App_Docs/GTJA");
batchLogger.Info($"[BatchGenerateSingleV1] templateDir: {templateDir}");
var templatePath = OtcAppContext.MapPath("~/App_Docs/导出模板/交易确认书模板.docx");
if (trade.TradeType == "亚式期权")
{
templatePath = OtcAppContext.MapPath("~/App_Docs/导出模板/交易确认书(亚式期权)模板.docx");
batchLogger.Info($"[BatchGenerateSingleV1] 使用亚式期权模板");
}
if (trade.IsUsePremiumRate != null && trade.IsUsePremiumRate.Value)
{
templatePath = OtcAppContext.MapPath("~/App_Docs/导出模板/交易确认书(名义本金)模板.docx");
batchLogger.Info($"[BatchGenerateSingleV1] 使用名义本金模板");
}
batchLogger.Info($"[BatchGenerateSingleV1] 最终模板路径: {templatePath}");
batchLogger.Info($"[BatchGenerateSingleV1] 输出文件名: {outPutFileName}");
// 检查模板文件是否存在
if (!File.Exists(templatePath))
{
batchLogger.Error($"[BatchGenerateSingleV1] 模板文件不存在: {templatePath}");
return new TradeDocGenerateResult(trade) { ErrorMessage = $"模板文件不存在: {templatePath}" };
}
batchLogger.Info($"[BatchGenerateSingleV1] 模板文件存在,准备生成");
LogFactory.GetLogger("交易确认书").Info("交易确认书:" + outPutFileName);
var outPutFilePath = Path.Combine(templateDir, outPutFileName);
batchLogger.Info($"[BatchGenerateSingleV1] 输出文件路径: {outPutFilePath}");
// 确保输出目录存在
if (!Directory.Exists(templateDir))
{
batchLogger.Info($"[BatchGenerateSingleV1] 创建输出目录: {templateDir}");
Directory.CreateDirectory(templateDir);
}
batchLogger.Info($"[BatchGenerateSingleV1] 调用 MsWordTempalteHelper.GenerateFromTemplate");
MsWordTempalteHelper.GenerateFromTemplate(templatePath, dic, outPutFilePath);
batchLogger.Info($"[BatchGenerateSingleV1] MsWordTempalteHelper.GenerateFromTemplate 完成");
if (docType == "PDF" && !outPutFilePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
{
@@ -478,6 +513,18 @@ namespace YLErp.Modules.TradeModule.DocGenerateModule
catch (Exception e)
{
batchLogger.Error($"[BatchGenerateSingleV1] 发生异常 - TradeId: {trade?.id}, TradeNumber: {trade?.TradeNumber}", e);
batchLogger.Error($"[BatchGenerateSingleV1] 异常类型: {e.GetType().FullName}");
batchLogger.Error($"[BatchGenerateSingleV1] 异常消息: {e.Message}");
batchLogger.Error($"[BatchGenerateSingleV1] 异常堆栈: {e.StackTrace}");
if (e.InnerException != null)
{
batchLogger.Error($"[BatchGenerateSingleV1] 内部异常类型: {e.InnerException.GetType().FullName}");
batchLogger.Error($"[BatchGenerateSingleV1] 内部异常消息: {e.InnerException.Message}");
batchLogger.Error($"[BatchGenerateSingleV1] 内部异常堆栈: {e.InnerException.StackTrace}");
}
LogFactory.GetLogger<ConfirmationGenerateService>().Error("GenerateSingleConfirmBook出错", e);
return new TradeDocGenerateResult(trade) { ErrorMessage = e.Message };
}
@@ -36,13 +36,18 @@ namespace YLErp.Modules.TradeModule.DocGenerateModule
/// </summary>
public List<TradeDocGenerateResult> Generate(IEnumerable<int> tradeIds, string docType)
{
var logger = LogFactory.GetLogger("生成确认书详细日志");
logger.Info($"[Generate] 开始生成确认书 - tradeIds: {string.Join(",", tradeIds)}, docType: {docType}");
if (tradeIds == null)
{
logger.Error("[Generate] tradeIds 为 null");
throw new ArgumentNullException(nameof(tradeIds));
}
if (docType == null)
{
logger.Error("[Generate] docType 为 null");
throw new ArgumentNullException(nameof(docType));
}
@@ -72,9 +77,13 @@ namespace YLErp.Modules.TradeModule.DocGenerateModule
//----------------------------------
// 交易现金交割记录
//----------------------------------
logger.Info("[Generate] 开始查询交易数据");
List<trade> allTradeList = allTradeList = DbContext.trade.Where(x => tradeIds.Contains(x.id)).ToList();
logger.Info($"[Generate] 查询到交易数: {allTradeList.Count}");
if (allTradeList.Count < 1)
{
logger.Error("[Generate] 没有找到交易记录");
throw new ServiceException("没有已确认的记录信息!");
}
@@ -258,17 +267,23 @@ namespace YLErp.Modules.TradeModule.DocGenerateModule
}
/// <summary>
///
///
/// </summary>
private TradeDocGenerateResult GenerateSingleV1(trade_contract_group contractGroup, string docType = "DOCX")
{
var logger = LogFactory.GetLogger("生成确认书详细日志");
logger.Info($"[GenerateSingleV1] 开始处理 - docType: {docType}");
if (contractGroup == null)
{
logger.Error("[GenerateSingleV1] contractGroup 为 null");
throw new ArgumentNullException(nameof(contractGroup));
}
var contractBLL = new TradeContractBLL(this);
var trade = contractGroup.trade;
logger.Info($"[GenerateSingleV1] 交易信息 - TradeId: {trade?.id}, TradeNumber: {trade?.TradeNumber}, TradeType: {trade?.TradeType}");
var contractBLL = new TradeContractBLL(this);
tradeBLL.SetFieldsByTradeType(trade);
var needAddData = true;
@@ -518,25 +533,56 @@ namespace YLErp.Modules.TradeModule.DocGenerateModule
dic["{{结算方式}}"] = "人民币现金结算";
dic["{{补充}}"] = "补充";
var confirmLogger = LogFactory.GetLogger("生成确认书详细日志");
try
{
confirmLogger.Info($"[GenerateSingleConfirmBook] 开始生成 - TradeId: {trade?.id}, TradeNumber: {trade?.TradeNumber}, TradeType: {trade?.TradeType}");
confirmLogger.Info($"[GenerateSingleConfirmBook] 模板路径配置 - TradeType: {trade.TradeType}, IsUsePremiumRate: {trade.IsUsePremiumRate}");
var templateDir = OtcAppContext.MapPath("~/App_Docs/GTJA");
confirmLogger.Info($"[GenerateSingleConfirmBook] templateDir: {templateDir}");
var templatePath = OtcAppContext.MapPath("~/App_Docs/导出模板/交易确认书模板.docx");
confirmLogger.Info($"[GenerateSingleConfirmBook] 默认模板路径: {templatePath}");
if (trade.TradeType == "亚式期权")
{
templatePath = OtcAppContext.MapPath("~/App_Docs/导出模板/交易确认书(亚式期权)模板.docx");
confirmLogger.Info($"[GenerateSingleConfirmBook] 使用亚式期权模板: {templatePath}");
}
if (trade.IsUsePremiumRate != null && trade.IsUsePremiumRate.Value)
{
templatePath = OtcAppContext.MapPath("~/App_Docs/导出模板/交易确认书(名义本金)模板.docx");
confirmLogger.Info($"[GenerateSingleConfirmBook] 使用名义本金模板: {templatePath}");
}
confirmLogger.Info($"[GenerateSingleConfirmBook] 最终模板路径: {templatePath}");
confirmLogger.Info($"[GenerateSingleConfirmBook] 输出文件名: {outPutFileName}");
// 检查模板文件是否存在
if (!File.Exists(templatePath))
{
confirmLogger.Error($"[GenerateSingleConfirmBook] 模板文件不存在: {templatePath}");
return new TradeDocGenerateResult(trade) { ErrorMessage = $"模板文件不存在: {templatePath}" };
}
confirmLogger.Info($"[GenerateSingleConfirmBook] 模板文件存在,准备生成");
LogFactory.GetLogger("交易确认书").Info("交易确认书:" + outPutFileName);
string outPutFilePath = Path.Combine(templateDir, outPutFileName);
confirmLogger.Info($"[GenerateSingleConfirmBook] 输出文件路径: {outPutFilePath}");
// 确保输出目录存在
if (!Directory.Exists(templateDir))
{
confirmLogger.Info($"[GenerateSingleConfirmBook] 创建输出目录: {templateDir}");
Directory.CreateDirectory(templateDir);
}
confirmLogger.Info($"[GenerateSingleConfirmBook] 调用 MsWordTempalteHelper.GenerateFromTemplate");
MsWordTempalteHelper.GenerateFromTemplate(templatePath, dic, outPutFilePath);
confirmLogger.Info($"[GenerateSingleConfirmBook] MsWordTempalteHelper.GenerateFromTemplate 完成");
if (docType == "PDF" && !outPutFilePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
{
@@ -598,6 +644,19 @@ namespace YLErp.Modules.TradeModule.DocGenerateModule
catch (Exception e)
{
confirmLogger.Error($"[GenerateSingleConfirmBook] 发生异常 - TradeId: {trade?.id}, TradeNumber: {trade?.TradeNumber}", e);
confirmLogger.Error($"[GenerateSingleConfirmBook] 异常类型: {e.GetType().FullName}");
confirmLogger.Error($"[GenerateSingleConfirmBook] 异常消息: {e.Message}");
confirmLogger.Error($"[GenerateSingleConfirmBook] 异常堆栈: {e.StackTrace}");
// 检查是否是内部异常
if (e.InnerException != null)
{
confirmLogger.Error($"[GenerateSingleConfirmBook] 内部异常类型: {e.InnerException.GetType().FullName}");
confirmLogger.Error($"[GenerateSingleConfirmBook] 内部异常消息: {e.InnerException.Message}");
confirmLogger.Error($"[GenerateSingleConfirmBook] 内部异常堆栈: {e.InnerException.StackTrace}");
}
LogFactory.GetLogger<ConfirmationGenerateService>().Error("GenerateSingleConfirmBook出错", e);
return new TradeDocGenerateResult(trade) { ErrorMessage = e.Message };
}