优化打印预览窗口的参数生成逻辑,支持根据合并字段顺序生成相应的 JSON 数据,增强打印模板的灵活性和可定制性。同时,修复了列级合并逻辑,确保在处理重复键时不会抛出异常。
This commit is contained in:
@@ -1017,14 +1017,18 @@ public static class NativePrintRenderService
|
||||
var colList = columns.OfType<JsonObject>().ToList();
|
||||
if (mergeColumnKeys.Length > 0)
|
||||
{
|
||||
var byKey = colList.ToDictionary(
|
||||
c => ReadAsString(c["key"]) ?? string.Empty,
|
||||
c => ReadAsString(c["bindField"]) ?? ReadAsString(c["field"]) ?? string.Empty);
|
||||
// 用 GroupBy 兜底,避免重复 key 抛异常;按 mergeColumnKeys 给定顺序输出对应 bindField/field
|
||||
var byKey = colList
|
||||
.GroupBy(c => ReadAsString(c["key"]) ?? string.Empty)
|
||||
.ToDictionary(
|
||||
g => g.Key,
|
||||
g => ReadAsString(g.First()["bindField"]) ?? ReadAsString(g.First()["field"]) ?? string.Empty);
|
||||
return mergeColumnKeys
|
||||
.Select(k => byKey.TryGetValue(k, out var f) ? f : string.Empty)
|
||||
.Where(f => !string.IsNullOrEmpty(f))
|
||||
.ToList();
|
||||
}
|
||||
// 兼容老的列级 mergeByValue 开关
|
||||
return colList
|
||||
.Where(c => string.Equals(ReadAsString(c["mergeByValue"]), "true", StringComparison.OrdinalIgnoreCase))
|
||||
.Select(c => ReadAsString(c["bindField"]) ?? ReadAsString(c["field"]) ?? string.Empty)
|
||||
|
||||
Reference in New Issue
Block a user