using Admin.NET.Core;
namespace Admin.NET.Plugin.AiDOP.Entity;
///
/// S6 过程检验单(IPQC)流程状态轻量扩展表。
///
/// 源表 qms_gcjyd 无审核人/审核时间/并发/租户列,故本表承载流程态与审核信息,
/// 不给归口表 qms_gcjyd 加列、不回写 qms_gcjyd.status。
/// 一检验单一行(inspection_id 唯一);流程权威状态仍由 ApprovalFlowInstance/Task 承载,
/// 本表为业务侧展示与审核信息落点(business_status / 审核人 / 审核时间 / 退回原因 / row_version 乐观锁)。
///
[SugarTable("ado_s6_ipqc_inspection_flow_state", "S6过程检验单流程状态")]
[SugarIndex("uk_s6_ipqc_flow_state_insp", nameof(InspectionId), OrderByType.Asc, true)]
[SugarIndex("idx_s6_ipqc_flow_state_flow", nameof(FlowInstanceId), OrderByType.Asc)]
public class AdoS6IpqcInspectionFlowState : EntityBaseDel, ITenantIdFilter
{
/// 租户
[SugarColumn(ColumnName = "tenant_id", ColumnDescription = "租户", IsNullable = true)]
public long? TenantId { get; set; }
/// 工厂/组织
[SugarColumn(ColumnName = "org_id", ColumnDescription = "工厂/组织", IsNullable = true)]
public long? OrgId { get; set; }
/// 检验单 id(qms_gcjyd.id,BizId)
[SugarColumn(ColumnName = "inspection_id", ColumnDescription = "检验单id")]
public long InspectionId { get; set; }
/// 检验单号(qms_gcjyd.djbh)
[SugarColumn(ColumnName = "inspection_no", ColumnDescription = "检验单号", Length = 255, IsNullable = true)]
public string? InspectionNo { get; set; }
/// 业务类型(IPQC_INSPECTION)
[SugarColumn(ColumnName = "biz_type", ColumnDescription = "业务类型", Length = 80, IsNullable = true)]
public string? BizType { get; set; } = "IPQC_INSPECTION";
/// 流程实例 id
[SugarColumn(ColumnName = "flow_instance_id", ColumnDescription = "流程实例id", IsNullable = true)]
public long? FlowInstanceId { get; set; }
/// 业务状态(INSPECTING / PENDING_REVIEW / APPROVED / RETURNED)
[SugarColumn(ColumnName = "business_status", ColumnDescription = "业务状态", Length = 32, IsNullable = true)]
public string? BusinessStatus { get; set; }
/// 当前节点码(N1_INSPECT / N2_SUP_REVIEW,完成为空)
[SugarColumn(ColumnName = "current_node", ColumnDescription = "当前节点", Length = 32, IsNullable = true)]
public string? CurrentNode { get; set; }
/// 检验员用户 id
[SugarColumn(ColumnName = "inspector_user_id", ColumnDescription = "检验员用户id", IsNullable = true)]
public long? InspectorUserId { get; set; }
/// 检验员姓名
[SugarColumn(ColumnName = "inspector_name", ColumnDescription = "检验员姓名", Length = 100, IsNullable = true)]
public string? InspectorName { get; set; }
/// 检验主管用户 id
[SugarColumn(ColumnName = "supervisor_user_id", ColumnDescription = "检验主管用户id", IsNullable = true)]
public long? SupervisorUserId { get; set; }
/// 检验主管姓名
[SugarColumn(ColumnName = "supervisor_name", ColumnDescription = "检验主管姓名", Length = 100, IsNullable = true)]
public string? SupervisorName { get; set; }
/// 提交时间(检验员)
[SugarColumn(ColumnName = "submitted_at", ColumnDescription = "提交时间", IsNullable = true)]
public DateTime? SubmittedAt { get; set; }
/// 审核时间(主管)
[SugarColumn(ColumnName = "reviewed_at", ColumnDescription = "审核时间", IsNullable = true)]
public DateTime? ReviewedAt { get; set; }
/// 审核结果(APPROVED / RETURNED)
[SugarColumn(ColumnName = "review_result", ColumnDescription = "审核结果", Length = 32, IsNullable = true)]
public string? ReviewResult { get; set; }
/// 退回原因
[SugarColumn(ColumnName = "return_reason", ColumnDescription = "退回原因", Length = 500, IsNullable = true)]
public string? ReturnReason { get; set; }
/// 是否需要质量处置(DOP 流程控制字段,主管 N2 整批判定驱动:1=不合格转N3 / 0=合格结束;与 qms_gcjyd.jgpd 整批判定一致)。网关 GW_RESULT 判据。
[SugarColumn(ColumnName = "disposition_required", ColumnDescription = "是否需质量处置(1需/0否)", IsNullable = true)]
public int? DispositionRequired { get; set; }
/// 乐观锁版本
[SugarColumn(ColumnName = "row_version", ColumnDescription = "乐观锁版本", IsNullable = true)]
public long? RowVersion { get; set; }
}