diff --git a/AMESCoreStudio.Web/Controllers/FQCController.cs b/AMESCoreStudio.Web/Controllers/FQCController.cs index fb05b520..01c09fe1 100644 --- a/AMESCoreStudio.Web/Controllers/FQCController.cs +++ b/AMESCoreStudio.Web/Controllers/FQCController.cs @@ -1036,21 +1036,29 @@ namespace AMESCoreStudio.Web.Controllers return View("FQC007C", model); }; - var FqcResultDetail = new FqcResultDetail - { - BarcodeNo = result_BarCodeInfo.FirstOrDefault().BarcodeNo, - ExtraBarcodeNo = result_BarCodeInfo.FirstOrDefault().ExtraBarcodeNo, - BoxNo = result_BarCodeInfo.FirstOrDefault().BoxNo, - StatusNo = model.StatusNo, - NgMemo = model.NgMemo, - NgReasonNo = model.NgReasonNo, - CreateUserID = GetLogInUserID(), - UpdateUserID = GetLogInUserID() + var FqcResultDetails = new List(); + foreach (var item in result_BarCodeInfo) + { + FqcResultDetails.Add(new FqcResultDetail + { + BarcodeNo = item.BarcodeNo, + ExtraBarcodeNo = item.ExtraBarcodeNo, + BoxNo = item.BoxNo, + StatusNo = model.StatusNo, + NgMemo = model.NgMemo, + NgReasonNo = model.NgReasonNo, + CreateUserID = GetLogInUserID(), + UpdateUserID = GetLogInUserID() + }); }; + // 要抽驗的內部條碼 + var AddBarCodeNo = FqcResultDetails.Select(s => s.BarcodeNo).ToList(); - if (string.IsNullOrWhiteSpace(FqcResultDetail.ExtraBarcodeNo)) + if (FqcResultDetails.Where(w => string.IsNullOrWhiteSpace(w.ExtraBarcodeNo)).Any()) { - ModelState.AddModelError("error", "找不到該筆資料的出貨序號"); + var NoExtraBarcodeNo = FqcResultDetails.Where(w => string.IsNullOrWhiteSpace(w.ExtraBarcodeNo)) + .Select(s => s.BarcodeNo).ToList(); + ModelState.AddModelError("error", string.Join(',', NoExtraBarcodeNo) + "找不到出貨序號"); return View("FQC007C", model); } #endregion @@ -1060,9 +1068,12 @@ namespace AMESCoreStudio.Web.Controllers if (result_FqcResultMaster.Count() != 0) { var result_ResultDetail = await _fqcApi.GetFqcResultDetail(result_FqcResultMaster.FirstOrDefault().FqcID); - if (result_ResultDetail.Where(w => w.BarcodeNo == FqcResultDetail.BarcodeNo).Any()) + if (result_ResultDetail.Where(w => AddBarCodeNo.Contains(w.BarcodeNo)).Any()) { - ModelState.AddModelError("error", "內部序號【" + FqcResultDetail.BarcodeNo + "】已抽驗過"); + var errorMag = result_ResultDetail.Where(w => AddBarCodeNo.Contains(w.BarcodeNo)) + .Select(s => s.BarcodeNo).ToList(); + ModelState.AddModelError("error", "內部序號【" + string.Join(",", errorMag) + "】已抽驗過"); + return View("FQC007C", model); } } @@ -1073,7 +1084,7 @@ namespace AMESCoreStudio.Web.Controllers if (result_FqcResultMaster.Count != 0) { FqcResultMaster = result_FqcResultMaster.FirstOrDefault(); - FqcResultMaster.QaQty += 1; + FqcResultMaster.QaQty += AddBarCodeNo.Count(); FqcResultMaster.UpdateDate = DateTime.Now; FqcResultMaster.UpdateUserID = GetLogInUserID(); } @@ -1086,7 +1097,7 @@ namespace AMESCoreStudio.Web.Controllers FqcResultMaster.SeqID = model.SeqID; FqcResultMaster.LotQty = FirstFqc.InhouseQty; FqcResultMaster.WipNo = FirstFqc.WipNo; - FqcResultMaster.QaQty = 1; + FqcResultMaster.QaQty = AddBarCodeNo.Count(); FqcResultMaster.ItemNo = FirstFqc.ItemNo; FqcResultMaster.ModelNo = FirstFqc.ModelNo; FqcResultMaster.StartTime = DateTime.Now; @@ -1096,28 +1107,38 @@ namespace AMESCoreStudio.Web.Controllers // 判斷是PASS || FAIL if (model.StatusNo == "F") - FqcResultMaster.FailQty += 1; + FqcResultMaster.FailQty += AddBarCodeNo.Count(); else { - FqcResultMaster.PassQty += 1; - FqcResultDetail.NgReasonNo = ""; - FqcResultDetail.NgMemo = ""; + FqcResultMaster.PassQty += AddBarCodeNo.Count(); } #endregion IResultModel result; + var FqcID = 0; if (result_FqcResultMaster.Count == 0) { result = await _fqcApi.PostFqcResultMaster(JsonConvert.SerializeObject(FqcResultMaster)); - FqcResultDetail.FqcID = result.Data.FirstOrDefault().FqcID; + FqcID = result.Data.FirstOrDefault().FqcID; } else { result = await _fqcApi.PutFqcResultMaster(JsonConvert.SerializeObject(FqcResultMaster)); - FqcResultDetail.FqcID = result_FqcResultMaster.FirstOrDefault().FqcID; + FqcID = result_FqcResultMaster.FirstOrDefault().FqcID; } - IResultModel result_detail; - result_detail = await _fqcApi.PostFqcResultDetail(JsonConvert.SerializeObject(FqcResultDetail)); + + IResultModel result_detail = new ResultModel(); + foreach (var item in FqcResultDetails) + { + item.FqcID = FqcID; + if (model.StatusNo == "P") + { + item.NgMemo = ""; + item.NgReasonNo = ""; + } + result_detail = await _fqcApi.PostFqcResultDetail(JsonConvert.SerializeObject(item)); + } + if (result_detail.Success) { diff --git a/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs b/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs index 78d22dc5..529755ad 100644 --- a/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs +++ b/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs @@ -2114,9 +2114,9 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES // 目前BarCodeInfo StationID 取得相對應下個流程StationID var rulesByBarCodeInfoStationID = rules.Value.Where(w => w.StationID == barcodeInfo.StationID).ToList(); // 當下個流程 != 目前過站流程 - if (rulesByBarCodeInfoStationID.Where(w => w.RuleStatus == "P" && w.NextStationID == stationID).Count() == 0) + if (rulesByBarCodeInfoStationID.Where(w => w.NextStationID == stationID && w.RuleStatus == barcodeInfo.RuleStatus).Count() == 0) { - var Nextstation = rulesByBarCodeInfoStationID.Where(w => w.RuleStatus == "P").ToList(); + var Nextstation = rulesByBarCodeInfoStationID.Where(w => w.RuleStatus == barcodeInfo.RuleStatus).ToList(); var StationName = Nextstation.Select(s => s.NextStation.StationName).ToArray(); resultModel.Msg = "該內部序號下一個作業站應該是:" + String.Join('、', StationName) + " ,請確認"; return resultModel;