diff --git a/AMESCoreStudio.Web/Controllers/PCSController.cs b/AMESCoreStudio.Web/Controllers/PCSController.cs index ed02b258..973486cb 100644 --- a/AMESCoreStudio.Web/Controllers/PCSController.cs +++ b/AMESCoreStudio.Web/Controllers/PCSController.cs @@ -3478,7 +3478,7 @@ namespace AMESCoreStudio.Web.Controllers model.MaterialStationsItems = model.MaterialStationsItems.Where(w => w.RuleStationID == model.RuleStation).OrderBy(o => o.StationsItemSeq).ToList(); if (model.MaterialStationsItems.Count() == 0) { - ModelState.AddModelError("error", "找不到該站別作業工項"); + //ModelState.AddModelError("error", "找不到該站別作業工項"); } // 治具 @@ -3636,7 +3636,8 @@ namespace AMESCoreStudio.Web.Controllers { inputType = KeyPartItem.Input.Contains("$") ? "NG" : model.WipKps[i - 1 + KpItemQty].KpNo, inputData = KeyPartItem.Input, - oldInputData = KeyPartItem.InputNo + oldInputData = KeyPartItem.InputNo, + kpItemNo = KeyPartItem.Input.Contains("$") ? "" : model.WipKps[i - 1 + KpItemQty].KpName }); } diff --git a/AMESCoreStudio.Web/Views/PCS/PCS021.cshtml b/AMESCoreStudio.Web/Views/PCS/PCS021.cshtml index 85ca4d4d..befca101 100644 --- a/AMESCoreStudio.Web/Views/PCS/PCS021.cshtml +++ b/AMESCoreStudio.Web/Views/PCS/PCS021.cshtml @@ -42,6 +42,16 @@ .layui-form-item { margin-bottom: auto; } + + .barcodeInput { + border: 2px solid #090; + color: blue; + } + + .barcodeInput:focus { + border: 3px solid #0026ff; + color: blue; + } @@ -128,7 +138,7 @@ event.preventDefault(); return false; }" asp-for="InputNo" id="inputNo" style="width:100px" class="layui-input" autocomplete="off" placeholder="可輸入異常位置" />
- +
@*@Html.ValidationMessage("error")*@ @@ -382,7 +392,7 @@ else { if (result.msg.length != 0) - { parent.hg.msg(result.msg); } + { parent.hg.msghide(result.msg); } if (result.data.length != 0) { // 新增資料 diff --git a/AMESCoreStudio.WebApi/Controllers/AMES/WipKpsController.cs b/AMESCoreStudio.WebApi/Controllers/AMES/WipKpsController.cs index f727e8c6..24a7ee52 100644 --- a/AMESCoreStudio.WebApi/Controllers/AMES/WipKpsController.cs +++ b/AMESCoreStudio.WebApi/Controllers/AMES/WipKpsController.cs @@ -91,7 +91,6 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES _context.Entry(wipKp).Property("CreateDate").IsModified = false; _context.Entry(wipKp).Property("CreateUserID").IsModified = false; wipKp.UpdateDate = DateTime.Now; - wipKp.UpdateUserID = 0; try { @@ -120,7 +119,6 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES var resultWipKp = GetWipKp(wipKp.WipKpID).Result.Value; _context.Entry(resultWipKp).State = EntityState.Modified; resultWipKp.UpdateDate = DateTime.Now; - resultWipKp.UpdateUserID = 0; try { diff --git a/AMESCoreStudio.WebApi/Controllers/AMES/WipLabelController.cs b/AMESCoreStudio.WebApi/Controllers/AMES/WipLabelController.cs index e3074cbf..49aee80e 100644 --- a/AMESCoreStudio.WebApi/Controllers/AMES/WipLabelController.cs +++ b/AMESCoreStudio.WebApi/Controllers/AMES/WipLabelController.cs @@ -152,7 +152,6 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES _context.Entry(wipLabel).Property("CreateDate").IsModified = false; _context.Entry(wipLabel).Property("CreateUserID").IsModified = false; wipLabel.UpdateDate = DateTime.Now; - wipLabel.UpdateUserID = 0; } else { diff --git a/AMESCoreStudio.WebApi/Controllers/AMES/WipLockController.cs b/AMESCoreStudio.WebApi/Controllers/AMES/WipLockController.cs index 03890813..d2d9e783 100644 --- a/AMESCoreStudio.WebApi/Controllers/AMES/WipLockController.cs +++ b/AMESCoreStudio.WebApi/Controllers/AMES/WipLockController.cs @@ -249,8 +249,6 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES ResultModel result = new ResultModel(); Helper helper = new Helper(_context); wiplock.WipLockID = helper.GetIDKey("WIP_LOCK_ID").Result; - wiplock.UnLockUserID = 0; - _context.WipLocks.Add(wiplock); try { @@ -276,7 +274,6 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES ResultModel result = new ResultModel(); _context.WipLocks.Attach(wiplock); wiplock.LockStatus = "1"; - wiplock.UnLockUserID = 0; wiplock.UnLockDate = DateTime.Now; // 指定更新某個欄位 _context.Entry(wiplock).Property(p => p.UnLockReason).IsModified = true; diff --git a/AMESCoreStudio.WebApi/Controllers/AMES/WipOutfitController.cs b/AMESCoreStudio.WebApi/Controllers/AMES/WipOutfitController.cs index 9755b32b..c1f42c92 100644 --- a/AMESCoreStudio.WebApi/Controllers/AMES/WipOutfitController.cs +++ b/AMESCoreStudio.WebApi/Controllers/AMES/WipOutfitController.cs @@ -93,7 +93,6 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES _context.Entry(wipOutfit).Property("CreateDate").IsModified = false; _context.Entry(wipOutfit).Property("CreateUserID").IsModified = false; wipOutfit.UpdateDate = DateTime.Now; - wipOutfit.UpdateUserID = 0; try { diff --git a/AMESCoreStudio.WebApi/Controllers/AMES/WipSopController.cs b/AMESCoreStudio.WebApi/Controllers/AMES/WipSopController.cs index 413d6f72..239bfac7 100644 --- a/AMESCoreStudio.WebApi/Controllers/AMES/WipSopController.cs +++ b/AMESCoreStudio.WebApi/Controllers/AMES/WipSopController.cs @@ -130,8 +130,6 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES _context.Entry(wipSop).Property("CreateDate").IsModified = false; _context.Entry(wipSop).Property("CreateUserID").IsModified = false; wipSop.UpdateDate = DateTime.Now; - wipSop.UpdateUserID = 0; - try { await _context.SaveChangesAsync(); diff --git a/AMESCoreStudio.WebApi/Controllers/AMES/WipSystemController.cs b/AMESCoreStudio.WebApi/Controllers/AMES/WipSystemController.cs index 8e7dc1a8..acef1c3a 100644 --- a/AMESCoreStudio.WebApi/Controllers/AMES/WipSystemController.cs +++ b/AMESCoreStudio.WebApi/Controllers/AMES/WipSystemController.cs @@ -119,7 +119,6 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES _context.Entry(wipSystem).Property("CreateDate").IsModified = false; _context.Entry(wipSystem).Property("CreateUserID").IsModified = false; wipSystem.UpdateDate = DateTime.Now; - wipSystem.UpdateUserID = 0; } else { diff --git a/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs b/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs index e74d58d9..769f33b2 100644 --- a/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs +++ b/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs @@ -274,8 +274,8 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES // 判斷是否符合區間 if (KPs.inputData.Length == 12) { - if (!(Convert.ToInt32(wipMAC.Value.StartNO, 16) <= Convert.ToInt32(KPs.inputData.Substring(7, 6), 16) - && Convert.ToInt32(KPs.inputData.Substring(7, 6), 16) <= Convert.ToInt32(wipMAC.Value.EndNO, 16))) + if (!(Convert.ToInt32(wipMAC.Value.StartNO, 16) <= Convert.ToInt32(KPs.inputData.Substring(6, 6), 16) + && Convert.ToInt32(KPs.inputData.Substring(6, 6), 16) <= Convert.ToInt32(wipMAC.Value.EndNO, 16))) { resultModel.Msg += "組件序號【" + KPs.inputData + "】 與工單設定MAC區間不符合
"; } @@ -329,8 +329,12 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES //var NextStopCloseStation = await CheckNextStopCloseStation(barCodeCheckDto.wipNo, barCodeCheckDto.unitNo, barCodeCheckDto.station); - #region 判斷下一站為完工時.組件是否都有資料 - if (CheckNextStopCloseStation(barCodeCheckDto.wipNo, barCodeCheckDto.unitNo, barCodeCheckDto.station).Result.Success) + #region 判斷為CHECK站.組件是否都有資料 + // 判斷作業站是否為燒機站 + StationsesController stationsesController = new StationsesController(_context); + var station = await stationsesController.GetStations(barCodeCheckDto.station); + if (station.Value.Where(w => w.TypeNo == "C").Any()) + //if (CheckNextStopCloseStation(barCodeCheckDto.wipNo, barCodeCheckDto.unitNo, barCodeCheckDto.station).Result.Success) { // 過站輸入組件數量 var inputKPQty = barCodeCheckDto.inputItems.Where(w => !w.inputData.Contains("$")).Count(); @@ -345,7 +349,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES if (wipKpQty != inputKPQty + BarCodeItemsQty) { resultModel.Success = false; - resultModel.Msg = "該作業站為流程最後最後一站,組件資料筆數不符,請確認"; + resultModel.Msg = "組件資料筆數不符,請確認"; return resultModel; } } @@ -666,7 +670,8 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES SysType = "S", CreateUserID = barCodeCheckDto.userID, CreateDate = DateTime.Now, - UpdateDate = DateTime.Now + UpdateDate = DateTime.Now, + KpItemNo = KeyPartsItem[i].kpItemNo }; result = await barcodeItemsController.PostBarcodeItems(barcodeItem); if (!result.Success) @@ -773,7 +778,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES if (item != null) { item.FinishTime = DateTime.Now; - item.OutUserID = 1; + item.OutUserID = model.userID; item.UpdateDate = DateTime.Now; item.UpdateUserID = model.userID; result = await burnInfoeController.PutBurnInfo(item); @@ -788,7 +793,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES BurnPlanHour = PlanHour, StartTime = DateTime.Now, ScheduleFinishTime = DateTime.Now.AddMinutes((double)PlanHour), - InUserID = 0, + InUserID = model.userID, Status = 0, CreateUserID = model.userID, UpdateUserID = model.userID @@ -1085,11 +1090,12 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES /// 生產單位 /// 線別 /// 流程 + /// 作業站ID /// [HttpGet("CheckWipNoSation")] - public IActionResult GetCheckWipNoSation(string wipno, string unitno, int line, int flowrule) + public IActionResult GetCheckWipNoSation(string wipno, string unitno, int line, int flowrule, int stationID) { - var result = CheckWipNoSationAsync(wipNo: wipno, unitNo: unitno, flowRuleID: flowrule, line: line); + var result = CheckWipNoSationAsync(wipNo: wipno, unitNo: unitno, flowRuleID: flowrule, line: line, station: stationID); return Ok(result.Result); } @@ -1452,36 +1458,53 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES return resultModel; } + if (!WipNoItem.Where(w => w.LineID == line).Any()) { resultModel.Msg = "工單號碼【" + wipNo + "】,尚未設定此線別"; return resultModel; } + + if (WipNoItem.Where(w => w.StatusNO == "E").Any()) { resultModel.Msg = "工單號碼【" + wipNo + "】,該工單已經投入完工,請切換工單"; return resultModel; } - int WipID = WipNoItem.FirstOrDefault().WipID; - LineInfoesController lineInfoesController = new LineInfoesController(_context); - var q2 = await lineInfoesController.GetLineInfoByWipID(WipID); - if (!q2.Value.Where(w => w.LineID == line).Any()) + // 判斷是否是投入站 + var RuleStation = await _context.RuleStations.Where(w => w.FlowRuleID == flowRuleID && w.StationID == station) + .FirstOrDefaultAsync(); + if (RuleStation != null) { - resultModel.Msg = "工單號碼【" + wipNo + "】,工單尚未開線,不可過站"; - return resultModel; + if (RuleStation.Sequence == 1) + { + int WipID = WipNoItem.FirstOrDefault().WipID; + LineInfoesController lineInfoesController = new LineInfoesController(_context); + var q2 = await lineInfoesController.GetLineInfoByWipID(WipID); + if (!q2.Value.Where(w => w.LineID == line).Any()) + { + resultModel.Msg = "工單號碼【" + wipNo + "】,工單尚未開線,不可過站"; + return resultModel; + } + } } // 該筆工單號碼鎖定 WipLockController wipLockController = new WipLockController(_context); var q3 = await wipLockController.GetWipLockByWipNO(wipNo); - if (q3.Data.Where(w => w.LockStatus == "0" && w.StationID == station).Any()) + if (q3.Data.Where(w => w.LockStatus == "0" && w.StationID == 0).Any()) + { + resultModel.Msg = "工單號碼【" + wipNo + "】,已被鎖定,不可過站"; + return resultModel; + } + // StationID = 0 代表批次鎖定 + else if (q3.Data.Where(w => w.LockStatus == "0" && w.StationID == station).Any()) { resultModel.Msg = "工單號碼【" + wipNo + "】,工單在當前站別被鎖定,不可過站"; return resultModel; } - resultModel.Success = true; return resultModel; } diff --git a/AMESCoreStudio.WebApi/DTO/BLL/BarCodeCheckDto.cs b/AMESCoreStudio.WebApi/DTO/BLL/BarCodeCheckDto.cs index d05777fb..a71e2252 100644 --- a/AMESCoreStudio.WebApi/DTO/BLL/BarCodeCheckDto.cs +++ b/AMESCoreStudio.WebApi/DTO/BLL/BarCodeCheckDto.cs @@ -103,7 +103,7 @@ namespace AMESCoreStudio.WebApi.DTO.AMES public string extNo { get; set; } = string.Empty; /// - /// UserID + /// 過站UserID /// [DataMember] public int userID { get; set; } = 0; @@ -132,6 +132,12 @@ namespace AMESCoreStudio.WebApi.DTO.AMES /// [DataMember] public string oldInputData { get; set; } + + /// + /// 組件:組件料號 NG: + /// + [DataMember] + public string kpItemNo { get; set; } } ///