From 7a90a55fdef4cd7b30311dd1c632bb7e9f998e31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=94=A6=E9=BA=9F=20=E7=8E=8B?= Date: Fri, 22 May 2026 14:42:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BA=A4=E6=98=93=E7=A1=AE?= =?UTF-8?q?=E8=AE=A4=E4=B9=A6=E7=94=9F=E6=88=90=E9=80=BB=E8=BE=91=EF=BC=8C?= =?UTF-8?q?=E8=BF=87=E6=BB=A4=E5=BE=85=E7=A1=AE=E8=AE=A4=E5=92=8C=E5=AE=A1?= =?UTF-8?q?=E6=89=B9=E4=B8=AD=E7=9A=84=E4=BA=A4=E6=98=93=E7=8A=B6=E6=80=81?= =?UTF-8?q?=EF=BC=8C=E8=B0=83=E6=95=B4=E4=BA=A4=E6=98=93=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E4=B8=8B=E6=8B=89=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TradeContractGenerateService.cs | 23 +++++++++++++++++-- YLErpWeb/Views/TradeConfirmBook/Index.cshtml | 4 ++-- .../Views/TradeConfirmBookOption/Index.cshtml | 4 ++-- .../Scripts/app/trade/tradeConfirmBook.js | 4 +++- 4 files changed, 28 insertions(+), 7 deletions(-) diff --git a/YLErpDAL/Modules/TradeModule/DealModule/TradeContractGenerateService.cs b/YLErpDAL/Modules/TradeModule/DealModule/TradeContractGenerateService.cs index 82428458..877ef0c3 100644 --- a/YLErpDAL/Modules/TradeModule/DealModule/TradeContractGenerateService.cs +++ b/YLErpDAL/Modules/TradeModule/DealModule/TradeContractGenerateService.cs @@ -217,7 +217,7 @@ namespace YLErp.Modules.TradeModule.DealModule var trades = DbContext.trade.Where(x => tradeIds.Contains(x.id)).AsNoTracking().ToList(); logger.Info($"[GJGenerateConfirmBook] 查询到交易记录数: {trades.Count}"); - + if (!trades.Any()) { logger.Info("[GJGenerateConfirmBook] 未找到交易记录,直接返回"); @@ -225,7 +225,26 @@ namespace YLErp.Modules.TradeModule.DealModule files = new List(); return true; } - + + // 过滤掉待确认和审批中的交易,这些状态不允许生成确认书 + var invalidStatusList = new List { ConsTrade.新增待确认, ConsTrade.修改待确认, ConsTrade.审批中 }; + var invalidTrades = trades.Where(t => invalidStatusList.Contains(t.TradeStatus)).ToList(); + if (invalidTrades.Any()) + { + error.AddRange(invalidTrades.Select(t => $"交易 {t.TradeNumber} 状态为【{t.TradeStatus}】,不能生成确认书")); + tradeIds = tradeIds.Where(id => !invalidTrades.Any(t => t.id == id)).ToList(); + trades = trades.Where(t => !invalidTrades.Any(it => it.id == t.id)).ToList(); + logger.Info($"[GJGenerateConfirmBook] 过滤掉 {invalidTrades.Count} 笔待确认/审批中交易"); + } + + if (!trades.Any()) + { + logger.Info("[GJGenerateConfirmBook] 过滤后无有效交易可生成确认书"); + errors = error; + files = new List(); + return false; + } + var clientIds = trades.Select(x => x.ClientId).Distinct().ToList(); logger.Info($"[GJGenerateConfirmBook] 客户ID数: {clientIds.Count}"); diff --git a/YLErpWeb/Views/TradeConfirmBook/Index.cshtml b/YLErpWeb/Views/TradeConfirmBook/Index.cshtml index 5c9d099a..8c5a0b65 100644 --- a/YLErpWeb/Views/TradeConfirmBook/Index.cshtml +++ b/YLErpWeb/Views/TradeConfirmBook/Index.cshtml @@ -16,7 +16,7 @@ SettleDocModeMultiple = valuedate.SettleDocModeMultiple.Equals(valuedateBLL.SystemDate.SettleDocMode), BrokerMode = YLErp.PS.Config.ComponentVersion == YLErp.Configuration.ComponentVersion.Broker, MarketMaker = YLErp.PS.Config.ComponentVersion == YLErp.Configuration.ComponentVersion.MarketMaker, - reqTradeStatus = $"{ConsTrade.确认成交},{ConsTrade.已到期},{ConsTrade.已平仓},{ConsTrade.已执行}", + reqTradeStatus = $"{ConsTrade.新增待确认},{ConsTrade.修改待确认},{ConsTrade.审批中},{ConsTrade.确认成交},{ConsTrade.已到期},{ConsTrade.已平仓},{ConsTrade.已执行}", SelectConfirmationBookTemplate = GlobalConfig.SelectConfirmationBookTemplate == true, templateNames = ViewBag.TemplateNames, //初始化时使用空页面(清楚预置查询条件及初始不加载数据) @@ -68,7 +68,7 @@ @Html.MyAceDropdownInput2("BuySell", "交易方向", GlobalData.GetSelectItems(new List { "买入", "卖出" })) @Html.SearchDateRange("ExerciseDate", "到期日期") @Html.SearchDateRange("TradeDate", "交易日期") - @Html.MyAceDropdownInput("TradeStatus", "交易状态", GlobalData.TradeStatusAfterConfirm(), true) + @Html.MyAceDropdownInput("TradeStatus", "交易状态", GlobalData.GetSelectItems(new List { ConsTrade.新增待确认, ConsTrade.修改待确认, ConsTrade.审批中, ConsTrade.确认成交, ConsTrade.已到期, ConsTrade.已执行, ConsTrade.已平仓 }), true) @if (pageObj.IsAutoSealAndUploadFiles){ @Html.MyAceDropdownInput("SealResults", "用印结果", GlobalData.GetSealResultItems()) diff --git a/YLErpWeb/Views/TradeConfirmBookOption/Index.cshtml b/YLErpWeb/Views/TradeConfirmBookOption/Index.cshtml index 8d27bc0f..8858017f 100644 --- a/YLErpWeb/Views/TradeConfirmBookOption/Index.cshtml +++ b/YLErpWeb/Views/TradeConfirmBookOption/Index.cshtml @@ -16,7 +16,7 @@ SettleDocModeMultiple = valuedate.SettleDocModeMultiple.Equals(valuedateBLL.SystemDate.SettleDocMode), BrokerMode = YLErp.PS.Config.ComponentVersion == YLErp.Configuration.ComponentVersion.Broker, MarketMaker = YLErp.PS.Config.ComponentVersion == YLErp.Configuration.ComponentVersion.MarketMaker, - reqTradeStatus = $"{ConsTrade.确认成交},{ConsTrade.已到期},{ConsTrade.已平仓},{ConsTrade.已执行}", + reqTradeStatus = $"{ConsTrade.新增待确认},{ConsTrade.修改待确认},{ConsTrade.审批中},{ConsTrade.确认成交},{ConsTrade.已到期},{ConsTrade.已平仓},{ConsTrade.已执行}", SelectConfirmationBookTemplate = GlobalConfig.SelectConfirmationBookTemplate == true, templateNames = ViewBag.TemplateNames, //初始化时使用空页面(清楚预置查询条件及初始不加载数据) @@ -71,7 +71,7 @@ @Html.MyAceDropdownInput2("BuySell", "交易方向", GlobalData.GetSelectItems(new List { "买入", "卖出" })) @Html.SearchDateRange("ExerciseDate", "到期日期") @Html.SearchDateRange("TradeDate", "交易日期") - @Html.MyAceDropdownInput("TradeStatus", "交易状态", GlobalData.TradeStatusAfterConfirm(), true) + @Html.MyAceDropdownInput("TradeStatus", "交易状态", GlobalData.GetSelectItems(new List { ConsTrade.新增待确认, ConsTrade.修改待确认, ConsTrade.审批中, ConsTrade.确认成交, ConsTrade.已到期, ConsTrade.已执行, ConsTrade.已平仓 }), true) @if (pageObj.IsAutoSealAndUploadFiles){ @Html.MyAceDropdownInput("SealResults", "用印结果", GlobalData.GetSealResultItems()) diff --git a/YLErpWeb/wwwroot/Scripts/app/trade/tradeConfirmBook.js b/YLErpWeb/wwwroot/Scripts/app/trade/tradeConfirmBook.js index 0147abc8..38e25299 100644 --- a/YLErpWeb/wwwroot/Scripts/app/trade/tradeConfirmBook.js +++ b/YLErpWeb/wwwroot/Scripts/app/trade/tradeConfirmBook.js @@ -925,7 +925,9 @@ function showToolName(cellValue, options, rowObject) { var html = showDownload(cellValue, options, rowObject); var title = page.IsAutoSealAndUploadFiles && page.IsAutoSealAfterGeneratedBook ? "生成并用印" : "生成确认书"; - var canGenerate = page.canGenerate == true ? "" : "disabled"; + // 待确认和审批中的交易不允许生成确认书 + var isUnconfirmed = rowObject.TradeStatus === "新增待确认" || rowObject.TradeStatus === "修改待确认" || rowObject.TradeStatus === "审批中"; + var canGenerate = page.canGenerate == true && !isUnconfirmed ? "" : "disabled"; var isWait = (rowObject.MetaDic.SealResult == "用印等待中"); html += "".template(rowObject.id, rowObject.MetaDic.HasGeneratedConfirmBook == "True", title, isWait, canGenerate); if (rowObject.MetaDic.ContractDocUrl && page.canSendEmail == true) {