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