diff --git a/Plugins/YLErp.Plugins.ZheShang/App_Docs/交易确认书/证券利率债收益互换合约交易确认书模版.docx b/Plugins/YLErp.Plugins.ZheShang/App_Docs/contract_template/swap_01.docx
similarity index 100%
rename from Plugins/YLErp.Plugins.ZheShang/App_Docs/交易确认书/证券利率债收益互换合约交易确认书模版.docx
rename to Plugins/YLErp.Plugins.ZheShang/App_Docs/contract_template/swap_01.docx
diff --git a/Plugins/YLErp.Plugins.ZheShang/App_Docs/结算单/DMA结算单.docx b/Plugins/YLErp.Plugins.ZheShang/App_Docs/settlement_template/dma_01.docx
similarity index 100%
rename from Plugins/YLErp.Plugins.ZheShang/App_Docs/结算单/DMA结算单.docx
rename to Plugins/YLErp.Plugins.ZheShang/App_Docs/settlement_template/dma_01.docx
diff --git a/Plugins/YLErp.Plugins.ZheShang/App_Docs/结算单/非DMA结算单.xlsx b/Plugins/YLErp.Plugins.ZheShang/App_Docs/settlement_template/nodma_01.xlsx
similarity index 100%
rename from Plugins/YLErp.Plugins.ZheShang/App_Docs/结算单/非DMA结算单.xlsx
rename to Plugins/YLErp.Plugins.ZheShang/App_Docs/settlement_template/nodma_01.xlsx
diff --git a/Plugins/YLErp.Plugins.ZheShang/App_Docs/结算单/场外衍生品结算确认书.docx b/Plugins/YLErp.Plugins.ZheShang/App_Docs/settlement_template/settle_01.docx
similarity index 100%
rename from Plugins/YLErp.Plugins.ZheShang/App_Docs/结算单/场外衍生品结算确认书.docx
rename to Plugins/YLErp.Plugins.ZheShang/App_Docs/settlement_template/settle_01.docx
diff --git a/Plugins/YLErp.Plugins.ZheShang/DocumentGenerator/TradeConfirmationGenerator.cs b/Plugins/YLErp.Plugins.ZheShang/DocumentGenerator/TradeConfirmationGenerator.cs
index a64d32ed..6294357b 100644
--- a/Plugins/YLErp.Plugins.ZheShang/DocumentGenerator/TradeConfirmationGenerator.cs
+++ b/Plugins/YLErp.Plugins.ZheShang/DocumentGenerator/TradeConfirmationGenerator.cs
@@ -49,7 +49,7 @@ namespace YLErp.Plugins.ShanXi.DocumentGenerator
//}
//else
//{
- templatePath = MosPathHelper.Combine(GlobalConfig.PluginFolder, "App_Docs\\交易确认书\\证券利率债收益互换合约交易确认书模版.docx");
+ templatePath = MosPathHelper.Combine(GlobalConfig.PluginFolder, "App_Docs\\contract_template\\swap_01.docx");
//}
}
else
diff --git a/Plugins/YLErp.Plugins.ZheShang/DocumentGenerator/TradeSettleBillGenerator.cs b/Plugins/YLErp.Plugins.ZheShang/DocumentGenerator/TradeSettleBillGenerator.cs
index 3c775432..f4e2912e 100644
--- a/Plugins/YLErp.Plugins.ZheShang/DocumentGenerator/TradeSettleBillGenerator.cs
+++ b/Plugins/YLErp.Plugins.ZheShang/DocumentGenerator/TradeSettleBillGenerator.cs
@@ -186,10 +186,10 @@ namespace YLErp.Plugins.ShanXi.DocumentGenerator
var templatePath =string.Empty;
if (trades.Any(s => s.StructureType == "多空组合"|| s.StructureType == "定义文件型债券收益互换"))
{
- templatePath = MosPathHelper.Combine(GlobalConfig.PluginFolder, "App_Docs\\结算单\\DMA结算单.docx");
+ templatePath = MosPathHelper.Combine(GlobalConfig.PluginFolder, "App_Docs\\settlement_template\\dma_01.docx");
return templatePath;
}
- templatePath = MosPathHelper.Combine(GlobalConfig.PluginFolder, "App_Docs\\结算单\\非DMA结算单.xlsx");
+ templatePath = MosPathHelper.Combine(GlobalConfig.PluginFolder, "App_Docs\\settlement_template\\nodma_01.xlsx");
return templatePath;
}
diff --git a/Plugins/YLErp.Plugins.ZheShang/DocumentGenerator/TradeUnwindReportGenerator.cs b/Plugins/YLErp.Plugins.ZheShang/DocumentGenerator/TradeUnwindReportGenerator.cs
index d84d0f87..c69ad57b 100644
--- a/Plugins/YLErp.Plugins.ZheShang/DocumentGenerator/TradeUnwindReportGenerator.cs
+++ b/Plugins/YLErp.Plugins.ZheShang/DocumentGenerator/TradeUnwindReportGenerator.cs
@@ -105,7 +105,7 @@ namespace YLErp.Plugins.ShanXi.DocumentGenerator
protected override string GetTemplateFilePath()
{
var templatePath = "";
- templatePath = Path.Combine(GlobalConfig.PluginFolder, "App_Docs\\结算单\\场外衍生品结算确认书.docx");
+ templatePath = Path.Combine(GlobalConfig.PluginFolder, "App_Docs\\settlement_template\\settle_01.docx");
return templatePath;
}
diff --git a/Plugins/YLErp.Plugins.ZheShang/YLErp.Plugins.ZheShang.csproj b/Plugins/YLErp.Plugins.ZheShang/YLErp.Plugins.ZheShang.csproj
index 26d1dad1..ccd9c2fe 100644
--- a/Plugins/YLErp.Plugins.ZheShang/YLErp.Plugins.ZheShang.csproj
+++ b/Plugins/YLErp.Plugins.ZheShang/YLErp.Plugins.ZheShang.csproj
@@ -22,19 +22,19 @@
PreserveNewest
-
+
PreserveNewest
-
+
PreserveNewest
-
+
PreserveNewest
-
+
PreserveNewest
-
+
PreserveNewest
diff --git a/YLErpDAL/Modules/TradeModule/DealModule/TradeContractGenerateService.cs b/YLErpDAL/Modules/TradeModule/DealModule/TradeContractGenerateService.cs
index 23797147..c7300ce9 100644
--- a/YLErpDAL/Modules/TradeModule/DealModule/TradeContractGenerateService.cs
+++ b/YLErpDAL/Modules/TradeModule/DealModule/TradeContractGenerateService.cs
@@ -205,67 +205,65 @@ namespace YLErp.Modules.TradeModule.DealModule
List results = new List();
List error = new List();
List file = new List();
- if (PS.Config.Company == CompanyEnum.浙商)
+ logger.Info("[GJGenerateConfirmBook] 生成确认书流程");
+
+ if (tradeIds == null || !tradeIds.Any())
{
- logger.Info("[GJGenerateConfirmBook] 生成确认书流程");
-
- if (tradeIds == null || !tradeIds.Any())
- {
- logger.Info("[GJGenerateConfirmBook] tradeIds 为空,直接返回");
- errors = new List();
- files = new List();
- return true;
- }
-
- var trades = DbContext.trade.Where(x => tradeIds.Contains(x.id)).AsNoTracking().ToList();
- logger.Info($"[GJGenerateConfirmBook] 查询到交易记录数: {trades.Count}");
-
- if (!trades.Any())
- {
- logger.Info("[GJGenerateConfirmBook] 未找到交易记录,直接返回");
- errors = new List();
- files = new List();
- return true;
- }
-
- var clientIds = trades.Select(x => x.ClientId).Distinct().ToList();
- logger.Info($"[GJGenerateConfirmBook] 客户ID数: {clientIds.Count}");
-
- var allTrades = DbContext.trade.Where(x => clientIds.Contains(x.ClientId) && x.ValidState != ConsGlobal.InValid);
- if (startDate.HasValue)
- {
- allTrades = allTrades.Where(x => x.TradeDate >= startDate);
- }
- if (endDate.HasValue)
- {
- allTrades = allTrades.Where(x => x.TradeDate <= endDate);
- }
- var Ids = allTrades.Select(o => o.id).Distinct().ToArray();
- var swapPositions = DbContext.swap_position.Where(s => Ids.Contains(s.SwapTradeId) && s.IsInitial && s.PositionType > 0 && !s.Invalid)
- .Distinct().ToList();
- logger.Info($"[GJGenerateConfirmBook] 查询到持仓记录数: {swapPositions.Count}");
-
- var allTradeList = allTrades.AsNoTracking().ToList();
- foreach (var item in allTradeList)
- {
- item.swap_positions.Add(swapPositions.FirstOrDefault(o => o.SwapTradeId == item.id));
- }
- allTradeList = allTradeList.Where(x => x.swap_positions.Any()).ToList();
- logger.Info($"[GJGenerateConfirmBook] 过滤后有持仓的交易数: {allTradeList.Count}");
-
- // 按照客户ID、交易日期、多空头进行分组
- var group = allTradeList.GroupBy(O => new { O.ClientId, O.StartDate, O.swap_positions.FirstOrDefault()?.PositionType })
- .ToDictionary(K => K.Key, V => V.Select(O => O.id).ToList());
-
- logger.Info($"[GJGenerateConfirmBook] 分组数: {group.Count}");
-
- foreach (var item in group)
- {
- var tradeCount = item.Value.Distinct().Count();
- logger.Info($"[GJGenerateConfirmBook] 处理分组 - ClientId: {item.Key.ClientId}, StartDate: {item.Key.StartDate}, PositionType: {item.Key.PositionType}, 交易数: {tradeCount}");
- groupGenerateHandle(item.Value.Distinct().ToList(), docType, startDate, endDate, results, error, file);
- }
+ logger.Info("[GJGenerateConfirmBook] tradeIds 为空,直接返回");
+ errors = new List();
+ files = new List();
+ return true;
}
+
+ var trades = DbContext.trade.Where(x => tradeIds.Contains(x.id)).AsNoTracking().ToList();
+ logger.Info($"[GJGenerateConfirmBook] 查询到交易记录数: {trades.Count}");
+
+ if (!trades.Any())
+ {
+ logger.Info("[GJGenerateConfirmBook] 未找到交易记录,直接返回");
+ errors = new List();
+ files = new List();
+ return true;
+ }
+
+ var clientIds = trades.Select(x => x.ClientId).Distinct().ToList();
+ logger.Info($"[GJGenerateConfirmBook] 客户ID数: {clientIds.Count}");
+
+ var allTrades = DbContext.trade.Where(x => clientIds.Contains(x.ClientId)&&x.TradeType.Equals("收益互换") && x.ValidState != ConsGlobal.InValid);
+ if (startDate.HasValue)
+ {
+ allTrades = allTrades.Where(x => x.TradeDate >= startDate);
+ }
+ if (endDate.HasValue)
+ {
+ allTrades = allTrades.Where(x => x.TradeDate <= endDate);
+ }
+ var Ids = allTrades.Select(o => o.id).Distinct().ToArray();
+ var swapPositions = DbContext.swap_position.Where(s => Ids.Contains(s.SwapTradeId) && s.IsInitial && s.PositionType > 0 && !s.Invalid)
+ .Distinct().ToList();
+ logger.Info($"[GJGenerateConfirmBook] 查询到持仓记录数: {swapPositions.Count}");
+
+ var allTradeList = allTrades.AsNoTracking().ToList();
+ foreach (var item in allTradeList)
+ {
+ item.swap_positions.Add(swapPositions.FirstOrDefault(o => o.SwapTradeId == item.id));
+ }
+ allTradeList = allTradeList.Where(x => x.swap_positions.Any()).ToList();
+ logger.Info($"[GJGenerateConfirmBook] 过滤后有持仓的交易数: {allTradeList.Count}");
+
+ // 按照客户ID、交易日期、多空头进行分组
+ var group = allTradeList.GroupBy(O => new { O.ClientId, O.StartDate, O.swap_positions.FirstOrDefault()?.PositionType })
+ .ToDictionary(K => K.Key, V => V.Select(O => O.id).ToList());
+
+ logger.Info($"[GJGenerateConfirmBook] 分组数: {group.Count}");
+
+ foreach (var item in group)
+ {
+ var tradeCount = item.Value.Distinct().Count();
+ logger.Info($"[GJGenerateConfirmBook] 处理分组 - ClientId: {item.Key.ClientId}, StartDate: {item.Key.StartDate}, PositionType: {item.Key.PositionType}, 交易数: {tradeCount}");
+ groupGenerateHandle(item.Value.Distinct().ToList(), docType, startDate, endDate, results, error, file);
+ }
+
errors = results.Where(n => !string.IsNullOrWhiteSpace(n.ErrorMessage)).Select(n => n.ErrorMessage).ToList();
files = results.Where(n => !string.IsNullOrWhiteSpace(n.OutputFilePath)).Select(n => n.OutputFilePath).ToList();
logger.Info($"[GJGenerateConfirmBook] 完成生成确认书 - 错误数: {errors.Count()}, 文件数: {files.Count()}");
diff --git a/YLErpWeb/appsettings.dev.json b/YLErpWeb/appsettings.dev.json
index 6cdb6c81..25a9e956 100644
--- a/YLErpWeb/appsettings.dev.json
+++ b/YLErpWeb/appsettings.dev.json
@@ -15,7 +15,7 @@
"AppSettings": {
"VirtualPathRoot": "",
"UseRightAligned": "",
- "PluginFolder": ""
+ "PluginFolder": "D:\\shenzhengpoc\\zszq-trs\\Plugins\\build\\ZheShang\\Debug\\net6.0\\"
},
"LibreOffice": {
"ExePath": "",