diff --git a/AMESCoreStudio.Web/Controllers/QRSController.cs b/AMESCoreStudio.Web/Controllers/QRSController.cs index 57e68da9..aaa7c505 100644 --- a/AMESCoreStudio.Web/Controllers/QRSController.cs +++ b/AMESCoreStudio.Web/Controllers/QRSController.cs @@ -489,7 +489,7 @@ namespace AMESCoreStudio.Web.Controllers // 完工站(1000)PASS資料 抓上一站PASS數 if (rule_sation[j].StationID == 1000) { - wip_station = await _pcsApi.GetWipStation4QRS009Group(wip_id, rule_sation[j - 1].StationID); + wip_station = await _pcsApi.GetWipStation4QRS009Group(wip_id, rule_sation[j - 1].StationID); if (wip_station.DataTotal > 0) { foreach (var data in wip_station.Data) @@ -793,6 +793,29 @@ namespace AMESCoreStudio.Web.Controllers ViewBag.LineList = LineItems; } + /// + /// 廠別/委外廠 + /// + /// + private async Task GetFactoryInfo() + { + var result = await _pcsApi.GetFactoryInfo(); + + var FactoryInfo = new List(); + result = result.Where(w => w.StatusNo == "A").OrderBy(o => o.FactoryID).ToList(); + for (int i = 0; i < result.Count; i++) + { + FactoryInfo.Add(new SelectListItem(result[i].FactoryNo + "-" + result[i].FactoryNameCh, result[i].FactoryID.ToString())); + } + + if (FactoryInfo.Count == 0) + { + FactoryInfo.Add(new SelectListItem("N/A", null)); + } + + ViewBag.FactoryInfoList = FactoryInfo; + } + [HttpPost] public async Task GetUnitLineJson(string unit_no) { @@ -4986,7 +5009,7 @@ namespace AMESCoreStudio.Web.Controllers OCTNOVDEC"; //單板FPY - rateDataList = rateDataList + @"" + DateTime.Now.Year.ToString()+"-單板" + ""; + rateDataList = rateDataList + @"" + DateTime.Now.Year.ToString() + "-單板" + ""; #region 01 @@ -8721,7 +8744,7 @@ namespace AMESCoreStudio.Web.Controllers public async Task QRS016() { await GetUnitList(); - + await GetFactoryInfo(); ViewBag.StartDate = System.DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd"); ViewBag.EndDate = System.DateTime.Now.ToString("yyyy-MM-dd"); @@ -8750,8 +8773,9 @@ namespace AMESCoreStudio.Web.Controllers string model_no = param[2]; string start_date = param[3]; string end_date = param[4]; + string factoryID = param[5]; - var result = await _pcsApi.GetFQCHeaderData4QRS016(wip_no, item_no, model_no, start_date, end_date); + var result = await _pcsApi.GetFQCHeaderData4QRS016(wip_no, item_no, model_no, start_date, end_date, factoryID); var query = new QRS016ViewModel(); @@ -8772,16 +8796,16 @@ namespace AMESCoreStudio.Web.Controllers return Json(query.FqcDatas); } - public async Task QRS016AAsync(string modelNO, string itemNO, string wipNO, string dateStart, string dateEnd) + public async Task QRS016AAsync(string modelNO, string itemNO, string wipNO, string dateStart, string dateEnd, string factoryID, string factoryName) { // - ViewData["ParamList"] = modelNO + "_" + itemNO + "_" + wipNO + "_" + dateStart + "_" + dateEnd; + ViewData["ParamList"] = modelNO + "_" + itemNO + "_" + wipNO + "_" + dateStart + "_" + dateEnd + "_" + factoryID; - ViewData["Title"] = "查詢條件 - 工單號碼 : " + wipNO + "; 料號 : " + itemNO + "; 機種 : " + modelNO + "; 檢驗日期 : " + dateStart + " ~ " + dateEnd; + ViewData["Title"] = "查詢條件 - 工單號碼 : " + wipNO + "; 料號 : " + itemNO + "; 機種 : " + modelNO + "; 檢驗日期 : " + dateStart + " ~ " + dateEnd + $"; 委外廠別 : {factoryID}({factoryName})"; string fqcDataList = ""; - IResultModel result = await _pcsApi.GetFQCHeaderData4QRS016(wipNO, itemNO, modelNO, dateStart, dateEnd); + IResultModel result = await _pcsApi.GetFQCHeaderData4QRS016(wipNO, itemNO, modelNO, dateStart, dateEnd, factoryID); if (result.DataTotal > 0) { @@ -8807,6 +8831,28 @@ namespace AMESCoreStudio.Web.Controllers fqcDataList = fqcDataList + ""; } + // 各細項統計 + IResultModel resultDetail = await _pcsApi.GetFQCHeaderData4QRS016Detail(wipNO, itemNO, modelNO, dateStart, dateEnd, factoryID); + if (resultDetail.Success) + { + fqcDataList += "
"; + fqcDataList += "" + + "" + + "" + + "" + + ""; + + foreach (var item in resultDetail.Data) + { + fqcDataList += $""; + fqcDataList += $""; + fqcDataList += $""; + fqcDataList += $""; + fqcDataList += $""; + } + fqcDataList += $"
類別FQC總抽驗數FQC允收數FQC批退數批退率
{item.type}{item.allQty}{item.passQty}{item.failQty}{item.rejectRate}%
"; + } + fqcDataList = fqcDataList + "
"; ViewData["FQCDataList"] = fqcDataList; return View(); diff --git a/AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs b/AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs index 76174a63..cdddbca6 100644 --- a/AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs +++ b/AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs @@ -1131,7 +1131,14 @@ namespace AMESCoreStudio.Web /// /// [WebApiClient.Attributes.HttpGet("api/FqcResultMaster/GetFQCHeaderData4QRS016")] - ITask> GetFQCHeaderData4QRS016(string wipNO, string itemNO, string modelNO, string dateStart, string dateEnd); + ITask> GetFQCHeaderData4QRS016(string wipNO, string itemNO, string modelNO, string dateStart, string dateEnd ,string factoryID); + + /// + /// FQC查詢報表 細項統計 + /// + /// + [WebApiClient.Attributes.HttpGet("api/FqcResultMaster/GetFQCHeaderData4QRS016ByDetail")] + ITask> GetFQCHeaderData4QRS016Detail(string wipNO, string itemNO, string modelNO, string dateStart, string dateEnd, string factoryID); /// /// 查詢FQC明細資料 diff --git a/AMESCoreStudio.Web/Views/QRS/QRS016.cshtml b/AMESCoreStudio.Web/Views/QRS/QRS016.cshtml index 4b323e8b..29726ec9 100644 --- a/AMESCoreStudio.Web/Views/QRS/QRS016.cshtml +++ b/AMESCoreStudio.Web/Views/QRS/QRS016.cshtml @@ -15,7 +15,7 @@
-
+
@@ -23,7 +23,7 @@
-
+
@@ -31,7 +31,7 @@
-
+
@@ -39,7 +39,7 @@
-
+
@@ -47,7 +47,17 @@
- + +
+
+
+
+
+ +
+
@@ -90,8 +100,10 @@ var wipNO = $("#wipNO").val(); var dateStart = $("#dateStart").val(); var dateEnd = $("#dateEnd").val(); + var factoryID = $("#factoryID").val(); + var factoryName = $("#factoryID option:selected").text(); - var query = "?modelNO=" + modelNO + "&itemNO=" + itemNO + "&wipNO=" + wipNO + "&dateStart=" + dateStart + "&dateEnd=" + dateEnd; + var query = "?modelNO=" + modelNO + "&itemNO=" + itemNO + "&wipNO=" + wipNO + "&dateStart=" + dateStart + "&dateEnd=" + dateEnd + "&factoryID=" + factoryID + "&factoryName=" + factoryName; hg.open('FQC查詢報表', '/QRS/QRS016A' + query, '', '', true); }; diff --git a/AMESCoreStudio.WebApi/Controllers/AMES/FqcResultMasterController.cs b/AMESCoreStudio.WebApi/Controllers/AMES/FqcResultMasterController.cs index 16a8fe3d..a0ae044b 100644 --- a/AMESCoreStudio.WebApi/Controllers/AMES/FqcResultMasterController.cs +++ b/AMESCoreStudio.WebApi/Controllers/AMES/FqcResultMasterController.cs @@ -8,6 +8,7 @@ using Microsoft.EntityFrameworkCore; using AMESCoreStudio.WebApi; using AMESCoreStudio.WebApi.Models.AMES; using AMESCoreStudio.CommonTools.Result; +using AMESCoreStudio.WebApi.DTO; namespace AMESCoreStudio.WebApi.Controllers.AMES { @@ -47,7 +48,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES /// 序號 /// [HttpGet("ByInhouseNo/{inhouseNo}/{seq}")] - public async Task>> GetFqcResultMasterByInhouseNo(string inhouseNo , int seq) + public async Task>> GetFqcResultMasterByInhouseNo(string inhouseNo, int seq) { var fqcResultMaster = await _context.FqcResultMasters .Where(w => w.InhouseNo == inhouseNo && w.SeqID == seq) @@ -67,11 +68,12 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES /// [Route("[action]")] [HttpGet] - public async Task> GetFQCHeaderData4QRS016(string wipNO, string itemNO, string modelNO, string dateStart, string dateEnd) + public async Task> GetFQCHeaderData4QRS016(string wipNO, string itemNO, string modelNO, string dateStart, string dateEnd ,string factoryID) { ResultModel result = new ResultModel(); var q = from q1 in _context.FqcResultMasters join q2 in _context.CalendarTables on q1.CreateDate.Date equals q2.TimeID + join q3 in _context.WipInfos on q1.WipNo equals q3.WipNO select new { q1.FqcID, @@ -83,7 +85,8 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES q1.PassQty, q1.FailQty, q1.QaResult, - q2.WeekOfYear + q2.WeekOfYear, + q3.Werks }; if (wipNO != null && wipNO != "") @@ -98,6 +101,10 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES { q = q.Where(w => w.ModelNo == modelNO); } + if (factoryID != null && factoryID != "") + { + q = q.Where(w => w.Werks == factoryID); + } if (dateStart != null && dateStart != "" && dateEnd != null && dateEnd != "") { q = q.Where(w => w.CreateDate >= DateTime.Parse(dateStart + " 00:00:00") && w.CreateDate <= DateTime.Parse(dateEnd + " 23:59:59")); @@ -145,6 +152,123 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES return result; } + /// + /// FQC查詢報表QRS016 細項統計 + /// + /// + [Route("[action]")] + [HttpGet] + public async Task> GetFQCHeaderData4QRS016ByDetail(string wipNO, string itemNO, string modelNO, string dateStart, string dateEnd, string factoryID) + { + ResultModel result = new ResultModel(); + var q = from q1 in _context.FqcResultMasters + join q2 in _context.WipInfos on q1.WipNo equals q2.WipNO + select new DTO.AMES.QRS016Detail + { + wipNo = q1.WipNo, + itemNo = q1.ItemNo, + modelNo = q1.ModelNo, + werks = q2.Werks, + startTime = q1.StartTime, + qaResult = q1.QaResult, + customerMedical = q2.CustomerMedical, + unitNo = q2.UnitNO + }; + + if (wipNO != null && wipNO != "") + { + q = q.Where(w => w.wipNo.Trim().ToUpper() == wipNO.Trim().ToUpper()); + } + if (itemNO != null && itemNO != "") + { + q = q.Where(w => w.itemNo.Trim().ToUpper() == itemNO.Trim().ToUpper()); + } + if (modelNO != null && modelNO != "") + { + q = q.Where(w => w.modelNo.Trim().ToUpper() == modelNO.Trim().ToUpper()); + } + + if (factoryID != null && factoryID != "") + { + q = q.Where(w => w.werks == factoryID); + } + + if (dateStart != null && dateStart != "" && dateEnd != null && dateEnd != "") + { + q = q.Where(w => w.startTime >= DateTime.Parse(dateStart + " 00:00:00") && w.startTime <= DateTime.Parse(dateEnd + " 23:59:59")); + } + + var query = new List(); + int allQty = 0; + int passQty = 0; + int failQty = 0; + double rejectRate = 0; + + // 醫療 + var data = q.Where(w => w.customerMedical == "Y").ToList(); + allQty = data.Count(); + passQty = data.Where(w => w.qaResult == "P").Count(); + failQty = data.Where(w => w.qaResult == "R").Count(); + rejectRate = failQty == 0 ? 0 : Math.Round(((double)failQty / (double)allQty), 2, MidpointRounding.AwayFromZero) * 100; + + query.Add(new DTO.AMES.QRS016Detail + { + type = "醫療", + allQty = allQty, + passQty = passQty, + failQty = failQty, + rejectRate = rejectRate + }); + + // 系統組裝 + data.Clear(); + data = q.Where(w => w.customerMedical == "N" && w.unitNo == "B").ToList(); + allQty = data.Count(); + passQty = data.Where(w => w.qaResult == "P").Count(); + failQty = data.Where(w => w.qaResult == "R").Count(); + rejectRate = failQty == 0 ? 0 : Math.Round(((double)failQty / (double)allQty), 2, MidpointRounding.AwayFromZero) * 100; + query.Add(new DTO.AMES.QRS016Detail + { + type = "系統組裝", + allQty = allQty, + passQty = passQty, + failQty = failQty, + rejectRate = rejectRate + }); + + // 單板 + data.Clear(); + data = q.Where(w => w.customerMedical == "N" && w.unitNo == "S").ToList(); + allQty = data.Count(); + passQty = data.Where(w => w.qaResult == "P").Count(); + failQty = data.Where(w => w.qaResult == "R").Count(); + rejectRate = failQty == 0 ? 0 : Math.Round(((double)failQty / (double)allQty), 2, MidpointRounding.AwayFromZero) * 100; + query.Add(new DTO.AMES.QRS016Detail + { + type = "單板", + allQty = allQty, + passQty = passQty, + failQty = failQty, + rejectRate = rejectRate + }); + + //紀錄筆數 + result.DataTotal = query.Count(); + + result.Data = query; + + if (query.Count == 0) + { + result.Msg = "查無資料"; + result.Success = false; + return result; + } + + result.Success = true; + result.Msg = "OK"; + return result; + } + /// /// 查詢FQC明細資料 ///