交易确认书生成修复

This commit is contained in:
吴方海
2025-04-28 11:07:31 +08:00
parent a9aec6d0d5
commit 295f67a5ca
4 changed files with 39 additions and 119 deletions
@@ -49,6 +49,7 @@ namespace YLErp.Modules.TradeModule.DocGenerateModule
statusList.Add(ConsTrade.);
statusList.Add(ConsTrade.);
statusList.Add(ConsTrade.);
statusList.Add(ConsTrade.);
}
var service = new TradeDalService(this);
//var tradeQuery = service
@@ -68,93 +69,17 @@ namespace YLErp.Modules.TradeModule.DocGenerateModule
//----------------------------------
// 交易现金交割记录
//----------------------------------
var allTrades = service.GetTradeOrEodTradeOfTidASid(tradeIds, SystemValueDate);
//只选中一笔子交易,按一笔子交易生成确认书
if (PS.Config.Is润和)
List<trade> allTrades = DbContext.trade.Where(x => tradeIds.Contains(x.id)).ToList();
if (allTrades.Count < 1)
{
allTrades.RemoveAll(x => x.ParentTradeId != 0 && !tradeIds.Contains(x.id));
throw new ServiceException("没有已确认的记录信息!");
}
//收益互换剔除子交易
if (allTrades.Any(t => t.TradeType == "收益互换"))
{
allTrades.RemoveAll(t => t.TradeType == "收益互换" && t.ParentTradeId != 0 && !tradeIds.Contains(t.id));
}
//处理黑盒分组
var ids = allTrades.Where(x => x.IsGroup == 1 && x.TradeType != "收益互换").Select(x => x.id);
var BackTradelist = new TradeDalService(this).GetTradeOrEodTradeOfTidAPid(ids, SystemValueDate, false, false).Where(c => c.TradeType != "结构化交易");
allTrades.AddRange(BackTradelist);
if (PS.Config.Is国泰君安)//历史数据的雪球都只有看跌会选择错模板
{
var snowids = allTrades.Where(x => x.TradeType == "雪球期权").Select(x => x.id);
var tradeoptype = DbContext.trade.Where(x => snowids.Contains(x.id) && x.TradeType == "雪球期权").Select(x => new { x.id, x.OptionType }).ToList();
allTrades.ForEach(x =>
{
if (x.TradeType == "雪球期权")
{
x.OptionType = tradeoptype.Where(o => o.id == x.id).FirstOrDefault().OptionType;
}
});
}
var tradeDic = allTrades.Where(O =>
statusList.Contains(O.TradeStatus)
&& O.ClientId != 0
&& O.ParentTradeId == 0)
.ToDictionary(n => n.id, n => new trade_contract_group { trade = n });
tradeIds = allTrades.Select(O => O.id);
var cashQuery = from tradeCash in DbContext.trade_cash
where tradeIds.Contains(tradeCash.TradeId) && tradeCash.ValidState != ConsGlobal.InValid && !tradeCash.IsDeleted
&& tradeCash.Action == ClientCashInCashOut._期权费
select tradeCash;
var cashDatas = cashQuery.ToDictionary(K => K.TradeId, V => V);
if (tradeDic.Count < 1 || cashDatas.Count < 1)
{
throw new ServiceException("没有已确认的记录信息!");
}
trade_cash cash = null;
foreach (var item in tradeDic.Values)
{
if (item.trade.TradeType == "结构化交易")
{
//item.trade.SubTrades = DbContext.trade.Where(O => O.ParentTradeId == item.trade.id).ToList();
item.trade.SubTrades = allTrades.Where(O => O.ParentTradeId == item.trade.id).ToList();
var cashTig = new List<string>();
foreach (var t in item.trade.SubTrades)
{
if (cashDatas.TryGetValue(t.id, out cash))
{
t.trade_cash = cash;
}
else
{
throw new Exception("子交易未确认成交");
}
}
if (cashDatas.TryGetValue(item.trade.id, out cash))
{
item.trade_cash = cash;
item.trade.trade_cash = cash;
}
}
else
{
if (item.trade.TradeType == "累计期权")
{
new OptionTradeActionRestoreService(this).RestoreTradeDataToSpecialDay(item.trade, item.trade.TradeDate.Value);
}
if (cashDatas.TryGetValue(item.trade.id, out cash))
{
item.trade_cash = cash;
item.trade.trade_cash = cash;
}
}
}
//----------------------------------
// 生成交易确认书
@@ -165,8 +90,6 @@ namespace YLErp.Modules.TradeModule.DocGenerateModule
AppManager.TryResolve(out ITradeConfirmationGenerator generatorV2);
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, ValueDate);
if (generatorV2 != null)
{
var result = GenerateSingleV2(