新增业务打印绑定功能,整合打印模板与业务数据的映射配置,优化打印数据生成逻辑。新增免密接口,支持桌面端打印模板的查询与列表展示,提升用户体验和系统的实时数据同步能力。同时,重构相关控制器以增强系统的可维护性和扩展性。

This commit is contained in:
geht
2026-05-14 10:43:51 +08:00
parent 642cecb04d
commit 8bcc34aee0
649 changed files with 18804 additions and 70 deletions

View File

@@ -237,6 +237,39 @@ public class RawMaterialEntryService : IRawMaterialEntryService, ISingletonDepen
return null;
}
public async Task<(string templateJson, string printDataJson, string? errorMessage)> PrepareNativePrintAsync(string id, CancellationToken ct = default)
{
if (!_networkMonitor.IsOnline)
return (string.Empty, "{}", "当前离线,无法获取打印数据");
try
{
var url = $"{BaseUrl}/xslmes/mesXslRawMaterialEntry/anon/prepareNativePrint?id={Uri.EscapeDataString(id)}&tenantId={DefaultTenantId}";
using var client = CreateClient();
var resp = await client.GetAsync(url, ct).ConfigureAwait(false);
var json = await resp.Content.ReadAsStringAsync(ct).ConfigureAwait(false);
using var doc = JsonDocument.Parse(json);
var root = doc.RootElement;
if (!root.TryGetProperty("code", out var codeEl) || codeEl.GetInt32() != 200)
{
var msg = root.TryGetProperty("message", out var msgEl) ? msgEl.GetString() : "未知错误";
return (string.Empty, "{}", msg ?? "服务端返回错误");
}
var result = root.GetProperty("result");
var templateJson = result.TryGetProperty("templateJson", out var tjEl) ? tjEl.GetString() : null;
var printDataJson = result.TryGetProperty("printData", out var pdEl)
? pdEl.GetRawText()
: "{}";
if (string.IsNullOrWhiteSpace(templateJson))
return (string.Empty, "{}", "服务端未返回模板 JSON请先在「业务打印绑定」中配置原料入场记录");
return (templateJson!, printDataJson, null);
}
catch (Exception ex)
{
_logger.Warning($"[原料入场] 准备打印数据失败 id={id}: {ex.Message}");
return (string.Empty, "{}", $"获取打印数据失败:{ex.Message}");
}
}
public IReadOnlyList<MesXslRawMaterialEntry> GetCachedSnapshot()
{
// 注意:不允许直接返回 _localCache 引用,避免外部修改污染缓存;用 Clone 做深拷贝。