using SqlSugar; namespace Admin.NET.Plugin.AiDOP.MaterialWarehouse.InventoryPosting.Entity; /// /// DOP-L3 IQC 入库过账头 / 幂等锚(结构层)。 /// 幂等键(DB UNIQUE)= tenant_id + domain_code + FBILLNO —— 统一 IQC 入库事件业务幂等键。 /// **禁止**用 FINSPECTSTATUS='检验完成' 判断是否已入库;改用本表 DB 唯一约束 + 状态。 /// 注意:Phase 2 仅建结构;完整幂等处理逻辑(先查/占位/AlreadyProcessed)在 Phase 4 实现。 /// [SugarTable("ado_iqc_inventory_posting", "DOP-L3 IQC入库过账头/幂等锚")] [SugarIndex("uk_ado_iqc_posting_fbillno", nameof(TenantId), OrderByType.Asc, nameof(DomainCode), OrderByType.Asc, nameof(FbillNo), OrderByType.Asc, IsUnique = true)] public class AdoIqcInventoryPosting : AdoInvEntityBase { /// 来料检验单号(qms_qcp_inspbill.lydjbh / FBILLNO)——幂等键第 3 维。 [SugarColumn(ColumnName = "fbillno", ColumnDescription = "来料检验单号FBILLNO", Length = 50, IsNullable = false, DefaultValue = "")] public string FbillNo { get; set; } [SugarColumn(ColumnName = "receiver", ColumnDescription = "收货单号Receiver", Length = 50, IsNullable = true)] public string Receiver { get; set; } [SugarColumn(ColumnName = "rct_qc_nbr", ColumnDescription = "检验单号RctQCNbr(旧对账关联键)", Length = 100, IsNullable = true)] public string RctQcNbr { get; set; } [SugarColumn(ColumnName = "item_num", ColumnDescription = "物料号", Length = 50, IsNullable = true)] public string ItemNum { get; set; } /// 过账状态:PENDING / PROCESSING / POSTED / FAILED / ALREADY_PROCESSED(Phase 4 驱动)。 [SugarColumn(ColumnName = "posting_status", ColumnDescription = "过账状态", Length = 20, IsNullable = false, DefaultValue = "PENDING")] public string PostingStatus { get; set; } /// 过账模式:DISABLED / SHADOW / AUTHORITATIVE。本批次最高只允许 SHADOW。 [SugarColumn(ColumnName = "posting_mode", ColumnDescription = "过账模式(DISABLED/SHADOW/AUTHORITATIVE)", Length = 20, IsNullable = false, DefaultValue = "SHADOW")] public string PostingMode { get; set; } /// MRB 状态(0 无 / 1 挑选 / 2 退货 / 3 让步接收)——来自 C1 IqcResultMapping。 [SugarColumn(ColumnName = "mrb_status", ColumnDescription = "MRB状态", DefaultValue = "0")] public int MrbStatus { get; set; } /// 命中分支号 1-5(C1)。 [SugarColumn(ColumnName = "branch_no", ColumnDescription = "IQC路由分支号1-5", DefaultValue = "0")] public int BranchNo { get; set; } /// 本次过账对应的库存事务组 Id(关联 ado_inventory_transaction.transaction_group_id)。 [SugarColumn(ColumnName = "transaction_group_id", ColumnDescription = "库存事务组Id", IsNullable = true)] public long? TransactionGroupId { get; set; } }