using Admin.NET.Core;
namespace Admin.NET.Plugin.AiDOP.Entity;
///
/// S6 过程检验(IPQC)不合格质量处置记录。
///
/// 整批不合格过程检验单(主管 N2 判定不合格)进入 N3_QUALITY_DISPOSITION,质量工程师提交处置方案落此表。
/// 仅"记录处置结论"(disposition_type=REWORK/CONCESSION/SCRAP/OTHER);
/// 本批不做仓储确认/库存/入库/出库/返工单/报废单/附件上传(attachment_json 预留)。
/// 一单一有效处置由 service 校验(status=1 且未软删)+ inspection_id 唯一约束。
///
[SugarTable("ado_s6_ipqc_quality_disposition", "S6过程检验质量处置")]
[SugarIndex("uk_s6_ipqc_disp_insp", nameof(InspectionId), OrderByType.Asc, true)]
[SugarIndex("idx_s6_ipqc_disp_flow", nameof(FlowInstanceId), OrderByType.Asc)]
[SugarIndex("uk_s6_ipqc_disp_no", nameof(DispositionNo), OrderByType.Asc, true)]
public class AdoS6IpqcQualityDisposition : 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; }
/// 处置单号(唯一)
[SugarColumn(ColumnName = "disposition_no", ColumnDescription = "处置单号", Length = 80)]
public string DispositionNo { get; set; } = string.Empty;
/// 处置类型:REWORK 返工 / CONCESSION 让步 / SCRAP 报废 / OTHER 其它
[SugarColumn(ColumnName = "disposition_type", ColumnDescription = "处置类型", Length = 32)]
public string DispositionType { get; set; } = string.Empty;
/// 处置数量
[SugarColumn(ColumnName = "disposition_qty", ColumnDescription = "处置数量", Length = 18, DecimalDigits = 6, IsNullable = true)]
public decimal? DispositionQty { get; set; }
/// 返工数量
[SugarColumn(ColumnName = "rework_qty", ColumnDescription = "返工数量", Length = 18, DecimalDigits = 6, IsNullable = true)]
public decimal? ReworkQty { get; set; }
/// 让步数量
[SugarColumn(ColumnName = "concession_qty", ColumnDescription = "让步数量", Length = 18, DecimalDigits = 6, IsNullable = true)]
public decimal? ConcessionQty { get; set; }
/// 报废数量
[SugarColumn(ColumnName = "scrap_qty", ColumnDescription = "报废数量", Length = 18, DecimalDigits = 6, IsNullable = true)]
public decimal? ScrapQty { get; set; }
/// 处置意见(必填)
[SugarColumn(ColumnName = "disposition_opinion", ColumnDescription = "处置意见", ColumnDataType = StaticConfig.CodeFirst_BigString, IsNullable = true)]
public string? DispositionOpinion { get; set; }
/// 责任部门
[SugarColumn(ColumnName = "responsibility_dept", ColumnDescription = "责任部门", Length = 255, IsNullable = true)]
public string? ResponsibilityDept { get; set; }
/// 责任人
[SugarColumn(ColumnName = "responsible_user", ColumnDescription = "责任人", Length = 100, IsNullable = true)]
public string? ResponsibleUser { get; set; }
/// 附件 JSON(预留,本批不做上传)
[SugarColumn(ColumnName = "attachment_json", ColumnDescription = "附件JSON", ColumnDataType = StaticConfig.CodeFirst_BigString, IsNullable = true)]
public string? AttachmentJson { get; set; }
/// 状态:1 已提交(本批最小)
[SugarColumn(ColumnName = "status", ColumnDescription = "状态")]
public int Status { get; set; }
/// 提交人 id(质量工程师)
[SugarColumn(ColumnName = "submitted_by", ColumnDescription = "提交人id", IsNullable = true)]
public long? SubmittedBy { get; set; }
/// 提交人姓名
[SugarColumn(ColumnName = "submitted_by_name", ColumnDescription = "提交人姓名", Length = 100, IsNullable = true)]
public string? SubmittedByName { get; set; }
/// 提交时间
[SugarColumn(ColumnName = "submitted_at", ColumnDescription = "提交时间", IsNullable = true)]
public DateTime? SubmittedAt { get; set; }
/// 确认人(预留,本批 N3 提交即完成,不做独立确认)
[SugarColumn(ColumnName = "confirmed_by", ColumnDescription = "确认人", IsNullable = true)]
public long? ConfirmedBy { get; set; }
/// 确认时间(预留)
[SugarColumn(ColumnName = "confirmed_at", ColumnDescription = "确认时间", IsNullable = true)]
public DateTime? ConfirmedAt { get; set; }
/// 乐观锁版本
[SugarColumn(ColumnName = "row_version", ColumnDescription = "乐观锁版本", IsNullable = true)]
public long? RowVersion { get; set; }
}