diff --git a/YLErpDAL/Modules/TradeModule/DealModule/TradeContractGenerateService.cs b/YLErpDAL/Modules/TradeModule/DealModule/TradeContractGenerateService.cs index 0393f7f0..78853bc3 100644 --- a/YLErpDAL/Modules/TradeModule/DealModule/TradeContractGenerateService.cs +++ b/YLErpDAL/Modules/TradeModule/DealModule/TradeContractGenerateService.cs @@ -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(); diff --git a/YLErpDAL/Modules/TradeModule/DocGenerateModule/BatchConfirmationGenerateService.cs b/YLErpDAL/Modules/TradeModule/DocGenerateModule/BatchConfirmationGenerateService.cs index 4a6b7b47..38a43d8d 100644 --- a/YLErpDAL/Modules/TradeModule/DocGenerateModule/BatchConfirmationGenerateService.cs +++ b/YLErpDAL/Modules/TradeModule/DocGenerateModule/BatchConfirmationGenerateService.cs @@ -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 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(); - 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( diff --git a/YLErpWeb/appsettings.local.json b/YLErpWeb/appsettings.local.json index 582e49f7..4463f59d 100644 --- a/YLErpWeb/appsettings.local.json +++ b/YLErpWeb/appsettings.local.json @@ -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": "", diff --git a/YLErpWeb/wwwroot/Scripts/app/trade/tradeConfirmBookListByClient.js b/YLErpWeb/wwwroot/Scripts/app/trade/tradeConfirmBookListByClient.js index 24267cda..ae3018bb 100644 --- a/YLErpWeb/wwwroot/Scripts/app/trade/tradeConfirmBookListByClient.js +++ b/YLErpWeb/wwwroot/Scripts/app/trade/tradeConfirmBookListByClient.js @@ -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();