Skip to content

Commit 247fe07

Browse files
pythonHuangclaude
andcommitted
fix: 报表占位符用数据集名称引用不生效-数据集索引同时按id和名称注册+占位符查找按名称忽略大小写兜底(修表头行${数据集.字段}空白/数据行扩展全空白)
Co-Authored-By: Claude Code <noreply@anthropic.com>
1 parent 01ba95c commit 247fe07

1 file changed

Lines changed: 14 additions & 2 deletions

File tree

‎Juggle.Application/Services/Impl/ReportExecutionService.cs‎

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,14 @@ JsonValueKind.String when long.TryParse(dsi.GetString(), out var v) => v,
115115
: 0;
116116

117117
var dt = await ResolveSource(sourceType, sourceRef, customSql, dataSourceId, queryParams);
118-
if (dt != null) datasets[id] = dt;
118+
if (dt != null)
119+
{
120+
datasets[id] = dt;
121+
// 占位符通常用数据集名称引用(如 ${订单.字段}),按名称再注册一份索引
122+
var name = ds.TryGetProperty("name", out var nEl) ? nEl.GetString() ?? "" : "";
123+
if (!string.IsNullOrEmpty(name) && !datasets.ContainsKey(name))
124+
datasets[name] = dt;
125+
}
119126
}
120127
}
121128
return datasets;
@@ -271,7 +278,12 @@ private static string ResolvePlaceholder(string body, MaterializedRow rr, Dictio
271278
var dt = rr.Dataset;
272279
if (dsName != null)
273280
{
274-
if (!datasets.TryGetValue(dsName, out dt) || dt == null) return "";
281+
if (!datasets.TryGetValue(dsName, out dt) || dt == null)
282+
{
283+
// 兼容数据集名称的大小写/命名差异,按名称忽略大小写再匹配一次
284+
dt = datasets.FirstOrDefault(kv => string.Equals(kv.Key, dsName, StringComparison.OrdinalIgnoreCase)).Value;
285+
if (dt == null) return "";
286+
}
275287
}
276288
if (dt == null || !dt.Columns.Contains(field)) return "";
277289

0 commit comments

Comments
 (0)