diff --git a/AMESCoreStudio.Web/Controllers/PCSController.cs b/AMESCoreStudio.Web/Controllers/PCSController.cs index 56f5e2d1..1d04be66 100644 --- a/AMESCoreStudio.Web/Controllers/PCSController.cs +++ b/AMESCoreStudio.Web/Controllers/PCSController.cs @@ -29,7 +29,6 @@ namespace AMESCoreStudio.Web.Controllers public class PCSController : Controller { - private readonly ILogger _logger; private readonly ILogger _log; public readonly ISYS _sysApi; @@ -1009,12 +1008,11 @@ namespace AMESCoreStudio.Web.Controllers private void GetCheckboxSMD(string SelectedValue = null) { List values = new List(); - if (SelectedValue != null) - { - values = SelectedValue.Split(',').ToList(); - } - else + if (SelectedValue == "") values.Add("F"); //預設 + else if (SelectedValue != null) + values = SelectedValue.Split(',').ToList(); + var q = Enum.GetValues(typeof(EnumPCS.EnumWipBoardSMDType)).Cast() .Select(s => new SelectListItem { @@ -1033,12 +1031,11 @@ namespace AMESCoreStudio.Web.Controllers private void GetCheckboxSMDSolderMa(string SelectedValue = null) { List values = new List(); - if (SelectedValue != null) - { - values = SelectedValue.Split(',').ToList(); - } - else + if (SelectedValue == "") values.Add("F"); //預設 + else if (SelectedValue != null) + values = SelectedValue.Split(',').ToList(); + var q = Enum.GetValues(typeof(EnumPCS.EnumWipBoardSMDType)).Cast() .Select(s => new SelectListItem { @@ -1054,22 +1051,21 @@ namespace AMESCoreStudio.Web.Controllers /// DIP /// /// - private void GetCheckboxDIP(string SelectedValue = null) + private void GetCheckboxDIP(string SelectedValue = "") { List values = new List(); - if (SelectedValue != null) - { - values = SelectedValue.Split(',').ToList(); - } - else + if (SelectedValue == "") values.Add("A"); //預設 + else if (SelectedValue != null) + values = SelectedValue.Split(',').ToList(); + var q = Enum.GetValues(typeof(EnumPCS.EnumWipBoardDIPType)).Cast() - .Select(s => new SelectListItem - { - Text = EnumPCS.GetDisplayName(s).ToString(), - Value = s.ToString(), - Selected = values.Where(v => v.Contains(s.ToString())).Count() != 0 - }).ToList(); + .Select(s => new SelectListItem + { + Text = EnumPCS.GetDisplayName(s).ToString(), + Value = s.ToString(), + Selected = values.Where(v => v.Contains(s.ToString())).Count() != 0 + }).ToList(); ViewBag.GetCheckboxDIP = q; } @@ -1450,8 +1446,6 @@ namespace AMESCoreStudio.Web.Controllers } } - - return Json(new Result() { success = result.Success, msg = result.Msg, data = new { StartNO, EndNO } }); } #endregion @@ -2003,6 +1997,8 @@ namespace AMESCoreStudio.Web.Controllers model.wipBoard.DipSolderMask = model.wipBoard.DipSolderMask == "true" ? "Y" : "N"; model.wipBoard.Burn = model.wipBoard.Burn == "true" ? "Y" : "N"; model.wipBoard.ISPartsBake = model.wipBoard.ISPartsBake == "true" ? "Y" : "N"; + model.wipBoard.PartsBakeOvertime = model.wipBoard.PartsBakeOvertime == "true" ? "Y" : "N"; + model.wipBoard.ISPcbBake = model.wipBoard.ISPcbBake == "true" ? "Y" : "N"; //系統 model.wipSystem.FinePackage = model.wipSystem.FinePackage == "true" ? "Y" : "N"; @@ -2035,7 +2031,8 @@ namespace AMESCoreStudio.Web.Controllers model.wipBoard.DipSolderMask = model.wipBoard.DipSolderMask == "Y" ? "true" : "false"; model.wipBoard.ISPartsBake = model.wipBoard.ISPartsBake == "Y" ? "true" : "false"; model.wipBoard.Burn = model.wipBoard.Burn == "Y" ? "true" : "false"; - + model.wipBoard.PartsBakeOvertime = model.wipBoard.PartsBakeOvertime == "Y" ? "true" : "false"; + model.wipBoard.ISPcbBake = model.wipBoard.ISPcbBake == "Y" ? "true" : "false"; //系統 model.wipSystem.FinePackage = model.wipSystem.FinePackage == "Y" ? "true" : "false"; ModelState.AddModelError("error", Msg); @@ -2222,8 +2219,6 @@ namespace AMESCoreStudio.Web.Controllers } } - - if (result.Success) { var _msg = "新增成功!"; @@ -2461,10 +2456,10 @@ namespace AMESCoreStudio.Web.Controllers model.wipAtt = await _pcsApi.GetWipAtt(model.wipInfo.WipNO); model.wipBarcodes = await _pcsApi.GetWipBarcode(model.wipInfo.WipNO); model.wipBarcode = model.wipBarcodes.FirstOrDefault(); - + model.wipBoard = await _pcsApi.GetWipBoard(model.wipInfo.WipNO); //var q1 = await _pcsApi.GetMaterialSopQuery(itemNo: model.wipAtt.ItemNO); //model.materialSops = q1.Data; - model.wipBoard = await _pcsApi.GetWipBoard(model.wipInfo.WipNO); + if (model.wipBoard != null) { if (!string.IsNullOrWhiteSpace(model.wipBoard.Engineer)) @@ -2564,38 +2559,38 @@ namespace AMESCoreStudio.Web.Controllers 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 : null); - GetCheckboxSMD(model.wipBoard != null ? model.wipBoard.Smd : null); - GetCheckboxSMDSolderMa(model.wipBoard != null ? model.wipBoard.SmdSolderMask : null); + GetCheckboxDIP(model.wipBoard != null ? model.wipBoard.DipSide : ""); + GetCheckboxSMD(model.wipBoard != null ? model.wipBoard.Smd : ""); + GetCheckboxSMDSolderMa(model.wipBoard != null ? model.wipBoard.SmdSolderMask : ""); return View(model); } [HttpPost] public async Task PCS003Async(WipDataViewModel model, string action, IFormFile formFile) { - // 針對安勤 工單基本資料統一打開工程資訊 + // 針對安勤 工單基本資料統一打開工程資訊 不判斷製程 ViewBag.WipSpecial = _configuration["WipSpecial"]; try { + // 登入UserID + var UserID = GetLogInUserID(); + #region 選單 await WipDataSelectAll(model.wipInfo.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 ? string.Join(',', model.wipBoard.DipSides) : null); - GetCheckboxSMD(model.wipBoard != null ? string.Join(',', model.wipBoard.SMDs) : null); - GetCheckboxSMDSolderMa(model.wipBoard != null ? string.Join(',', model.wipBoard.SmdSolderMasks) : null); + GetCheckboxDIP(model.wipBoard != null ? model.wipBoard.DipSide : ""); + GetCheckboxSMD(model.wipBoard != null ? model.wipBoard.Smd : ""); + GetCheckboxSMDSolderMa(model.wipBoard != null ? model.wipBoard.SmdSolderMask : ""); #endregion + model.ruleStations = await _pcsApi.GetRuleStationByWipNo(model.wipInfo.WipNO); model.wipBarcodes = await _pcsApi.GetWipBarcode(model.wipInfo.WipNO); - IResultModel result; - // 登入UserID - var UserID = GetLogInUserID(); - - // Checkbox轉換 + #region Checkbox轉換 model.wipInfo.ECNCheck = model.wipInfo.ECNCheck == "on" ? "Y" : "N"; model.wipInfo.ModelCheck = model.wipInfo.ModelCheck == "on" ? "Y" : "N"; model.wipInfo.InputFlag = model.wipInfo.InputFlag == "on" ? "Y" : "N"; @@ -2609,8 +2604,11 @@ namespace AMESCoreStudio.Web.Controllers model.wipBoard.Burn = model.wipBoard.Burn == "on" ? "Y" : "N"; model.wipBoard.DipSolderMask = model.wipBoard.DipSolderMask == "on" ? "Y" : "N"; model.wipBoard.ISPartsBake = model.wipBoard.ISPartsBake == "on" ? "Y" : "N"; + model.wipBoard.PartsBakeOvertime = model.wipBoard.PartsBakeOvertime == "on" ? "Y" : "N"; + model.wipBoard.ISPcbBake = model.wipBoard.ISPcbBake == "on" ? "Y" : "N"; //系統 model.wipSystem.FinePackage = model.wipSystem.FinePackage == "on" ? "Y" : "N"; + #endregion // 判斷資料填寫 WipDataViewModel wipDataViewModel = new WipDataViewModel(); @@ -2621,6 +2619,8 @@ namespace AMESCoreStudio.Web.Controllers wipDataViewModel.wipBarcodeOther = model.wipBarcodeOther; var Msg = CheckWipInfoInsert(wipDataViewModel); + + // 判斷是否有開重複工單+生產單位 var wipInfoQuery = await _pcsApi.GetWipInfoByWipNO(model.wipInfo.WipNO); if (wipInfoQuery.Any()) @@ -2681,439 +2681,388 @@ namespace AMESCoreStudio.Web.Controllers return View("PCS003", model); } - // 修改工單數量大於原本數量 - //var oldWipQty = result_wipNo.Where(w => w.WipID == model.wipInfo.WipID).FirstOrDefault().PlanQTY; - //if (oldWipQty < model.wipInfo.PlanQTY) + // 工單相關資料ExecuteDB + var (WipExecuteMsg, WipExeucteModel) = await WipExecuteDB(model, formFile); + model = WipExeucteModel; + + if (!string.IsNullOrWhiteSpace(WipExecuteMsg)) + { + ModelState.AddModelError("error", $"修改失敗,錯誤訊息:{WipExecuteMsg}"); + return View("PCS003", model); + } + + //result = await _pcsApi.PutWipInfo(JsonConvert.SerializeObject(model.wipInfo)); + //if (result.Success) //{ - // ModelState.AddModelError("error", "修改工單數量不能超過原來工單數量"); - // return View("PCS003", model); + // // 工單屬性 + // model.wipAtt.WipNO = model.wipInfo.WipNO; + // await _pcsApi.PutWipAtt(JsonConvert.SerializeObject(model.wipAtt)); + + // // 標籤 + // model.wipLabel.ApproveLogo = model.wipLabel.ApproveLogos == null ? null : string.Join(',', model.wipLabel.ApproveLogos); + // model.wipLabel.WipNO = model.wipInfo.WipNO; + // model.wipLabel.CreateUserID = UserID; + // model.wipLabel.UpdateUserID = UserID; + // await _pcsApi.PutWipLabel(JsonConvert.SerializeObject(model.wipLabel)); + + // // 安勤統一執行WIP_SYSTEM + // if (ViewBag.WipSpecial == "Y") + // { + // if (string.IsNullOrWhiteSpace(CheckWipInfoInsert_WipSystem(model.wipSystem))) + // { + // model.wipSystem.ItemNo = model.wipAtt.ItemNO; + // model.wipSystem.WipNo = model.wipInfo.WipNO; + // model.wipSystem.CreateUserID = UserID; + // model.wipSystem.UpdateUserID = UserID; + // await _pcsApi.PutWipSystem(JsonConvert.SerializeObject(model.wipSystem)); + // } + // } + // else + // { + // // 系統 + // if (model.wipInfo.UnitNO == "B" || model.wipInfo.UnitNO == "P" || model.wipInfo.UnitNO == "T") + // { + // if (string.IsNullOrWhiteSpace(CheckWipInfoInsert_WipSystem(model.wipSystem))) + // { + // model.wipSystem.ItemNo = model.wipAtt.ItemNO; + // model.wipSystem.WipNo = model.wipInfo.WipNO; + // model.wipSystem.CreateUserID = UserID; + // model.wipSystem.UpdateUserID = UserID; + // await _pcsApi.PutWipSystem(JsonConvert.SerializeObject(model.wipSystem)); + // } + // } + // else + // // 板卡 + // { + // if (string.IsNullOrWhiteSpace(CheckWipInfoInsert_WipBoard(model.wipBoard))) + // { + // model.wipBoard.Smd = model.wipBoard.SMDs == null ? null : string.Join(',', model.wipBoard.SMDs); + // model.wipBoard.SmdSolderMask = model.wipBoard.SmdSolderMasks == null ? null : string.Join(',', model.wipBoard.SmdSolderMasks); + // model.wipBoard.DipSide = model.wipBoard.DipSides == null ? null : string.Join(',', model.wipBoard.DipSides); + // model.wipBoard.ItemNo = model.wipAtt.ItemNO; + // model.wipBoard.WipNo = model.wipInfo.WipNO; + // model.wipBoard.CreateUserID = UserID; + // model.wipBoard.UpdateUserID = UserID; + // await _pcsApi.PutWipBoard(JsonConvert.SerializeObject(model.wipBoard)); + // } + // } + // } + + // // 內部條碼 + // if (!string.IsNullOrWhiteSpace(model.wipBarcode.Remarks)) + // { + // model.wipBarcode.WipID = model.wipInfo.WipID; + // model.wipBarcode.WipNO = model.wipInfo.WipNO; + // model.wipBarcode.UnitNO = model.wipInfo.UnitNO; + // model.wipBarcode.CreateUserID = UserID; + // result = await _pcsApi.PutWipBarcode(JsonConvert.SerializeObject(model.wipBarcode)); + // } + + // // MAC + // if (!string.IsNullOrWhiteSpace(model.wipMAC.StartNO) && !string.IsNullOrWhiteSpace(model.wipMAC.EndNO)) + // { + // if (model.wipMAC.StartNO.Length == 12) + // { + // model.wipMAC.Title = model.wipMAC.StartNO.Substring(0, 6).ToUpper(); + // model.wipMAC.StartNO = model.wipMAC.StartNO.Substring(model.wipMAC.StartNO.Length - 6, 6).ToUpper(); + // model.wipMAC.EndNO = model.wipMAC.EndNO.Substring(model.wipMAC.EndNO.Length - 6, 6).ToUpper(); + + // // 確認MAC Table是否有料號資料 + // var mACInfo = await _pcsApi.GetMACInfo(model.wipAtt.ItemNO); + // if (mACInfo != null) + // { + // model.wipMAC.ClassGroup = mACInfo.ClassGroup; + // } + + // if (!string.IsNullOrWhiteSpace(model.wipMAC.WipNO)) + // result = await _pcsApi.PutWipMAC(JsonConvert.SerializeObject(model.wipMAC)); + // else + // { + // model.wipMAC.WipNO = model.wipInfo.WipNO; + // model.wipMAC.CreateUserID = UserID; + // result = await _pcsApi.PostWipMAC(JsonConvert.SerializeObject(model.wipMAC)); + // } + // } + // } + + // // KeyParts + // // 判斷料號KP有資料 沒有資料時 一起新增到料號KP + // // 2022.10.12 取消判斷 刪除料號KP,在逐一新增 + // var materialItem = await _pcsApi.GetMaterialItemByItemNO(model.wipAtt.ItemNO); + // if (materialItem != null) + // { + // await _pcsApi.DeleteMaterialKpByItem(materialItem.ItemID); + // } + + // // 先比對新舊ID 當舊ID有 新的沒有代表已刪除 + // var resultOld_WipKp = await _pcsApi.GetWipKpByWipNo(model.wipInfo.WipNO); + // var delete_WipKpID = resultOld_WipKp.Select(s => s.WipKpID).Except(model.WipKps.Select(s => s.WipKpID)); + // foreach (var id in delete_WipKpID) + // { + // await _pcsApi.DeleteWipKp(id); + // } + + // foreach (var item in model.WipKps.Where(w => w.WipKpID != -1)) + // { + // item.WipNo = model.wipInfo.WipNO; + // item.ItemNo = model.wipAtt.ItemNO; + // item.CreateUserID = UserID; + // item.UpdateUserID = UserID; + // if (item.WipKpID == 0) + // await _pcsApi.PostWipKp(JsonConvert.SerializeObject(item)); + // else + // await _pcsApi.PutWipKp(JsonConvert.SerializeObject(item)); + + // // 新增到料號KP檔 + // await _pcsApi.PostMaterialKp(JsonConvert.SerializeObject(new MaterialKp + // { + // ItemID = materialItem.ItemID, + // KpName = item.KpName, + // KpNo = item.KpNo, + // KpSeq = Convert.ToInt32(item.KpSeq), + // Length = item.Length, + // StationType = item.UnitNo, + // IsRepeat = "N", + // Title = item.Title, + // CreateUserID = UserID, + // UpdateUserID = UserID + // })); + // } + // model.WipKps = model.WipKps.Where(w => w.WipKpID != -1).ToList(); + + // // 治具 + // // 先比對新舊ID 當舊ID有 新的沒有代表已刪除 + // var resultOld_WipOutfit = await _pcsApi.GetWipOutfitByWipNo(model.wipInfo.WipNO); + // var delete_WipOutfit = resultOld_WipOutfit.Select(s => s.WipOutfitID).Except(model.WipOutfits.Select(s => s.WipOutfitID)); + // foreach (var id in delete_WipOutfit) + // { + // await _pcsApi.DeleteWipOutfit(id); + // } + // foreach (var item in model.WipOutfits.Where(w => w.WipOutfitID != -1)) + // { + // item.WipNo = model.wipInfo.WipNO; + // item.ItemNo = model.wipAtt.ItemNO; + // item.UpdateUserID = UserID; + // item.CreateUserID = UserID; + // item.OutfitNo = "."; + // if (item.WipOutfitID == 0) + // await _pcsApi.PostWipOutfit(JsonConvert.SerializeObject(item)); + // else + // await _pcsApi.PutWipOutfit(JsonConvert.SerializeObject(item)); + // } + // model.WipOutfits = model.WipOutfits.Where(w => w.WipOutfitID != -1); + + // // SOP + // // 先比對新舊ID 當舊ID有 新的沒有代表已刪除 + // var resultOld_WipSop = await _pcsApi.GetWipSopByWipNo(model.wipInfo.WipNO); + // var delete_WipSop = resultOld_WipSop.Select(s => s.WipSOPID).Except(model.WipSops.Select(s => s.WipSOPID)); + // foreach (var id in delete_WipSop) + // { + // await _pcsApi.DeleteWipSop(id); + // } + // foreach (var item in model.WipSops.Where(w => w.WipSOPID != -1)) + // { + // item.WipNo = model.wipInfo.WipNO; + // item.ItemNo = model.wipAtt.ItemNO; + // item.CreateUserID = UserID; + // item.UpdateUserID = UserID; + // if (item.WipSOPID == 0) + // await _pcsApi.PostWipSop(JsonConvert.SerializeObject(item)); + // else + // await _pcsApi.PutWipSop(JsonConvert.SerializeObject(item)); + // } + // model.WipSops = model.WipSops.Where(w => w.WipSOPID != -1); + + // // 檔案上傳 + // string FileName = string.Empty; + // string NewName = string.Empty; + // string FilePath = string.Empty; + + // if (formFile != null) + // { + // if (formFile.Length > 0) + // { + // //取得使用者上傳檔案的原始檔名 + // FileName = Path.GetFileName(formFile.FileName); + // //取原始檔名中的副檔名 + // //var fileExt = Path.GetExtension(FileName); + // //為避免使用者上傳的檔案名稱發生重複,重新給一個亂數名稱 + // //NewName = Path.GetRandomFileName() + fileExt; + // //指定要寫入的路徑、檔名和副檔名 + // FilePath = $@"{_env.WebRootPath}\UploadFolder\{model.wipInfo.WipNO}"; + // var path = $@"{FilePath}\{FileName}"; + + // if (!System.IO.Directory.Exists(FilePath)) + // { + // System.IO.Directory.CreateDirectory(FilePath); + // } + + // using (var stream = new FileStream(path, FileMode.Create)) + // { + // await formFile.CopyToAsync(stream); + // } + + // model.wipInfoBlob.WipNo = model.wipInfo.WipNO; + // model.wipInfoBlob.ImageName = FileName; + // model.wipInfoBlob.Filepath = $@"\UploadFolder\{model.wipInfo.WipNO}\"; + // model.wipInfoBlob.CreateUserID = UserID; + // model.wipInfoBlob.UpdateUserID = UserID; + // result = await _pcsApi.PostWipInfoBlob(JsonConvert.SerializeObject(model.wipInfoBlob)); + // } + // } //} - result = await _pcsApi.PutWipInfo(JsonConvert.SerializeObject(model.wipInfo)); - if (result.Success) + WipCheck wipCheck = new WipCheck { - // 工單屬性 - model.wipAtt.WipNO = model.wipInfo.WipNO; - await _pcsApi.PutWipAtt(JsonConvert.SerializeObject(model.wipAtt)); + WipNo = model.wipInfo.WipNO + }; + if (action == "生管確認") + { + wipCheck.PMCUserID = UserID; + await CheckPCS003ToMail(model.wipInfo.WipNO, model.wipAtt.ItemNO, model.wipInfo.UnitNO, model.wipInfo.WipScheduleDate.ToString(), action); + await _pcsApi.PutWipCheckByPMC(JsonConvert.SerializeObject(wipCheck)); + } + else if (action == "工程確認") + { + wipCheck.PEUserID = UserID; + await CheckPCS003ToMail(model.wipInfo.WipNO, model.wipAtt.ItemNO, model.wipInfo.UnitNO, model.wipInfo.WipScheduleDate.ToString(), action); + await _pcsApi.PutWipCheckByPE(JsonConvert.SerializeObject(wipCheck)); + } + else if (action == "製造確認") + { + wipCheck.MFUserID = UserID; + await _pcsApi.PutWipCheckByMF(JsonConvert.SerializeObject(wipCheck)); + } - // 標籤 - model.wipLabel.ApproveLogo = model.wipLabel.ApproveLogos == null ? null : string.Join(',', model.wipLabel.ApproveLogos); - model.wipLabel.WipNO = model.wipInfo.WipNO; - model.wipLabel.CreateUserID = UserID; - model.wipLabel.UpdateUserID = UserID; - await _pcsApi.PutWipLabel(JsonConvert.SerializeObject(model.wipLabel)); + var _msg = "修改成功!"; + ModelState.AddModelError("error", _msg); + return View("PCS003", model); + } + catch (Exception ex) + { + ModelState.AddModelError("error", "系統錯誤,錯誤訊息:" + ex.Message); + return View("PCS003", model); + } + } - // 安勤統一執行WIP_SYSTEM - if (ViewBag.WipSpecial == "Y") + /// + /// 檔案下載 + /// + /// 路徑 + /// 檔名 + /// + public async Task FileDownload(string Path, string FileName) + { + var path = $@"{_env.WebRootPath}\{Path}{FileName}"; + var memoryStream = new MemoryStream(); + using (var stream = new FileStream(path, FileMode.Open)) + { + await stream.CopyToAsync(memoryStream); + } + memoryStream.Seek(0, SeekOrigin.Begin); + string contentType = await GetFileContentTypeAsync(FileName); + // 回傳檔案到 Client 需要附上 Content Type,否則瀏覽器會解析失敗。 + return File(memoryStream, contentType, FileName); + } + + /// + /// 获取文件ContentType + /// + /// 文件名称 + /// + public async static Task GetFileContentTypeAsync(string fileName) + { + return await Task.Run(() => + { + string suffix = Path.GetExtension(fileName); + var provider = new FileExtensionContentTypeProvider(); + if (suffix.ToUpper().Trim() == ".MSG") + { + return "application/octet-stream"; + } + var contentType = provider.Mappings[suffix]; + return contentType; + }); + } + + #region PCS034 工單投產可修改 + public async Task PCS034(int id) + { + // 針對安勤 工單基本資料統一打開工程資訊 + ViewBag.WipSpecial = _configuration["WipSpecial"]; + + WipDataViewModel model = new WipDataViewModel(); + var q = await _pcsApi.GetWipInfo(id); + if (q.Count != 0) + { + // 判斷是否完工 + if (q.Where(w => w.StatusNO == "E").Any()) + { + var _msg = "工單號碼【" + q.FirstOrDefault().WipNO + "】,已經投入完工,不可修改"; + return RedirectToAction("Refresh", "Home", new { msg = _msg }); + } + + // 判斷是否刪除 + if (q.Where(w => w.StatusNO == "C").Any()) + { + var _msg = "工單號碼【" + 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(); + model.ruleStations = await _pcsApi.GetRuleStationByWipNo(model.wipInfo.WipNO); + model.wipBoard = await _pcsApi.GetWipBoard(model.wipInfo.WipNO); + if (model.wipBoard != null) + { + if (!string.IsNullOrWhiteSpace(model.wipBoard.Engineer)) { - if (string.IsNullOrWhiteSpace(CheckWipInfoInsert_WipSystem(model.wipSystem))) - { - if (!string.IsNullOrWhiteSpace(model.wipSystem.BiTemperature)) - { - model.wipSystem.ItemNo = model.wipAtt.ItemNO; - model.wipSystem.WipNo = model.wipInfo.WipNO; - model.wipSystem.CreateUserID = UserID; - model.wipSystem.UpdateUserID = UserID; - await _pcsApi.PutWipSystem(JsonConvert.SerializeObject(model.wipSystem)); - } - } + var UserInof = _sysApi.GetUserInfoByUserNo(model.wipBoard.Engineer).InvokeAsync().Result; + if (UserInof != null) + model.wipBoard.Engineer_Name = UserInof.UserName; } - else + } + + model.wipSystem = await _pcsApi.GetWipSystem(model.wipInfo.WipNO); + if (model.wipSystem != null) + { + if (!string.IsNullOrWhiteSpace(model.wipSystem.Ec)) { - // 系統 - if (model.wipInfo.UnitNO == "B" || model.wipInfo.UnitNO == "P" || model.wipInfo.UnitNO == "T") - { - if (string.IsNullOrWhiteSpace(CheckWipInfoInsert_WipSystem(model.wipSystem))) - { - if (!string.IsNullOrWhiteSpace(model.wipSystem.BiTemperature)) - { - model.wipSystem.ItemNo = model.wipAtt.ItemNO; - model.wipSystem.WipNo = model.wipInfo.WipNO; - model.wipSystem.CreateUserID = UserID; - model.wipSystem.UpdateUserID = UserID; - await _pcsApi.PutWipSystem(JsonConvert.SerializeObject(model.wipSystem)); - } - } - } - else - // 板卡 - { - if (string.IsNullOrWhiteSpace(CheckWipInfoInsert_WipBoard(model.wipBoard))) - { - if (!string.IsNullOrWhiteSpace(model.wipBoard.BiTemperature)) - { - model.wipBoard.Smd = model.wipBoard.SMDs == null ? null : string.Join(',', model.wipBoard.SMDs); - model.wipBoard.SmdSolderMask = model.wipBoard.SmdSolderMasks == null ? null : string.Join(',', model.wipBoard.SmdSolderMasks); - model.wipBoard.DipSide = model.wipBoard.DipSides == null ? null : string.Join(',', model.wipBoard.DipSides); - model.wipBoard.ItemNo = model.wipAtt.ItemNO; - model.wipBoard.WipNo = model.wipInfo.WipNO; - model.wipBoard.CreateUserID = UserID; - model.wipBoard.UpdateUserID = UserID; - await _pcsApi.PutWipBoard(JsonConvert.SerializeObject(model.wipBoard)); - } - } - } + var Ec_Desc = _pcsApi.GetPlmMeterialInfo(model.wipSystem.Ec).InvokeAsync().Result; + model.wipSystem.Ec_Desc = Ec_Desc.Count == 0 ? "" : Ec_Desc.FirstOrDefault().MeterialDesc; } - //// 工單對應SOP - //var q = await _pcsApi.GetMaterialSopQuery(itemNo: model.wipAtt.ItemNO, unitNo: model.wipInfo.UnitNO, state: "Y"); - //if (q.Data.Count() != 0) - //{ - // model.wipSop.MaterialSopID = q.Data.FirstOrDefault().MaterialSopID; - // await _pcsApi.PostWipSop(JsonConvert.SerializeObject(model.wipSop)); - //} - - // 內部條碼 - if (!string.IsNullOrWhiteSpace(model.wipBarcode.Remarks)) + if (!string.IsNullOrWhiteSpace(model.wipSystem.Fw)) { - model.wipBarcode.WipID = model.wipInfo.WipID; - model.wipBarcode.WipNO = model.wipInfo.WipNO; - model.wipBarcode.UnitNO = model.wipInfo.UnitNO; - model.wipBarcode.CreateUserID = UserID; - result = await _pcsApi.PutWipBarcode(JsonConvert.SerializeObject(model.wipBarcode)); + 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.wipBarcodeOther.StartNO) && !string.IsNullOrWhiteSpace(model.wipBarcodeOther.EndNO)) - //{ - // var type_no = await _pcsApi.GetBarcodeTypeByTypeName("客戶條碼區間"); - // if (type_no != null) - // { - // model.wipBarcodeOther.WipNO = model.wipInfo.WipNO; - // model.wipBarcodeOther.TypeNO = type_no.TypeNo; - // if (model.wipBarcodeOther.OtherID != 0) - // result = await _pcsApi.PutWipBarcodeOther(JsonConvert.SerializeObject(model.wipBarcodeOther)); - // else - // result = await _pcsApi.PostWipBarcodeOther(JsonConvert.SerializeObject(model.wipBarcodeOther)); - // } - //} + 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; + } - // MAC - if (!string.IsNullOrWhiteSpace(model.wipMAC.StartNO) && !string.IsNullOrWhiteSpace(model.wipMAC.EndNO)) + if (!string.IsNullOrWhiteSpace(model.wipSystem.Bios)) { - if (model.wipMAC.StartNO.Length == 12) - { - model.wipMAC.Title = model.wipMAC.StartNO.Substring(0, 6).ToUpper(); - model.wipMAC.StartNO = model.wipMAC.StartNO.Substring(model.wipMAC.StartNO.Length - 6, 6).ToUpper(); - model.wipMAC.EndNO = model.wipMAC.EndNO.Substring(model.wipMAC.EndNO.Length - 6, 6).ToUpper(); + var Bios_Desc = _pcsApi.GetPlmMeterialInfo(model.wipSystem.Bios).InvokeAsync().Result; + model.wipSystem.Bios_Desc = Bios_Desc.Count == 0 ? "" : Bios_Desc.FirstOrDefault().MeterialDesc; + } - // 確認MAC Table是否有料號資料 - var mACInfo = await _pcsApi.GetMACInfo(model.wipAtt.ItemNO); - if (mACInfo != null) - { - model.wipMAC.ClassGroup = mACInfo.ClassGroup; - //result = await _pcsApi.PutMACInfoByClassGroup(mACInfo.ClassGroup, model.wipMAC.EndNO); - } - - if (!string.IsNullOrWhiteSpace(model.wipMAC.WipNO)) - result = await _pcsApi.PutWipMAC(JsonConvert.SerializeObject(model.wipMAC)); - else - { - model.wipMAC.WipNO = model.wipInfo.WipNO; - model.wipMAC.CreateUserID = UserID; - result = await _pcsApi.PostWipMAC(JsonConvert.SerializeObject(model.wipMAC)); - } - } - } - - // KeyParts - // 判斷料號KP有資料 沒有資料時 一起新增到料號KP - // 2022.10.12 取消判斷 刪除料號KP,在逐一新增 - var materialItem = await _pcsApi.GetMaterialItemByItemNO(model.wipAtt.ItemNO); - if (materialItem != null) - { - await _pcsApi.DeleteMaterialKpByItem(materialItem.ItemID); - } - - // 先比對新舊ID 當舊ID有 新的沒有代表已刪除 - var resultOld_WipKp = await _pcsApi.GetWipKpByWipNo(model.wipInfo.WipNO); - var delete_WipKpID = resultOld_WipKp.Select(s => s.WipKpID).Except(model.WipKps.Select(s => s.WipKpID)); - foreach (var id in delete_WipKpID) - { - await _pcsApi.DeleteWipKp(id); - } - - foreach (var item in model.WipKps.Where(w => w.WipKpID != -1)) - { - item.WipNo = model.wipInfo.WipNO; - item.ItemNo = model.wipAtt.ItemNO; - item.CreateUserID = UserID; - item.UpdateUserID = UserID; - if (item.WipKpID == 0) - await _pcsApi.PostWipKp(JsonConvert.SerializeObject(item)); - else - await _pcsApi.PutWipKp(JsonConvert.SerializeObject(item)); - - // 新增到料號KP檔 - await _pcsApi.PostMaterialKp(JsonConvert.SerializeObject(new MaterialKp - { - ItemID = materialItem.ItemID, - KpName = item.KpName, - KpNo = item.KpNo, - KpSeq = Convert.ToInt32(item.KpSeq), - Length = item.Length, - StationType = item.UnitNo, - IsRepeat = "N", - Title = item.Title, - CreateUserID = UserID, - UpdateUserID = UserID - })); - } - model.WipKps = model.WipKps.Where(w => w.WipKpID != -1).ToList(); - - // 治具 - // 先比對新舊ID 當舊ID有 新的沒有代表已刪除 - var resultOld_WipOutfit = await _pcsApi.GetWipOutfitByWipNo(model.wipInfo.WipNO); - var delete_WipOutfit = resultOld_WipOutfit.Select(s => s.WipOutfitID).Except(model.WipOutfits.Select(s => s.WipOutfitID)); - foreach (var id in delete_WipOutfit) - { - await _pcsApi.DeleteWipOutfit(id); - } - foreach (var item in model.WipOutfits.Where(w => w.WipOutfitID != -1)) - { - item.WipNo = model.wipInfo.WipNO; - item.ItemNo = model.wipAtt.ItemNO; - item.UpdateUserID = UserID; - item.CreateUserID = UserID; - item.OutfitNo = "."; - if (item.WipOutfitID == 0) - await _pcsApi.PostWipOutfit(JsonConvert.SerializeObject(item)); - else - await _pcsApi.PutWipOutfit(JsonConvert.SerializeObject(item)); - } - model.WipOutfits = model.WipOutfits.Where(w => w.WipOutfitID != -1); - - // SOP - // 先比對新舊ID 當舊ID有 新的沒有代表已刪除 - var resultOld_WipSop = await _pcsApi.GetWipSopByWipNo(model.wipInfo.WipNO); - var delete_WipSop = resultOld_WipSop.Select(s => s.WipSOPID).Except(model.WipSops.Select(s => s.WipSOPID)); - foreach (var id in delete_WipSop) - { - await _pcsApi.DeleteWipSop(id); - } - foreach (var item in model.WipSops.Where(w => w.WipSOPID != -1)) - { - item.WipNo = model.wipInfo.WipNO; - item.ItemNo = model.wipAtt.ItemNO; - item.CreateUserID = UserID; - item.UpdateUserID = UserID; - if (item.WipSOPID == 0) - await _pcsApi.PostWipSop(JsonConvert.SerializeObject(item)); - else - await _pcsApi.PutWipSop(JsonConvert.SerializeObject(item)); - } - model.WipSops = model.WipSops.Where(w => w.WipSOPID != -1); - - // 檔案上傳 - string FileName = string.Empty; - string NewName = string.Empty; - string FilePath = string.Empty; - - //var fileProvider = _fileServerProvider.GetProvider("/aa"); - //var fileInfo = fileProvider.GetFileInfo("/"); - if (formFile != null) - { - if (formFile.Length > 0) - { - //取得使用者上傳檔案的原始檔名 - FileName = Path.GetFileName(formFile.FileName); - //取原始檔名中的副檔名 - //var fileExt = Path.GetExtension(FileName); - //為避免使用者上傳的檔案名稱發生重複,重新給一個亂數名稱 - //NewName = Path.GetRandomFileName() + fileExt; - //指定要寫入的路徑、檔名和副檔名 - FilePath = $@"{_env.WebRootPath}\UploadFolder\{model.wipInfo.WipNO}"; - var path = $@"{FilePath}\{FileName}"; - - if (!System.IO.Directory.Exists(FilePath)) - { - System.IO.Directory.CreateDirectory(FilePath); - } - - using (var stream = new FileStream(path, FileMode.Create)) - { - await formFile.CopyToAsync(stream); - } - - model.wipInfoBlob.WipNo = model.wipInfo.WipNO; - model.wipInfoBlob.ImageName = FileName; - model.wipInfoBlob.Filepath = $@"\UploadFolder\{model.wipInfo.WipNO}\"; - model.wipInfoBlob.CreateUserID = UserID; - model.wipInfoBlob.UpdateUserID = UserID; - result = await _pcsApi.PostWipInfoBlob(JsonConvert.SerializeObject(model.wipInfoBlob)); - } - } - } - - - WipCheck wipCheck = new WipCheck - { - WipNo = model.wipInfo.WipNO - }; - if (action == "生管確認") - { - wipCheck.PMCUserID = UserID; - await CheckPCS003ToMail(model.wipInfo.WipNO, model.wipAtt.ItemNO, model.wipInfo.UnitNO, model.wipInfo.WipScheduleDate.ToString(), action); - await _pcsApi.PutWipCheckByPMC(JsonConvert.SerializeObject(wipCheck)); - } - else if (action == "工程確認") - { - wipCheck.PEUserID = UserID; - await CheckPCS003ToMail(model.wipInfo.WipNO, model.wipAtt.ItemNO, model.wipInfo.UnitNO, model.wipInfo.WipScheduleDate.ToString(), action); - await _pcsApi.PutWipCheckByPE(JsonConvert.SerializeObject(wipCheck)); - } - else if (action == "製造確認") - { - wipCheck.MFUserID = UserID; - await _pcsApi.PutWipCheckByMF(JsonConvert.SerializeObject(wipCheck)); - } - - if (result.Success) - { - var _msg = "修改成功!"; - ModelState.AddModelError("error", _msg); - return View("PCS003", model); - //return RedirectToAction("Refresh", "Home", new { msg = _msg }); - } - else - { - if (result.Errors != null) - { - ModelState.AddModelError(result.Errors[0].Id, result.Errors[0].Msg); - } - else - { - ModelState.AddModelError("error", result.Msg); - } - } - return View(model); - } - catch (Exception ex) - { - ModelState.AddModelError("error", "系統錯誤,錯誤訊息:" + ex.Message); - return View(model); - } - } - - /// - /// 檔案下載 - /// - /// 路徑 - /// 檔名 - /// - public async Task FileDownload(string Path, string FileName) - { - var path = $@"{_env.WebRootPath}\{Path}{FileName}"; - var memoryStream = new MemoryStream(); - using (var stream = new FileStream(path, FileMode.Open)) - { - await stream.CopyToAsync(memoryStream); - } - memoryStream.Seek(0, SeekOrigin.Begin); - string contentType = await GetFileContentTypeAsync(FileName); - // 回傳檔案到 Client 需要附上 Content Type,否則瀏覽器會解析失敗。 - return File(memoryStream, contentType, FileName); - } - - /// - /// 获取文件ContentType - /// - /// 文件名称 - /// - public async static Task GetFileContentTypeAsync(string fileName) - { - return await Task.Run(() => - { - string suffix = Path.GetExtension(fileName); - var provider = new FileExtensionContentTypeProvider(); - if (suffix.ToUpper().Trim() == ".MSG") - { - return "application/octet-stream"; - } - var contentType = provider.Mappings[suffix]; - return contentType; - }); - } - - #region PCS034 工單投產可修改 - public async Task PCS034(int id) - { - // 針對安勤 工單基本資料統一打開工程資訊 - ViewBag.WipSpecial = _configuration["WipSpecial"]; - - WipDataViewModel model = new WipDataViewModel(); - var q = await _pcsApi.GetWipInfo(id); - if (q.Count != 0) - { - // 判斷是否完工 - if (q.Where(w => w.StatusNO == "E").Any()) - { - var _msg = "工單號碼【" + q.FirstOrDefault().WipNO + "】,已經投入完工,不可修改"; - return RedirectToAction("Refresh", "Home", new { msg = _msg }); - } - - // 判斷是否刪除 - if (q.Where(w => w.StatusNO == "C").Any()) - { - var _msg = "工單號碼【" + 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(); - model.ruleStations = await _pcsApi.GetRuleStationByWipNo(model.wipInfo.WipNO); - model.wipBoard = await _pcsApi.GetWipBoard(model.wipInfo.WipNO); - 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; - } - } - - model.wipSystem = await _pcsApi.GetWipSystem(model.wipInfo.WipNO); - 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.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)) { @@ -3165,38 +3114,37 @@ namespace AMESCoreStudio.Web.Controllers 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 : null); - GetCheckboxSMD(model.wipBoard != null ? model.wipBoard.Smd : null); - GetCheckboxSMDSolderMa(model.wipBoard != null ? model.wipBoard.SmdSolderMask : null); + GetCheckboxDIP(model.wipBoard != null ? model.wipBoard.DipSide : ""); + GetCheckboxSMD(model.wipBoard != null ? model.wipBoard.Smd : ""); + GetCheckboxSMDSolderMa(model.wipBoard != null ? model.wipBoard.SmdSolderMask : ""); return View(model); } [HttpPost] public async Task PCS034Async(WipDataViewModel model, string action, IFormFile formFile) { - // 針對安勤 工單基本資料統一打開工程資訊 + // 針對安勤 工單基本資料統一打開工程資訊 不判斷製程 ViewBag.WipSpecial = _configuration["WipSpecial"]; try { + // 登入UserID + var UserID = GetLogInUserID(); + #region 選單 await WipDataSelectAll(model.wipInfo.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 ? string.Join(',', model.wipBoard.DipSides) : null); - GetCheckboxSMD(model.wipBoard != null ? string.Join(',', model.wipBoard.SMDs) : null); - GetCheckboxSMDSolderMa(model.wipBoard != null ? string.Join(',', model.wipBoard.SmdSolderMasks) : null); + GetCheckboxDIP(model.wipBoard != null ? model.wipBoard.DipSide : ""); + GetCheckboxSMD(model.wipBoard != null ? model.wipBoard.Smd : ""); + GetCheckboxSMDSolderMa(model.wipBoard != null ? model.wipBoard.SmdSolderMask : ""); #endregion model.ruleStations = await _pcsApi.GetRuleStationByWipNo(model.wipInfo.WipNO); model.wipBarcodes = await _pcsApi.GetWipBarcode(model.wipInfo.WipNO); - IResultModel result; - // 登入UserID - var UserID = GetLogInUserID(); - // Checkbox轉換 model.wipInfo.ECNCheck = model.wipInfo.ECNCheck == "on" ? "Y" : "N"; model.wipInfo.ModelCheck = model.wipInfo.ModelCheck == "on" ? "Y" : "N"; @@ -3211,6 +3159,8 @@ namespace AMESCoreStudio.Web.Controllers model.wipBoard.Burn = model.wipBoard.Burn == "on" ? "Y" : "N"; model.wipBoard.DipSolderMask = model.wipBoard.DipSolderMask == "on" ? "Y" : "N"; model.wipBoard.ISPartsBake = model.wipBoard.ISPartsBake == "on" ? "Y" : "N"; + model.wipBoard.PartsBakeOvertime = model.wipBoard.PartsBakeOvertime == "on" ? "Y" : "N"; + model.wipBoard.ISPcbBake = model.wipBoard.ISPcbBake == "on" ? "Y" : "N"; //系統 model.wipSystem.FinePackage = model.wipSystem.FinePackage == "on" ? "Y" : "N"; @@ -3223,51 +3173,29 @@ namespace AMESCoreStudio.Web.Controllers wipDataViewModel.wipBarcodeOther = model.wipBarcodeOther; var Msg = CheckWipInfoInsert(wipDataViewModel); - if (!string.IsNullOrWhiteSpace(Msg)) - { - //model.wipInfo.ECNCheck = model.wipInfo.ECNCheck == "Y" ? "true" : "false"; - //model.wipInfo.ModelCheck = model.wipInfo.ModelCheck == "Y" ? "true" : "false"; - //model.wipInfo.InputFlag = model.wipInfo.InputFlag == "Y" ? "true" : "false"; - //model.wipInfo.Priority = model.wipInfo.Priority == "Y" ? "true" : "false"; - ////板卡 - //model.wipBoard.DipCarrier = model.wipBoard.DipCarrier == "Y" ? "true" : "false"; - //model.wipBoard.DipTape = model.wipBoard.DipTape == "Y" ? "true" : "false"; - //model.wipBoard.Burn = model.wipBoard.Burn == "Y" ? "true" : "false"; - ////系統 - //model.wipSystem.FinePackage = model.wipSystem.FinePackage == "Y" ? "true" : "false"; - ModelState.AddModelError("error", Msg); - - return View("PCS034", model); - } - // 判斷WipKp 順序是否重複 if (model.WipKps.Where(w => w.WipKpID != -1).GroupBy(g => g.KpSeq).Where(w => w.Count() > 1).Any()) { - ModelState.AddModelError("error", "KeyParts 順序有重複"); - - return View("PCS034", model); + Msg += ",KeyParts 順序有重複 "; } // 判斷SOP是否沒填文件名稱 if (model.WipSops.Where(w => string.IsNullOrWhiteSpace(w.SOPName)).Any()) { - ModelState.AddModelError("error", "SOP文件 請填寫SOP文件敘述"); - return View("PCS034", model); + Msg += ",SOP文件 請填寫SOP文件敘述 "; } // 判斷MAC是否正確 var CheckMACMsg = CheckMACData(model); if (!string.IsNullOrWhiteSpace(CheckMACMsg)) { - ModelState.AddModelError("error", CheckMACMsg); - return View("PCS034", model); + Msg += "," + CheckMACMsg; } // 判斷標籤 工單性質選擇 WipAttr非標96工單時,則旁邊欄位必填 if (model.wipLabel.WipAttr == "B" && string.IsNullOrWhiteSpace(model.wipLabel.NonstandardWoMemo)) { - ModelState.AddModelError("error", "標籤:工單性質選擇非標96工單時,需填入資料"); - return View("PCS034", model); + Msg += ",標籤:工單性質選擇非標96工單時,需填入資料"; } // 判斷治具中生產單位與作業站吻合 @@ -3280,254 +3208,30 @@ namespace AMESCoreStudio.Web.Controllers if (!RuleStation.Where(w => Outfits.StationID == w.StationID).Any()) { - ModelState.AddModelError("error", "治具組合中生產單位與作業站不匹配"); - return View("PCS034", model); + Msg += ",治具組合中生產單位與作業站不匹配"; } } } - // 修改工單數量大於原本數量 - //var oldWipQty = result_wipNo.Where(w => w.WipID == model.wipInfo.WipID).FirstOrDefault().PlanQTY; - //if (oldWipQty < model.wipInfo.PlanQTY) - //{ - // ModelState.AddModelError("error", "修改工單數量不能超過原來工單數量"); - // return View("PCS003", model); - //} - - result = await _pcsApi.PutWipInfo(JsonConvert.SerializeObject(model.wipInfo)); - if (result.Success) + if (!string.IsNullOrWhiteSpace(Msg)) { - // 工單屬性 - model.wipAtt.WipNO = model.wipInfo.WipNO; - await _pcsApi.PutWipAtt(JsonConvert.SerializeObject(model.wipAtt)); - - // 標籤 - model.wipLabel.ApproveLogo = model.wipLabel.ApproveLogos == null ? null : string.Join(',', model.wipLabel.ApproveLogos); - model.wipLabel.WipNO = model.wipInfo.WipNO; - model.wipLabel.UpdateUserID = UserID; - model.wipLabel.CreateUserID = UserID; - await _pcsApi.PutWipLabel(JsonConvert.SerializeObject(model.wipLabel)); - - // 安勤統一執行WIP_SYSTEM - if (ViewBag.WipSpecial == "Y") - { - if (string.IsNullOrWhiteSpace(CheckWipInfoInsert_WipSystem(model.wipSystem))) - { - if (!string.IsNullOrWhiteSpace(model.wipSystem.BiTemperature)) - { - model.wipSystem.ItemNo = model.wipAtt.ItemNO; - model.wipSystem.WipNo = model.wipInfo.WipNO; - model.wipSystem.CreateUserID = UserID; - model.wipSystem.UpdateUserID = UserID; - await _pcsApi.PutWipSystem(JsonConvert.SerializeObject(model.wipSystem)); - } - } - } - else - { - // 系統 - if (model.wipInfo.UnitNO == "B" || model.wipInfo.UnitNO == "P" || model.wipInfo.UnitNO == "T") - { - if (string.IsNullOrWhiteSpace(CheckWipInfoInsert_WipSystem(model.wipSystem))) - { - if (!string.IsNullOrWhiteSpace(model.wipSystem.BiTemperature)) - { - model.wipSystem.ItemNo = model.wipAtt.ItemNO; - model.wipSystem.WipNo = model.wipInfo.WipNO; - model.wipSystem.CreateUserID = UserID; - model.wipSystem.UpdateUserID = UserID; - await _pcsApi.PutWipSystem(JsonConvert.SerializeObject(model.wipSystem)); - } - } - } - else - // 板卡 - { - if (string.IsNullOrWhiteSpace(CheckWipInfoInsert_WipBoard(model.wipBoard))) - { - if (!string.IsNullOrWhiteSpace(model.wipBoard.BiTemperature)) - { - model.wipBoard.Smd = model.wipBoard.SMDs == null ? null : string.Join(',', model.wipBoard.SMDs); - model.wipBoard.SmdSolderMask = model.wipBoard.SmdSolderMasks == null ? null : string.Join(',', model.wipBoard.SmdSolderMasks); - model.wipBoard.DipSide = model.wipBoard.DipSides == null ? null : string.Join(',', model.wipBoard.DipSides); - model.wipBoard.ItemNo = model.wipAtt.ItemNO; - model.wipBoard.WipNo = model.wipInfo.WipNO; - model.wipBoard.CreateUserID = UserID; - model.wipBoard.UpdateUserID = UserID; - await _pcsApi.PutWipBoard(JsonConvert.SerializeObject(model.wipBoard)); - } - } - } - } - - // 內部條碼 - if (!string.IsNullOrWhiteSpace(model.wipBarcode.Remarks)) - { - model.wipBarcode.WipID = model.wipInfo.WipID; - model.wipBarcode.WipNO = model.wipInfo.WipNO; - model.wipBarcode.UnitNO = model.wipInfo.UnitNO; - model.wipBarcode.CreateUserID = UserID; - result = await _pcsApi.PutWipBarcode(JsonConvert.SerializeObject(model.wipBarcode)); - - } - - // MAC - if (!string.IsNullOrWhiteSpace(model.wipMAC.StartNO) && !string.IsNullOrWhiteSpace(model.wipMAC.EndNO)) - { - if (model.wipMAC.StartNO.Length == 12) - { - model.wipMAC.Title = model.wipMAC.StartNO.Substring(0, 6).ToUpper(); - model.wipMAC.StartNO = model.wipMAC.StartNO.Substring(model.wipMAC.StartNO.Length - 6, 6).ToUpper(); - model.wipMAC.EndNO = model.wipMAC.EndNO.Substring(model.wipMAC.EndNO.Length - 6, 6).ToUpper(); - - // 確認MAC Table是否有料號資料 - var mACInfo = await _pcsApi.GetMACInfo(model.wipAtt.ItemNO); - if (mACInfo != null) - { - model.wipMAC.ClassGroup = mACInfo.ClassGroup; - //result = await _pcsApi.PutMACInfoByClassGroup(mACInfo.ClassGroup, model.wipMAC.EndNO); - } - - if (!string.IsNullOrWhiteSpace(model.wipMAC.WipNO)) - result = await _pcsApi.PutWipMAC(JsonConvert.SerializeObject(model.wipMAC)); - else - { - model.wipMAC.WipNO = model.wipInfo.WipNO; - model.wipMAC.CreateUserID = UserID; - result = await _pcsApi.PostWipMAC(JsonConvert.SerializeObject(model.wipMAC)); - } - } - } - // KeyParts - - // 判斷料號KP有資料 沒有資料時 一起新增到料號KP - // 2022.10.12 取消判斷 刪除料號KP,在逐一新增 - var materialItem = await _pcsApi.GetMaterialItemByItemNO(model.wipAtt.ItemNO); - if (materialItem != null) - { - await _pcsApi.DeleteMaterialKpByItem(materialItem.ItemID); - } - - // 先比對新舊ID 當舊ID有 新的沒有代表已刪除 - var resultOld_WipKp = await _pcsApi.GetWipKpByWipNo(model.wipInfo.WipNO); - var delete_WipKpID = resultOld_WipKp.Select(s => s.WipKpID).Except(model.WipKps.Select(s => s.WipKpID)); - foreach (var id in delete_WipKpID) - { - await _pcsApi.DeleteWipKp(id); - } - - foreach (var item in model.WipKps.Where(w => w.WipKpID != -1)) - { - item.WipNo = model.wipInfo.WipNO; - item.ItemNo = model.wipAtt.ItemNO; - item.CreateUserID = UserID; - item.UpdateUserID = UserID; - if (item.WipKpID == 0) - await _pcsApi.PostWipKp(JsonConvert.SerializeObject(item)); - else - await _pcsApi.PutWipKp(JsonConvert.SerializeObject(item)); - - // 新增到料號KP檔 - await _pcsApi.PostMaterialKp(JsonConvert.SerializeObject(new MaterialKp - { - ItemID = materialItem.ItemID, - KpName = item.KpName, - KpNo = item.KpNo, - KpSeq = Convert.ToInt32(item.KpSeq), - Length = item.Length, - StationType = item.UnitNo, - IsRepeat = "N", - Title = item.Title, - CreateUserID = UserID, - UpdateUserID = UserID - })); - } - model.WipKps = model.WipKps.Where(w => w.WipKpID != -1).ToList(); - - // 治具 - // 先比對新舊ID 當舊ID有 新的沒有代表已刪除 - var resultOld_WipOutfit = await _pcsApi.GetWipOutfitByWipNo(model.wipInfo.WipNO); - var delete_WipOutfit = resultOld_WipOutfit.Select(s => s.WipOutfitID).Except(model.WipOutfits.Select(s => s.WipOutfitID)); - foreach (var id in delete_WipOutfit) - { - await _pcsApi.DeleteWipOutfit(id); - } - foreach (var item in model.WipOutfits.Where(w => w.WipOutfitID != -1)) - { - item.WipNo = model.wipInfo.WipNO; - item.ItemNo = model.wipAtt.ItemNO; - item.OutfitNo = "."; - item.CreateUserID = UserID; - item.UpdateUserID = UserID; - if (item.WipOutfitID == 0) - await _pcsApi.PostWipOutfit(JsonConvert.SerializeObject(item)); - else - await _pcsApi.PutWipOutfit(JsonConvert.SerializeObject(item)); - } - model.WipOutfits = model.WipOutfits.Where(w => w.WipOutfitID != -1); - - // SOP - // 先比對新舊ID 當舊ID有 新的沒有代表已刪除 - var resultOld_WipSop = await _pcsApi.GetWipSopByWipNo(model.wipInfo.WipNO); - var delete_WipSop = resultOld_WipSop.Select(s => s.WipSOPID).Except(model.WipSops.Select(s => s.WipSOPID)); - foreach (var id in delete_WipSop) - { - await _pcsApi.DeleteWipSop(id); - } - foreach (var item in model.WipSops.Where(w => w.WipSOPID != -1)) - { - item.WipNo = model.wipInfo.WipNO; - item.ItemNo = model.wipAtt.ItemNO; - item.CreateUserID = UserID; - item.UpdateUserID = UserID; - if (item.WipSOPID == 0) - await _pcsApi.PostWipSop(JsonConvert.SerializeObject(item)); - else - await _pcsApi.PutWipSop(JsonConvert.SerializeObject(item)); - } - model.WipSops = model.WipSops.Where(w => w.WipSOPID != -1); - - // 檔案上傳 - string FileName = string.Empty; - string NewName = string.Empty; - string FilePath = string.Empty; - - //var fileProvider = _fileServerProvider.GetProvider("/aa"); - //var fileInfo = fileProvider.GetFileInfo("/"); - if (formFile != null) - { - if (formFile.Length > 0) - { - //取得使用者上傳檔案的原始檔名 - FileName = Path.GetFileName(formFile.FileName); - //取原始檔名中的副檔名 - //var fileExt = Path.GetExtension(FileName); - //為避免使用者上傳的檔案名稱發生重複,重新給一個亂數名稱 - //NewName = Path.GetRandomFileName() + fileExt; - //指定要寫入的路徑、檔名和副檔名 - FilePath = $@"{_env.WebRootPath}\UploadFolder\{model.wipInfo.WipNO}"; - var path = $@"{FilePath}\{FileName}"; + if (Msg.StartsWith(",")) + Msg = Msg.Substring(1, Msg.Length - 1); - if (!System.IO.Directory.Exists(FilePath)) - { - System.IO.Directory.CreateDirectory(FilePath); - } + ModelState.AddModelError("error", Msg); + return View("PCS034", model); + } - using (var stream = new FileStream(path, FileMode.Create)) - { - await formFile.CopyToAsync(stream); - } + // 工單相關資料ExecuteDB + var (WipExecuteMsg, WipExeucteModel) = await WipExecuteDB(model, formFile); + model = WipExeucteModel; - model.wipInfoBlob.WipNo = model.wipInfo.WipNO; - model.wipInfoBlob.ImageName = FileName; - model.wipInfoBlob.CreateUserID = UserID; - model.wipInfoBlob.Filepath = $@"\UploadFolder\{model.wipInfo.WipNO}\"; - result = await _pcsApi.PostWipInfoBlob(JsonConvert.SerializeObject(model.wipInfoBlob)); - } - } + if (!string.IsNullOrWhiteSpace(WipExecuteMsg)) + { + ModelState.AddModelError("error", $"修改失敗,錯誤訊息:{WipExecuteMsg}"); + return View("PCS034", model); } - WipCheck wipCheck = new WipCheck { WipNo = model.wipInfo.WipNO @@ -3544,36 +3248,20 @@ namespace AMESCoreStudio.Web.Controllers await CheckPCS003ToMail(model.wipInfo.WipNO, model.wipAtt.ItemNO, model.wipInfo.UnitNO, model.wipInfo.WipScheduleDate.ToString(), action); await _pcsApi.PutWipCheckByPE(JsonConvert.SerializeObject(wipCheck)); } - else if (action == "製造確認") - { - wipCheck.MFUserID = UserID; - await _pcsApi.PutWipCheckByMF(JsonConvert.SerializeObject(wipCheck)); - } - - if (result.Success) - { - var _msg = "修改成功!"; - ModelState.AddModelError("error", _msg); - return View("PCS034", model); - //return RedirectToAction("Refresh", "Home", new { msg = _msg }); - } - else - { - if (result.Errors != null) - { - ModelState.AddModelError(result.Errors[0].Id, result.Errors[0].Msg); - } - else - { - ModelState.AddModelError("error", result.Msg); - } + else if (action == "製造確認") + { + wipCheck.MFUserID = UserID; + await _pcsApi.PutWipCheckByMF(JsonConvert.SerializeObject(wipCheck)); } - return View(model); + + var _msg = "修改成功!"; + ModelState.AddModelError("error", _msg); + return View("PCS034", model); } catch (Exception ex) { ModelState.AddModelError("error", "系統錯誤,錯誤訊息:" + ex.Message); - return View(model); + return View("PCS034", model); } } @@ -3682,7 +3370,6 @@ namespace AMESCoreStudio.Web.Controllers } - /// /// CheckMAC 資料是否正確 /// @@ -3771,6 +3458,11 @@ namespace AMESCoreStudio.Web.Controllers return Json(new { _msg = "查無相關MAC對應" }); } + /// + /// KP整批Excel匯入 + /// + /// + /// [HttpPost] public async Task PCS003CKDKeyparts_Excel(IFormFile Uploader) { @@ -6116,7 +5808,7 @@ namespace AMESCoreStudio.Web.Controllers var q = await _pcsApi.GetWipInfoByWipNO(model.WipNO); q = q.Where(w => w.UnitNO == model.UnitNO).ToList(); - + if (q.Count() == 0) { ModelState.AddModelError("error", "找不到該生產單位的工單號碼"); @@ -7472,19 +7164,6 @@ namespace AMESCoreStudio.Web.Controllers #endregion - [HttpPost] - public JsonResult TestFunc(string number) - { - string hashNumber = number; - string name = ""; - - if (number == "A12345") - { - name = "Annie"; - }; - - return Json(name); - } //修改页面 [HttpGet] @@ -8367,6 +8046,310 @@ namespace AMESCoreStudio.Web.Controllers return View(model); } #endregion + + #region 工單相關資料新增或更新 + /// + /// 工單相關資料新增或更新 + /// + /// WipDataViewModel Dto + /// 檔案上傳 + /// Msg:錯誤訊息 Model:工單資訊相關Model + private async Task<(string Msg, WipDataViewModel model)> WipExecuteDB(WipDataViewModel model, IFormFile formFile) + { + string Msg = string.Empty; + IResultModel result; + // 登入UserID + var UserID = GetLogInUserID(); + + try + { + // 工單基本資料 WipInfo + result = await _pcsApi.PutWipInfo(JsonConvert.SerializeObject(model.wipInfo)); + + if (!result.Success) + Msg += result.Msg; + else + { + // 工單屬性 WipAtt + model.wipAtt.WipNO = model.wipInfo.WipNO; + result = await _pcsApi.PutWipAtt(JsonConvert.SerializeObject(model.wipAtt)); + if (!result.Success) + { + Msg += result.Msg; + } + + // 標籤 WipLabel + model.wipLabel.ApproveLogo = model.wipLabel.ApproveLogos == null ? null : string.Join(',', model.wipLabel.ApproveLogos); + model.wipLabel.WipNO = model.wipInfo.WipNO; + model.wipLabel.CreateUserID = UserID; + model.wipLabel.UpdateUserID = UserID; + result = await _pcsApi.PutWipLabel(JsonConvert.SerializeObject(model.wipLabel)); + if (!result.Success) + { + 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 == "P" || model.wipInfo.UnitNO == "T") + { + // 測試備註空白 帶工單描述 + 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 + // 板卡 WipBoard + { + model.wipBoard.Smd = model.wipBoard.SMDs == null ? null : string.Join(',', model.wipBoard.SMDs); + model.wipBoard.SmdSolderMask = model.wipBoard.SmdSolderMasks == null ? null : string.Join(',', model.wipBoard.SmdSolderMasks); + model.wipBoard.DipSide = model.wipBoard.DipSides == null ? null : string.Join(',', model.wipBoard.DipSides); + model.wipBoard.ItemNo = model.wipAtt.ItemNO; + model.wipBoard.WipNo = model.wipInfo.WipNO; + model.wipBoard.CreateUserID = UserID; + model.wipBoard.UpdateUserID = UserID; + result = await _pcsApi.PutWipBoard(JsonConvert.SerializeObject(model.wipBoard)); + if (!result.Success) + { + Msg += result.Msg; + } + } + } + + // 內部條碼 WipBaocode + if (!string.IsNullOrWhiteSpace(model.wipBarcode.Remarks)) + { + model.wipBarcode.WipID = model.wipInfo.WipID; + model.wipBarcode.WipNO = model.wipInfo.WipNO; + model.wipBarcode.UnitNO = model.wipInfo.UnitNO; + model.wipBarcode.CreateUserID = UserID; + result = await _pcsApi.PutWipBarcode(JsonConvert.SerializeObject(model.wipBarcode)); + if (!result.Success) + { + Msg += result.Msg; + } + } + + // 工單MAC WipMAC + if (!string.IsNullOrWhiteSpace(model.wipMAC.StartNO) && !string.IsNullOrWhiteSpace(model.wipMAC.EndNO)) + { + if (model.wipMAC.StartNO.Length == 12) + { + model.wipMAC.Title = model.wipMAC.StartNO.Substring(0, 6).ToUpper(); + model.wipMAC.StartNO = model.wipMAC.StartNO.Substring(model.wipMAC.StartNO.Length - 6, 6).ToUpper(); + model.wipMAC.EndNO = model.wipMAC.EndNO.Substring(model.wipMAC.EndNO.Length - 6, 6).ToUpper(); + + // 確認MAC Table是否有料號資料 + var mACInfo = await _pcsApi.GetMACInfo(model.wipAtt.ItemNO); + if (mACInfo != null) + { + model.wipMAC.ClassGroup = mACInfo.ClassGroup; + } + + if (!string.IsNullOrWhiteSpace(model.wipMAC.WipNO)) + result = await _pcsApi.PutWipMAC(JsonConvert.SerializeObject(model.wipMAC)); + else + { + model.wipMAC.WipNO = model.wipInfo.WipNO; + model.wipMAC.CreateUserID = UserID; + result = await _pcsApi.PostWipMAC(JsonConvert.SerializeObject(model.wipMAC)); + } + + if (!result.Success) + { + Msg += result.Msg; + } + } + } + + // 工單 KeyParts WipKp + // 判斷料號KP有資料 沒有資料時 一起新增到料號KP + // 2022.10.12 取消判斷 刪除料號KP,在逐一新增 + var materialItem = await _pcsApi.GetMaterialItemByItemNO(model.wipAtt.ItemNO); + if (materialItem != null) + { + await _pcsApi.DeleteMaterialKpByItem(materialItem.ItemID); + } + + // 先比對新舊ID 當舊ID有 新的沒有代表已刪除 + var resultOld_WipKp = await _pcsApi.GetWipKpByWipNo(model.wipInfo.WipNO); + var delete_WipKpID = resultOld_WipKp.Select(s => s.WipKpID).Except(model.WipKps.Select(s => s.WipKpID)); + foreach (var id in delete_WipKpID) + { + await _pcsApi.DeleteWipKp(id); + } + + foreach (var item in model.WipKps.Where(w => w.WipKpID != -1)) + { + item.WipNo = model.wipInfo.WipNO; + item.ItemNo = model.wipAtt.ItemNO; + item.CreateUserID = UserID; + item.UpdateUserID = UserID; + if (item.WipKpID == 0) + result = await _pcsApi.PostWipKp(JsonConvert.SerializeObject(item)); + else + result = await _pcsApi.PutWipKp(JsonConvert.SerializeObject(item)); + + if (!result.Success) + { + Msg += result.Msg; + } + + // 新增到料號KP檔 MaterialKp + result = await _pcsApi.PostMaterialKp(JsonConvert.SerializeObject(new MaterialKp + { + ItemID = materialItem.ItemID, + KpName = item.KpName, + KpNo = item.KpNo, + KpSeq = Convert.ToInt32(item.KpSeq), + Length = item.Length, + StationType = item.UnitNo, + IsRepeat = "N", + Title = item.Title, + CreateUserID = UserID, + UpdateUserID = UserID + })); + if (!result.Success) + { + Msg += result.Msg; + } + } + model.WipKps = model.WipKps.Where(w => w.WipKpID != -1).ToList(); + + // 工單 治具 WipOutfit + // 先比對新舊ID 當舊ID有 新的沒有代表已刪除 + var resultOld_WipOutfit = await _pcsApi.GetWipOutfitByWipNo(model.wipInfo.WipNO); + var delete_WipOutfit = resultOld_WipOutfit.Select(s => s.WipOutfitID).Except(model.WipOutfits.Select(s => s.WipOutfitID)); + foreach (var id in delete_WipOutfit) + { + await _pcsApi.DeleteWipOutfit(id); + } + foreach (var item in model.WipOutfits.Where(w => w.WipOutfitID != -1)) + { + item.WipNo = model.wipInfo.WipNO; + item.ItemNo = model.wipAtt.ItemNO; + item.UpdateUserID = UserID; + item.CreateUserID = UserID; + item.OutfitNo = "."; + if (item.WipOutfitID == 0) + result = await _pcsApi.PostWipOutfit(JsonConvert.SerializeObject(item)); + else + result = await _pcsApi.PutWipOutfit(JsonConvert.SerializeObject(item)); + + if (!result.Success) + { + Msg += result.Msg; + } + } + model.WipOutfits = model.WipOutfits.Where(w => w.WipOutfitID != -1); + + // SOP + // 先比對新舊ID 當舊ID有 新的沒有代表已刪除 + var resultOld_WipSop = await _pcsApi.GetWipSopByWipNo(model.wipInfo.WipNO); + var delete_WipSop = resultOld_WipSop.Select(s => s.WipSOPID).Except(model.WipSops.Select(s => s.WipSOPID)); + foreach (var id in delete_WipSop) + { + await _pcsApi.DeleteWipSop(id); + } + foreach (var item in model.WipSops.Where(w => w.WipSOPID != -1)) + { + item.WipNo = model.wipInfo.WipNO; + item.ItemNo = model.wipAtt.ItemNO; + item.CreateUserID = UserID; + item.UpdateUserID = UserID; + if (item.WipSOPID == 0) + result = await _pcsApi.PostWipSop(JsonConvert.SerializeObject(item)); + else + result = await _pcsApi.PutWipSop(JsonConvert.SerializeObject(item)); + + if (!result.Success) + { + Msg += result.Msg; + } + } + model.WipSops = model.WipSops.Where(w => w.WipSOPID != -1); + + // 檔案上傳 + string FileName = string.Empty; + string NewName = string.Empty; + string FilePath = string.Empty; + + if (formFile != null) + { + if (formFile.Length > 0) + { + //取得使用者上傳檔案的原始檔名 + FileName = Path.GetFileName(formFile.FileName); + //取原始檔名中的副檔名 + //var fileExt = Path.GetExtension(FileName); + //為避免使用者上傳的檔案名稱發生重複,重新給一個亂數名稱 + //NewName = Path.GetRandomFileName() + fileExt; + //指定要寫入的路徑、檔名和副檔名 + FilePath = $@"{_env.WebRootPath}\UploadFolder\{model.wipInfo.WipNO}"; + var path = $@"{FilePath}\{FileName}"; + + if (!System.IO.Directory.Exists(FilePath)) + { + System.IO.Directory.CreateDirectory(FilePath); + } + + using (var stream = new FileStream(path, FileMode.Create)) + { + await formFile.CopyToAsync(stream); + } + + model.wipInfoBlob.WipNo = model.wipInfo.WipNO; + model.wipInfoBlob.ImageName = FileName; + model.wipInfoBlob.Filepath = $@"\UploadFolder\{model.wipInfo.WipNO}\"; + model.wipInfoBlob.CreateUserID = UserID; + model.wipInfoBlob.UpdateUserID = UserID; + result = await _pcsApi.PostWipInfoBlob(JsonConvert.SerializeObject(model.wipInfoBlob)); + if (!result.Success) + { + Msg += result.Msg; + } + } + } + } + } + catch (Exception ex) + { + Msg += $"Exception:{ex.Message}"; + } + return (Msg, model); + } + #endregion } public static class ObjectExtension diff --git a/AMESCoreStudio.Web/Views/FQC/FQC008.cshtml b/AMESCoreStudio.Web/Views/FQC/FQC008.cshtml index ae898466..ca0789d6 100644 --- a/AMESCoreStudio.Web/Views/FQC/FQC008.cshtml +++ b/AMESCoreStudio.Web/Views/FQC/FQC008.cshtml @@ -7,27 +7,27 @@ /*.layui-table-main .layui-table-cell {*/ /*height: auto !important;*/ /*white-space: normal; - } + } - .layui-table img { - max-width: 60px; - max-height: 28px; - } + .layui-table img { + max-width: 60px; + max-height: 28px; + } - .layui-tree-main { - cursor: pointer; - padding-right: 10px; - float: left; - border-width: 1px; - border-style: solid; - border-color: #e6e6e6; - margin: 10px 0; - } + .layui-tree-main { + cursor: pointer; + padding-right: 10px; + float: left; + border-width: 1px; + border-style: solid; + border-color: #e6e6e6; + margin: 10px 0; + } - .layui-table-cell { - height: auto; - white-space: normal; - }*/ + .layui-table-cell { + height: auto; + white-space: normal; + }*/ @@ -47,11 +47,14 @@
- + @if (ViewBag.UserFactory == null) + { + + }
- + @* *@
@@ -135,7 +138,6 @@ @section Scripts{