using Admin.NET.Plugin.AiDOP.Infrastructure;
using Microsoft.Extensions.Logging;
namespace Admin.NET.Plugin.AiDOP.WorkOrder;
///
/// 批量采购确认服务 — 列出初始(p)状态工单中未匹配到供应商的物料明细,
/// 确认后把(物料 → 采购员 → 供应商)关系写入货源清单基础数据 srm_purchase。
/// 路由前缀:/api/WorkOrder/purchase-confirm/...
///
/// 【未匹配口径】物料号在 srm_purchase 中不存在「未删除且有供应商编码」的记录。
/// 【写入约定】供应商编码/ID 从 SuppMaster 按名称回填(查不到编码为空);
/// 物料 ID/工厂/公司从 ItemMaster 回填;同一(物料号+供应商)已存在则更新,否则新增。
///
/// 【租户安全边界】需认证访问;租户一律经
/// AidopTenantScope.ResolveOrThrow 从认证后 JWT 解析。
///
[ApiDescriptionSettings(Order = 259, Description = "批量采购确认")]
[Route("api/WorkOrder")]
[NonUnify]
public class WorkOrderPurchaseConfirmService : IDynamicApiController, ITransient
{
private readonly ISqlSugarClient _db;
private readonly UserManager _userManager;
private readonly ILogger _logger;
public WorkOrderPurchaseConfirmService(
ISqlSugarClient db,
UserManager userManager,
ILogger logger)
{
_db = db;
_userManager = userManager;
_logger = logger;
}
private long ResolveTenantId() => AidopTenantScope.ResolveOrThrow(_userManager);
// ══════════════════════════════════════════════════════════════
// GET /api/WorkOrder/purchase-confirm/unmatched-list
// ══════════════════════════════════════════════════════════════
///
/// 获取未匹配到供应商的工单物料明细(仅初始 p 状态工单;
/// 物料号在 srm_purchase 中无「未删除且有供应商编码」的有效货源记录)。
///
[DisplayName("批量采购确认未匹配列表")]
[HttpGet("purchase-confirm/unmatched-list")]
public async Task