diff --git a/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs b/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs
index 155c75a0..8ef1b85c 100644
--- a/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs
+++ b/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs
@@ -159,6 +159,10 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
}
#endregion
+ #region 治具判斷
+
+
+ #endregion
// 維修過站 組件需獨立判斷
@@ -448,6 +452,11 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
}
+ //if (!Table_BarcodeOutfit(barCodeCheckDto).Result.Success)
+ //{
+
+ //}
+
if (!Table_NgInfo(barCodeCheckDto).Result.Success)
{
@@ -539,7 +548,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
}
///
- /// NgInfo-組件资料
+ /// BarcodeItem-組件资料
///
///
///
@@ -569,6 +578,36 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
return resut;
}
+ ///
+ /// BarcodeOutfit-治具资料
+ ///
+ ///
+ ///
+ private async Task> Table_BarcodeOutfit(BarCodeCheckDto barCodeCheckDto)
+ {
+ BarcodeOutfitController barcodeOutfitController = new BarcodeOutfitController(_context);
+ var OutfitsItem = barCodeCheckDto.outfits;
+ var resut = new ResultModel();
+ // 新增 BarCodeStation
+ foreach (var item in OutfitsItem)
+ {
+ var barcodeOutfit = new BarcodeOutfit
+ {
+ BarcodeNo = barCodeCheckDto.barcode,
+ WipNo = barCodeCheckDto.wipNo,
+ OutfitNo = item.inputData,
+ StationID = barCodeCheckDto.station,
+ CreateUserID = 0,
+ CreateDate = DateTime.Now,
+ UpdateUserID = 0,
+ UpdateDate = DateTime.Now
+ };
+ await barcodeOutfitController.PostBarcodeOutfit(barcodeOutfit);
+ }
+
+ return resut;
+ }
+
///
/// NgInfo-測試不良基本資料檔
///
@@ -1263,168 +1302,198 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
public async Task CheckBarCodeKPAsync([FromQuery] BarcodeItemKPDto barcodeItemKPDto)
{
ResultModel resultModel = new ResultModel { Success = false };
-
- #region 判斷是否有工單
- WipInfosController wipInfosController = new WipInfosController(_context);
- var q = await wipInfosController.GetWipInfoByWipNo(barcodeItemKPDto.WipNo);
- q = q.Value.Where(w => w.UnitNO == barcodeItemKPDto.unitNo).ToList();
- if (q.Value.Count() == 0)
- {
- resultModel.Msg = "找不到工單號碼【" + barcodeItemKPDto.WipNo + "】";
- return resultModel;
- }
- #endregion
-
- #region 判斷是否有輸入工單料號
- WipAttsController wipAttsController = new WipAttsController(_context);
- string ItemNo = (await wipAttsController.GetWipAtt(q.Value.FirstOrDefault().WipNO)).Value.ItemNO;
- if (string.IsNullOrWhiteSpace(ItemNo))
- {
- resultModel.Msg = "工單號碼【" + barcodeItemKPDto.WipNo + "】,找不到料號名稱";
- return resultModel;
- }
- #endregion
-
- #region 判斷工單料號是否有在料號基本檔
- MaterialItemController materialItemController = new MaterialItemController(_context);
- var MaterialItem = await materialItemController.GetMaterialItemByItemNO(ItemNo);
- if (MaterialItem == null)
- {
- resultModel.Msg = "料號【" + ItemNo + "】,在料號基本資料檔找不到";
- return resultModel;
- }
- #endregion
-
- #region 確認是否有設定key Parts資料
- WipKpsController wipKpsController = new WipKpsController(_context);
- var wipKps = (await wipKpsController.GetWipKpByWipNo(barcodeItemKPDto.WipNo)).Value.ToList();
- wipKps = wipKps.Where(w => w.UnitNo == barcodeItemKPDto.unitNo).OrderBy(o => o.KpSeq).ToList();
- if (wipKps.Count != 0)
+ try
{
- #region 判斷內部序號是否有過站紀錄
- var BarCodeID = await BarCodeToID(barcodeItemKPDto.barcode);
- //if (BarCodeID == 0)
- //{
- // resultModel.Msg = "內部序號【" + barcode + "】,在條碼資料檔找不到";
- // return resultModel;
- //}
- #endregion
-
- #region 判斷組件序號是否有紀錄
- BarcodeItemsController barcodeItemsController = new BarcodeItemsController(_context);
- var BarCodeItems = (await barcodeItemsController.GetBarcodeItemByBarCodeID(BarCodeID)).Value.ToList();
- BarCodeItems = BarCodeItems.Where(w => w.WipID == q.Value.FirstOrDefault().WipID).ToList();
+ #region 判斷是否有工單
+ WipInfosController wipInfosController = new WipInfosController(_context);
+ var q = await wipInfosController.GetWipInfoByWipNo(barcodeItemKPDto.WipNo);
+ q = q.Value.Where(w => w.UnitNO == barcodeItemKPDto.unitNo).ToList();
+ if (q.Value.Count() == 0)
+ {
+ resultModel.Msg = "找不到工單號碼【" + barcodeItemKPDto.WipNo + "】";
+ return resultModel;
+ }
#endregion
- // 計算過站時刷的組件數量與已經存BarCodeItems
- var KPQty = barcodeItemKPDto.inputKP.Count + BarCodeItems.Count;
- #region 刷入組件數量超過
- if (KPQty > wipKps.Count)
+ #region 判斷是否有輸入工單料號
+ WipAttsController wipAttsController = new WipAttsController(_context);
+ string ItemNo = (await wipAttsController.GetWipAtt(q.Value.FirstOrDefault().WipNO)).Value.ItemNO;
+ if (string.IsNullOrWhiteSpace(ItemNo))
{
- resultModel.Msg = "組件數量已刷超過設定數量,請確認";
+ resultModel.Msg = "工單號碼【" + barcodeItemKPDto.WipNo + "】,找不到料號名稱";
return resultModel;
}
#endregion
- #region 比對組件資料
- var CheckMsg = string.Empty;
- int x = BarCodeItems.Count;
+ #region 判斷工單料號是否有在料號基本檔
+ MaterialItemController materialItemController = new MaterialItemController(_context);
+ var MaterialItem = await materialItemController.GetMaterialItemByItemNO(ItemNo);
+ if (MaterialItem == null)
+ {
+ resultModel.Msg = "料號【" + ItemNo + "】,在料號基本資料檔找不到";
+ return resultModel;
+ }
#endregion
- for (int i = 0; i < barcodeItemKPDto.inputKP.Count; i++)
+ #region 確認是否有設定key Parts資料
+ WipKpsController wipKpsController = new WipKpsController(_context);
+ var wipKps = (await wipKpsController.GetWipKpByWipNo(barcodeItemKPDto.WipNo)).Value.ToList();
+ wipKps = wipKps.Where(w => w.UnitNo == barcodeItemKPDto.unitNo).OrderBy(o => o.KpSeq).ToList();
+ if (wipKps.Count != 0)
{
- #region 比對序號長度是否正確
- if (!string.IsNullOrWhiteSpace(wipKps[x + i].Length.ToString()))
- {
- if (wipKps[x + i].Length != barcodeItemKPDto.inputKP[i].Length)
- CheckMsg += "組件序號【" + barcodeItemKPDto.inputKP[i] + "】 與組件名稱【" + wipKps[x + i].KpName + "】長度不符合";
- }
+ #region 判斷內部序號是否有過站紀錄
+ var BarCodeID = await BarCodeToID(barcodeItemKPDto.barcode);
+ //if (BarCodeID == 0)
+ //{
+ // resultModel.Msg = "內部序號【" + barcode + "】,在條碼資料檔找不到";
+ // return resultModel;
+ //}
#endregion
- #region 前置碼正確
- if (!string.IsNullOrWhiteSpace(wipKps[x + i].Title))
- {
- if (!barcodeItemKPDto.inputKP[i].ToUpper().StartsWith(wipKps[x + i].Title.ToUpper()))
- CheckMsg += "組件序號【" + barcodeItemKPDto.inputKP[i] + "】 與組件名稱【" + wipKps[x + i].Title + "】前置碼不符合";
- }
+ #region 判斷組件序號是否有紀錄
+ BarcodeItemsController barcodeItemsController = new BarcodeItemsController(_context);
+ var BarCodeItems = (await barcodeItemsController.GetBarcodeItemByBarCodeID(BarCodeID)).Value.ToList();
+ BarCodeItems = BarCodeItems.Where(w => w.WipID == q.Value.FirstOrDefault().WipID).ToList();
#endregion
- #region 組件代碼-組件序號是否重複
- var checkDataRedundancy = await barcodeItemsController.GetBarcodeItemByDataRedundancy(wipKps[x + i].KpNo, barcodeItemKPDto.inputKP[i]);
- if (checkDataRedundancy.Value.Count() != 0)
+ // 計算過站時刷的組件數量與已經存BarCodeItems
+ var KPQty = barcodeItemKPDto.inputKP.Count + BarCodeItems.Count;
+ #region 刷入組件數量超過
+ if (KPQty > wipKps.Count)
{
- CheckMsg += "組件名稱【" + wipKps[x + i].KpName + "】已有相同組件序號【" + barcodeItemKPDto.inputKP[i] + "】紀錄 ";
+ resultModel.Msg = "組件數量已刷超過設定數量,請確認";
+ return resultModel;
}
#endregion
- #region 判斷組件序號是否在製狀態
- if (wipKps[x + i].KpNo.ToUpper() == "04")
+ #region 比對組件資料
+ var CheckMsg = string.Empty;
+ int x = BarCodeItems.Count;
+ #endregion
+
+ for (int i = 0; i < barcodeItemKPDto.inputKP.Count; i++)
{
- BarcodeInfoesController barcodeInfoesController = new BarcodeInfoesController(_context);
- var BarCodeInfo = await barcodeInfoesController.GetBarcodeInfoesByNo(barcodeItemKPDto.inputKP[i]);
- if (BarCodeInfo.Value.Where(w => w.StatusID != -1).Any())
+ #region 比對序號長度是否正確
+ if (!string.IsNullOrWhiteSpace(wipKps[x + i].Length.ToString()))
{
- CheckMsg += "組件序號【" + barcodeItemKPDto.inputKP[i] + "】 目前是在製狀態";
+ if (wipKps[x + i].Length != barcodeItemKPDto.inputKP[i].Length)
+ CheckMsg += "組件序號【" + barcodeItemKPDto.inputKP[i] + "】 與組件名稱【" + wipKps[x + i].KpName + "】長度不符合";
}
- }
- #endregion
+ #endregion
- #region 判斷MAC區間
- if (wipKps[x + i].KpNo.ToUpper() == "94")
- {
- WipMACController wipMACController = new WipMACController(_context);
- var wipMAC = await wipMACController.GetWipMAC(barcodeItemKPDto.WipNo);
- if (wipMAC.Value == null)
+ #region 前置碼正確
+ if (!string.IsNullOrWhiteSpace(wipKps[x + i].Title))
+ {
+ if (!barcodeItemKPDto.inputKP[i].ToUpper().StartsWith(wipKps[x + i].Title.ToUpper()))
+ CheckMsg += "組件序號【" + barcodeItemKPDto.inputKP[i] + "】 與組件名稱【" + wipKps[x + i].Title + "】前置碼不符合";
+ }
+ #endregion
+
+ #region 組件代碼-組件序號是否重複
+ var checkDataRedundancy = await barcodeItemsController.GetBarcodeItemByDataRedundancy(wipKps[x + i].KpNo, barcodeItemKPDto.inputKP[i]);
+ if (checkDataRedundancy.Value.Count() != 0)
+ {
+ CheckMsg += "組件名稱【" + wipKps[x + i].KpName + "】已有相同組件序號【" + barcodeItemKPDto.inputKP[i] + "】紀錄 ";
+ }
+ #endregion
+
+ #region 判斷組件序號是否在製狀態
+ if (wipKps[x + i].KpNo.ToUpper() == "04")
{
- CheckMsg += "工單號碼【" + barcodeItemKPDto.WipNo + "】 找不到綁定MAC區間";
+ BarcodeInfoesController barcodeInfoesController = new BarcodeInfoesController(_context);
+ var BarCodeInfo = await barcodeInfoesController.GetBarcodeInfoesByNo(barcodeItemKPDto.inputKP[i]);
+ if (BarCodeInfo.Value.Where(w => w.StatusID != -1).Any())
+ {
+ CheckMsg += "組件序號【" + barcodeItemKPDto.inputKP[i] + "】 目前是在製狀態";
+ }
}
- else
+ #endregion
+
+ #region 判斷MAC區間
+ if (wipKps[x + i].KpNo.ToUpper() == "94")
{
- // 判斷MAC前置碼是否一樣
- if (!barcodeItemKPDto.inputKP[i].StartsWith(wipMAC.Value.Title))
+ WipMACController wipMACController = new WipMACController(_context);
+ var wipMAC = await wipMACController.GetWipMAC(barcodeItemKPDto.WipNo);
+ if (wipMAC.Value == null)
{
- CheckMsg += "組件序號【" + barcodeItemKPDto.inputKP[i] + "】 與MAC【" + wipMAC.Value.Title + "】前置碼不符合 ";
+ CheckMsg += "工單號碼【" + barcodeItemKPDto.WipNo + "】 找不到綁定MAC區間";
}
else
{
- // 判斷是否符合區間
- if (barcodeItemKPDto.inputKP[i].Length == 12)
+ // 判斷MAC前置碼是否一樣
+ if (!barcodeItemKPDto.inputKP[i].StartsWith(wipMAC.Value.Title))
+ {
+ CheckMsg += "組件序號【" + barcodeItemKPDto.inputKP[i] + "】 與MAC【" + wipMAC.Value.Title + "】前置碼不符合 ";
+ }
+ else
{
- if (!(Convert.ToInt32(wipMAC.Value.StartNO, 16) <= Convert.ToInt32(barcodeItemKPDto.inputKP[i].Substring(7, 6), 16)
- && Convert.ToInt32(barcodeItemKPDto.inputKP[i].Substring(7, 6), 16) <= Convert.ToInt32(wipMAC.Value.EndNO, 16)))
+ // 判斷是否符合區間
+ if (barcodeItemKPDto.inputKP[i].Length == 12)
{
- CheckMsg += "組件序號【" + barcodeItemKPDto.inputKP[i] + "】 與工單設定MAC區間不符合 ";
+ if (!(Convert.ToInt32(wipMAC.Value.StartNO, 16) <= Convert.ToInt32(barcodeItemKPDto.inputKP[i].Substring(7, 6), 16)
+ && Convert.ToInt32(barcodeItemKPDto.inputKP[i].Substring(7, 6), 16) <= Convert.ToInt32(wipMAC.Value.EndNO, 16)))
+ {
+ CheckMsg += "組件序號【" + barcodeItemKPDto.inputKP[i] + "】 與工單設定MAC區間不符合 ";
+ }
}
}
}
}
- }
- #endregion
+ #endregion
- #region 判斷出貨序號
- // 當KP_NAME是 EXT_NO 判斷組件-出貨序號 是否有在區間
- if (wipKps[x + i].KpNo.ToUpper() == "95")
- {
- WipBarcodeOtherController wipBarcodeOtherController = new WipBarcodeOtherController(_context);
- var WipBarCodeOther = await wipBarcodeOtherController.CheckWipBarcodeOtherByNo(barcodeItemKPDto.WipNo, barcodeItemKPDto.inputKP[i]);
- if (WipBarCodeOther.Value.Count() == 0)
- {
- CheckMsg += "組件序號【" + barcodeItemKPDto.inputKP[i] + "】 與工單設定出貨序號區間不符合 ";
- }
- else
+ #region 判斷出貨序號
+ // 當KP_NAME是 EXT_NO 判斷組件-出貨序號 是否有在區間
+ if (wipKps[x + i].KpNo.ToUpper() == "95")
{
- resultModel.Data = new List { barcodeItemKPDto.inputKP[i] };
- resultModel.Msg = barcodeItemKPDto.inputKP[i];
+ WipBarcodeOtherController wipBarcodeOtherController = new WipBarcodeOtherController(_context);
+ var WipBarCodeOther = await wipBarcodeOtherController.CheckWipBarcodeOtherByNo(barcodeItemKPDto.WipNo, barcodeItemKPDto.inputKP[i]);
+ if (WipBarCodeOther.Value.Count() == 0)
+ {
+ CheckMsg += "組件序號【" + barcodeItemKPDto.inputKP[i] + "】 與工單設定出貨序號區間不符合 ";
+ }
+ else
+ {
+ resultModel.Data = new List { barcodeItemKPDto.inputKP[i] };
+ resultModel.Msg = barcodeItemKPDto.inputKP[i];
+ }
}
+ #endregion
}
- #endregion
- }
- if (!string.IsNullOrWhiteSpace(CheckMsg))
- {
- resultModel.Msg = CheckMsg;
- return resultModel;
+ if (!string.IsNullOrWhiteSpace(CheckMsg))
+ {
+ resultModel.Msg = CheckMsg;
+ return resultModel;
+ }
}
+ #endregion
+ resultModel.Success = true;
+ return resultModel;
+ }
+ catch (Exception ex)
+ {
+ resultModel.Success = false;
+ resultModel.Msg = ex.Message;
+ return resultModel;
+ }
+ }
+
+ ///
+ /// 確認治具狀態
+ ///
+ ///
+ [HttpGet("BarCodeOutfit")]
+ public async Task CheckBarCodeOutfitAsync(string barcodeNo, string wipNo, string outfitNo)
+ {
+ ResultModel resultModel = new ResultModel { Success = false };
+
+ #region 判斷是否有重複治具紀錄
+ BarcodeOutfitController barcodeOutfitController = new BarcodeOutfitController(_context);
+ var q = await barcodeOutfitController.GetBarcodeOutfitByBarcodeNo(barcodeNo);
+ if (q.Value.Any(w => w.WipNo == wipNo && w.OutfitNo == outfitNo))
+ {
+ resultModel.Msg = "治具編號號碼【" + outfitNo + "】,已有在條碼【" + barcodeNo + "】使用紀錄";
+ return resultModel;
}
#endregion
resultModel.Success = true;