using System.Text;
using Admin.NET.Plugin.AiDOP.Infrastructure;
namespace Admin.NET.Plugin.AiDOP.FinishedWarehouse;
///
/// S7 FQC 检验录入/自动判定(Phase 1E)。读写"活"检验单 qms_qcpp_inspbill / qms_qcpp_inspbillst。
///
/// NUMERIC 项目:逐样本录 j1..j50,自动判定按快照 sx/xx 判每个样本(xx≤v≤sx);
/// NON_NUMERIC 项目:录本次实际合格数(NonNumericalTypeOK)/不合格数(NonNumericalTypeNG),无 Ac/Re 规则不自动判 → pd 人工确认。
///
/// 硬边界:① 自动判定只读 inspbillst 快照(sx/xx/lrlx),绝不回查实时检规 qms_ccjygfzb;
/// ② NON_NUMERIC 无接收规则时不默认 NG>0=FAIL,pd 留人工;③ 保存不起流(仅本 service),
/// 首次正式提交走现有 FqcInspBillFlow.submit-result 惰性 StartFlow。tenant 全程 ResolveTenantOrThrow。
/// 本 service 不做提交/审核/处置(提交复用现有流程端点)。
///
[ApiDescriptionSettings(Order = 343, Description = "FQC检验录入")]
[Route("api/S7FqcInspection")]
[NonUnify]
public class FqcInspectionService : IDynamicApiController, ITransient
{
private readonly ISqlSugarClient _db;
private readonly UserManager _userManager;
public FqcInspectionService(ISqlSugarClient db, UserManager userManager)
{
_db = db;
_userManager = userManager;
}
private long ResolveTenantOrThrow() => AidopTenantScope.ResolveOrThrow(_userManager);
private const int SampleCols = 50; // j1..j50
/// 检验单录入详情(活单 qms_qcpp_inspbill 头 + qms_qcpp_inspbillst 明细,含快照与已录入值)。
[DisplayName("检验单录入详情")]
[HttpGet("detail")]
public async Task