!15 互换观察日修复

Merge pull request !15 from glms/feature/1.4.2
This commit is contained in:
尹峰
2026-05-22 10:17:48 +00:00
committed by Gitee
6 changed files with 32 additions and 11 deletions
@@ -345,7 +345,7 @@ namespace YLErp.Plugins.GuoLian.DocumentGenerator
dic["利差"] = ((double)interestMargin.InterestRateDefault * 10000).ToString("N0");
dic["重置频率"] = (interestMargin.interest_rest_days ?? 0) + "天";
}
if (interestMargin.SwapIntervalList.Count()>0)
if (interestMargin.SwapIntervalList.Count()>1)
{
var firstInterval = interestMargin.SwapIntervalList.OrderBy(o=>o.Date).First();
var lastInterval = interestMargin.SwapIntervalList.OrderBy(o => o.Date).Last();
@@ -27,8 +27,8 @@ namespace YLErp.CustomizedBizLogic
return DateTime.Now.ToString("yyyyMMddHHmmssfff");
}
// 国联格式:GL-{yyyyMMdd}-{4位序号}
var leftPart = $"GL-{reqModel.trade.TradeDate:yyyyMMdd}-";
// 国联格式:GLMS-{yyyyMMdd}-{4位序号}
var leftPart = $"GLMS-{reqModel.trade.TradeDate:yyyyMMdd}-";
var fullSize = leftPart.Length + 4;
// 获取数据库该用户最大的交易编号记录
@@ -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<string>();
return true;
}
// 过滤掉待确认和审批中的交易,这些状态不允许生成确认书
var invalidStatusList = new List<string> { 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<string>();
return false;
}
var clientIds = trades.Select(x => x.ClientId).Distinct().ToList();
logger.Info($"[GJGenerateConfirmBook] 客户ID数: {clientIds.Count}");
+2 -2
View File
@@ -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<string> { "买入", "卖出" }))
@Html.SearchDateRange("ExerciseDate", "到期日期")
@Html.SearchDateRange("TradeDate", "交易日期")
@Html.MyAceDropdownInput("TradeStatus", "交易状态", GlobalData.TradeStatusAfterConfirm(), true)
@Html.MyAceDropdownInput("TradeStatus", "交易状态", GlobalData.GetSelectItems(new List<string> { ConsTrade.新增待确认, ConsTrade.修改待确认, ConsTrade.审批中, ConsTrade.确认成交, ConsTrade.已到期, ConsTrade.已执行, ConsTrade.已平仓 }), true)
@if (pageObj.IsAutoSealAndUploadFiles){
@Html.MyAceDropdownInput("SealResults", "用印结果", GlobalData.GetSealResultItems())
@@ -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<string> { "买入", "卖出" }))
@Html.SearchDateRange("ExerciseDate", "到期日期")
@Html.SearchDateRange("TradeDate", "交易日期")
@Html.MyAceDropdownInput("TradeStatus", "交易状态", GlobalData.TradeStatusAfterConfirm(), true)
@Html.MyAceDropdownInput("TradeStatus", "交易状态", GlobalData.GetSelectItems(new List<string> { ConsTrade.新增待确认, ConsTrade.修改待确认, ConsTrade.审批中, ConsTrade.确认成交, ConsTrade.已到期, ConsTrade.已执行, ConsTrade.已平仓 }), true)
@if (pageObj.IsAutoSealAndUploadFiles){
@Html.MyAceDropdownInput("SealResults", "用印结果", GlobalData.GetSealResultItems())
@@ -446,7 +446,7 @@ const colModelGrid = (new function () {
function __initJqGrid() {
var PostData = {
TradeStatus: "",
TradeStatus: page.reqTradeStatus,
ValidState: $("#ValidState").val(),
TradeDateStart: $("#DateFromTradeDate").val(),
TradeDateEnd: $("#DateToTradeDate").val()
@@ -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 += "<input type=\"button\" class='wentiEdit' title='{2}' onclick=\"gJGenerateConfirmBook({0},{3},{1})\" value='{2}' {4}/>".template(rowObject.id, rowObject.MetaDic.HasGeneratedConfirmBook == "True", title, isWait, canGenerate);
if (rowObject.MetaDic.ContractDocUrl && page.canSendEmail == true) {