|
|
@ -101,13 +101,6 @@ namespace AMESCoreStudio.Web.Controllers |
|
|
|
// 序號編碼sheet
|
|
|
|
// 工單新增不用判斷
|
|
|
|
if (action != "New") |
|
|
|
{ |
|
|
|
// 安勤統一執行WIP_SYSTEM
|
|
|
|
if (ViewBag.WipSpecial == "Y") |
|
|
|
{ |
|
|
|
Msg += CheckWipInfoInsert_WipSystem(model.wipSystem); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
// 系統 昶亨 組立:B 測試:T 包裝:O
|
|
|
|
if (model.wipInfo.UnitNO == "B" || model.wipInfo.UnitNO == "T" || model.wipInfo.UnitNO == "O") |
|
|
@ -120,7 +113,6 @@ namespace AMESCoreStudio.Web.Controllers |
|
|
|
Msg += CheckWipInfoInsert_WipBoard(model.wipBoard); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 內部條碼
|
|
|
|
if (model.wipBarcode != null) |
|
|
@ -2071,9 +2063,6 @@ namespace AMESCoreStudio.Web.Controllers |
|
|
|
|
|
|
|
public async Task<IActionResult> PCS001R(int id) |
|
|
|
{ |
|
|
|
// 針對安勤 工單基本資料統一打開工程資訊
|
|
|
|
ViewBag.WipSpecial = _configuration["WipSpecial"]; |
|
|
|
|
|
|
|
WipDataViewModel model = new WipDataViewModel(); |
|
|
|
var q = await _pcsApi.GetWipInfo(id); |
|
|
|
if (q.Count != 0) |
|
|
@ -2195,9 +2184,6 @@ namespace AMESCoreStudio.Web.Controllers |
|
|
|
|
|
|
|
public async Task<IActionResult> PCS003(int id) |
|
|
|
{ |
|
|
|
// 針對安勤 工單基本資料統一打開工程資訊
|
|
|
|
ViewBag.WipSpecial = _configuration["WipSpecial"]; |
|
|
|
|
|
|
|
WipDataViewModel model = new WipDataViewModel(); |
|
|
|
var q = await _pcsApi.GetWipInfo(id); |
|
|
|
if (q.Count != 0) |
|
|
@ -2353,12 +2339,203 @@ namespace AMESCoreStudio.Web.Controllers |
|
|
|
return View(model); |
|
|
|
} |
|
|
|
|
|
|
|
[HttpGet] |
|
|
|
public async Task<IActionResult> PCS003GetData(int id, string copyWipNo, bool success = false) |
|
|
|
{ |
|
|
|
WipDataViewModel model = new WipDataViewModel(); |
|
|
|
var q = await _pcsApi.GetWipInfo(id); |
|
|
|
|
|
|
|
if (q.Count != 0) |
|
|
|
{ |
|
|
|
// 判斷工單號碼是否已經投入
|
|
|
|
if (await _pcsApi.GetWipInfoCheckStart(q.FirstOrDefault().WipNO, q.FirstOrDefault().UnitNO, q.FirstOrDefault().LineID) == "Y") |
|
|
|
{ |
|
|
|
var _msg = _sharedLocalizer["Error_WorkOrder_InProgress", q.FirstOrDefault().WipNO]; |
|
|
|
return RedirectToAction("Refresh", "Home", new { msg = _msg }); |
|
|
|
} |
|
|
|
|
|
|
|
// 判斷工單號碼是否已經開線
|
|
|
|
if (await _pcsApi.GetWipInfoCheckStartLine(q.FirstOrDefault().WipNO, q.FirstOrDefault().UnitNO, q.FirstOrDefault().LineID) == "Y") |
|
|
|
{ |
|
|
|
var _msg = _sharedLocalizer["Error_WorkOrder_LineStarted", q.FirstOrDefault().WipNO]; |
|
|
|
return RedirectToAction("Refresh", "Home", new { msg = _msg }); |
|
|
|
} |
|
|
|
|
|
|
|
// 判斷是否完工
|
|
|
|
if (q.Where(w => w.StatusNO == "E").Any()) |
|
|
|
{ |
|
|
|
var _msg = _sharedLocalizer["Error_WorkOrder_Completed", q.FirstOrDefault().WipNO]; |
|
|
|
return RedirectToAction("Refresh", "Home", new { msg = _msg }); |
|
|
|
} |
|
|
|
|
|
|
|
// 判斷是否刪除
|
|
|
|
if (q.Where(w => w.StatusNO == "C").Any()) |
|
|
|
{ |
|
|
|
var _msg = _sharedLocalizer["Error_WorkOrder_Deleted", q.FirstOrDefault().WipNO]; |
|
|
|
return RedirectToAction("Refresh", "Home", new { msg = _msg }); |
|
|
|
} |
|
|
|
|
|
|
|
// 原先工單資料
|
|
|
|
model.wipInfo = q.FirstOrDefault(); |
|
|
|
model.wipAtt = await _pcsApi.GetWipAtt(model.wipInfo.WipNO); |
|
|
|
model.wipBarcodes = await _pcsApi.GetWipBarcode(model.wipInfo.WipNO); |
|
|
|
model.wipBarcode = model.wipBarcodes.FirstOrDefault() ?? new WipBarcode(); |
|
|
|
model.wipMACs = await _pcsApi.GetWipMAC(model.wipInfo.WipNO); |
|
|
|
model.wipLabel = await _pcsApi.GetWipLabel(model.wipInfo.WipNO); |
|
|
|
model.wipBarcodeOthers = await _pcsApi.GetWipBarcodeOthers(model.wipInfo.WipNO); |
|
|
|
model.WipKps = await _pcsApi.GetWipKpByWipNo(model.wipInfo.WipNO); |
|
|
|
model.WipOutfits = await _pcsApi.GetWipOutfitByWipNo(model.wipInfo.WipNO); |
|
|
|
model.WipSops = await _pcsApi.GetWipSopByWipNo(model.wipInfo.WipNO); |
|
|
|
model.wipInfoBlobs = await _pcsApi.GetWipInfoBlob(model.wipInfo.WipNO); |
|
|
|
|
|
|
|
#region 複製工單資料
|
|
|
|
// 板卡資訊-ALL
|
|
|
|
model.wipBoard = await _pcsApi.GetWipBoard(copyWipNo); |
|
|
|
// 工程資訊-ALL
|
|
|
|
model.wipSystem = await _pcsApi.GetWipSystem(copyWipNo); |
|
|
|
var copyWipAtt = await _pcsApi.GetWipAtt(copyWipNo); |
|
|
|
var copyWipBarcode = await _pcsApi.GetWipBarcode(copyWipNo); |
|
|
|
var copyWipInfo = await _pcsApi.GetWipInfoByWipNO(copyWipNo); |
|
|
|
|
|
|
|
// 工單基本資料-工單備註
|
|
|
|
if (copyWipInfo.Any()) |
|
|
|
{ |
|
|
|
model.wipInfo.Remarks = copyWipInfo.FirstOrDefault().Remarks; |
|
|
|
} |
|
|
|
|
|
|
|
// 工單屬性-連板數、機種名稱、BOM日期、SMD投產優先
|
|
|
|
if (copyWipAtt != null) |
|
|
|
{ |
|
|
|
model.wipAtt.BomDate = copyWipAtt.BomDate; |
|
|
|
model.wipAtt.ModelNO = copyWipAtt.ModelNO; |
|
|
|
model.wipAtt.Boards = copyWipAtt.Boards; |
|
|
|
model.wipAtt.Side = copyWipAtt.Side; |
|
|
|
} |
|
|
|
|
|
|
|
// 生產條碼-條碼備註
|
|
|
|
if (copyWipBarcode.Any()) |
|
|
|
{ |
|
|
|
model.wipBarcode.Remarks = copyWipBarcode.FirstOrDefault().Remarks; |
|
|
|
} |
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
if (model.wipBoard != null) |
|
|
|
{ |
|
|
|
if (!string.IsNullOrWhiteSpace(model.wipBoard.Engineer)) |
|
|
|
{ |
|
|
|
var UserInof = _sysApi.GetUserInfoByUserNo(model.wipBoard.Engineer).InvokeAsync().Result; |
|
|
|
if (UserInof != null) |
|
|
|
model.wipBoard.Engineer_Name = UserInof.UserName; |
|
|
|
} |
|
|
|
// 判斷是否是零件烘烤-其他溫度
|
|
|
|
var PartsBake = model.wipBoard.PartsBake; |
|
|
|
if (PartsBake != 125 && PartsBake != 100 && PartsBake != 80 && PartsBake != 60 && PartsBake != 45 && PartsBake != 0) |
|
|
|
model.wipBoard.PartsBakeOther = PartsBake; |
|
|
|
} |
|
|
|
|
|
|
|
if (model.wipSystem != null) |
|
|
|
{ |
|
|
|
if (!string.IsNullOrWhiteSpace(model.wipSystem.Ec)) |
|
|
|
{ |
|
|
|
var Ec_Desc = _pcsApi.GetPlmMeterialInfo(model.wipSystem.Ec).InvokeAsync().Result; |
|
|
|
model.wipSystem.Ec_Desc = Ec_Desc.Count == 0 ? "" : Ec_Desc.FirstOrDefault().MeterialDesc; |
|
|
|
} |
|
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(model.wipSystem.Fw)) |
|
|
|
{ |
|
|
|
var Fw_Desc = _pcsApi.GetPlmMeterialInfo(model.wipSystem.Fw).InvokeAsync().Result; |
|
|
|
model.wipSystem.Fw_Desc = Fw_Desc.Count == 0 ? "" : Fw_Desc.FirstOrDefault().MeterialDesc; |
|
|
|
} |
|
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(model.wipSystem.Fw1)) |
|
|
|
{ |
|
|
|
var Fw1_Desc = _pcsApi.GetPlmMeterialInfo(model.wipSystem.Fw1).InvokeAsync().Result; |
|
|
|
model.wipSystem.Fw1_Desc = Fw1_Desc.Count == 0 ? "" : Fw1_Desc.FirstOrDefault().MeterialDesc; |
|
|
|
} |
|
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(model.wipSystem.Fw2)) |
|
|
|
{ |
|
|
|
var Fw2_Desc = _pcsApi.GetPlmMeterialInfo(model.wipSystem.Fw2).InvokeAsync().Result; |
|
|
|
model.wipSystem.Fw2_Desc = Fw2_Desc.Count == 0 ? "" : Fw2_Desc.FirstOrDefault().MeterialDesc; |
|
|
|
} |
|
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(model.wipSystem.Bios)) |
|
|
|
{ |
|
|
|
var Bios_Desc = _pcsApi.GetPlmMeterialInfo(model.wipSystem.Bios).InvokeAsync().Result; |
|
|
|
model.wipSystem.Bios_Desc = Bios_Desc.Count == 0 ? "" : Bios_Desc.FirstOrDefault().MeterialDesc; |
|
|
|
} |
|
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(model.wipSystem.OsVer)) |
|
|
|
{ |
|
|
|
var Os_Desc = _pcsApi.GetPlmMeterialInfo(model.wipSystem.OsVer).InvokeAsync().Result; |
|
|
|
model.wipSystem.OsVer_Desc = Os_Desc.Count == 0 ? "" : Os_Desc.FirstOrDefault().MeterialDesc; |
|
|
|
} |
|
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(model.wipSystem.PowerMode)) |
|
|
|
{ |
|
|
|
var PowerMode_Desc = _pcsApi.GetPlmMeterialInfo(model.wipSystem.PowerMode).InvokeAsync().Result; |
|
|
|
model.wipSystem.PowerMode_Desc = PowerMode_Desc.Count == 0 ? "" : PowerMode_Desc.FirstOrDefault().ProductionMemo; |
|
|
|
} |
|
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(model.wipSystem.Engineer)) |
|
|
|
{ |
|
|
|
var UserInof = _sysApi.GetUserInfoByUserNo(model.wipSystem.Engineer).InvokeAsync().Result; |
|
|
|
if (UserInof != null) |
|
|
|
model.wipSystem.Engineer_Name = UserInof.UserName; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 取料號對應工時
|
|
|
|
var standardWorkTimes = await _pcsApi.GetStandardWorkTimeByItemNo(model.wipAtt.ItemNO); |
|
|
|
|
|
|
|
if (standardWorkTimes.Count != 0) |
|
|
|
model.itemNoCT1 = standardWorkTimes.Sum(m => m.TotalCT).ToString(); |
|
|
|
|
|
|
|
// 確認是否已通知
|
|
|
|
var wipCheck = await _pcsApi.GetWipCheck(model.wipInfo.WipNO); |
|
|
|
if (wipCheck == null) |
|
|
|
{ |
|
|
|
model.wipCheck = "N"; |
|
|
|
} |
|
|
|
else if (wipCheck.PEUserID != null) |
|
|
|
{ |
|
|
|
model.wipCheck = "Y"; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
await WipDataSelectAll(model.wipAtt.WipNO, model.wipAtt.ItemNO, model.wipInfo.UnitNO); |
|
|
|
|
|
|
|
GetCheckboxApproveLogo(model.wipLabel != null ? model.wipLabel.ApproveLogo : null); |
|
|
|
GetCheckboxCompanyLogo(model.wipLabel != null ? model.wipLabel.CompanyLogo : null); |
|
|
|
GetCheckboxPrintMode(model.wipLabel != null ? model.wipLabel.PrintMode : null); |
|
|
|
GetCheckboxWipAttr(model.wipLabel != null ? model.wipLabel.WipAttr : null); |
|
|
|
GetCheckboxDIP(model.wipBoard != null ? model.wipBoard.DipSide : ""); |
|
|
|
GetCheckboxSMD(model.wipBoard != null ? model.wipBoard.Smd : ""); |
|
|
|
GetCheckboxSMDSolderMa(model.wipBoard != null ? model.wipBoard.SmdSolderMask : ""); |
|
|
|
return View("PCS003", model); |
|
|
|
} |
|
|
|
|
|
|
|
[HttpPost] |
|
|
|
public async Task<IActionResult> PCS003Async(WipDataViewModel model, string action, IFormFile formFile) |
|
|
|
public async Task<IActionResult> CheckWipNoData(string wipNo) |
|
|
|
{ |
|
|
|
try |
|
|
|
{ |
|
|
|
// 檢查是否有資料
|
|
|
|
var hasData = await _pcsApi.GetWipInfoByWipNO(wipNo.Trim().ToUpper()); |
|
|
|
|
|
|
|
return Json(hasData); |
|
|
|
} |
|
|
|
catch (Exception ex) |
|
|
|
{ |
|
|
|
// 針對安勤 工單基本資料統一打開工程資訊 不判斷製程
|
|
|
|
ViewBag.WipSpecial = _configuration["WipSpecial"]; |
|
|
|
return Json(new List<object>()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
[HttpPost] |
|
|
|
public async Task<IActionResult> PCS003Async(WipDataViewModel model, string action, IFormFile formFile) |
|
|
|
{ |
|
|
|
try |
|
|
|
{ |
|
|
|
// 登入UserID
|
|
|
@ -2575,9 +2752,6 @@ namespace AMESCoreStudio.Web.Controllers |
|
|
|
#region PCS034 工單投產可修改
|
|
|
|
public async Task<IActionResult> PCS034(int id) |
|
|
|
{ |
|
|
|
// 針對安勤 工單基本資料統一打開工程資訊
|
|
|
|
ViewBag.WipSpecial = _configuration["WipSpecial"]; |
|
|
|
|
|
|
|
WipDataViewModel model = new WipDataViewModel(); |
|
|
|
var q = await _pcsApi.GetWipInfo(id); |
|
|
|
if (q.Count != 0) |
|
|
@ -2705,9 +2879,6 @@ namespace AMESCoreStudio.Web.Controllers |
|
|
|
[HttpPost] |
|
|
|
public async Task<IActionResult> PCS034Async(WipDataViewModel model, string action, IFormFile formFile) |
|
|
|
{ |
|
|
|
// 針對安勤 工單基本資料統一打開工程資訊 不判斷製程
|
|
|
|
ViewBag.WipSpecial = _configuration["WipSpecial"]; |
|
|
|
|
|
|
|
try |
|
|
|
{ |
|
|
|
// 登入UserID
|
|
|
@ -7944,27 +8115,6 @@ namespace AMESCoreStudio.Web.Controllers |
|
|
|
Msg += result.Msg; |
|
|
|
} |
|
|
|
|
|
|
|
// 安勤統一執行WipSystem
|
|
|
|
if (ViewBag.WipSpecial == "Y") |
|
|
|
{ |
|
|
|
// 測試備註空白 帶工單描述
|
|
|
|
if (string.IsNullOrWhiteSpace(model.wipSystem.TestMemo)) |
|
|
|
{ |
|
|
|
model.wipSystem.TestMemo = model.wipInfo.Description; |
|
|
|
} |
|
|
|
|
|
|
|
model.wipSystem.ItemNo = model.wipAtt.ItemNO; |
|
|
|
model.wipSystem.WipNo = model.wipInfo.WipNO; |
|
|
|
model.wipSystem.CreateUserID = UserID; |
|
|
|
model.wipSystem.UpdateUserID = UserID; |
|
|
|
result = await _pcsApi.PutWipSystem(JsonConvert.SerializeObject(model.wipSystem)); |
|
|
|
if (!result.Success) |
|
|
|
{ |
|
|
|
Msg += result.Msg; |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
// 系統WipSystem
|
|
|
|
if (model.wipInfo.UnitNO == "B" || model.wipInfo.UnitNO == "O" || model.wipInfo.UnitNO == "T") |
|
|
|
{ |
|
|
@ -8005,7 +8155,6 @@ namespace AMESCoreStudio.Web.Controllers |
|
|
|
Msg += result.Msg; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 工單條碼
|
|
|
|
//model.wipBarcode.WipID = model.wipInfo.WipID;
|
|
|
|