diff --git a/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs b/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs
index 82e07411..23779270 100644
--- a/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs
+++ b/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs
@@ -31,7 +31,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
_context = context;
}
- #region
+ #region 過站判斷
///
/// 過站判斷
///
@@ -109,13 +109,32 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
var insert_BarCodeItemChange = new List();
#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)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)await GetCheckBarCodeStation(wipno: barCodeCheckDto.wipNo, barcode: barCodeCheckDto.barcode);
+ if (!resultModel.Success)
+ return resultModel;
+ #endregion
+
+ #region 判斷序號流程
+ resultModel = (ResultModel)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);
}
- ///
- /// 判斷序號狀態
- ///
- ///
- ///
- ///
- ///
- ///
- [HttpGet("CheckBarCodeStation")]
- public async Task GetCheckBarCodeStation(string wipno, string barcode, string unitno, int station)
- {
- //ResultModel resultModel = new ResultModel()
- //ResultModel aa = await (ResultModel)CheckBarCodeLockAsync(barcode);
- //return Ok(aa);
-
- //return Ok();
- //resultModel = (ResultModel)CheckBarCodeLockAsync(barcode).AsyncState;
- //if (!resultModel.Success)
- // return Ok(resultModel);
-
- //resultModel = (ResultModel)CheckBarCodeScrappedAsync(barcode).AsyncState;
- //if (!resultModel.Success)
- // return Ok(resultModel);
- return Ok();
- }
///
/// 內部序號查詢工單號碼
@@ -380,13 +364,13 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
/// 內部序號
/// Success:true or false
[HttpGet("BarCodeFromWip")]
- public ActionResult> CheckBarCodeFromWip(string barcode)
+ public IResultModel CheckBarCodeFromWip(string barcode)
{
ResultModel resultModel = new ResultModel { 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;
}
///
@@ -430,13 +414,13 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
/// 內部序號
/// Success:true or false
[HttpGet("BarCodeToUnit")]
- public async Task GetBarCodeToUnitAsync(string barcode)
+ public async Task GetBarCodeToUnitAsync(string barcode)
{
ResultModel resultModel = new ResultModel { 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;
}
///
@@ -462,13 +446,13 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
/// 內部序號
/// Success:true or false
[HttpGet("BarCodeToStation")]
- public async Task GetBarCodeToStationAsync(string barcode)
+ public async Task GetBarCodeToStationAsync(string barcode)
{
ResultModel resultModel = new ResultModel { 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;
}
///
@@ -494,13 +478,13 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
/// 內部序號
/// Success:true or false
[HttpGet("BarCodeLock")]
- public async Task>> CheckBarCodeLockAsync(string barcode)
+ public async Task CheckBarCodeLockAsync(string barcode)
{
ResultModel resultModel = new ResultModel { 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;
}
///
@@ -530,13 +514,13 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
/// 內部序號
/// Success:true or false
[HttpGet("BarCodeScrapped")]
- public async Task CheckBarCodeScrappedAsync(string barcode)
+ public async Task CheckBarCodeScrappedAsync(string barcode)
{
ResultModel resultModel = new ResultModel { 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;
}
///
@@ -567,33 +551,15 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
/// 作業站編號
///
[HttpGet("BarCodeFlow")]
- public async Task CheckBarCodeFlowAsync(string wipno, string barcode, string unitno, int station)
+ public async Task CheckBarCodeFlowAsync(string wipno, string barcode, string unitno, int station)
{
ResultModel resultModel = new ResultModel { 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;
}
///
/// 確認工單狀態
///
- /// 工單號碼
- /// 生產單位
- /// 流程
- /// 線別
+ /// 工單號碼
+ /// 生產單位
+ /// 流程
+ /// 線別
+ /// 作業站
///
- private async Task CheckWipNoSationAsync(string WipNo, string UnitNo, int FlowRuleID, int Line)
+ private async Task CheckWipNoSationAsync(string wipNo, string unitNo, int flowRuleID, int line, int station = 0)
{
ResultModel resultModel = new ResultModel();
@@ -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;
}
+ ///
+ /// 判斷序號狀態
+ ///
+ /// 工單號碼
+ /// 內部序號
+ ///
+ [HttpGet("CheckBarCodeStation")]
+ public async Task GetCheckBarCodeStation(string wipno, string barcode)
+ {
+ ResultModel resultModel = new ResultModel();
+
+ #region 內部序號是否被鎖定
+ resultModel = (ResultModel)await CheckBarCodeLockAsync(barcode);
+ if (!resultModel.Success)
+ return resultModel;
+ #endregion
+
+ #region 內部序號是否被報廢
+ resultModel = (ResultModel)await CheckBarCodeScrappedAsync(barcode);
+ if (!resultModel.Success)
+ return resultModel;
+ #endregion
+
+ #region 找尋內部序號(工單號碼) 並與接收工單號碼是否一致
+ resultModel = (ResultModel)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;
+ }
+
///
/// 確認組件狀態
///
@@ -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++;