using Admin.NET.Plugin.AiDOP.MaterialWarehouse.Dto;
namespace Admin.NET.Plugin.AiDOP.MaterialWarehouse;
///
/// S5 盘点标签确认 只读 list 服务。
///
/// 数据源:aidopdev.MissedPrint(IsTag=1) LEFT JOIN ItemMaster(物料名称/规格/单位)。
/// 参考本仓既有 MissedPrint 直读只读投影先例:LabelQueryService / StockQueryService / PendingInspectionService。
///
/// 本服务仅 SELECT:无新增/编辑/删除/确认写回/批量确认/反确认/库存事务/状态流转;扁平列表,无 detail。
/// 派生列:diffQty=CompQty-Qty;status(Status='Q'→冻结);stocktakeResult(CompQty<>Qty→有差异/正常)。
///
/// 【认证】类级已去 [AllowAnonymous]:原先该接口可被**完全未认证**调用
/// (实测匿名 GET —— 无 Authorization 头、credentials:'omit' 连 cookie 也不发 —— 返回 HTTP 200)。
/// 当时 IsTag=1 恰好 0 行故未造成实际泄漏,但端点是公开的,一旦出现盘点标签数据即形成匿名读取。
/// 现收敛为需认证访问。
///
/// 【仍未解决 · 跟踪项】租户边界。查询仍是 WHERE IsTag=1,无 Tenant/Domain 条件。
/// 原因已从「无法过滤」变成「本服务无认证上下文可取租户」:MissedPrint.tenant_id 曾实测 152 行全为 NULL,
/// 现已由生成标签写入 + 1.0.442 一次性回填补齐,008/013 已改按 m.tenant_id 过滤;
/// 本服务未一并改造,是因为它当前 IsTag=1 恒为 0 行(DEAD FUNCTION),
/// 改造留待其恢复业务时与 UserManager 注入一起做。
/// 现状:**Anonymous access CLOSED,tenant isolation 未 CLOSED**。
///
[ApiDescriptionSettings(Order = 308, Description = "盘点标签确认")]
[Route("api/S5StocktakeLabelConfirm")]
[NonUnify]
public class StocktakeLabelConfirmService : IDynamicApiController, ITransient
{
private readonly ISqlSugarClient _db;
public StocktakeLabelConfirmService(ISqlSugarClient db)
{
_db = db;
}
///
/// 盘点标签确认列表(只读分页查询)。
///
[DisplayName("盘点标签确认列表")]
[HttpGet("list")]
public async Task