using Admin.NET.Plugin.AiDOP.MaterialWarehouse.Dto;
namespace Admin.NET.Plugin.AiDOP.MaterialWarehouse;
///
/// S5 来料检验单(qms_qcp_inspbill)只读 list 服务 —— 来料检验流程主入口。
///
/// 数据源:aidopdev.qms_qcp_inspbill 单表直读(不 join 申请主表/明细/SuppMaster/ApprovalFlow/SQE)。
/// 口径:检验单号=FBILLNO;来源单号=lydjbh;物料=FMATERIALCFG/wlmc/ggxh;供应商=gysmc(内嵌);
/// 批次=pch;数量=FRINSQTY/jysl/dhsl/bhgsl;判定=pd(raw);处理方式=clfs(raw);状态=FBILLSTATUS(raw);
/// 检验员=FINSPECTORID;检验起止=FINSPESTARTDATE/FINSPEENDDATE;创建=FCREATETIME。默认排序 FCREATETIME DESC, id DESC。
///
/// tenant/组织:qms_qcp_inspbill **无 tenant_id**,不做租户过滤;FORGID 当前全 NULL,不做 FORGID 过滤。
/// TenantId/ForgId 接收即忽略。本服务仅 SELECT:无新增/编辑/删除/详情/判定录入/主管审核/SQE 处置/仓储通知/
/// 库存事务/流程实例;不写 qms_qcp_inspbill、不改 FBIZTYPE、不碰 ApprovalFlow。pd/clfs/FBILLSTATUS 字典未闭合,raw 展示。
///
[ApiDescriptionSettings(Order = 309, Description = "来料检验单列表")]
[Route("api/S5IqcInspBill")]
[AllowAnonymous]
[NonUnify]
public class IqcInspBillService : IDynamicApiController, ITransient
{
private readonly ISqlSugarClient _db;
public IqcInspBillService(ISqlSugarClient db)
{
_db = db;
}
/// 排序字段白名单(前端 prop → 物理列),杜绝 orderBy 注入。
private static readonly Dictionary OrderByWhitelist = new(StringComparer.OrdinalIgnoreCase)
{
["billNo"] = "ib.FBILLNO",
["sourceBillNo"] = "ib.lydjbh",
["materialCode"] = "ib.FMATERIALCFG",
["materialName"] = "ib.wlmc",
["supplierName"] = "ib.gysmc",
["lotNo"] = "ib.pch",
["billStatus"] = "ib.FBILLSTATUS",
["judgement"] = "ib.pd",
["inspectDate"] = "ib.FINSPESTARTDATE",
["createTime"] = "ib.FCREATETIME",
};
///
/// 来料检验单列表(只读分页查询)。
///
[DisplayName("来料检验单列表")]
[HttpGet("list")]
public async Task