using YY.Admin.Core.Entity; namespace YY.Admin.Core.Services; public record RawMaterialCardPageResult(List Records, long Total, int Current, int Size); public interface IRawMaterialCardService { Task PageAsync(int pageNo, int pageSize, string? barcode = null, string? batchNo = null, string? materialName = null, string? supplierName = null, string? status = null, CancellationToken ct = default); Task GetByIdAsync(string id, CancellationToken ct = default); Task AddAsync(MesXslRawMaterialCard card, CancellationToken ct = default); Task EditAsync(MesXslRawMaterialCard card, CancellationToken ct = default); Task DeleteAsync(string id, CancellationToken ct = default); Task DeleteBatchAsync(string ids, CancellationToken ct = default); Task UpdatePriorityAsync(string id, string priorityPickup, CancellationToken ct = default); /// /// 按拆码明细 ID 列表批量删除原材料卡片。 /// /// 拆码明细行的 GUID 集合(自动 distinct,空跳过) /// 为 true 时仅返回匹配数量、不真正删除(用于「重新拆码」弹窗预提示) /// 匹配/删除的卡片数量;失败返回 -1 Task DeleteBySplitDetailIdsAsync(IEnumerable splitDetailIds, bool dryRun = false, CancellationToken ct = default); /// /// 按业务打印绑定生成模板 JSON + 映射后 printData,供桌面端打印预览使用。 /// /// (templateJson, printDataJson, errorMessage) 元组;errorMessage 非 null 时表示失败 Task<(string templateJson, string printDataJson, string? errorMessage)> PrepareNativePrintAsync(string id, CancellationToken ct = default); }