交易确认书生成修复
This commit is contained in:
@@ -213,41 +213,35 @@ namespace YLErp.Modules.TradeModule.DealModule
|
||||
if (PS.Config.Company == CompanyEnum.浙商)
|
||||
{
|
||||
LogFactory.GetLogger("生成确认书").Error("浙商生成确认书");
|
||||
var TradeQuery = new TradeDalService(this).GetTradeOrEodTradeOfTidASid(tradeIds, SystemValueDate).Where(c => (c.TradeType != "结构化交易" || c.IsGroup == 1) && tradeIds.Contains(c.id));
|
||||
if (TradeQuery.Any())
|
||||
var trades = DbContext.trade.Where(x=>tradeIds.Contains(x.id)).AsNoTracking().ToList();
|
||||
var clientIds= trades.Select(x=>x.ClientId).Distinct().ToList();
|
||||
var allTrades= DbContext.trade.Where(x => clientIds.Contains(x.ClientId)&&x.ValidState!=ConsGlobal.InValid);
|
||||
if (startDate.HasValue)
|
||||
{
|
||||
var Ids = TradeQuery.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();
|
||||
foreach (var item in TradeQuery)
|
||||
{
|
||||
item.swap_positions.Add(swapPositions.FirstOrDefault(o => o.SwapTradeId == item.id));
|
||||
}
|
||||
// 按照客户ID、交易日期、多空头进行分组
|
||||
var group = TradeQuery.GroupBy(O => new { O.ClientId, O.TradeDate, O.swap_positions.FirstOrDefault().PositionType})
|
||||
.ToDictionary(K => K.Key, V => V.Select(O => O.id).ToList());
|
||||
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();
|
||||
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();
|
||||
// 按照客户ID、交易日期、多空头进行分组
|
||||
var group = allTradeList.GroupBy(O => new { O.ClientId, O.TradeDate, O.swap_positions.FirstOrDefault().PositionType })
|
||||
.ToDictionary(K => K.Key, V => V.Select(O => O.id).ToList());
|
||||
|
||||
foreach (var item in group)
|
||||
{
|
||||
// 如果是结构化交易或特殊交易类型需要额外处理,这里简化处理
|
||||
var query = from t in DbContext.trade
|
||||
join tc in DbContext.trade_cash on t.id equals tc.TradeId
|
||||
where item.Value.Contains(tc.TradeId) && !tc.IsDeleted
|
||||
select new { t.id };
|
||||
|
||||
if (query.Any())
|
||||
{
|
||||
// 使用现有的 groupGenerateHandle 方法来处理每组交易
|
||||
|
||||
groupGenerateHandle(query.Select(l => l.id).Distinct().ToList(), docType, startDate, endDate, results, error, file);
|
||||
}
|
||||
}
|
||||
foreach (var item in group)
|
||||
{
|
||||
LogFactory.GetLogger("生成确认书").Error("浙商生成确认书" + item.Value.Distinct().ToList().Count());
|
||||
groupGenerateHandle(item.Value.Distinct().ToList(), docType, startDate, endDate, results, error, file);
|
||||
}
|
||||
}
|
||||
if (results.Count == 0)
|
||||
{
|
||||
LogFactory.GetLogger("生成确认书").Error("浙商生成确认书" + tradeIds.Count());
|
||||
results = new ConfirmationGenerateService(this).Generate(tradeIds, docType);
|
||||
}
|
||||
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();
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
"AppSettings": {
|
||||
"VirtualPathRoot": "",
|
||||
"UseRightAligned": "",
|
||||
"PluginFolder": "D:\\Code\\ZS_GitlabYilianCode\\Plugins\\build\\ZheShang\\Debug\\net6.0"
|
||||
"PluginFolder": "D:\\gitCode\\zszq-trs\\Plugins\\build\\ZheShang\\Debug\\net6.0"
|
||||
},
|
||||
"LibreOffice": {
|
||||
"ExePath": "",
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
// tradeConfirmBookListByClient.js
|
||||
var valuedate = page.valuedate;
|
||||
const colModelGrid = (new function () {
|
||||
// 定义列模型
|
||||
this.colModels = [
|
||||
@@ -134,7 +135,7 @@ const colModelGrid = (new function () {
|
||||
}());
|
||||
$(function () {
|
||||
// 初始化jqGrid
|
||||
initJqGrid();
|
||||
|
||||
|
||||
$("#DateFromOpenDate").datepicker({
|
||||
changeMonth: true, changeYear: true, showButtonPanel: true, showOtherMonths: true, selectOtherMonths: true,
|
||||
@@ -148,10 +149,12 @@ $(function () {
|
||||
setValidation("DateFromOpenDate", selectedDate, true);
|
||||
}
|
||||
});
|
||||
|
||||
$("#DateToOpenDate").val(valuedate);
|
||||
$("#DateFromOpenDate").val(valuedate);
|
||||
// 其他按钮事件绑定 (如果添加了批量操作按钮)
|
||||
// $("#batchDownloadBtn").click(BatchDownLoadDoc);
|
||||
// $("#batchSendMailBtn").click(BatchSendMail);
|
||||
initJqGrid();
|
||||
SendEmailHub()
|
||||
});
|
||||
|
||||
@@ -381,7 +384,7 @@ function gJGenerateConfirmBook(ids, isWait, hasGeneratedConfirmBook) {
|
||||
});
|
||||
}
|
||||
}
|
||||
var confirmBookPostData = { tradeIds: tradeIds, docType: docType, startDate: $("#DateFromTradeDate").val(), endDate: $("#DateToTradeDate").val() };
|
||||
var confirmBookPostData = { tradeIds: tradeIds, docType: docType, startDate: $("#DateFromOpenDate").val(), endDate: $("#DateToOpenDate").val() };
|
||||
|
||||
//if (page.IsAutoSealAndUploadFiles) {
|
||||
// confirmBookPostData.SealResults = $("#SealResults").val();
|
||||
@@ -467,8 +470,8 @@ function BatchCreateContracts() {
|
||||
|
||||
//批量下载交易确认书
|
||||
function BatchDownLoadDoc() {
|
||||
var startDate = $("#DateFromTradeDate").val();
|
||||
var endDate = $("#DateToTradeDate").val();
|
||||
var startDate = $("#DateFromOpenDate").val();
|
||||
var endDate = $("#DateToOpenDate").val();
|
||||
var clientIds = $("#ClientId").val();
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user