namespace Admin.NET.Plugin.AiDOP.WorkOrder;
/// BOM 单行物料(前端 Excel 解析后传入)。
public class BomItemDto
{
/// 子物料号(必填)。
public string ItemNum { get; set; } = string.Empty;
/// 子物料描述。
public string Descr { get; set; } = string.Empty;
/// 规格型号(子件长描述)。
public string? Descr1 { get; set; }
/// 单位。
public string? UM { get; set; }
/// 需求数量。
public decimal QtyRequired { get; set; }
/// 工序号(项目文本解析;非数字则为 0)。
public int Op { get; set; }
/// 销售订单号(用于匹配工单:对应 WorkOrdMaster.SalesJob)。
public string? SalesOrderNo { get; set; }
/// 父物料号(用于匹配工单:对应 WorkOrdMaster.ItemNum)。
public string? ParentItemNum { get; set; }
}
/// 物料存在性校验请求。
public class BomCheckMaterialsInput
{
public List Items { get; set; } = new();
}
/// 物料存在性校验结果。
public class BomCheckResult
{
/// 已在 ItemMaster 中存在的物料编码。
public List Existing { get; set; } = new();
/// 不存在、需要新建的物料。
public List Missing { get; set; } = new();
}
/// BOM 写入请求。
public class BomUploadInput
{
/// 是否同时创建 ItemMaster 中不存在的物料。
public bool CreateMissingItems { get; set; }
public List Items { get; set; } = new();
}
/// BOM 写入结果。
public class BomUploadResult
{
/// WorkOrdDetail 新增行数。
public int Inserted { get; set; }
/// WorkOrdDetail 更新行数。
public int Updated { get; set; }
/// ItemMaster 新建行数。
public int NewItems { get; set; }
/// 本次处理的 BOM 总行数。
public int Total { get; set; }
/// 成功匹配写入的工单数量。
public int MatchedWorkOrders { get; set; }
/// 未能匹配到未下达工单的行(格式:订单号+父物料号)。
public List Unmatched { get; set; } = new();
}