Browse Source

1. 修改過站KeyParts判斷問題

PTD
ray 2 years ago
parent
commit
69d68e4e41
  1. 47
      AMESCoreStudio.Web/Controllers/PCSController.cs

47
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<string>() : model.KpItemName.Split(',').ToList();
var SpecifyKeyPartsNo = model.KpItemName == null ? new List<string>() : 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 = ExceptWipKp.Where(w => w.KpNoName.ToUpper() == SpecifyKeyPartsNo[i - 1].ToUpper()).FirstOrDefault();
// 比對資料為空時
if (WipKp == null)
{
var WipKp = model.WipKps.Where(w => w.KpNoName.ToUpper() == KeyPartsNo[i - 1].ToUpper()).FirstOrDefault();
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} </br>";
Msg = $"指定KeyParts:{Data} 已超過資料設定數量</br>";
return Json(new Result() { success = Success, msg = Msg, data = Data });
}
}

Loading…
Cancel
Save