AdoIqcInventoryPosting.cs 3.0 KB

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