diff --git a/AMESCoreStudio.Web/Controllers/PCSController.cs b/AMESCoreStudio.Web/Controllers/PCSController.cs index 02fc0ca7..3a1fdbf8 100644 --- a/AMESCoreStudio.Web/Controllers/PCSController.cs +++ b/AMESCoreStudio.Web/Controllers/PCSController.cs @@ -8436,6 +8436,7 @@ namespace AMESCoreStudio.Web.Controllers { IResultModel result; var _msg = string.Empty; + var _msgError = string.Empty; // 內部條碼 if (select == "0") { @@ -8453,9 +8454,21 @@ namespace AMESCoreStudio.Web.Controllers } BarcodeInfo barcodeInfo = q.FirstOrDefault(); + // 有箱號時判斷是有否在FQC抽驗,允收或未檢驗不能刪除 + if (!string.IsNullOrWhiteSpace(barcodeInfo.BoxNo)) + { + var CheckFqcOn = await _pcsApi.GetCheckFqcOnGoIng(barcodeInfo.BoxNo); + if (CheckFqcOn.Any()) + { + ModelState.AddModelError("error", $"無法解除綁定,內部序號【{model.BarCodeNo}】已綁定箱號【{barcodeInfo.BoxNo}】並且已開FQC"); + return View(model); + } + } + barcodeInfo.BoxNo = ""; barcodeInfo.ExtraBarcodeNo = ""; barcodeInfo.UpdateDate = DateTime.Now; + result = await _pcsApi.PutBarcodeInfoes(JsonConvert.SerializeObject(barcodeInfo)); if (result.Success) { @@ -8470,6 +8483,7 @@ namespace AMESCoreStudio.Web.Controllers // 條碼區間 if (select == "1") { + if (string.IsNullOrWhiteSpace(model.BarCodeNoStr) || string.IsNullOrWhiteSpace(model.BarCodeNoEnd)) { ModelState.AddModelError("error", "請確定都有輸入條碼區間"); @@ -8515,6 +8529,27 @@ namespace AMESCoreStudio.Web.Controllers var BarCode = model.BarCodeNoEnd.Substring(0, model.BarCodeNoEnd.Length - NoLength); + for (int i = NoStr; i <= NoEnd; i++) + { + var itemBarcodeNo = BarCode + i.ToString().PadLeft(NoLength, '0'); + var q_BarcodeInfo = await _pcsApi.GetBarcodeInfoesByNo(itemBarcodeNo); + + if (q_BarcodeInfo.Count != 0) + { + BarcodeInfo barcodeInfo = q_BarcodeInfo.FirstOrDefault(); + // 有箱號時判斷是有否在FQC抽驗,允收或未檢驗不能刪除 + if (!string.IsNullOrWhiteSpace(barcodeInfo.BoxNo)) + { + var CheckFqcOn = await _pcsApi.GetCheckFqcOnGoIng(barcodeInfo.BoxNo); + if (CheckFqcOn.Any()) + { + ModelState.AddModelError("error", $"無法解除綁定,內部序號【{barcodeInfo.BarcodeNo}】已綁定箱號【{barcodeInfo.BoxNo}】並且已開FQC"); + return View(model); + } + } + } + } + for (int i = NoStr; i <= NoEnd; i++) { var itemBarcodeNo = BarCode + i.ToString().PadLeft(NoLength, '0'); @@ -8526,18 +8561,9 @@ namespace AMESCoreStudio.Web.Controllers barcodeInfo.BoxNo = ""; barcodeInfo.ExtraBarcodeNo = ""; barcodeInfo.UpdateDate = DateTime.Now; - result = await _pcsApi.PutBarcodeInfoes(JsonConvert.SerializeObject(barcodeInfo)); - //if (result.Success) - //{ - // _msg += "解除綁定成功"; - //} - //else - //{ - // _msg += "解除綁定失敗"; - //} + await _pcsApi.PutBarcodeInfoes(JsonConvert.SerializeObject(barcodeInfo)); } } - _msg = "條碼區間【" + model.BarCodeNoStr + "】 ~ 【" + model.BarCodeNoEnd + "】解除綁定成功"; } @@ -9385,7 +9411,7 @@ namespace AMESCoreStudio.Web.Controllers if (result1.Where(w => w.ItemNo.StartsWith("OTHER")).Count() == 0) { var AllSerialRule = await _pcsApi.GetSerialRuleDetailbyPCS040(result1.Select(s => s.SerialRuleDetailID).FirstOrDefault()); - AllSerialRule = AllSerialRule.Where(w => w.YNum == model.YNum && w.MNum == model.MNum && w.WNum == model.WNum && w.LotNum == model.LotNum && w.MCode == model.MCode && w.DNum == model.DNum).ToList(); + AllSerialRule = AllSerialRule.Where(w => w.YNum == model.YNum && w.MNum == model.MNum && w.WNum == model.WNum && w.LotNum == model.LotNum && w.MCode == model.MCode && w.DNum == model.DNum).ToList(); foreach (var item in AllSerialRule) { model.SerialRuleDetailID = item.SerialRuleDetailID; diff --git a/AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs b/AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs index 1d508e08..54119fcd 100644 --- a/AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs +++ b/AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs @@ -1406,6 +1406,14 @@ namespace AMESCoreStudio.Web /// [WebApiClient.Attributes.HttpGet("api/FqcInhouseDetail/BySerialNo/{id}")] ITask> GetFqcInhouseDetailBySerialNo(string id); + + /// + /// 判斷箱號是否有在FQC允收或未檢驗 + /// + /// 箱號 + /// + [WebApiClient.Attributes.HttpGet("api/FqcInhouseDetail/GetCheckFqcOnGoIng")] + ITask> GetCheckFqcOnGoIng(string boxNo); #endregion #region 取出貨序號 diff --git a/AMESCoreStudio.WebApi/Controllers/AMES/FqcInhouseDetailController.cs b/AMESCoreStudio.WebApi/Controllers/AMES/FqcInhouseDetailController.cs index 557a2f2c..1ea62189 100644 --- a/AMESCoreStudio.WebApi/Controllers/AMES/FqcInhouseDetailController.cs +++ b/AMESCoreStudio.WebApi/Controllers/AMES/FqcInhouseDetailController.cs @@ -9,6 +9,8 @@ using AMESCoreStudio.WebApi; using AMESCoreStudio.WebApi.Models.AMES; using AMESCoreStudio.CommonTools.Result; using AMESCoreStudio.WebApi.DTO.AMES; +using Dapper; +using AMESCoreStudio.WebApi.Extensions; namespace AMESCoreStudio.WebApi.Controllers.AMES { @@ -213,6 +215,24 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES return result; } + /// + /// 查詢箱號是否有在FQC抽驗中或允收 + /// + /// + [HttpGet("GetCheckFqcOnGoIng")] + public async Task> GetCheckFqcOnGoIng(string boxNo) + { + var querySql = @" SELECT * FROM JHAMES.FQC_INHOUSE_MASTER M + INNER JOIN JHAMES.FQC_INHOUSE_DETAIL D ON M.INHOUSE_NO = D.INHOUSE_NO AND M.SEQ_ID = D.SEQ_ID + WHERE D.SERIAL_NO = :SerialNo + AND STATUS IN ('P','A') "; + + DynamicParameters p = new DynamicParameters(); + p.Add("SerialNo", boxNo); + var result = await _context.Database.DapperQueryAsync(querySql, p); + return result; + } + /// /// 新增檢驗單明細資料檔 /// diff --git a/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckNewController.cs b/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckNewController.cs index 6225557b..4e9f8068 100644 --- a/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckNewController.cs +++ b/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckNewController.cs @@ -2242,7 +2242,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES } // 判斷序號為出貨條碼,並轉成內部條碼 - var BarCodeInfo = await _context.BarcodeInfoes.Where(w => w.ExtraBarcodeNo == barCodeCheckDto.barcode.Trim()).FirstOrDefaultAsync(); + var BarCodeInfo = await _context.BarcodeInfoes.Where(w => w.ExtraBarcodeNo.Trim().ToUpper() == barCodeCheckDto.barcode.Trim().ToUpper()).FirstOrDefaultAsync(); if (BarCodeInfo != null) { result.extNo = BarCodeInfo.ExtraBarcodeNo;