From f32a3ae961b8f8a3c9602a62d273fd675ed95cac Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 17 May 2022 15:17:05 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E6=96=B0=E5=A2=9EFQC007=E6=AA=A2=E9=A9=97?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=202.=20=E4=BF=AE=E6=AD=A3=E5=B7=A5=E5=96=AE?= =?UTF-8?q?=E9=A1=AF=E7=A4=BA=E6=A8=99=E5=B7=A5=E5=95=8F=E9=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/FQCController.cs | 188 +++++++++++++----- .../Controllers/PCSController.cs | 10 +- AMESCoreStudio.Web/HttpApis/AMES/IFQC.cs | 27 ++- AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs | 6 +- AMESCoreStudio.Web/Views/FQC/FQC007.cshtml | 180 ++++++++++++----- AMESCoreStudio.Web/Views/FQC/FQC007A.cshtml | 178 ++--------------- AMESCoreStudio.Web/Views/FQC/FQC007D.cshtml | 9 +- AMESCoreStudio.Web/Views/FQC/FQC009.cshtml | 13 +- AMESCoreStudio.Web/Views/FQC/FQC009U.cshtml | 62 ------ .../AMES/FqcResultMasterController.cs | 6 - .../Controllers/AMES/QcItemController.cs | 28 ++- .../AMES/StandardWorkTimesController.cs | 12 ++ .../Controllers/AMES/WipFqcItemController.cs | 11 + AMESCoreStudio.WebApi/DTO/AMES/FqcDto.cs | 6 + 14 files changed, 374 insertions(+), 362 deletions(-) delete mode 100644 AMESCoreStudio.Web/Views/FQC/FQC009U.cshtml diff --git a/AMESCoreStudio.Web/Controllers/FQCController.cs b/AMESCoreStudio.Web/Controllers/FQCController.cs index 896e77fa..dd3940df 100644 --- a/AMESCoreStudio.Web/Controllers/FQCController.cs +++ b/AMESCoreStudio.Web/Controllers/FQCController.cs @@ -675,6 +675,24 @@ namespace AMESCoreStudio.Web.Controllers model = result.Data.FirstOrDefault(); model.h_InhouseNo = model.InhouseNo; model.h_SeqID = model.SeqID.ToString(); + + // 抓全部檢驗工項 + var result_QcItem = await _fqcApi.GetQcItemQuery(0, 0, 0); + // 取綁定工單檢驗工項資料 + var result_WipFQC = await _fqcApi.GetWipFqcItemByWipNo(model.WipNo); + if (result_WipFQC.Count == 0) + { + //工單無設定檢驗工項時 在抓料號綁定檢驗工項 + var result_MaterialFQC = await _fqcApi.GetMaterialFqcItemsByitemNo(model.ItemNo); + if (result_MaterialFQC.Count != 0) + { + model.qcItemDtos = result_QcItem.Data.Where(w => result_MaterialFQC.Select(s => s.QcItemID).Contains(w.ItemID)).ToList(); + } + } + else + { + model.qcItemDtos = result_QcItem.Data.Where(w => result_WipFQC.Select(s => s.QcItemID).Contains(w.ItemID)).ToList(); + } } else { @@ -912,7 +930,7 @@ namespace AMESCoreStudio.Web.Controllers } #endregion - #region 文件 + #region 附件 [HttpGet] public async Task FQC007D(int fqc) { @@ -926,60 +944,128 @@ namespace AMESCoreStudio.Web.Controllers [HttpPost] public async Task FQC007DAsync(FqcDto model, string Result, IFormFile formFile) { - // 檔案上傳 - 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) - // { - // FqcResultMaster fqcResultMaster = await _fqcApi.GetFqcResultMaster(model.FqcID); - - // //取得使用者上傳檔案的原始檔名 - // FileName = Path.GetFileName(formFile.FileName); - // //取原始檔名中的副檔名 - // //var fileExt = Path.GetExtension(FileName); - // //為避免使用者上傳的檔案名稱發生重複,重新給一個亂數名稱 - // //NewName = Path.GetRandomFileName() + fileExt; - // //指定要寫入的路徑、檔名和副檔名 - // FilePath = $@"{_env.WebRootPath}\UploadFolder\FQC\{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}\"; - // result = await _pcsApi.PostWipInfoBlob(JsonConvert.SerializeObject(model.wipInfoBlob)); - // } - //} - - //if (result.Success) - //{ - // var _msg = "新增成功!"; - // return RedirectToAction("WindowReload", "Home", new { msg = _msg }); - //} - //else - //{ - // ModelState.AddModelError("error", result.Msg); - //} + FqcResultMaster fqcResultMaster = await _fqcApi.GetFqcResultMaster(model.FqcID); + if (fqcResultMaster == null) + { + ModelState.AddModelError("error", "找不到FQC開單紀錄"); + return View("FQC007D", model); + } - return View("FQC007B", model); + if (formFile != null) + { + if (formFile.Length > 0) + { + // 檔案上傳 + string FileName = string.Empty; + string NewName = string.Empty; + string FilePath = string.Empty; + //取得使用者上傳檔案的原始檔名 + FileName = Path.GetFileName(formFile.FileName); + //取原始檔名中的副檔名 + //var fileExt = Path.GetExtension(FileName); + //為避免使用者上傳的檔案名稱發生重複,重新給一個亂數名稱 + //NewName = Path.GetRandomFileName() + fileExt; + //指定要寫入的路徑、檔名和副檔名 + FilePath = $@"{_env.WebRootPath}\UploadFolder\FQC\{fqcResultMaster.InhouseNo}-{fqcResultMaster.SeqID}"; + 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); + } + + FqcResultMasterBlob fqcResultMasterBlob = new FqcResultMasterBlob() + { + FqcID = model.FqcID, + ImageName = FileName, + Filepath = $@"\UploadFolder\FQC\{fqcResultMaster.InhouseNo}-{fqcResultMaster.SeqID}\", + CreateUserID = GetLogInUserID(), + UpdateUserID = GetLogInUserID() + }; + + var result = await _fqcApi.PostFqcResultMasterBlob(JsonConvert.SerializeObject(fqcResultMasterBlob)); + + if (result.Success) + { + ModelState.AddModelError("error", "上傳成功!"); + } + else + { + ModelState.AddModelError("error", "上傳失敗,錯誤訊息:" + result.Msg); + } + } + } + else + { + ModelState.AddModelError("error", "ssddf"); + } + model.fqcResultMasterBlobs = await _fqcApi.GetFqcResultMasterBlobByFqcID(model.FqcID); + return View("FQC007D", model); } #endregion + #region 檢驗工項維護 + [HttpGet] + public ActionResult FQC007A(FqcDto model) + { + return View(model); + } + + [HttpGet] + public async Task FQC007AItemQuery(string wipNo, string itemNo) + { + var result = await _fqcApi.GetQcItemQuery(0, 0, 0, itemNo, wipNo); + return Json(new Table() { code = 0, data = result.Data, count = result.DataTotal }); + } + + [HttpPost] + public async Task FQC007AAsync(string itemID, string groupID, string wipNo, string itemNo) + { + // 取工單綁定檢驗工項 + var result_WipFQC = await _fqcApi.GetWipFqcItemByWipNo(wipNo); + // 有勾選的ItemID + var checkItemID = itemID.Split(',').ToList(); + // 有勾選的GroupID + var checkGroupID = groupID.Split(',').ToList(); + + // 取勾選有的 = 新增 + var insertItemID = checkItemID.Except(result_WipFQC.Select(s => s.QcItemID.ToString())); + for (int i = 0; i < checkItemID.Count; i++) + { + if (insertItemID.Where(w => w == checkItemID[i]).Any()) + { + WipFqcItem wipFqcItem = new WipFqcItem + { + WipNo = wipNo, + ItemNo = itemNo, + QcItemID = Int32.Parse(checkItemID[i]), + QcGroupID = Int32.Parse(checkGroupID[i]), + CreateUserID = GetLogInUserID(), + CreateDate = DateTime.Now, + UpdateUserID = GetLogInUserID(), + UpdateDate = DateTime.Now + }; + await _fqcApi.PostWipFqcItem(JsonConvert.SerializeObject(wipFqcItem)); + } + } + + // 取有料號綁定 = 需要刪除 + var deteleItemID = result_WipFQC.Select(s => s.QcItemID.ToString()).Except(checkItemID); + foreach (var item in deteleItemID) + { + var wipFQCID = result_WipFQC.Where(w => w.QcItemID == Int32.Parse(item)).FirstOrDefault().WipFqcitemID; + await _fqcApi.DeleteWipFqcItem(wipFQCID); + } + + return Json(new { code = 0, msg = "", success = true }); + } + #endregion + #endregion #region FQC008 FQC查詢 diff --git a/AMESCoreStudio.Web/Controllers/PCSController.cs b/AMESCoreStudio.Web/Controllers/PCSController.cs index 022c9523..5522e073 100644 --- a/AMESCoreStudio.Web/Controllers/PCSController.cs +++ b/AMESCoreStudio.Web/Controllers/PCSController.cs @@ -2054,12 +2054,12 @@ namespace AMESCoreStudio.Web.Controllers model.wipInfoBlobs = await _pcsApi.GetWipInfoBlob(model.wipInfo.WipNO); // 取料號對應工時 - var cycleTime = await _pcsApi.GetCycleTimesByItemNo(model.wipAtt.ItemNO); - cycleTime = cycleTime.Where(w => w.LineID == model.wipInfo.LineID && - w.SectionNo == model.wipInfo.UnitNO).ToList(); + var standardWorkTimes = await _pcsApi.GetStandardWorkTimeByItemNo(model.wipAtt.ItemNO); + standardWorkTimes = standardWorkTimes.Where(w => w.LineID == model.wipInfo.LineID && + w.UnitNo == model.wipInfo.UnitNO).ToList(); - if (cycleTime.Count != 0) - model.itemNoCT1 = cycleTime.FirstOrDefault().CT1.ToString(); + if (standardWorkTimes.Count != 0) + model.itemNoCT1 = standardWorkTimes.FirstOrDefault().CT.ToString(); } diff --git a/AMESCoreStudio.Web/HttpApis/AMES/IFQC.cs b/AMESCoreStudio.Web/HttpApis/AMES/IFQC.cs index 1769ee3c..a9d3f2ef 100644 --- a/AMESCoreStudio.Web/HttpApis/AMES/IFQC.cs +++ b/AMESCoreStudio.Web/HttpApis/AMES/IFQC.cs @@ -79,9 +79,11 @@ namespace AMESCoreStudio.Web /// 檢驗類別ID /// 頁數 /// 比數 + /// 料號 + /// 工單號碼 /// [WebApiClient.Attributes.HttpGet("api/QcItem/QcItemQuery")] - ITask> GetQcItemQuery(int groupID, int page, int limit,string itemNo = null); + ITask> GetQcItemQuery(int groupID, int page, int limit,string itemNo = null,string wipNo = null); /// /// 查詢檢驗項目維護 ID @@ -336,7 +338,6 @@ namespace AMESCoreStudio.Web [WebApiClient.Attributes.HttpGet("api/NGClasses/Group/{no}")] ITask> GetNGClassesByGroup(string no, int page = 0, int limit = 10); - /// /// 不良現象-List /// @@ -416,6 +417,26 @@ namespace AMESCoreStudio.Web /// [WebApiClient.Attributes.HttpGet("api/FqcResultMasterBlob/ByFQCID/{id}")] ITask> GetFqcResultMasterBlobByFqcID(int id); + + /// + /// WipFqcItem 查詢工單綁定檢驗工項 + /// + /// 料號 + [WebApiClient.Attributes.HttpGet("api/WipFqcItem/ByWipNo/{id}")] + ITask> GetWipFqcItemByWipNo(string id); + + /// + /// WipFqcItem 新增工單綁定檢驗工項 + /// + [WebApiClient.Attributes.HttpPost("api/WipFqcItem")] + ITask> PostWipFqcItem([FromBody, RawJsonContent] string model); + + /// + /// WipFqcItem 刪除工單綁定檢驗工項 + /// + /// + [WebApiClient.Attributes.HttpDelete("api/WipFqcItem/{id}")] + ITask> DeleteWipFqcItem(int id); #endregion #region FQC008 FQC查詢 @@ -438,7 +459,7 @@ namespace AMESCoreStudio.Web , string status = null, int page = 0, int limit = 10); #endregion - #region FQC009 + #region FQC009 料號檢驗工項維護 /// /// MaterialItem 料號基本資料檔 /// diff --git a/AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs b/AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs index 9268fd5e..5b1bdce3 100644 --- a/AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs +++ b/AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs @@ -1102,9 +1102,9 @@ namespace AMESCoreStudio.Web ITask> GetOutfitCommodityInfo(); #endregion - #region CycleTimes 料號對應工時 - [WebApiClient.Attributes.HttpGet("api/CycleTimes/ByItemNo/{id}")] - ITask> GetCycleTimesByItemNo(string id); + #region StandardWorkTimes 料號對應工時 + [WebApiClient.Attributes.HttpGet("api/StandardWorkTimes/ByItemNo/{id}")] + ITask> GetStandardWorkTimeByItemNo(string id); #endregion #region WipReturn 工單退回紀錄 diff --git a/AMESCoreStudio.Web/Views/FQC/FQC007.cshtml b/AMESCoreStudio.Web/Views/FQC/FQC007.cshtml index 81708ead..d0a2509a 100644 --- a/AMESCoreStudio.Web/Views/FQC/FQC007.cshtml +++ b/AMESCoreStudio.Web/Views/FQC/FQC007.cshtml @@ -218,57 +218,101 @@ @*
*@ - - @{ int i = 0;} - - - - - - - - - - - - @foreach (var index in Model.fqcDetails) - { - - - - - - - - - i++; - } - -
- 箱號 - - 總數量 - - 已抽數量 - - 抽驗PASS數量 - - 抽驗FAIL數量 - - 檢視 -
- @index.SerialNo - - @index.Qty - - @index.HasQty - - @index.PassQty - - @index.FailQty - -
+
+
+

