互换交易确认书无法生成
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -22,19 +22,19 @@
|
||||
<None Update="App_Docs\交易确认书\收益互换交易确认书(DMA)模板.docx">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Update="App_Docs\交易确认书\证券利率债收益互换合约交易确认书模版.docx">
|
||||
<None Update="App_Docs\contract_template\swap_01.docx">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Update="App_Docs\交易确认书\证券利率债收益互换合约交易确认书模版.docx">
|
||||
<None Update="App_Docs\contract_template\swap_01.docx">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Update="App_Docs\结算单\DMA结算单.docx">
|
||||
<None Update="App_Docs\settlement_template\dma_01.docx">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Update="App_Docs\结算单\场外衍生品结算确认书.docx">
|
||||
<None Update="App_Docs\settlement_template\settle_01.docx">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Update="App_Docs\结算单\非DMA结算单.xlsx">
|
||||
<None Update="App_Docs\settlement_template\nodma_01.xlsx">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
@@ -205,67 +205,65 @@ namespace YLErp.Modules.TradeModule.DealModule
|
||||
List<TradeDocGenerateResult> results = new List<TradeDocGenerateResult>();
|
||||
List<string> error = new List<string>();
|
||||
List<string> file = new List<string>();
|
||||
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<string>();
|
||||
files = new List<string>();
|
||||
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<string>();
|
||||
files = new List<string>();
|
||||
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<string>();
|
||||
files = new List<string>();
|
||||
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<string>();
|
||||
files = new List<string>();
|
||||
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()}");
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
"AppSettings": {
|
||||
"VirtualPathRoot": "",
|
||||
"UseRightAligned": "",
|
||||
"PluginFolder": ""
|
||||
"PluginFolder": "D:\\shenzhengpoc\\zszq-trs\\Plugins\\build\\ZheShang\\Debug\\net6.0\\"
|
||||
},
|
||||
"LibreOffice": {
|
||||
"ExePath": "",
|
||||
|
||||
Reference in New Issue
Block a user