From 69d68e4e415a922363554d3842e8693f39d7228f Mon Sep 17 00:00:00 2001 From: ray Date: Fri, 3 Feb 2023 23:53:56 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E4=BF=AE=E6=94=B9=E9=81=8E=E7=AB=99KeyPar?= =?UTF-8?q?ts=E5=88=A4=E6=96=B7=E5=95=8F=E9=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/PCSController.cs | 47 ++++++++++++++----- 1 file changed, 35 insertions(+), 12 deletions(-) diff --git a/AMESCoreStudio.Web/Controllers/PCSController.cs b/AMESCoreStudio.Web/Controllers/PCSController.cs index 1f3bc85b..d76ea0fb 100644 --- a/AMESCoreStudio.Web/Controllers/PCSController.cs +++ b/AMESCoreStudio.Web/Controllers/PCSController.cs @@ -6270,7 +6270,7 @@ namespace AMESCoreStudio.Web.Controllers // ResultModel string Msg = string.Empty; bool Success = true; - string Data = model.Input; + string Data = model.Input.ToUpper(); // 刷入條碼+異常欄位 if (!string.IsNullOrWhiteSpace(model.InputNo)) Data += "@" + model.InputNo; @@ -6348,13 +6348,22 @@ namespace AMESCoreStudio.Web.Controllers var BarCodeItems = await _pcsApi.GetBarcodeItemByBarCode(model.Input); BarCodeItems = BarCodeItems.Where(w => w.S.UnitNo == stationUnit).ToList(); + // WipKps - BarCodeItem 剩下未綁定的KpNo + var ExceptWipKp = model.WipKps.ToList(); + foreach (var item in BarCodeItems) + { + var ByItemWipKp = ExceptWipKp.Where(w => w.KpNo == item.ItemNo).FirstOrDefault(); + if (ByItemWipKp != null) + ExceptWipKp.Remove(ByItemWipKp); + } + // KeyParts代碼順序 - var KeyPartsNo = model.KpItemName == null ? new List() : model.KpItemName.Split(',').ToList(); + var SpecifyKeyPartsNo = model.KpItemName == null ? new List() : model.KpItemName.Split(',').ToList(); int KpItemQty = BarCodeItems.Count(); int i = 0; // 判斷指定KeyParts代碼是否有刷足夠數 - if (KeyPartsNo.Count() > model.Inputs.Where(w => !w.Input.StartsWith("$")).Count()) + if (SpecifyKeyPartsNo.Count() > model.Inputs.Where(w => !w.Input.StartsWith("$")).Count()) { Msg = "有指定KeyParts代號 刷入數量不足,請在確認!"; return Json(new Result() { success = false, msg = Msg, data = Data }); @@ -6389,9 +6398,16 @@ namespace AMESCoreStudio.Web.Controllers { // 判斷是否有輸入KeyParts代碼順序 // 有指定KeyParts順序 - if (i <= KeyPartsNo.Count()) + if (i <= SpecifyKeyPartsNo.Count()) { - var WipKp = model.WipKps.Where(w => w.KpNoName.ToUpper() == KeyPartsNo[i - 1].ToUpper()).FirstOrDefault(); + var WipKp = ExceptWipKp.Where(w => w.KpNoName.ToUpper() == SpecifyKeyPartsNo[i - 1].ToUpper()).FirstOrDefault(); + // 比對資料為空時 + if (WipKp == null) + { + Msg = $"請確認KeyParts代號【{SpecifyKeyPartsNo[i - 1].ToUpper()}】是否數量全數已綁定?"; + return Json(new Result() { success = false, msg = Msg, data = Data }); + } + keyParts.Add(new BarCodeCheckDto.inputItem { inputType = WipKp.KpNo, @@ -6402,16 +6418,16 @@ namespace AMESCoreStudio.Web.Controllers } else { - var WipKp = model.WipKps.Where(w => !KeyPartsNo.Any(w1 => w1.ToUpper().Contains(w.KpNoName.ToUpper()))) + var WipKp = ExceptWipKp.Where(w => !SpecifyKeyPartsNo.Any(w1 => w1.ToUpper().Contains(w.KpNoName.ToUpper()))) .ToList(); // 排除有指定數量,其他按照WipKp順序取值 - var k = i - 1 - KeyPartsNo.Count(); + var k = i - 1 - SpecifyKeyPartsNo.Count(); keyParts.Add(new BarCodeCheckDto.inputItem { - inputType = WipKp[k + KpItemQty].KpNo, + inputType = WipKp[k].KpNo, inputData = KeyPartItem.Input, oldInputData = KeyPartItem.InputNo, - kpItemNo = WipKp[k + KpItemQty].KpName + kpItemNo = WipKp[k].KpName }); } } @@ -6453,17 +6469,24 @@ namespace AMESCoreStudio.Web.Controllers } else { + // 組件資料 var items = await _pcsApi.GetItems(); items = items.Where(w => model.WipKps.Any(wi => wi.KpNo == w.ItemNo)).ToList(); + // 判斷Input為指定KeyParts順序 if (items.Any(a => a.ItemName.ToUpper() == Data.ToUpper())) { - // 判斷是否有重複輸入KP順序代號 if (model.KpItemName != null) { - if (model.KpItemName.Split(",").Where(w => w.ToUpper() == Data.ToUpper()).Any()) + // 取得目前Input指定KP代碼的綁定數量 + var KpItemNameByCount = model.KpItemName.Split(",").Where(w => w.ToUpper() == Data.ToUpper()).Count(); + // WipKp的ByKpNo數量 + var WipKpByCount = model.WipKps.Where(w1 => w1.KpNo == items.Where(w => w.ItemName.ToUpper() == Data.ToUpper()) + .Select(s => s.ItemNo).FirstOrDefault()).Count(); + // 目前綁定KpNo 等於 WipKp ByKpNo 數量 + if (KpItemNameByCount == WipKpByCount) { Success = false; - Msg = $"KeyParts代號重複輸入:{Data}
"; + Msg = $"指定KeyParts:{Data} 已超過資料設定數量
"; return Json(new Result() { success = Success, msg = Msg, data = Data }); } }