diff --git a/AMESCoreStudio.WebApi/Controllers/AMES/WipBoxController.cs b/AMESCoreStudio.WebApi/Controllers/AMES/WipBoxController.cs index c84a09d..937a825 100644 --- a/AMESCoreStudio.WebApi/Controllers/AMES/WipBoxController.cs +++ b/AMESCoreStudio.WebApi/Controllers/AMES/WipBoxController.cs @@ -145,134 +145,152 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES #endregion try { - if (! string.IsNullOrEmpty(wipBoxDto.ExtraNo)) + var wipInfos = await wipInfosController.GetWipInfoByWipNo(wipBoxDto.WipNo); + + wipInfos = wipInfos.Value.Where(w => w.UnitNO == wipBoxDto.UnitNo).ToList(); + if (wipInfos.Value.Count() > 0) { - var BarcodeInfos = await barcodeInfoesController.GetBarcodeInfoesByExtraNo(wipBoxDto.ExtraNo); - if (BarcodeInfos.Value.Count() == 0) + int wipID = wipInfos.Value.Where(w => w.UnitNO == wipBoxDto.UnitNo).Select(s => s.WipID).FirstOrDefault(); //當前工單ID + var WipNo = wipBoxDto.WipNo; //當前工單 + if (!string.IsNullOrEmpty(wipBoxDto.ExtraNo)) { - BarcodeInfos = await barcodeInfoesController.GetBarcodeInfoesByNo(wipBoxDto.ExtraNo); + var BarcodeInfos = await barcodeInfoesController.GetBarcodeInfoesByExtraNo(wipBoxDto.ExtraNo); + BarcodeInfos = BarcodeInfos.Value.Where(w => w.WipID == wipID).ToList(); + if (BarcodeInfos.Value.Count() == 0) + { + BarcodeInfos = await barcodeInfoesController.GetBarcodeInfoesByNo(wipBoxDto.ExtraNo); - } - if (BarcodeInfos.Value.Count() == 0) - { + } + if (BarcodeInfos.Value.Count() == 0) + { - resultModel.Success = false; - resultModel.Msg = "裝箱失敗 查無序號"; - return resultModel; - } - if (BarcodeInfos.Value.Where(w => w.BoxNo != null).Count() > 0) - { + resultModel.Success = false; + resultModel.Msg = "裝箱失敗 查無序號"; + return resultModel; + } + if (BarcodeInfos.Value.Where(w => w.BoxNo != null).Count() > 0) + { + //查詢該工單若有跟Barcodeinfo 相同的箱號,則為序號已裝箱過(為避免不同制程都有裝箱誤判為已裝箱過) + var WipBOX = await GetWipBoxByWipID(wipID); + WipBOX = WipBOX.Value.Where(w => w.BoxNo == BarcodeInfos.Value.Select(s => s.BoxNo).FirstOrDefault()).ToList(); + if (WipBOX.Value.Count() > 0) + { + resultModel.Success = false; + resultModel.Msg = "裝箱失敗 此序號已裝箱過"; + return resultModel; + } + } - resultModel.Success = false; - resultModel.Msg = "裝箱失敗 此序號已裝箱過"; - return resultModel; } - - } - - var WipInfos = await wipInfosController.GetWipInfoByWipNo(wipBoxDto.WipNo); - int wipID = WipInfos.Value.Where(w=>w.UnitNO == wipBoxDto.UnitNo).Select(s => s.WipID).FirstOrDefault(); //當前工單ID - var WipNo = wipBoxDto.WipNo; //當前工單 - // var BoxCnt = WipInfos.Value.Select(s => s.BoxCNT).FirstOrDefault(); //當前工單單箱入數 - var wipBoxs = await GetWipBoxByWipID(wipID); - - //// 當前箱號 - var NowBoxNo = string.Empty; - if (wipBoxs.Value.Where(w => w.BoxStatus != 0).Count() == 0) - { - //創建新箱號 - if (wipBoxs.Value.Count() == 0) - NowBoxNo = WipNo + "BOX" + "001"; - else + + var wipBoxs = await GetWipBoxByWipID(wipID); + + //// 當前箱號 + var NowBoxNo = string.Empty; + if (wipBoxs.Value.Where(w => w.BoxStatus != 0).Count() == 0) { - NowBoxNo = wipBoxs.Value.OrderByDescending(o => o.BoxNo).Select(s=> s.BoxNo).FirstOrDefault(); - string BoxNoOrder = NowBoxNo.Substring(NowBoxNo.Length - 3, 3); - BoxNoOrder = (int.Parse(BoxNoOrder) + 1).ToString().PadLeft(3, '0'); - NowBoxNo = NowBoxNo.Substring(0, NowBoxNo.Length - 3) + BoxNoOrder; + //創建新箱號 + if (wipBoxs.Value.Count() == 0) + NowBoxNo = WipNo + wipBoxDto.UnitNo + "BOX" + "001"; + else + { + NowBoxNo = wipBoxs.Value.OrderByDescending(o => o.BoxNo).Select(s => s.BoxNo).FirstOrDefault(); + string BoxNoOrder = NowBoxNo.Substring(NowBoxNo.Length - 3, 3); + BoxNoOrder = (int.Parse(BoxNoOrder) + 1).ToString().PadLeft(3, '0'); + NowBoxNo = NowBoxNo.Substring(0, NowBoxNo.Length - 3) + BoxNoOrder; + + } } - } - - else - NowBoxNo = wipBoxs.Value.Where(w => w.BoxStatus != 0).FirstOrDefault().BoxNo; + else + NowBoxNo = wipBoxs.Value.Where(w => w.BoxStatus != 0).FirstOrDefault().BoxNo; - var query_barCode = await barcodeInfoesController.GetBarcodeInfoesByBoxNo(NowBoxNo); - var ByBox = query_barCode.Value.Count().ToString();// 本箱已裝數量 + var query_barCode = await barcodeInfoesController.GetBarcodeInfoesByBoxNo(NowBoxNo); + var ByBox = query_barCode.Value.Count().ToString();// 本箱已裝數量 - - bool checkbox = false; //是否已滿箱需裝箱 - - if (wipBoxDto.CloseBox == "Y") - checkbox = true; - // if (boxQty == BoxCnt) //當滿箱=>自動裝箱=true 改為手動 - // checkbox = true; - // int boxQty = int.Parse(ByBox) + 1; - if (!string.IsNullOrEmpty(wipBoxDto.ExtraNo)) - { - ByBox = (int.Parse(ByBox) + 1).ToString(); - } - var query_wipBox = await GetWipBox(NowBoxNo); - var wipBox = new WipBox - { - WipID = wipID, - BoxNo = NowBoxNo, - BoxCnt = int.Parse(ByBox), - BoxStatus = checkbox ? 0 : 1 - }; - - if (query_wipBox.Value == null) - await PostWipBox(wipBox); - else - { - if (ByBox == "0") - { - resultModel.Success = false; - resultModel.Msg = "目前當前箱號裝箱數為0,無法關箱"; - return resultModel; - } - else + bool checkbox = false; //是否已滿箱需裝箱 + + if (wipBoxDto.CloseBox == "Y") + checkbox = true; + // if (boxQty == BoxCnt) //當滿箱=>自動裝箱=true 改為手動 + // checkbox = true; + // int boxQty = int.Parse(ByBox) + 1; + if (!string.IsNullOrEmpty(wipBoxDto.ExtraNo)) { - wipBox = query_wipBox.Value; - wipBox.BoxCnt = int.Parse(ByBox);//int.Parse(ByBox) + 1; - wipBox.BoxStatus = checkbox ? 0 : 1; - await PutWipBox(wipBox); + ByBox = (int.Parse(ByBox) + 1).ToString(); } - } - if (!string.IsNullOrEmpty(wipBoxDto.ExtraNo)) - { - var BarcodeInfos = await barcodeInfoesController.GetBarcodeInfoesByExtraNo(wipBoxDto.ExtraNo); - var BarcodeInfo = BarcodeInfos.Value.FirstOrDefault(); - BarcodeInfo.BoxNo = NowBoxNo; - await barcodeInfoesController.PutBarcodeInfoes(BarcodeInfo); - } - //若關箱 則自動增加新箱號 - if (checkbox) - { - string BoxNoOrder = NowBoxNo.Substring(NowBoxNo.Length - 3, 3); - BoxNoOrder = (int.Parse(BoxNoOrder) + 1).ToString().PadLeft(3, '0'); - NowBoxNo = NowBoxNo.Substring(0, NowBoxNo.Length - 3) + BoxNoOrder; - var wipBox1 = new WipBox + + var query_wipBox = await GetWipBox(NowBoxNo); + var wipBox = new WipBox { WipID = wipID, BoxNo = NowBoxNo, - BoxCnt = 0, - BoxStatus =1 + BoxCnt = int.Parse(ByBox), + BoxStatus = checkbox ? 0 : 1 }; - - //wipBox.BoxNo = NowBoxNo; - //wipBox.BoxStatus = 1; - //wipBox.BoxCnt = 0; - await PostWipBox(wipBox1); + + if (query_wipBox.Value == null) + await PostWipBox(wipBox); + else + { + if (ByBox == "0") + { + resultModel.Success = false; + resultModel.Msg = "目前當前箱號裝箱數為0,無法關箱"; + return resultModel; + } + else + { + wipBox = query_wipBox.Value; + wipBox.BoxCnt = int.Parse(ByBox);//int.Parse(ByBox) + 1; + wipBox.BoxStatus = checkbox ? 0 : 1; + await PutWipBox(wipBox); + } + } + if (!string.IsNullOrEmpty(wipBoxDto.ExtraNo)) + { + var BarcodeInfos = await barcodeInfoesController.GetBarcodeInfoesByExtraNo(wipBoxDto.ExtraNo); + var BarcodeInfo = BarcodeInfos.Value.FirstOrDefault(); + BarcodeInfo.BoxNo = NowBoxNo; + await barcodeInfoesController.PutBarcodeInfoes(BarcodeInfo); + } + //若關箱 則自動增加新箱號 + if (checkbox) + { + string BoxNoOrder = NowBoxNo.Substring(NowBoxNo.Length - 3, 3); + BoxNoOrder = (int.Parse(BoxNoOrder) + 1).ToString().PadLeft(3, '0'); + NowBoxNo = NowBoxNo.Substring(0, NowBoxNo.Length - 3) + BoxNoOrder; + var wipBox1 = new WipBox + { + WipID = wipID, + BoxNo = NowBoxNo, + BoxCnt = 0, + BoxStatus = 1 + }; + + //wipBox.BoxNo = NowBoxNo; + //wipBox.BoxStatus = 1; + //wipBox.BoxCnt = 0; + await PostWipBox(wipBox1); + } + + resultModel.Success = true; + resultModel.Msg = "裝箱完成"; + return resultModel; + } - - resultModel.Success = true; - resultModel.Msg = "裝箱完成"; - return resultModel; + else + { + resultModel.Success = false; + resultModel.Msg = "制程單位:"+ wipBoxDto.UnitNo + " 查無此工單"; + return resultModel; + } } + catch (Exception ex) {