細項資料

+
+ + @{ int i = 0;} + + + + + + + + + + + + @foreach (var index in Model.fqcDetails) + { + + + + + + + + + i++; + } + +
+ 箱號 + + 總數量 + + 已抽數量 + + 抽驗PASS數量 + + 抽驗FAIL數量 + + 檢視 +
+ @index.SerialNo + + @index.Qty + + @index.HasQty + + @index.PassQty + + @index.FailQty + +
+
+
+
+

檢驗工項

+
+ + + + + + + + + + + + + + @foreach (var index in Model.qcItemDtos) + { + + + + + + + } + +
類別中文類別英文項目中文項目英文
+ @index.GroupNameCN + + @index.GroupNameEN + + @index.ItemNameCN + + @index.ItemNameEN +
+
+
+
@@ -314,11 +358,17 @@ }); }; + // 文件上傳 function upload() { - layui.use('layer', function () { - var layer = layui.layer; - layer.open({ - title: '文件上傳', + if (@Model.FqcID == 0) {parent.hg.msg('請搜尋入庫單號!'); + return; + }; + + + layui.use('layer', function () { + var layer = layui.layer; + layer.open({ + title: '文件上傳', type: 2, area: ['600px', '400px'], fixed: false, //不固定 @@ -328,6 +378,28 @@ }); }; + // QCITEM + function addQcItem() { + if (@Model.FqcID == 0) {parent.hg.msg('請搜尋入庫單號!'); + return; + } + layui.use('layer', function () { + var layer = layui.layer; + layer.open({ + title: '檢驗工項維護', + type: 2, + area: ['700px', '500px'], + fixed: false, //不固定 + maxmin: true, + content: '/FQC/FQC007A?wipNo=@Model.WipNo&itemNo=@Model.ItemNo', + end: function () { + //hg.msg('新增成功'); + window.location.reload(); + } + }); + }); + } + $(document).ready(function () { var error = '@Html.ValidationMessage("error")'; if ($(error).text() != '') { diff --git a/AMESCoreStudio.Web/Views/FQC/FQC007A.cshtml b/AMESCoreStudio.Web/Views/FQC/FQC007A.cshtml index 69f04377..c2c2d48d 100644 --- a/AMESCoreStudio.Web/Views/FQC/FQC007A.cshtml +++ b/AMESCoreStudio.Web/Views/FQC/FQC007A.cshtml @@ -1,6 +1,6 @@  -@{ ViewData["Title"] = "工單檢驗工項維護"; - Layout = "~/Views/Shared/_AMESLayout.cshtml"; } +@model AMESCoreStudio.WebApi.DTO.AMES.FqcDto +@{ Layout = "~/Views/Shared/_AMESLayout.cshtml"; }
-
-
-
-
@ViewBag.Title
-
- -
- - -
-
-
- -
-
-
-
- - +
+ +
- - @section Scripts { @{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); await Html.RenderPartialAsync("_FileinputScriptsPartial"); } diff --git a/AMESCoreStudio.Web/Views/FQC/FQC007D.cshtml b/AMESCoreStudio.Web/Views/FQC/FQC007D.cshtml index fcde8599..e2cd358c 100644 --- a/AMESCoreStudio.Web/Views/FQC/FQC007D.cshtml +++ b/AMESCoreStudio.Web/Views/FQC/FQC007D.cshtml @@ -1,7 +1,5 @@ @model AMESCoreStudio.WebApi.DTO.AMES.FqcDto - - -@{ ViewData["Title"] = "FQC文件維護"; +@{ Layout = "~/Views/Shared/_AMESLayout.cshtml"; } - -
-
-
-
-
- - -
- -
- - -
-
- -
- -
- -
-
- @Html.ValidationMessage("error") -
-
- -
-
-
-
-
-
- -@section Scripts { - @{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); - await Html.RenderPartialAsync("_FileinputScriptsPartial"); } - - - - -} diff --git a/AMESCoreStudio.WebApi/Controllers/AMES/FqcResultMasterController.cs b/AMESCoreStudio.WebApi/Controllers/AMES/FqcResultMasterController.cs index 7afe33f3..5f42bc37 100644 --- a/AMESCoreStudio.WebApi/Controllers/AMES/FqcResultMasterController.cs +++ b/AMESCoreStudio.WebApi/Controllers/AMES/FqcResultMasterController.cs @@ -37,12 +37,6 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES public async Task> GetFqcResultMaster(int id) { var fqcResultMaster = await _context.FqcResultMasters.FindAsync(id); - - if (fqcResultMaster == null) - { - return NotFound(); - } - return fqcResultMaster; } diff --git a/AMESCoreStudio.WebApi/Controllers/AMES/QcItemController.cs b/AMESCoreStudio.WebApi/Controllers/AMES/QcItemController.cs index 41c8c426..9bfa6e74 100644 --- a/AMESCoreStudio.WebApi/Controllers/AMES/QcItemController.cs +++ b/AMESCoreStudio.WebApi/Controllers/AMES/QcItemController.cs @@ -54,9 +54,10 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES /// 頁數 /// 筆數 /// 料號 + /// 工單號碼 /// [HttpGet("QcItemQuery")] - public async Task> GetQcItemQuery(int groupID = 0, int page = 0, int limit = 10, string itemNo = null) + public async Task> GetQcItemQuery(int groupID = 0, int page = 0, int limit = 10, string itemNo = null, string wipNo = null) { IQueryable q = _context.QcItems; ResultModel result = new ResultModel(); @@ -87,17 +88,32 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES GroupNameEN = s.GetQcGroup.GroupNameEN }).ToListAsync(); - // 有輸入料號跟QCITEM 比對有資料打勾 - var itemID = _context.MaterialItems.Where(w => w.ItemNo == itemNo).FirstOrDefault(); - if (itemID != null) + // 先判斷工單是否有資料 + var wipFqcItem = await _context.WipFqcItems.Where(w => w.WipNo == wipNo).ToListAsync(); + if (wipFqcItem.Count != 0) { - var marterialFQCItems = _context.MaterialFqcItems.Where(w => w.ItemID == itemID.ItemID); foreach (var item in result.Data) { - if (marterialFQCItems.Where(w => w.QcItemID == item.ItemID).Any()) + if (wipFqcItem.Where(w => w.QcItemID == item.ItemID).Any()) item.check = true; } } + else + { + // 有輸入料號跟QCITEM 比對有資料打勾 + var itemID = _context.MaterialItems.Where(w => w.ItemNo == itemNo).FirstOrDefault(); + if (itemID != null) + { + var marterialFQCItems = _context.MaterialFqcItems.Where(w => w.ItemID == itemID.ItemID); + foreach (var item in result.Data) + { + if (marterialFQCItems.Where(w => w.QcItemID == item.ItemID).Any()) + item.check = true; + } + } + } + + return result; } diff --git a/AMESCoreStudio.WebApi/Controllers/AMES/StandardWorkTimesController.cs b/AMESCoreStudio.WebApi/Controllers/AMES/StandardWorkTimesController.cs index fce25a9e..15a91e51 100644 --- a/AMESCoreStudio.WebApi/Controllers/AMES/StandardWorkTimesController.cs +++ b/AMESCoreStudio.WebApi/Controllers/AMES/StandardWorkTimesController.cs @@ -174,6 +174,18 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES return standardWorkTime; } + /// + /// 工單料號查詢 + /// + /// 工單料號 + /// + [HttpGet("ByItemNo/{id}")] + public async Task>> GetStandardWorkTimeByItemNo(string id) + { + IQueryable q = _context.StandardWorkTimes.Where(w => w.ItemNo == id.Trim().ToUpper()); + return await q.ToListAsync(); + } + /// /// /// diff --git a/AMESCoreStudio.WebApi/Controllers/AMES/WipFqcItemController.cs b/AMESCoreStudio.WebApi/Controllers/AMES/WipFqcItemController.cs index 7631b067..3fe31a14 100644 --- a/AMESCoreStudio.WebApi/Controllers/AMES/WipFqcItemController.cs +++ b/AMESCoreStudio.WebApi/Controllers/AMES/WipFqcItemController.cs @@ -46,6 +46,17 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES return wipFqcItem; } + /// + /// 工單號碼查詢綁定檢驗工項 + /// + /// 工單號碼 + /// + [HttpGet("ByWipNo/{id}")] + public async Task>> GetWipFqcItemByWipNo(string id) + { + return await _context.WipFqcItems.Where(w => w.WipNo == id).ToListAsync(); + } + /// /// 更新工單對應工項資料檔 /// diff --git a/AMESCoreStudio.WebApi/DTO/AMES/FqcDto.cs b/AMESCoreStudio.WebApi/DTO/AMES/FqcDto.cs index c93ff183..b23af762 100644 --- a/AMESCoreStudio.WebApi/DTO/AMES/FqcDto.cs +++ b/AMESCoreStudio.WebApi/DTO/AMES/FqcDto.cs @@ -19,6 +19,7 @@ namespace AMESCoreStudio.WebApi.DTO.AMES { fqcDetails = new List(); fqcResultMasterBlobs = new List(); + qcItemDtos = new List(); } /// @@ -156,6 +157,11 @@ namespace AMESCoreStudio.WebApi.DTO.AMES /// public List fqcResultMasterBlobs { get; set; } + /// + /// 檢查工項 + /// + public List qcItemDtos { get; set; } + public class FqcDetailDto { ///