| | |
| | | // result = "未检测" |
| | | // }).ToList(); |
| | | // } |
| | | public List<QsItemIpiItem> SetQSItems(string itemNo) |
| | | public List<QsItemIpiItem> SetQSItems(string itemNo, decimal? workQty = null) |
| | | { |
| | | var db = SqlSugarHelper.GetInstance(); |
| | | |
| | |
| | | |
| | | if (count <= 0) return []; |
| | | |
| | | return db |
| | | .Queryable<MesQualityStandard>() |
| | | .Where(b => b.QsType == "1" && b.ItemNo == itemNo).Select( |
| | | b => new QsItemIpiItem |
| | | // 如果没有传递工单数量,尝试从工单表中获取 |
| | | if (workQty == null || workQty <= 0) |
| | | { |
| | | System.Diagnostics.Debug.WriteLine($"SJService.SetQSItems - itemNo: {itemNo}, workQty: {workQty}"); |
| | | |
| | | // 通过物料编码(Daa002)匹配工单 |
| | | var workOrder = db.Queryable<Womdaa>() |
| | | .Where(w => w.Daa002 == itemNo) |
| | | .OrderByDescending(w => w.Id) |
| | | .First(); |
| | | |
| | | if (workOrder != null) |
| | | { |
| | | workQty = workOrder.Daa008; // 工单数量 |
| | | System.Diagnostics.Debug.WriteLine($"Found work order by Daa002 (物料编码): {workOrder.Daa001}, Daa002: {workOrder.Daa002}, Daa003: {workOrder.Daa003}, workQty: {workQty}"); |
| | | } |
| | | else |
| | | { |
| | | System.Diagnostics.Debug.WriteLine($"No work order found for itemNo (物料编码): {itemNo}"); |
| | | |
| | | // 如果通过物料编码找不到,尝试通过产品名称匹配 |
| | | var workOrderByName = db.Queryable<Womdaa>() |
| | | .Where(w => w.Daa003.Contains(itemNo) || itemNo.Contains(w.Daa003)) |
| | | .OrderByDescending(w => w.Id) |
| | | .First(); |
| | | |
| | | if (workOrderByName != null) |
| | | { |
| | | ProjName = b.ProjName, |
| | | ItemMod = b.ItemMod, |
| | | InspectionMethod = b.InspectionMethod, |
| | | UsingInstruments = b.UsingInstruments, |
| | | LevelNum = SqlFunc.IsNull( |
| | | SqlFunc.IsNull(b.LevelNum * b.InspectionLevel, 1), |
| | | b.InspectionLevel), |
| | | MaxValue = b.MaxValue, |
| | | StandardValue = b.StandardValue, |
| | | MinValue = b.MinValue, |
| | | Notes = b.Notes, |
| | | FcheckLevel = b.FcheckLevel, |
| | | FacLevel = b.FacLevel, |
| | | QsCode = b.QsCode, |
| | | QsName = b.QsName, |
| | | Picture = b.Picture, |
| | | Picturename = b.Picturename, |
| | | result = "未检测", |
| | | isCheck = 0 |
| | | }).ToList(); |
| | | workQty = workOrderByName.Daa008; // 工单数量 |
| | | System.Diagnostics.Debug.WriteLine($"Found work order by name: {workOrderByName.Daa001}, Daa002: {workOrderByName.Daa002}, Daa003: {workOrderByName.Daa003}, workQty: {workQty}"); |
| | | } |
| | | else |
| | | { |
| | | System.Diagnostics.Debug.WriteLine($"No work order found by name for itemNo: {itemNo}"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 先获取基础数据 |
| | | var qualityStandards = db |
| | | .Queryable<MesQualityStandard>() |
| | | .Where(b => b.QsType == "1" && b.ItemNo == itemNo) |
| | | .ToList(); |
| | | |
| | | // 在内存中计算检验数量 |
| | | return qualityStandards.Select(b => new QsItemIpiItem |
| | | { |
| | | ProjName = b.ProjName, |
| | | ItemMod = b.ItemMod, |
| | | InspectionMethod = b.InspectionMethod, |
| | | UsingInstruments = b.UsingInstruments, |
| | | LevelNum = CalculateInspectionQuantity(b.LevelNum, b.InspectionLevel, workQty), |
| | | MaxValue = b.MaxValue, |
| | | StandardValue = b.StandardValue, |
| | | MinValue = b.MinValue, |
| | | Notes = b.Notes, |
| | | FcheckLevel = b.FcheckLevel, |
| | | FacLevel = b.FacLevel, |
| | | QsCode = b.QsCode, |
| | | QsName = b.QsName, |
| | | Picture = b.Picture, |
| | | Picturename = b.Picturename, |
| | | result = "未检测", |
| | | isCheck = 0 |
| | | }).ToList(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 计算检验数量:如果工单数量小于抽验数量,则检验数量为工单数量,否则为抽检数量 |
| | | /// </summary> |
| | | /// <param name="levelNum">每模多少个</param> |
| | | /// <param name="inspectionLevel">模数</param> |
| | | /// <param name="workQty">工单数量</param> |
| | | /// <returns>检验数量</returns> |
| | | private decimal? CalculateInspectionQuantity(decimal? levelNum, decimal? inspectionLevel, decimal? workQty) |
| | | { |
| | | System.Diagnostics.Debug.WriteLine($"SJService.CalculateInspectionQuantity - INPUT: levelNum={levelNum}, inspectionLevel={inspectionLevel}, workQty={workQty}"); |
| | | |
| | | // 直接使用levelNum作为抽检数量,不再计算 |
| | | var samplingQuantity = levelNum ?? 1; |
| | | |
| | | System.Diagnostics.Debug.WriteLine($"SJService.CalculateInspectionQuantity - samplingQuantity (from levelNum): {samplingQuantity}"); |
| | | |
| | | // 如果没有工单数量,使用抽检数量 |
| | | if (workQty == null || workQty <= 0) |
| | | {return samplingQuantity; |
| | | } |
| | | |
| | | // 如果工单数量小于抽检数量,则检验数量为工单数量 |
| | | // 如果工单数量大于等于抽检数量,则检验数量为抽检数量 |
| | | var result = workQty < samplingQuantity ? workQty : samplingQuantity; |
| | | |
| | | System.Diagnostics.Debug.WriteLine($"SJService.CalculateInspectionQuantity - FINAL: workQty={workQty}, samplingQuantity={samplingQuantity}, result={result}"); |
| | | |
| | | return result; |
| | | } |
| | | |
| | | |