TRS-ZS-183 一个客户一天所有开仓的多头交易都放到一个交易确认书里

This commit is contained in:
锦麟 王
2025-04-22 09:45:21 +08:00
parent 4b9bcfb2dc
commit 5ba29de3ed
21 changed files with 1176 additions and 393 deletions
@@ -162,38 +162,48 @@ namespace YLErp.Modules.TradeModule.DocGenerateModule
var tradeContractGroupTradeIds = tradeDic.Values.Select(x => x.trade.id).ToList();
//var childs = DbContext.trade.Where(x => tradeContractGroupTradeIds.Contains(x.ParentTradeId ?? 0));
var childs = service.GetStructTradeFromTradeOrEodTrade(tradeContractGroupTradeIds, SystemValueDate, true);
foreach (var tradeContractGroup in tradeDic.Values)
if (PS.Config.Company == Configuration.CompanyEnum.)
{
if ((tradeContractGroup.trade.TradeType != "结构化交易" && tradeContractGroup.trade.TradeType != "收益互换" && tradeContractGroup.trade_cash == null)
|| (tradeContractGroup.trade.TradeType == "结构化交易" && tradeContractGroup.trade.IsGroup == 0 && tradeContractGroup.trade.SubTrades.Any(O => O.trade_cash == null)))
if (generatorV2 != null)
{
resultList.Add(new TradeDocGenerateResult(tradeContractGroup.trade)
{
ErrorMessage = "缺少现金交割记录"
});
}
//插件版本
else if (generatorV2 != null)
{
var result = GenerateSingleV2(generatorV2, tradeContractGroup, docType);
var result = GenerateSingleV2(generatorV2, null, docType , allTradeList);
resultList.Add(result);
}
else
{
var result = GenerateSingleV1(tradeContractGroup, docType);
resultList.Add(result);
//if (!string.IsNullOrWhiteSpace(result.OutputFilePath))
//{
// tradeContractGroup.trade.HasGeneratedConfirmBook = 1;
// var childTds = childs.Where(x => x.ParentTradeId == tradeContractGroup.trade.id);
// foreach (var child in childTds)
// {
// child.HasGeneratedConfirmBook = 1;
// }
//}
}
}
else
{
foreach (var tradeContractGroup in tradeDic.Values)
{
if ((tradeContractGroup.trade.TradeType != "结构化交易" && tradeContractGroup.trade.TradeType != "收益互换" && tradeContractGroup.trade_cash == null)
|| (tradeContractGroup.trade.TradeType == "结构化交易" && tradeContractGroup.trade.IsGroup == 0 && tradeContractGroup.trade.SubTrades.Any(O => O.trade_cash == null)))
{
resultList.Add(new TradeDocGenerateResult(tradeContractGroup.trade)
{
ErrorMessage = "缺少现金交割记录"
});
}
//插件版本
else if (generatorV2 != null)
{
var result = GenerateSingleV2(generatorV2, tradeContractGroup, docType);
resultList.Add(result);
}
else
{
var result = GenerateSingleV1(tradeContractGroup, docType);
resultList.Add(result);
//if (!string.IsNullOrWhiteSpace(result.OutputFilePath))
//{
// tradeContractGroup.trade.HasGeneratedConfirmBook = 1;
// var childTds = childs.Where(x => x.ParentTradeId == tradeContractGroup.trade.id);
// foreach (var child in childTds)
// {
// child.HasGeneratedConfirmBook = 1;
// }
//}
}
}
}
if (generatorV2 == null)
{
DbContext.SaveChanges();
@@ -205,14 +215,21 @@ namespace YLErp.Modules.TradeModule.DocGenerateModule
/// <summary>
///
/// </summary>
private TradeDocGenerateResult GenerateSingleV2(ITradeConfirmationGenerator generator, trade_contract_group tradeContractGroup, string docType = "DOCX")
private TradeDocGenerateResult GenerateSingleV2(ITradeConfirmationGenerator generator, trade_contract_group tradeContractGroup, string docType = "DOCX", List<trade> allTrades = null)
{
try
{
//修改调用的构造方法
List<trade> trades = new List<trade>() { tradeContractGroup.trade };
List<trade> trades = new List<trade>();
if (allTrades != null && allTrades.Count() > 0)
{
trades = allTrades;
}else
{
trades = new List<trade>() { tradeContractGroup.trade };
}
List<int> ids = new List<int>();
if (tradeContractGroup.trade != null && tradeContractGroup.trade.trade_cash != null)
if (tradeContractGroup != null && tradeContractGroup.trade != null && tradeContractGroup.trade.trade_cash != null)
{
ids.Add(tradeContractGroup.trade.trade_cash.id);
}
@@ -759,27 +776,26 @@ namespace YLErp.Modules.TradeModule.DocGenerateModule
}
}
public (bool, string, DateTime, string) UploadContractFileNew(string encryptId, UploadFileModel uploadFileModel)
public (bool, string, DateTime, string) UploadContractFileNew(string contractCode, UploadFileModel uploadFileModel)
{
try
{
var msg = "";
#region
if (string.IsNullOrWhiteSpace(encryptId))
if (string.IsNullOrWhiteSpace(contractCode))
{
return (false, "请传入id", DateTime.Now, "");
return (false, "请传入参数", DateTime.Now, "");
}
var intid = DataProtectHelper.DecryptInt(encryptId);
var db = DbContextFactory.GetYLDbContext();
var contractDoc = db.trade_contract_document.Find(intid);
var contractDoc = db.trade_contract_document.FirstOrDefault(d => d.Code == contractCode );
var contractDocRArr = db.trade_contract_r.Where(O => O.ContractCode == contractDoc.Code && O.Type == contractDoc.Type && O.IsValid).ToArray();
var contractDocR = contractDocRArr.FirstOrDefault();
if (contractDoc == null || contractDocR == null)
var contractDocRF = contractDocRArr.FirstOrDefault();
if (contractDoc == null || contractDocRF == null)
{
return (false, "没有相关的确认书文档", DateTime.Now, "");
}
@@ -806,9 +822,9 @@ namespace YLErp.Modules.TradeModule.DocGenerateModule
#endregion
var tradeNumber = "未知";
if (contractDocR != null)
if (contractDocRF != null)
{
tradeNumber = contractDocR.TradeNumber;
tradeNumber = contractDocRF.TradeNumber;
}
var filePath = Path.Combine(OtcAppContext.AppDocsPath, "contractdoc", "output");
@@ -841,8 +857,12 @@ namespace YLErp.Modules.TradeModule.DocGenerateModule
}
#region
var confrimService = new TradeConfirmService(OptUser, db);
foreach (var contractDocR in contractDocRArr)
{
new TradeConfirmService(OptUser, db).EditReportStatus(contractDocR.TradeId, true);
}
new TradeConfirmService(OptUser, db).EditReportStatus(contractDocR.TradeId, true);
db.SaveChanges();
#endregion