diff --git a/AMESCoreStudio.WebApi/Controllers/AMES/BarcodeStationController.cs b/AMESCoreStudio.WebApi/Controllers/AMES/BarcodeStationController.cs index afafa7b6..d5b8ff05 100644 --- a/AMESCoreStudio.WebApi/Controllers/AMES/BarcodeStationController.cs +++ b/AMESCoreStudio.WebApi/Controllers/AMES/BarcodeStationController.cs @@ -56,8 +56,8 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES /// // GET: api/BarcodeStation/5 [HttpGet("Key")] - public async Task> GetBarcodeStationByKey(decimal barcodeID, decimal wipID - , decimal ruleStationID, string ruleStatus) + public async Task> GetBarcodeStationByKey(int barcodeID, int wipID + , int ruleStationID, string ruleStatus) { var barcodeStation = await _context.BarcodeStation .Where(w => w.BarcodeID == barcodeID @@ -66,10 +66,10 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES && w.RuleStatus == ruleStatus).FirstOrDefaultAsync(); - if (barcodeStation == null) - { - return NotFound(); - } + //if (barcodeStation == null) + //{ + // return NotFound(); + //} return barcodeStation; } diff --git a/AMESCoreStudio.WebApi/Controllers/AMES/WipClassController.cs b/AMESCoreStudio.WebApi/Controllers/AMES/WipClassController.cs index cb942e01..ceba418a 100644 --- a/AMESCoreStudio.WebApi/Controllers/AMES/WipClassController.cs +++ b/AMESCoreStudio.WebApi/Controllers/AMES/WipClassController.cs @@ -46,6 +46,29 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES return wipClass; } + [HttpGet("Query")] + public async Task>> GetWipClassByData(int wipID, int ruleStationID ,string ruleStatus) + { + IQueryable q = _context.WipClass; + + + if (wipID != 0) + q = q.Where(w => w.WipID == wipID); + + + if (ruleStationID != 0) + q = q.Where(w => w.RuleStationID == ruleStationID); + + if (string.IsNullOrWhiteSpace(ruleStatus)) + q = q.Where(w => w.RuleStatus == ruleStatus); + + + + var result = await q.ToListAsync(); + + return result; + } + /// /// 更新各班別數量資料檔 /// diff --git a/AMESCoreStudio.WebApi/Controllers/AMES/WipTimeController.cs b/AMESCoreStudio.WebApi/Controllers/AMES/WipTimeController.cs index 54319645..5fc62c58 100644 --- a/AMESCoreStudio.WebApi/Controllers/AMES/WipTimeController.cs +++ b/AMESCoreStudio.WebApi/Controllers/AMES/WipTimeController.cs @@ -46,6 +46,26 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES return wipTime; } + [HttpGet("Query")] + public async Task>> GetWipTimeByData(int wipID, int ruleStationID, string ruleStatus) + { + IQueryable q = _context.WipTimes; + + + if (wipID != 0) + q = q.Where(w => w.WipID == wipID); + + + if (ruleStationID != 0) + q = q.Where(w => w.RuleStationID == ruleStationID); + + if (string.IsNullOrWhiteSpace(ruleStatus)) + q = q.Where(w => w.RuleStatus == ruleStatus); + + var result = await q.ToListAsync(); + + return result; + } /// /// 更新工單各站數量資料檔 – By TIME diff --git a/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs b/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs index df148868..1dda28ff 100644 --- a/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs +++ b/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs @@ -352,7 +352,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES string Msg = string.Empty; if (!Table_BarcodeInfo(barCodeCheckDto).Result.Success) { - + } if (!Table_BarcodeStation(barCodeCheckDto).Result.Success) @@ -379,11 +379,6 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES { } - - if (!Table_BarcodeInfo(barCodeCheckDto).Result.Success) - { - - } } /// @@ -500,17 +495,39 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES private async Task> Table_WipStation(BarCodeCheckDto barCodeCheckDto) { WipStationController wipStationController = new WipStationController(_context); - - var wipStation = new WipStation + var wipStation = new WipStation(); + var resut = new ResultModel(); + // 判斷是否有資料 + var queryWipStation = await wipStationController.GetWipStation4QRS009(barCodeCheckDto.wipID, barCodeCheckDto.ruleStationID); + wipStation = queryWipStation.Value.Where(w => w.RuleStatus == barCodeCheckDto.ruleStatus + && w.CreateDate.ToString("yyyy/MM/dd") == DateTime.Now.ToString("yyyy/MM/dd")) + .FirstOrDefault(); + // 有資料加1 後續判斷第一次過站 + if (wipStation != null) + { + BarcodeStationController barcodeStationController = new BarcodeStationController(_context); + var barcodeStation = await barcodeStationController.GetBarcodeStationByKey(barCodeCheckDto.barcodeID, + barCodeCheckDto.wipID, barCodeCheckDto.ruleStationID, barCodeCheckDto.ruleStatus); + if (barcodeStation.Value == null) + { + wipStation.FirstCnt += 1; + } + wipStation.PassCnt += 1; + resut = await wipStationController.PutWipStation(wipStation); + } + else { - WipID = barCodeCheckDto.wipID, - RuleStatus = barCodeCheckDto.ruleStatus, - RuleStationID = barCodeCheckDto.ruleStationID, - FirstCnt = 1, - PassCnt = 1, - }; - - return await wipStationController.PostWipStation(wipStation); + wipStation = new WipStation + { + WipID = barCodeCheckDto.wipID, + RuleStatus = barCodeCheckDto.ruleStatus, + RuleStationID = barCodeCheckDto.ruleStationID, + FirstCnt = 1, + PassCnt = 1 + }; + resut = await wipStationController.PostWipStation(wipStation); + } + return resut; } /// @@ -519,28 +536,61 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES /// private async Task> Table_WipClass(BarCodeCheckDto barCodeCheckDto) { + WipClassController wipClassController = new WipClassController(_context); + var wipClass = new WipClass(); + var resut = new ResultModel(); + // 取ClassID int ClassID = 0; ClassInfoesController classInfoesController = new ClassInfoesController(_context); var classInfo = await classInfoesController.GetClassInfoByUnit(barCodeCheckDto.unitNo); if (classInfo.Value.Count() != 0) { - //ClassID = classInfo.Value.Where(w => w.) + var ID = classInfo.Value.Where(w => string.Compare(w.BeginTime, DateTime.Now.ToString("HH:mm:ss")) <= 0 + && string.Compare(w.EndTime, DateTime.Now.ToString("HH:mm:ss")) >= 0) + .FirstOrDefault(); + if (ID != null) + { + ClassID = ID.ClassID; + } } - WipClassController wipClassController = new WipClassController(_context); - - var wipClass = new WipClass + if (ClassID != 0) { - WipID = barCodeCheckDto.wipID, - ClassID = ClassID, - RuleStatus = barCodeCheckDto.ruleStatus, - RuleStationID = barCodeCheckDto.ruleStationID, - FirstCnt = 1, - PassCnt = 1, - }; + // 判斷是否有資料 + var queryWipClass = await wipClassController.GetWipClassByData(barCodeCheckDto.wipID, barCodeCheckDto.ruleStationID, barCodeCheckDto.ruleStatus); + queryWipClass = queryWipClass.Value.Where(w => w.CreateDate.ToString("yyyy/MM/dd") == DateTime.Now.ToString("yyyy/MM/dd")).ToList(); + + // 有資料加1 後續判斷第一次過站 + if (queryWipClass.Value.Where(w => w.ClassID == ClassID).Any()) + { + wipClass = queryWipClass.Value.FirstOrDefault(); + BarcodeStationController barcodeStationController = new BarcodeStationController(_context); + var barcodeStation = await barcodeStationController.GetBarcodeStationByKey(barCodeCheckDto.barcodeID, + barCodeCheckDto.wipID, barCodeCheckDto.ruleStationID, barCodeCheckDto.ruleStatus); + if (barcodeStation.Value == null) + { + wipClass.FirstCnt += 1; + } + wipClass.PassCnt += 1; + resut = await wipClassController.PutWipClass(wipClass); + } + else + { + wipClass = new WipClass + { + WipID = barCodeCheckDto.wipID, + RuleStatus = barCodeCheckDto.ruleStatus, + RuleStationID = barCodeCheckDto.ruleStationID, + ClassID = ClassID, + FirstCnt = 1, + PassCnt = 1 + }; + resut = await wipClassController.PostWipClass(wipClass); + } + } - return await wipClassController.PostWipClass(wipClass); + return resut; } /// @@ -549,28 +599,62 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES /// private async Task> Table_WipTime(BarCodeCheckDto barCodeCheckDto) { - // SegmentID + WipTimeController wipTimeController = new WipTimeController(_context); + var wipTime = new WipTime(); + var resut = new ResultModel(); + + // 取SegmentID int SegmentID = 0; TimeSegmentsController timeSegmentsController = new TimeSegmentsController(_context); var timeSegment = await timeSegmentsController.GetTimeSegment(); if (timeSegment.Value.Count() != 0) { - //ClassID = classInfo.Value.Where(w => w.) + var ID = timeSegment.Value.Where(w => string.Compare(w.StartTime, DateTime.Now.ToString("HH:mm:ss")) <= 0 + && string.Compare(w.EndTime, DateTime.Now.ToString("HH:mm:ss")) >= 0) + .FirstOrDefault(); + + if (ID != null) + { + SegmentID = ID.SegmentID; + } } - WipTimeController wipTimeController = new WipTimeController(_context); - var wipTime = new WipTime + if (SegmentID != 0) { - WipID = barCodeCheckDto.wipID, - SegmentID = SegmentID, - RuleStatus = barCodeCheckDto.ruleStatus, - RuleStationID = barCodeCheckDto.ruleStationID, - FirstCnt = 1, - PassCnt = 1, - }; + // 判斷是否有資料 + var queryWipTime = await wipTimeController.GetWipTimeByData(barCodeCheckDto.wipID, barCodeCheckDto.ruleStationID, barCodeCheckDto.ruleStatus); + queryWipTime = queryWipTime.Value.Where(w => w.CreateDate.ToString("yyyy/MM/dd") == DateTime.Now.ToString("yyyy/MM/dd")).ToList(); + // 有資料加1 後續判斷第一次過站 + if (queryWipTime.Value.Where(w => w.SegmentID == SegmentID).Any()) + { + wipTime = queryWipTime.Value.FirstOrDefault(); + BarcodeStationController barcodeStationController = new BarcodeStationController(_context); + var barcodeStation = await barcodeStationController.GetBarcodeStationByKey(barCodeCheckDto.barcodeID, + barCodeCheckDto.wipID, barCodeCheckDto.ruleStationID, barCodeCheckDto.ruleStatus); + if (barcodeStation.Value == null) + { + wipTime.FirstCnt += 1; + } + wipTime.PassCnt += 1; + resut = await wipTimeController.PutWipTime(wipTime); + } + else + { + wipTime = new WipTime + { + WipID = barCodeCheckDto.wipID, + RuleStatus = barCodeCheckDto.ruleStatus, + RuleStationID = barCodeCheckDto.ruleStationID, + SegmentID = SegmentID, + FirstCnt = 1, + PassCnt = 1 + }; + resut = await wipTimeController.PostWipTime(wipTime); + } + } - return await wipTimeController.PostWipTime(wipTime); + return resut; } #endregion @@ -1310,7 +1394,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES /// BarCodeID /// 目前作業站ID /// true:false - private async Task GetBarCodeLastStopRuleStationID(int wipID,int barCodeID ,int stationID) + private async Task GetBarCodeLastStopRuleStationID(int wipID, int barCodeID, int stationID) { ResultModel resultModel = new ResultModel { Success = false }; WipInfosController wipInfosController = new WipInfosController(_context); @@ -1332,12 +1416,12 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES BarcodeInfoesController barcodeInfoesController = new BarcodeInfoesController(_context); var barcodeInfo = barcodeInfoesController.GetBarcodeInfoes(barCodeID).Result.Value.FirstOrDefault(); - if (ruleSations.Where(w => w.RuleStationID == barcodeInfo.RuleStationID + if (ruleSations.Where(w => w.RuleStationID == barcodeInfo.RuleStationID && w.RuleStatus == barcodeInfo.RuleStatus).Count() == 0 ) { - resultModel.Msg = "找不到上一個作業站過站紀錄,請確認"; - return resultModel; + resultModel.Msg = "找不到上一個作業站過站紀錄,請確認"; + return resultModel; } } resultModel.Success = true; diff --git a/其他專案資料/AMES_AP/AMES_AP/StockControlForm.cs b/其他專案資料/AMES_AP/AMES_AP/StockControlForm.cs index ddb6fc14..409e34da 100644 --- a/其他專案資料/AMES_AP/AMES_AP/StockControlForm.cs +++ b/其他專案資料/AMES_AP/AMES_AP/StockControlForm.cs @@ -180,7 +180,7 @@ namespace AMES_AP { if (e.KeyCode == Keys.Enter) { - var query_barCode = ApiHelper.GetMethod($"api/BqarcodeInfoes/No/{BarCodeNo.Text}"); + var query_barCode = ApiHelper.GetMethod($"api/BarcodeInfoes/No/{BarCodeNo.Text}"); if (query_barCode == "error" || query_barCode == "無法連線WebAPI") { MessageBox.Show(query_barCode); @@ -217,7 +217,7 @@ namespace AMES_AP } // 重新抓取BarCodeInfo - query_barCode = ApiHelper.GetMethod($"api/BqarcodeInfoes/No/{BarCodeNo.Text}"); + query_barCode = ApiHelper.GetMethod($"api/BarcodeInfoes/No/{BarCodeNo.Text}"); barcodeInfos = JsonConvert.DeserializeObject>(query_barCode).FirstOrDefault(); barcodeInfos.BoxNo = NowBoxNo.Text;