Browse Source

1. 整理過站判斷邏輯

PTD
ray 3 years ago
parent
commit
195571b8b6
  1. 248
      AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs

248
AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs

@ -31,7 +31,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
_context = context; _context = context;
} }
#region #region 過站判斷
/// <summary> /// <summary>
/// 過站判斷 /// 過站判斷
/// </summary> /// </summary>
@ -109,13 +109,32 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
var insert_BarCodeItemChange = new List<BarcodeItemChange>(); var insert_BarCodeItemChange = new List<BarcodeItemChange>();
#endregion #endregion
// 抓流程ID
var q_wipinfo = await wipInfosController.GetWipInfoByWipNo(barCodeCheckDto.wipNo); var q_wipinfo = await wipInfosController.GetWipInfoByWipNo(barCodeCheckDto.wipNo);
flowRule = q_wipinfo.Value.Where(w => w.UnitNO == barCodeCheckDto.unitNo).FirstOrDefault().FlowRuleID;
if (!q_wipinfo.Value.Where(w => w.UnitNO == barCodeCheckDto.unitNo).Any()) #region 判斷工單狀態
{ resultModel = (ResultModel<string>)await CheckWipNoSationAsync(wipNo: barCodeCheckDto.wipNo, unitNo: barCodeCheckDto.unitNo
resultModel.Msg = "找不到工單號碼【" + barCodeCheckDto.wipNo + "】或所對應的生產單位"; , flowRuleID: flowRule, line: barCodeCheckDto.line, station: barCodeCheckDto.station);
if (!resultModel.Success)
return resultModel; return resultModel;
} #endregion
#region 判斷序號狀態
resultModel = (ResultModel<string>)await GetCheckBarCodeStation(wipno: barCodeCheckDto.wipNo, barcode: barCodeCheckDto.barcode);
if (!resultModel.Success)
return resultModel;
#endregion
#region 判斷序號流程
resultModel = (ResultModel<string>)await CheckBarCodeFlowAsync(wipno: barCodeCheckDto.wipNo, barcode: barCodeCheckDto.barcode
, unitno: barCodeCheckDto.unitNo, station: barCodeCheckDto.station);
if (!resultModel.Success)
return resultModel;
#endregion
wipID = q_wipinfo.Value.Where(w => w.UnitNO == barCodeCheckDto.unitNo).FirstOrDefault().WipID; wipID = q_wipinfo.Value.Where(w => w.UnitNO == barCodeCheckDto.unitNo).FirstOrDefault().WipID;
flowRule = q_wipinfo.Value.Where(w => w.UnitNO == barCodeCheckDto.unitNo).FirstOrDefault().FlowRuleID; flowRule = q_wipinfo.Value.Where(w => w.UnitNO == barCodeCheckDto.unitNo).FirstOrDefault().FlowRuleID;
barCodeID = BarCodeToID(barCodeCheckDto.barcode).Result; barCodeID = BarCodeToID(barCodeCheckDto.barcode).Result;
@ -123,16 +142,6 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
itemID = ItemNoToItemID(item).Result; itemID = ItemNoToItemID(item).Result;
var q_rulestation = await ruleStationsController.GetRuleStationByFlow(flowRule, 0, 0); var q_rulestation = await ruleStationsController.GetRuleStationByFlow(flowRule, 0, 0);
if (q_rulestation.Value.Count() == 0)
{
resultModel.Msg = "找不到工單號碼【" + barCodeCheckDto.wipNo + "】綁定的流程順序檔";
return resultModel;
}
else if (!q_rulestation.Value.Where(w => w.StationID == barCodeCheckDto.station).Any())
{
resultModel.Msg = "找不到工單號碼【" + barCodeCheckDto.wipNo + "】所對應的作業站別";
return resultModel;
}
// 抓作業站順序 // 抓作業站順序
ruleStation = q_rulestation.Value.Where(w => w.StationID == barCodeCheckDto.station).FirstOrDefault().RuleStationID; ruleStation = q_rulestation.Value.Where(w => w.StationID == barCodeCheckDto.station).FirstOrDefault().RuleStationID;
@ -292,7 +301,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
var barcodeInfo = barcodeInfoesController.GetBarcodeInfoes(barCodeID).Result.Value.FirstOrDefault(); var barcodeInfo = barcodeInfoesController.GetBarcodeInfoes(barCodeID).Result.Value.FirstOrDefault();
barcodeInfo.RuleStationID = ruleStation; barcodeInfo.RuleStationID = ruleStation;
barcodeInfo.RuleStatus = "P"; barcodeInfo.RuleStatus = "P";
var resultBarCodeInfo = await barcodeInfoesController.PutBarcodeInfoes(barcodeInfo); var resultBarCodeInfo = await barcodeInfoesController.PutBarcodeInfoes(barcodeInfo);
if (resultBarCodeInfo.Success) if (resultBarCodeInfo.Success)
@ -343,36 +352,11 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
[HttpGet("CheckWipNoSation")] [HttpGet("CheckWipNoSation")]
public IActionResult GetCheckWipNoSation(string wipno, string unitno, int line, int flowrule) public IActionResult GetCheckWipNoSation(string wipno, string unitno, int line, int flowrule)
{ {
var result = CheckWipNoSationAsync(WipNo: wipno, UnitNo: unitno, FlowRuleID: flowrule, Line: line); var result = CheckWipNoSationAsync(wipNo: wipno, unitNo: unitno, flowRuleID: flowrule, line: line);
return Ok(result.Result); return Ok(result.Result);
} }
/// <summary>
/// 判斷序號狀態
/// </summary>
/// <param name="wipno"></param>
/// <param name="barcode"></param>
/// <param name="unitno"></param>
/// <param name="station"></param>
/// <returns></returns>
[HttpGet("CheckBarCodeStation")]
public async Task<IActionResult> GetCheckBarCodeStation(string wipno, string barcode, string unitno, int station)
{
//ResultModel<string> resultModel = new ResultModel<string>()
//ResultModel<string> aa = await (ResultModel<string>)CheckBarCodeLockAsync(barcode);
//return Ok(aa);
//return Ok();
//resultModel = (ResultModel<string>)CheckBarCodeLockAsync(barcode).AsyncState;
//if (!resultModel.Success)
// return Ok(resultModel);
//resultModel = (ResultModel<string>)CheckBarCodeScrappedAsync(barcode).AsyncState;
//if (!resultModel.Success)
// return Ok(resultModel);
return Ok();
}
/// <summary> /// <summary>
/// 內部序號查詢工單號碼 /// 內部序號查詢工單號碼
@ -380,13 +364,13 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
/// <param name="barcode">內部序號</param> /// <param name="barcode">內部序號</param>
/// <returns>Success:true or false</returns> /// <returns>Success:true or false</returns>
[HttpGet("BarCodeFromWip")] [HttpGet("BarCodeFromWip")]
public ActionResult<ResultModel<string>> CheckBarCodeFromWip(string barcode) public IResultModel CheckBarCodeFromWip(string barcode)
{ {
ResultModel<string> resultModel = new ResultModel<string> { Success = false }; ResultModel<string> resultModel = new ResultModel<string> { Success = false };
if (barcode.Length <= 4) if (barcode.Length <= 4)
{ {
resultModel.Msg = "內部序號小於4個字數"; resultModel.Msg = "內部序號小於4個字數";
return Ok(resultModel); return resultModel;
} }
WipInfosController wipInfosController = new WipInfosController(_context); WipInfosController wipInfosController = new WipInfosController(_context);
@ -395,7 +379,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
if (!q.Any()) if (!q.Any())
{ {
resultModel.Msg = "找不到內部序號【" + barcode + "】 對應相關工單號碼"; resultModel.Msg = "找不到內部序號【" + barcode + "】 對應相關工單號碼";
return Ok(resultModel); return resultModel;
} }
else else
{ {
@ -410,7 +394,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
{ {
resultModel.Success = true; resultModel.Success = true;
resultModel.Msg = q.Select(s => s.WipNO).FirstOrDefault(); resultModel.Msg = q.Select(s => s.WipNO).FirstOrDefault();
return Ok(resultModel); return resultModel;
} }
} }
resultModel.Msg = "工單號碼【" + q.Select(s => s.WipNO).FirstOrDefault() + "】 找不到範圍內的內部序號"; resultModel.Msg = "工單號碼【" + q.Select(s => s.WipNO).FirstOrDefault() + "】 找不到範圍內的內部序號";
@ -421,7 +405,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
} }
} }
return Ok(resultModel); return resultModel;
} }
/// <summary> /// <summary>
@ -430,13 +414,13 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
/// <param name="barcode">內部序號</param> /// <param name="barcode">內部序號</param>
/// <returns>Success:true or false</returns> /// <returns>Success:true or false</returns>
[HttpGet("BarCodeToUnit")] [HttpGet("BarCodeToUnit")]
public async Task<IActionResult> GetBarCodeToUnitAsync(string barcode) public async Task<IResultModel> GetBarCodeToUnitAsync(string barcode)
{ {
ResultModel<string> resultModel = new ResultModel<string> { Success = false }; ResultModel<string> resultModel = new ResultModel<string> { Success = false };
if (barcode.Length <= 4) if (barcode.Length <= 4)
{ {
resultModel.Msg = "內部序號小於4個字數"; resultModel.Msg = "內部序號小於4個字數";
return Ok(resultModel); return resultModel;
} }
int BarCodeID = BarCodeToID(barcode).Result; int BarCodeID = BarCodeToID(barcode).Result;
@ -444,7 +428,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
if (BarCodeID == 0) if (BarCodeID == 0)
{ {
resultModel.Msg = "找不到內部序號【" + barcode + "】 對應BarCodeID"; resultModel.Msg = "找不到內部序號【" + barcode + "】 對應BarCodeID";
return Ok(resultModel); return resultModel;
} }
BarcodeInfoesController barcodeInfoesController = new BarcodeInfoesController(_context); BarcodeInfoesController barcodeInfoesController = new BarcodeInfoesController(_context);
@ -453,7 +437,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
q.Value.Select(s => s.GetWipInfo.GetFactoryUnit.UnitName).FirstOrDefault(); q.Value.Select(s => s.GetWipInfo.GetFactoryUnit.UnitName).FirstOrDefault();
resultModel.Success = true; resultModel.Success = true;
return Ok(resultModel); return resultModel;
} }
/// <summary> /// <summary>
@ -462,13 +446,13 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
/// <param name="barcode">內部序號</param> /// <param name="barcode">內部序號</param>
/// <returns>Success:true or false</returns> /// <returns>Success:true or false</returns>
[HttpGet("BarCodeToStation")] [HttpGet("BarCodeToStation")]
public async Task<IActionResult> GetBarCodeToStationAsync(string barcode) public async Task<IResultModel> GetBarCodeToStationAsync(string barcode)
{ {
ResultModel<string> resultModel = new ResultModel<string> { Success = false }; ResultModel<string> resultModel = new ResultModel<string> { Success = false };
if (barcode.Length <= 4) if (barcode.Length <= 4)
{ {
resultModel.Msg = "內部序號小於4個字數"; resultModel.Msg = "內部序號小於4個字數";
return Ok(resultModel); return resultModel;
} }
int BarCodeID = BarCodeToID(barcode).Result; int BarCodeID = BarCodeToID(barcode).Result;
@ -476,7 +460,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
if (BarCodeID == 0) if (BarCodeID == 0)
{ {
resultModel.Msg = "找不到內部序號【" + barcode + "】 對應BarCodeID"; resultModel.Msg = "找不到內部序號【" + barcode + "】 對應BarCodeID";
return Ok(resultModel); return resultModel;
} }
BarcodeInfoesController barcodeInfoesController = new BarcodeInfoesController(_context); BarcodeInfoesController barcodeInfoesController = new BarcodeInfoesController(_context);
@ -485,7 +469,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
q.Value.Select(s => s.GetRuleStation.Station.StationName).FirstOrDefault(); q.Value.Select(s => s.GetRuleStation.Station.StationName).FirstOrDefault();
resultModel.Success = true; resultModel.Success = true;
return Ok(resultModel); return resultModel;
} }
/// <summary> /// <summary>
@ -494,13 +478,13 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
/// <param name="barcode">內部序號</param> /// <param name="barcode">內部序號</param>
/// <returns>Success:true or false</returns> /// <returns>Success:true or false</returns>
[HttpGet("BarCodeLock")] [HttpGet("BarCodeLock")]
public async Task<ActionResult<ResultModel<string>>> CheckBarCodeLockAsync(string barcode) public async Task<IResultModel> CheckBarCodeLockAsync(string barcode)
{ {
ResultModel<string> resultModel = new ResultModel<string> { Success = false }; ResultModel<string> resultModel = new ResultModel<string> { Success = false };
if (barcode.Length <= 4) if (barcode.Length <= 4)
{ {
resultModel.Msg = "內部序號小於4個字數"; resultModel.Msg = "內部序號小於4個字數";
return Ok(resultModel); return resultModel;
} }
int BarCodeID = BarCodeToID(barcode).Result; int BarCodeID = BarCodeToID(barcode).Result;
@ -509,7 +493,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
{ {
//resultModel.Msg = "找不到內部序號【" + barcode + "】 對應BarCodeID"; //resultModel.Msg = "找不到內部序號【" + barcode + "】 對應BarCodeID";
resultModel.Success = true; resultModel.Success = true;
return Ok(resultModel); return resultModel;
} }
BarcodeLockController barcodeLockController = new BarcodeLockController(_context); BarcodeLockController barcodeLockController = new BarcodeLockController(_context);
@ -517,11 +501,11 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
if (q.Value.Where(w => w.LockStatus == 0).Any()) if (q.Value.Where(w => w.LockStatus == 0).Any())
{ {
resultModel.Msg = "內部序號【" + barcode + "】在當前站別被鎖定,不可過站"; resultModel.Msg = "內部序號【" + barcode + "】在當前站別被鎖定,不可過站";
return Ok(resultModel); return resultModel;
} }
resultModel.Success = true; resultModel.Success = true;
return Ok(resultModel); return resultModel;
} }
/// <summary> /// <summary>
@ -530,13 +514,13 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
/// <param name="barcode">內部序號</param> /// <param name="barcode">內部序號</param>
/// <returns>Success:true or false</returns> /// <returns>Success:true or false</returns>
[HttpGet("BarCodeScrapped")] [HttpGet("BarCodeScrapped")]
public async Task<IActionResult> CheckBarCodeScrappedAsync(string barcode) public async Task<IResultModel> CheckBarCodeScrappedAsync(string barcode)
{ {
ResultModel<string> resultModel = new ResultModel<string> { Success = false }; ResultModel<string> resultModel = new ResultModel<string> { Success = false };
if (barcode.Length <= 4) if (barcode.Length <= 4)
{ {
resultModel.Msg = "內部序號小於4個字數"; resultModel.Msg = "內部序號小於4個字數";
return Ok(resultModel); return resultModel;
} }
BarcodeInfoesController barcodeInfoesController = new BarcodeInfoesController(_context); BarcodeInfoesController barcodeInfoesController = new BarcodeInfoesController(_context);
@ -545,17 +529,17 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
{ {
resultModel.Success = true; resultModel.Success = true;
resultModel.Msg = "找不到內部序號【" + barcode + "】 對應BarCodeID"; resultModel.Msg = "找不到內部序號【" + barcode + "】 對應BarCodeID";
return Ok(resultModel); return resultModel;
} }
else if (q.Value.Any(w => w.RuleStatus == "S")) else if (q.Value.Any(w => w.RuleStatus == "S"))
{ {
resultModel.Msg = "內部序號【" + barcode + "】已報廢或轉賣, 不可繼續過站!"; resultModel.Msg = "內部序號【" + barcode + "】已報廢或轉賣, 不可繼續過站!";
return Ok(resultModel); return resultModel;
} }
resultModel.Success = true; resultModel.Success = true;
return Ok(resultModel); return resultModel;
} }
/// <summary> /// <summary>
@ -567,33 +551,15 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
/// <param name="station">作業站編號</param> /// <param name="station">作業站編號</param>
/// <returns></returns> /// <returns></returns>
[HttpGet("BarCodeFlow")] [HttpGet("BarCodeFlow")]
public async Task<IActionResult> CheckBarCodeFlowAsync(string wipno, string barcode, string unitno, int station) public async Task<IResultModel> CheckBarCodeFlowAsync(string wipno, string barcode, string unitno, int station)
{ {
ResultModel<string> resultModel = new ResultModel<string> { Success = false }; ResultModel<string> resultModel = new ResultModel<string> { Success = false };
WipInfosController wipInfosController = new WipInfosController(_context); WipInfosController wipInfosController = new WipInfosController(_context);
var q = await wipInfosController.GetWipInfoByWipNo(wipno); var q = await wipInfosController.GetWipInfoByWipNo(wipno);
if (q.Value.Count() == 0)
{
resultModel.Msg = "找不到工單號碼【" + wipno + "】";
return Ok(resultModel);
}
// 找該筆工單號碼的生產單位代號 // 找該筆工單號碼的生產單位代號
var q1 = q.Value.Where(w => w.UnitNO == unitno).FirstOrDefault(); var q1 = q.Value.Where(w => w.UnitNO == unitno).FirstOrDefault();
if (q1 == null)
{
resultModel.Msg = "該工單號碼【" + wipno + "】 找不到對應生產單位代號資料";
return Ok(resultModel);
}
// 該筆工單號碼鎖定
WipLockController wipLockController = new WipLockController(_context);
var q2 = await wipLockController.GetWipLockByWipNO(wipno);
if (q2.Data.Where(w => w.LockStatus == "0" && w.StationID == station).Any())
{
resultModel.Msg = "工單號碼【" + wipno + "】,工單在當前站別被鎖定,不可過站";
return Ok(resultModel);
}
// 取工單號碼開立的 WipID、生產單位 // 取工單號碼開立的 WipID、生產單位
var wipinfo = q.Value.Select(s => new { s.WipID, s.UnitNO }).ToList(); var wipinfo = q.Value.Select(s => new { s.WipID, s.UnitNO }).ToList();
@ -620,13 +586,13 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
if (WipID == null) if (WipID == null)
{ {
resultModel.Msg = "該工單號碼【" + wipno + "】的前製程生產單位尚未建立工單基本資料"; resultModel.Msg = "該工單號碼【" + wipno + "】的前製程生產單位尚未建立工單基本資料";
return Ok(resultModel); return resultModel;
} }
if (!BarCodeStations.Value.Where(w => w.BarcodeID == BarCodeID && w.WipID == WipID && w.RuleStatus == "P").Any()) if (!BarCodeStations.Value.Where(w => w.BarcodeID == BarCodeID && w.WipID == WipID && w.RuleStatus == "P").Any())
{ {
resultModel.Msg = "該內部序號【" + barcode + "】前製程生產單位尚未有過站紀錄"; resultModel.Msg = "該內部序號【" + barcode + "】前製程生產單位尚未有過站紀錄";
return Ok(resultModel); return resultModel;
} }
} }
// 組裝(B)->系統測試(T)->成品包裝(P) // 組裝(B)->系統測試(T)->成品包裝(P)
@ -636,13 +602,13 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
if (WipID == null) if (WipID == null)
{ {
resultModel.Msg = "該工單號碼【" + wipno + "】的前製程生產單位尚未建立工單基本資料"; resultModel.Msg = "該工單號碼【" + wipno + "】的前製程生產單位尚未建立工單基本資料";
return Ok(resultModel); return resultModel;
} }
if (!BarCodeStations.Value.Where(w => w.BarcodeID == BarCodeID && w.WipID == WipID && w.RuleStatus == "P").Any()) if (!BarCodeStations.Value.Where(w => w.BarcodeID == BarCodeID && w.WipID == WipID && w.RuleStatus == "P").Any())
{ {
resultModel.Msg = "該內部序號【" + barcode + "】前製程生產單位尚未有過站紀錄"; resultModel.Msg = "該內部序號【" + barcode + "】前製程生產單位尚未有過站紀錄";
return Ok(resultModel); return resultModel;
} }
} }
else if (unitno == "P") else if (unitno == "P")
@ -651,13 +617,13 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
if (WipID == null) if (WipID == null)
{ {
resultModel.Msg = "該工單號碼【" + wipno + "】的前製程生產單位尚未建立工單基本資料"; resultModel.Msg = "該工單號碼【" + wipno + "】的前製程生產單位尚未建立工單基本資料";
return Ok(resultModel); return resultModel;
} }
if (!BarCodeStations.Value.Where(w => w.BarcodeID == BarCodeID && w.WipID == WipID && w.RuleStatus == "P").Any()) if (!BarCodeStations.Value.Where(w => w.BarcodeID == BarCodeID && w.WipID == WipID && w.RuleStatus == "P").Any())
{ {
resultModel.Msg = "該內部序號【" + barcode + "】前製程生產單位尚未有過站紀錄"; resultModel.Msg = "該內部序號【" + barcode + "】前製程生產單位尚未有過站紀錄";
return Ok(resultModel); return resultModel;
} }
} }
} }
@ -667,7 +633,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
if (unitno != "S" && unitno != "B") if (unitno != "S" && unitno != "B")
{ {
resultModel.Msg = "該工單號碼【" + wipno + "】前製程式尚未投產"; resultModel.Msg = "該工單號碼【" + wipno + "】前製程式尚未投產";
return Ok(resultModel); return resultModel;
} }
} }
} }
@ -679,7 +645,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
if (ruleStations.Value.Count() == 0) if (ruleStations.Value.Count() == 0)
{ {
resultModel.Msg = "該工單號碼【" + wipno + "】的流程編號尚未設定流程"; resultModel.Msg = "該工單號碼【" + wipno + "】的流程編號尚未設定流程";
return Ok(resultModel); return resultModel;
} }
// 該作業站 RuleStationID // 該作業站 RuleStationID
@ -687,7 +653,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
if (RuleStationID == null) if (RuleStationID == null)
{ {
resultModel.Msg = "該工單號碼【" + wipno + "】的流程未設定此作業站"; resultModel.Msg = "該工單號碼【" + wipno + "】的流程未設定此作業站";
return Ok(resultModel); return resultModel;
} }
// 取目前工單ID // 取目前工單ID
@ -695,36 +661,37 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
// 該筆工單ID過站紀錄 // 該筆工單ID過站紀錄
var BarCodeStationByWipID = BarCodeStations.Value.Where(w => w.WipID == wipID).ToList(); var BarCodeStationByWipID = BarCodeStations.Value.Where(w => w.WipID == wipID).ToList();
if (BarCodeStationByWipID.Where(w => w.RuleStationID == RuleStationID && w.RuleStatus == "P").Any()) if (BarCodeStationByWipID.Where(w => w.RuleStationID == RuleStationID).Any())
{ {
resultModel.Msg = "內部序號【" + barcode + "】該作業站已有過站紀錄,請確認"; resultModel.Msg = "內部序號【" + barcode + "】該作業站已有過站紀錄,請確認";
return Ok(resultModel); return resultModel;
} }
int LastStopRuleStationID = await GetBarCodeLastStopRuleStationID(wipno, station); int LastStopRuleStationID = await GetBarCodeLastStopRuleStationID(wipno, station);
if (LastStopRuleStationID != 0 && LastStopRuleStationID != 1000) if (LastStopRuleStationID != 0 && LastStopRuleStationID != 1000)
{ {
if (!BarCodeStationByWipID.Where(w => w.RuleStationID == LastStopRuleStationID && w.RuleStatus == "P").Any()) if (!BarCodeStationByWipID.Where(w => w.RuleStationID == LastStopRuleStationID).Any())
{ {
resultModel.Msg = "內部序號【" + barcode + "】找不到上一個作業站過站紀錄,請確認"; resultModel.Msg = "內部序號【" + barcode + "】找不到上一個作業站過站紀錄,請確認";
return Ok(resultModel); return resultModel;
} }
} }
#endregion #endregion
resultModel.Success = true; resultModel.Success = true;
return Ok(resultModel); return resultModel;
} }
/// <summary> /// <summary>
/// 確認工單狀態 /// 確認工單狀態
/// </summary> /// </summary>
/// <param name="WipNo">工單號碼</param> /// <param name="wipNo">工單號碼</param>
/// <param name="UnitNo">生產單位</param> /// <param name="unitNo">生產單位</param>
/// <param name="FlowRuleID">流程</param> /// <param name="flowRuleID">流程</param>
/// <param name="Line">線別</param> /// <param name="line">線別</param>
/// <param name="station">作業站</param>
/// <returns></returns> /// <returns></returns>
private async Task<IResultModel> CheckWipNoSationAsync(string WipNo, string UnitNo, int FlowRuleID, int Line) private async Task<IResultModel> CheckWipNoSationAsync(string wipNo, string unitNo, int flowRuleID, int line, int station = 0)
{ {
ResultModel<string> resultModel = new ResultModel<string>(); ResultModel<string> resultModel = new ResultModel<string>();
@ -732,44 +699,53 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
WipInfosController wipInfosController = new WipInfosController(_context); WipInfosController wipInfosController = new WipInfosController(_context);
var q = await wipInfosController.GetWipInfoByWipNo(WipNo); var q = await wipInfosController.GetWipInfoByWipNo(wipNo);
if (q.Value.Count() == 0) if (q.Value.Count() == 0)
{ {
resultModel.Msg = "找不到工單號碼【" + WipNo + "】"; resultModel.Msg = "找不到工單號碼【" + wipNo + "】";
return resultModel; return resultModel;
} }
var WipNoItem = q.Value.Where(w => w.WipNO == WipNo && w.UnitNO == UnitNo).ToList(); var WipNoItem = q.Value.Where(w => w.WipNO == wipNo && w.UnitNO == unitNo).ToList();
if (WipNoItem.Count == 0) if (WipNoItem.Count == 0)
{ {
resultModel.Msg = "工單號碼【" + WipNo + ",尚未設定此生產單位"; resultModel.Msg = "工單號碼【" + wipNo + ",尚未設定此生產單位";
return resultModel; return resultModel;
} }
if (!WipNoItem.Where(w => w.FlowRuleID == FlowRuleID).Any()) if (!WipNoItem.Where(w => w.FlowRuleID == flowRuleID).Any())
{ {
resultModel.Msg = "工單號碼【" + WipNo + "】,尚未設定此流程站"; resultModel.Msg = "工單號碼【" + wipNo + "】,尚未設定此流程站";
return resultModel; return resultModel;
} }
if (!WipNoItem.Where(w => w.LineID == Line).Any()) if (!WipNoItem.Where(w => w.LineID == line).Any())
{ {
resultModel.Msg = "工單號碼【" + WipNo + "】,尚未設定此線別"; resultModel.Msg = "工單號碼【" + wipNo + "】,尚未設定此線別";
return resultModel; return resultModel;
} }
if (WipNoItem.Where(w => w.StatusNO == "Y").Any()) if (WipNoItem.Where(w => w.StatusNO == "Y").Any())
{ {
resultModel.Msg = "工單號碼【" + WipNo + "】,該工單已經投入完工,請切換工單"; resultModel.Msg = "工單號碼【" + wipNo + "】,該工單已經投入完工,請切換工單";
return resultModel; return resultModel;
} }
int WipID = WipNoItem.FirstOrDefault().WipID; int WipID = WipNoItem.FirstOrDefault().WipID;
LineInfoesController lineInfoesController = new LineInfoesController(_context); LineInfoesController lineInfoesController = new LineInfoesController(_context);
var q2 = await lineInfoesController.GetLineInfoByWipID(WipID); var q2 = await lineInfoesController.GetLineInfoByWipID(WipID);
if (!q2.Value.Where(w => w.LineID == Line).Any()) if (!q2.Value.Where(w => w.LineID == line).Any())
{ {
resultModel.Msg = "工單號碼【" + WipNo + "】,工單尚未開線,不可過站"; 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())
{
resultModel.Msg = "工單號碼【" + wipNo + "】,工單在當前站別被鎖定,不可過站";
return resultModel; return resultModel;
} }
@ -777,6 +753,44 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
return resultModel; return resultModel;
} }
/// <summary>
/// 判斷序號狀態
/// </summary>
/// <param name="wipno">工單號碼</param>
/// <param name="barcode">內部序號</param>
/// <returns></returns>
[HttpGet("CheckBarCodeStation")]
public async Task<IResultModel> GetCheckBarCodeStation(string wipno, string barcode)
{
ResultModel<string> resultModel = new ResultModel<string>();
#region 內部序號是否被鎖定
resultModel = (ResultModel<string>)await CheckBarCodeLockAsync(barcode);
if (!resultModel.Success)
return resultModel;
#endregion
#region 內部序號是否被報廢
resultModel = (ResultModel<string>)await CheckBarCodeScrappedAsync(barcode);
if (!resultModel.Success)
return resultModel;
#endregion
#region 找尋內部序號(工單號碼) 並與接收工單號碼是否一致
resultModel = (ResultModel<string>)CheckBarCodeFromWip(barcode);
if (!resultModel.Success)
return resultModel;
else if (resultModel.Msg != wipno.ToUpper())
{
resultModel.Msg = "工單號碼【" + wipno + "】與內部序號所帶出工單號碼【" + resultModel.Msg + "】不一致";
resultModel.Success = false;
return resultModel;
}
#endregion
return resultModel;
}
/// <summary> /// <summary>
/// 確認組件狀態 /// 確認組件狀態
/// </summary> /// </summary>
@ -1121,13 +1135,15 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
var ruleStations = await ruleStationsController.GetRuleStationByFlow(i, 0); var ruleStations = await ruleStationsController.GetRuleStationByFlow(i, 0);
if (ruleStations.Value.Count() != 0) if (ruleStations.Value.Count() != 0)
{ {
foreach (var item in ruleStations.Value.Where(w => w.StationType == "M").OrderBy(o => o.Sequence)) foreach (var item in ruleStations.Value.OrderBy(o => o.Sequence))
{ {
var x = new var x = new
{ {
index, index,
item.StationID, item.StationID,
item.RuleStationID item.RuleStationID,
item.Sequence,
item.StationType
}; };
dy.Add(x); dy.Add(x);
index++; index++;

Loading…
Cancel
Save