diff --git a/AMESCoreStudio.Web/Controllers/QRSController.cs b/AMESCoreStudio.Web/Controllers/QRSController.cs index 482c095b..57e68da9 100644 --- a/AMESCoreStudio.Web/Controllers/QRSController.cs +++ b/AMESCoreStudio.Web/Controllers/QRSController.cs @@ -719,6 +719,20 @@ namespace AMESCoreStudio.Web.Controllers ViewBag.ProductTypeList = ProductTypes; } + private async Task GetFactoryList() + { + var result = await _basApi.GetFactoryInfoes(); + + var FactoryItems = new List(); + + foreach (var item in result) + { + FactoryItems.Add(new SelectListItem(item.FactoryNo + item.FactoryNameCh, item.FactoryNo.ToString())); + } + + ViewBag.WerksList = FactoryItems; + } + private async Task GetMFGTypeList() { var result = await _pcsApi.GetMFGTypes(); @@ -1037,6 +1051,7 @@ namespace AMESCoreStudio.Web.Controllers public async Task QRS014() { await GetUnitList(); + await GetFactoryList(); return View(); } @@ -1046,9 +1061,9 @@ namespace AMESCoreStudio.Web.Controllers { string[] param = id.Split('_'); - var ft_stations = await _basApi.GetStations4FT(param[0]); + var ft_stations = await _basApi.GetStations4FTByConfig(param[0]); - IResultModel result = await _pcsApi.GetWipInfo4QRS014(param[0], param[1], param[2], param[3], param[4], param[5]); + IResultModel result = await _pcsApi.GetWipInfo4QRS014(param[0], param[1], param[2], param[3], param[4], param[5], param[6]); var query = new QRS014ViewModel(); @@ -1106,7 +1121,7 @@ namespace AMESCoreStudio.Web.Controllers [HttpPost] - public async Task GetYieldData4QRS014BAsync(string id) + public async Task GetYieldData4QRS014BSAsync(string id) { string[] param = id.Split('_'); @@ -1116,7 +1131,7 @@ namespace AMESCoreStudio.Web.Controllers string dateStart01 = DateTime.Now.Year.ToString() + "-01-01"; string dateEnd01 = DateTime.Now.Year.ToString() + "-02-01"; - var wipStaiton01 = await _pcsApi.GetWipStation4QRS014Group(param[1], dateStart01, dateEnd01, param[5]); + var wipStaiton01 = await _pcsApi.GetWipStation4QRS014GroupS(param[1], dateStart01, dateEnd01, param[5], param[6]); double sum_rate01 = 100.0; if (wipStaiton01.DataTotal > 0) { @@ -1219,7 +1234,7 @@ namespace AMESCoreStudio.Web.Controllers string dateStart02 = DateTime.Now.Year.ToString() + "-02-01"; string dateEnd02 = DateTime.Now.Year.ToString() + "-03-01"; - var wipStaiton02 = await _pcsApi.GetWipStation4QRS014Group(param[1], dateStart02, dateEnd02, param[5]); + var wipStaiton02 = await _pcsApi.GetWipStation4QRS014GroupS(param[1], dateStart02, dateEnd02, param[5], param[6]); double sum_rate02 = 100.0; if (wipStaiton02.DataTotal > 0) { @@ -1322,7 +1337,7 @@ namespace AMESCoreStudio.Web.Controllers string dateStart03 = DateTime.Now.Year.ToString() + "-03-01"; string dateEnd03 = DateTime.Now.Year.ToString() + "-04-01"; - var wipStaiton03 = await _pcsApi.GetWipStation4QRS014Group(param[1], dateStart03, dateEnd03, param[5]); + var wipStaiton03 = await _pcsApi.GetWipStation4QRS014GroupS(param[1], dateStart03, dateEnd03, param[5], param[6]); double sum_rate03 = 100.0; if (wipStaiton03.DataTotal > 0) { @@ -1425,7 +1440,7 @@ namespace AMESCoreStudio.Web.Controllers string dateStart04 = DateTime.Now.Year.ToString() + "-04-01"; string dateEnd04 = DateTime.Now.Year.ToString() + "-05-01"; - var wipStaiton04 = await _pcsApi.GetWipStation4QRS014Group(param[1], dateStart04, dateEnd04, param[5]); + var wipStaiton04 = await _pcsApi.GetWipStation4QRS014GroupS(param[1], dateStart04, dateEnd04, param[5], param[6]); double sum_rate04 = 100.0; if (wipStaiton04.DataTotal > 0) { @@ -1528,7 +1543,7 @@ namespace AMESCoreStudio.Web.Controllers string dateStart05 = DateTime.Now.Year.ToString() + "-05-01"; string dateEnd05 = DateTime.Now.Year.ToString() + "-06-01"; - var wipStaiton05 = await _pcsApi.GetWipStation4QRS014Group(param[1], dateStart05, dateEnd05, param[5]); + var wipStaiton05 = await _pcsApi.GetWipStation4QRS014GroupS(param[1], dateStart05, dateEnd05, param[5], param[6]); double sum_rate05 = 100.0; if (wipStaiton05.DataTotal > 0) { @@ -1631,7 +1646,7 @@ namespace AMESCoreStudio.Web.Controllers string dateStart06 = DateTime.Now.Year.ToString() + "-06-01"; string dateEnd06 = DateTime.Now.Year.ToString() + "-07-01"; - var wipStaiton06 = await _pcsApi.GetWipStation4QRS014Group(param[1], dateStart06, dateEnd06, param[5]); + var wipStaiton06 = await _pcsApi.GetWipStation4QRS014GroupS(param[1], dateStart06, dateEnd06, param[5], param[6]); double sum_rate06 = 100.0; if (wipStaiton06.DataTotal > 0) { @@ -1734,7 +1749,7 @@ namespace AMESCoreStudio.Web.Controllers string dateStart07 = DateTime.Now.Year.ToString() + "-07-01"; string dateEnd07 = DateTime.Now.Year.ToString() + "-08-01"; - var wipStaiton07 = await _pcsApi.GetWipStation4QRS014Group(param[1], dateStart07, dateEnd07, param[5]); + var wipStaiton07 = await _pcsApi.GetWipStation4QRS014GroupS(param[1], dateStart07, dateEnd07, param[5], param[6]); double sum_rate07 = 100.0; if (wipStaiton07.DataTotal > 0) { @@ -1837,7 +1852,7 @@ namespace AMESCoreStudio.Web.Controllers string dateStart08 = DateTime.Now.Year.ToString() + "-08-01"; string dateEnd08 = DateTime.Now.Year.ToString() + "-09-01"; - var wipStaiton08 = await _pcsApi.GetWipStation4QRS014Group(param[1], dateStart08, dateEnd08, param[5]); + var wipStaiton08 = await _pcsApi.GetWipStation4QRS014GroupS(param[1], dateStart08, dateEnd08, param[5], param[6]); double sum_rate08 = 100.0; if (wipStaiton08.DataTotal > 0) { @@ -1940,7 +1955,7 @@ namespace AMESCoreStudio.Web.Controllers string dateStart09 = DateTime.Now.Year.ToString() + "-09-01"; string dateEnd09 = DateTime.Now.Year.ToString() + "-10-01"; - var wipStaiton09 = await _pcsApi.GetWipStation4QRS014Group(param[1], dateStart09, dateEnd09, param[5]); + var wipStaiton09 = await _pcsApi.GetWipStation4QRS014GroupS(param[1], dateStart09, dateEnd09, param[5], param[6]); double sum_rate09 = 100.0; if (wipStaiton09.DataTotal > 0) { @@ -2043,7 +2058,7 @@ namespace AMESCoreStudio.Web.Controllers string dateStart10 = DateTime.Now.Year.ToString() + "-10-01"; string dateEnd10 = DateTime.Now.Year.ToString() + "-11-01"; - var wipStaiton10 = await _pcsApi.GetWipStation4QRS014Group(param[1], dateStart10, dateEnd10, param[5]); + var wipStaiton10 = await _pcsApi.GetWipStation4QRS014GroupS(param[1], dateStart10, dateEnd10, param[5], param[6]); double sum_rate10 = 100.0; if (wipStaiton10.DataTotal > 0) { @@ -2146,7 +2161,7 @@ namespace AMESCoreStudio.Web.Controllers string dateStart11 = DateTime.Now.Year.ToString() + "-11-01"; string dateEnd11 = DateTime.Now.Year.ToString() + "-12-01"; - var wipStaiton11 = await _pcsApi.GetWipStation4QRS014Group(param[1], dateStart11, dateEnd11, param[5]); + var wipStaiton11 = await _pcsApi.GetWipStation4QRS014GroupS(param[1], dateStart11, dateEnd11, param[5], param[6]); double sum_rate11 = 100.0; if (wipStaiton11.DataTotal > 0) { @@ -2249,7 +2264,7 @@ namespace AMESCoreStudio.Web.Controllers string dateStart12 = DateTime.Now.Year.ToString() + "-12-01"; string dateEnd12 = DateTime.Now.AddYears(1).Year.ToString() + "-01-01"; - var wipStaiton12 = await _pcsApi.GetWipStation4QRS014Group(param[1], dateStart12, dateEnd12, param[5]); + var wipStaiton12 = await _pcsApi.GetWipStation4QRS014GroupS(param[1], dateStart12, dateEnd12, param[5], param[6]); double sum_rate12 = 100.0; if (wipStaiton12.DataTotal > 0) { @@ -2351,120 +2366,21 @@ namespace AMESCoreStudio.Web.Controllers return Json(query.FPYDatas); } - - public async Task QRS014AAsync(string unitNo, string itemNO, string wipNO, string dateStart, string dateEnd, string modelNO) - { - ViewData["ParamList"] = unitNo + "_" + itemNO + "_" + wipNO + "_" + dateStart + "_" + dateEnd + "_" + modelNO; - - ViewData["Title"] = "查詢條件 - 製程代碼 : " + unitNo + "; 工單號碼 : " + wipNO + "; 料號 : " + itemNO + "; 機種 : " + modelNO + "; 生產日期 : " + dateStart + " ~ " + dateEnd; - - var ft_stations = await _basApi.GetStations4FT(unitNo); - - IResultModel result = await _pcsApi.GetWipInfo4QRS014(unitNo, itemNO, wipNO, dateStart, dateEnd, modelNO); - - string rateDataList = ""; - - if (ft_stations.Count > 0) - { - int tdQty = ft_stations.Count * 4 + 3; - rateDataList = rateDataList + ""; - for (int i = 0; i < ft_stations.Count; i++) - { - rateDataList = rateDataList + ""; - } - rateDataList = rateDataList + ""; - - rateDataList = rateDataList + ""; - for (int i = 0; i < ft_stations.Count; i++) - { - rateDataList = rateDataList + ""; - } - rateDataList = rateDataList + ""; - - if (result.DataTotal > 0) - { - foreach (var item in result.Data) - { - JObject jo = JObject.Parse(item.ToString()); - int wip_id = int.Parse(jo["wipID"].ToString()); - string wip_no = jo["wipNO"].ToString(); - string item_no = jo["itemNO"].ToString(); - - rateDataList = rateDataList + ""; - double sum_rate = 100.0; - - for (int i = 0; i < ft_stations.Count; i++) - { - int station_id = ft_stations[i].StationID; - var wip_station = await _pcsApi.GetWipStation4QRS009Group(wip_id, station_id); - - int okQty = 0, ngQty = 0, inputQty = 0; - - if (wip_station.DataTotal > 0) - { - foreach (var data in wip_station.Data) - { - JObject j0 = JObject.Parse(data.ToString()); - if (j0["ruleStatus"].ToString() == "P") - { - okQty = int.Parse(j0["firstCnt"].ToString()); - } - else - { - ngQty = int.Parse(j0["firstCnt"].ToString()); - } - } - } - inputQty = okQty + ngQty; - double rate = 0; - if (okQty > 0) - { - rate = (okQty * 1.0 / inputQty) * 100; - } - - if (rate > 0) - { - sum_rate = sum_rate * (rate / 100.0); - } - rateDataList = rateDataList + ""; - } - rateDataList = rateDataList + ""; - } - } - - - rateDataList = rateDataList + "
" + ft_stations[i].StationName + "
工單號碼料號InputPassFailYield
" + wip_no + "" + item_no + "" + inputQty + "" + okQty + "" + ngQty + "" + rate.ToString("0.00") + "%" + sum_rate.ToString("0.00") + "%
"; - } - - rateDataList = rateDataList + "
"; - ViewData["RateDataList"] = rateDataList; - return View(); - } - - - public async Task QRS014BAsync(string unitNo, string itemNO, string wipNO, string dateStart, string dateEnd, string modelNO) + [HttpPost] + public async Task GetYieldData4QRS014BBAsync(string id) { - ViewData["ParamList"] = unitNo + "_" + itemNO + "_" + wipNO + "_" + dateStart + "_" + dateEnd + "_" + modelNO; - - ViewData["Title"] = "查詢條件 - 製程代碼 : " + unitNo + "; 工單號碼 : " + wipNO + "; 料號 : " + itemNO + "; 機種 : " + modelNO + "; 生產日期 : " + dateStart + " ~ " + dateEnd; - - string rateDataList = ""; - - rateDataList = rateDataList + @" - -"; + string[] param = id.Split('_'); - rateDataList = rateDataList + @""; + var query = new QRS014BViewModel(); #region 01 string dateStart01 = DateTime.Now.Year.ToString() + "-01-01"; string dateEnd01 = DateTime.Now.Year.ToString() + "-02-01"; - var wipStaiton01 = await _pcsApi.GetWipStation4QRS014Group(itemNO, dateStart01, dateEnd01, modelNO); + var wipStaiton01 = await _pcsApi.GetWipStation4QRS014GroupB(param[1], dateStart01, dateEnd01, param[5], param[6]); + double sum_rate01 = 100.0; if (wipStaiton01.DataTotal > 0) { - double sum_rate = 100.0; - DataTable dtRate = new DataTable(); dtRate.Columns.Add("STATION_ID"); dtRate.Columns.Add("OK_QTY"); @@ -2543,16 +2459,20 @@ namespace AMESCoreStudio.Web.Controllers if (rate > 0) { - sum_rate = sum_rate * (rate / 100.0); + sum_rate01 = sum_rate01 * (rate / 100.0); } } } - rateDataList = rateDataList + ""; } else { - rateDataList = rateDataList + ""; + sum_rate01 = 0.00; } + query.FPYDatas.Add(new FPY4MonthGroup + { + Month = DateTime.Now.Year.ToString() + "-01", + Yield = double.Parse(sum_rate01.ToString("0.00")) + }); #endregion @@ -2560,11 +2480,10 @@ namespace AMESCoreStudio.Web.Controllers string dateStart02 = DateTime.Now.Year.ToString() + "-02-01"; string dateEnd02 = DateTime.Now.Year.ToString() + "-03-01"; - var wipStaiton02 = await _pcsApi.GetWipStation4QRS014Group(itemNO, dateStart02, dateEnd02, modelNO); + var wipStaiton02 = await _pcsApi.GetWipStation4QRS014GroupB(param[1], dateStart02, dateEnd02, param[5], param[6]); + double sum_rate02 = 100.0; if (wipStaiton02.DataTotal > 0) { - double sum_rate = 100.0; - DataTable dtRate = new DataTable(); dtRate.Columns.Add("STATION_ID"); dtRate.Columns.Add("OK_QTY"); @@ -2643,16 +2562,20 @@ namespace AMESCoreStudio.Web.Controllers if (rate > 0) { - sum_rate = sum_rate * (rate / 100.0); + sum_rate02 = sum_rate02 * (rate / 100.0); } } } - rateDataList = rateDataList + ""; } else { - rateDataList = rateDataList + ""; + sum_rate02 = 0.00; } + query.FPYDatas.Add(new FPY4MonthGroup + { + Month = DateTime.Now.Year.ToString() + "-02", + Yield = double.Parse(sum_rate02.ToString("0.00")) + }); #endregion @@ -2660,11 +2583,10 @@ namespace AMESCoreStudio.Web.Controllers string dateStart03 = DateTime.Now.Year.ToString() + "-03-01"; string dateEnd03 = DateTime.Now.Year.ToString() + "-04-01"; - var wipStaiton03 = await _pcsApi.GetWipStation4QRS014Group(itemNO, dateStart03, dateEnd03, modelNO); + var wipStaiton03 = await _pcsApi.GetWipStation4QRS014GroupB(param[1], dateStart03, dateEnd03, param[5], param[6]); + double sum_rate03 = 100.0; if (wipStaiton03.DataTotal > 0) { - double sum_rate = 100.0; - DataTable dtRate = new DataTable(); dtRate.Columns.Add("STATION_ID"); dtRate.Columns.Add("OK_QTY"); @@ -2743,16 +2665,20 @@ namespace AMESCoreStudio.Web.Controllers if (rate > 0) { - sum_rate = sum_rate * (rate / 100.0); + sum_rate03 = sum_rate03 * (rate / 100.0); } } } - rateDataList = rateDataList + ""; } else { - rateDataList = rateDataList + ""; + sum_rate03 = 0.00; } + query.FPYDatas.Add(new FPY4MonthGroup + { + Month = DateTime.Now.Year.ToString() + "-03", + Yield = double.Parse(sum_rate03.ToString("0.00")) + }); #endregion @@ -2760,11 +2686,10 @@ namespace AMESCoreStudio.Web.Controllers string dateStart04 = DateTime.Now.Year.ToString() + "-04-01"; string dateEnd04 = DateTime.Now.Year.ToString() + "-05-01"; - var wipStaiton04 = await _pcsApi.GetWipStation4QRS014Group(itemNO, dateStart04, dateEnd04, modelNO); + var wipStaiton04 = await _pcsApi.GetWipStation4QRS014GroupB(param[1], dateStart04, dateEnd04, param[5], param[6]); + double sum_rate04 = 100.0; if (wipStaiton04.DataTotal > 0) { - double sum_rate = 100.0; - DataTable dtRate = new DataTable(); dtRate.Columns.Add("STATION_ID"); dtRate.Columns.Add("OK_QTY"); @@ -2843,16 +2768,20 @@ namespace AMESCoreStudio.Web.Controllers if (rate > 0) { - sum_rate = sum_rate * (rate / 100.0); + sum_rate04 = sum_rate04 * (rate / 100.0); } } } - rateDataList = rateDataList + ""; } else { - rateDataList = rateDataList + ""; + sum_rate04 = 0.00; } + query.FPYDatas.Add(new FPY4MonthGroup + { + Month = DateTime.Now.Year.ToString() + "-04", + Yield = double.Parse(sum_rate04.ToString("0.00")) + }); #endregion @@ -2860,11 +2789,10 @@ namespace AMESCoreStudio.Web.Controllers string dateStart05 = DateTime.Now.Year.ToString() + "-05-01"; string dateEnd05 = DateTime.Now.Year.ToString() + "-06-01"; - var wipStaiton05 = await _pcsApi.GetWipStation4QRS014Group(itemNO, dateStart05, dateEnd05, modelNO); + var wipStaiton05 = await _pcsApi.GetWipStation4QRS014GroupB(param[1], dateStart05, dateEnd05, param[5], param[6]); + double sum_rate05 = 100.0; if (wipStaiton05.DataTotal > 0) { - double sum_rate = 100.0; - DataTable dtRate = new DataTable(); dtRate.Columns.Add("STATION_ID"); dtRate.Columns.Add("OK_QTY"); @@ -2943,16 +2871,20 @@ namespace AMESCoreStudio.Web.Controllers if (rate > 0) { - sum_rate = sum_rate * (rate / 100.0); + sum_rate05 = sum_rate05 * (rate / 100.0); } } } - rateDataList = rateDataList + ""; } else { - rateDataList = rateDataList + ""; + sum_rate05 = 0.00; } + query.FPYDatas.Add(new FPY4MonthGroup + { + Month = DateTime.Now.Year.ToString() + "-05", + Yield = double.Parse(sum_rate05.ToString("0.00")) + }); #endregion @@ -2960,11 +2892,10 @@ namespace AMESCoreStudio.Web.Controllers string dateStart06 = DateTime.Now.Year.ToString() + "-06-01"; string dateEnd06 = DateTime.Now.Year.ToString() + "-07-01"; - var wipStaiton06 = await _pcsApi.GetWipStation4QRS014Group(itemNO, dateStart06, dateEnd06, modelNO); + var wipStaiton06 = await _pcsApi.GetWipStation4QRS014GroupB(param[1], dateStart06, dateEnd06, param[5], param[6]); + double sum_rate06 = 100.0; if (wipStaiton06.DataTotal > 0) { - double sum_rate = 100.0; - DataTable dtRate = new DataTable(); dtRate.Columns.Add("STATION_ID"); dtRate.Columns.Add("OK_QTY"); @@ -3043,16 +2974,20 @@ namespace AMESCoreStudio.Web.Controllers if (rate > 0) { - sum_rate = sum_rate * (rate / 100.0); + sum_rate06 = sum_rate06 * (rate / 100.0); } } } - rateDataList = rateDataList + ""; } else { - rateDataList = rateDataList + ""; + sum_rate06 = 0.00; } + query.FPYDatas.Add(new FPY4MonthGroup + { + Month = DateTime.Now.Year.ToString() + "-06", + Yield = double.Parse(sum_rate06.ToString("0.00")) + }); #endregion @@ -3060,11 +2995,10 @@ namespace AMESCoreStudio.Web.Controllers string dateStart07 = DateTime.Now.Year.ToString() + "-07-01"; string dateEnd07 = DateTime.Now.Year.ToString() + "-08-01"; - var wipStaiton07 = await _pcsApi.GetWipStation4QRS014Group(itemNO, dateStart07, dateEnd07, modelNO); + var wipStaiton07 = await _pcsApi.GetWipStation4QRS014GroupB(param[1], dateStart07, dateEnd07, param[5], param[6]); + double sum_rate07 = 100.0; if (wipStaiton07.DataTotal > 0) { - double sum_rate = 100.0; - DataTable dtRate = new DataTable(); dtRate.Columns.Add("STATION_ID"); dtRate.Columns.Add("OK_QTY"); @@ -3143,16 +3077,20 @@ namespace AMESCoreStudio.Web.Controllers if (rate > 0) { - sum_rate = sum_rate * (rate / 100.0); + sum_rate07 = sum_rate07 * (rate / 100.0); } } } - rateDataList = rateDataList + ""; } else { - rateDataList = rateDataList + ""; + sum_rate07 = 0.00; } + query.FPYDatas.Add(new FPY4MonthGroup + { + Month = DateTime.Now.Year.ToString() + "-07", + Yield = double.Parse(sum_rate07.ToString("0.00")) + }); #endregion @@ -3160,11 +3098,10 @@ namespace AMESCoreStudio.Web.Controllers string dateStart08 = DateTime.Now.Year.ToString() + "-08-01"; string dateEnd08 = DateTime.Now.Year.ToString() + "-09-01"; - var wipStaiton08 = await _pcsApi.GetWipStation4QRS014Group(itemNO, dateStart08, dateEnd08, modelNO); + var wipStaiton08 = await _pcsApi.GetWipStation4QRS014GroupB(param[1], dateStart08, dateEnd08, param[5], param[6]); + double sum_rate08 = 100.0; if (wipStaiton08.DataTotal > 0) { - double sum_rate = 100.0; - DataTable dtRate = new DataTable(); dtRate.Columns.Add("STATION_ID"); dtRate.Columns.Add("OK_QTY"); @@ -3243,16 +3180,20 @@ namespace AMESCoreStudio.Web.Controllers if (rate > 0) { - sum_rate = sum_rate * (rate / 100.0); + sum_rate08 = sum_rate08 * (rate / 100.0); } } } - rateDataList = rateDataList + ""; } else { - rateDataList = rateDataList + ""; + sum_rate08 = 0.00; } + query.FPYDatas.Add(new FPY4MonthGroup + { + Month = DateTime.Now.Year.ToString() + "-08", + Yield = double.Parse(sum_rate08.ToString("0.00")) + }); #endregion @@ -3260,11 +3201,10 @@ namespace AMESCoreStudio.Web.Controllers string dateStart09 = DateTime.Now.Year.ToString() + "-09-01"; string dateEnd09 = DateTime.Now.Year.ToString() + "-10-01"; - var wipStaiton09 = await _pcsApi.GetWipStation4QRS014Group(itemNO, dateStart09, dateEnd09, modelNO); + var wipStaiton09 = await _pcsApi.GetWipStation4QRS014GroupB(param[1], dateStart09, dateEnd09, param[5], param[6]); + double sum_rate09 = 100.0; if (wipStaiton09.DataTotal > 0) { - double sum_rate = 100.0; - DataTable dtRate = new DataTable(); dtRate.Columns.Add("STATION_ID"); dtRate.Columns.Add("OK_QTY"); @@ -3343,16 +3283,20 @@ namespace AMESCoreStudio.Web.Controllers if (rate > 0) { - sum_rate = sum_rate * (rate / 100.0); + sum_rate09 = sum_rate09 * (rate / 100.0); } } } - rateDataList = rateDataList + ""; } else { - rateDataList = rateDataList + ""; + sum_rate09 = 0.00; } + query.FPYDatas.Add(new FPY4MonthGroup + { + Month = DateTime.Now.Year.ToString() + "-09", + Yield = double.Parse(sum_rate09.ToString("0.00")) + }); #endregion @@ -3360,11 +3304,10 @@ namespace AMESCoreStudio.Web.Controllers string dateStart10 = DateTime.Now.Year.ToString() + "-10-01"; string dateEnd10 = DateTime.Now.Year.ToString() + "-11-01"; - var wipStaiton10 = await _pcsApi.GetWipStation4QRS014Group(itemNO, dateStart10, dateEnd10, modelNO); + var wipStaiton10 = await _pcsApi.GetWipStation4QRS014GroupB(param[1], dateStart10, dateEnd10, param[5], param[6]); + double sum_rate10 = 100.0; if (wipStaiton10.DataTotal > 0) { - double sum_rate = 100.0; - DataTable dtRate = new DataTable(); dtRate.Columns.Add("STATION_ID"); dtRate.Columns.Add("OK_QTY"); @@ -3443,16 +3386,20 @@ namespace AMESCoreStudio.Web.Controllers if (rate > 0) { - sum_rate = sum_rate * (rate / 100.0); + sum_rate10 = sum_rate10 * (rate / 100.0); } } } - rateDataList = rateDataList + ""; } else { - rateDataList = rateDataList + ""; + sum_rate10 = 0.00; } + query.FPYDatas.Add(new FPY4MonthGroup + { + Month = DateTime.Now.Year.ToString() + "-10", + Yield = double.Parse(sum_rate10.ToString("0.00")) + }); #endregion @@ -3460,11 +3407,10 @@ namespace AMESCoreStudio.Web.Controllers string dateStart11 = DateTime.Now.Year.ToString() + "-11-01"; string dateEnd11 = DateTime.Now.Year.ToString() + "-12-01"; - var wipStaiton11 = await _pcsApi.GetWipStation4QRS014Group(itemNO, dateStart11, dateEnd11, modelNO); + var wipStaiton11 = await _pcsApi.GetWipStation4QRS014GroupB(param[1], dateStart11, dateEnd11, param[5], param[6]); + double sum_rate11 = 100.0; if (wipStaiton11.DataTotal > 0) { - double sum_rate = 100.0; - DataTable dtRate = new DataTable(); dtRate.Columns.Add("STATION_ID"); dtRate.Columns.Add("OK_QTY"); @@ -3543,16 +3489,20 @@ namespace AMESCoreStudio.Web.Controllers if (rate > 0) { - sum_rate = sum_rate * (rate / 100.0); + sum_rate11 = sum_rate11 * (rate / 100.0); } } } - rateDataList = rateDataList + ""; } else { - rateDataList = rateDataList + ""; + sum_rate11 = 0.00; } + query.FPYDatas.Add(new FPY4MonthGroup + { + Month = DateTime.Now.Year.ToString() + "-11", + Yield = double.Parse(sum_rate11.ToString("0.00")) + }); #endregion @@ -3560,11 +3510,10 @@ namespace AMESCoreStudio.Web.Controllers string dateStart12 = DateTime.Now.Year.ToString() + "-12-01"; string dateEnd12 = DateTime.Now.AddYears(1).Year.ToString() + "-01-01"; - var wipStaiton12 = await _pcsApi.GetWipStation4QRS014Group(itemNO, dateStart12, dateEnd12, modelNO); + var wipStaiton12 = await _pcsApi.GetWipStation4QRS014GroupB(param[1], dateStart12, dateEnd12, param[5], param[6]); + double sum_rate12 = 100.0; if (wipStaiton12.DataTotal > 0) { - double sum_rate = 100.0; - DataTable dtRate = new DataTable(); dtRate.Columns.Add("STATION_ID"); dtRate.Columns.Add("OK_QTY"); @@ -3643,27 +3592,5018 @@ namespace AMESCoreStudio.Web.Controllers if (rate > 0) { - sum_rate = sum_rate * (rate / 100.0); + sum_rate12 = sum_rate12 * (rate / 100.0); } } } - rateDataList = rateDataList + ""; } else { - rateDataList = rateDataList + ""; + sum_rate12 = 0.00; } - - #endregion - - rateDataList = rateDataList + "
年度-類別JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC
" + DateTime.Now.Year.ToString() + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "
"; - + query.FPYDatas.Add(new FPY4MonthGroup + { + Month = DateTime.Now.Year.ToString() + "-12", + Yield = double.Parse(sum_rate12.ToString("0.00")) + }); + + #endregion + + return Json(query.FPYDatas); + } + + [HttpPost] + public async Task GetYieldData4QRS014BMAsync(string id) + { + string[] param = id.Split('_'); + + var query = new QRS014BViewModel(); + + #region 01 + + string dateStart01 = DateTime.Now.Year.ToString() + "-01-01"; + string dateEnd01 = DateTime.Now.Year.ToString() + "-02-01"; + var wipStaiton01 = await _pcsApi.GetWipStation4QRS014GroupM(param[1], dateStart01, dateEnd01, param[5], param[6]); + double sum_rate01 = 100.0; + if (wipStaiton01.DataTotal > 0) + { + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton01.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate01 = sum_rate01 * (rate / 100.0); + } + } + } + } + else + { + sum_rate01 = 0.00; + } + query.FPYDatas.Add(new FPY4MonthGroup + { + Month = DateTime.Now.Year.ToString() + "-01", + Yield = double.Parse(sum_rate01.ToString("0.00")) + }); + + #endregion + + #region 02 + + string dateStart02 = DateTime.Now.Year.ToString() + "-02-01"; + string dateEnd02 = DateTime.Now.Year.ToString() + "-03-01"; + var wipStaiton02 = await _pcsApi.GetWipStation4QRS014GroupM(param[1], dateStart02, dateEnd02, param[5], param[6]); + double sum_rate02 = 100.0; + if (wipStaiton02.DataTotal > 0) + { + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton02.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate02 = sum_rate02 * (rate / 100.0); + } + } + } + } + else + { + sum_rate02 = 0.00; + } + query.FPYDatas.Add(new FPY4MonthGroup + { + Month = DateTime.Now.Year.ToString() + "-02", + Yield = double.Parse(sum_rate02.ToString("0.00")) + }); + + #endregion + + #region 03 + + string dateStart03 = DateTime.Now.Year.ToString() + "-03-01"; + string dateEnd03 = DateTime.Now.Year.ToString() + "-04-01"; + var wipStaiton03 = await _pcsApi.GetWipStation4QRS014GroupM(param[1], dateStart03, dateEnd03, param[5], param[6]); + double sum_rate03 = 100.0; + if (wipStaiton03.DataTotal > 0) + { + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton03.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate03 = sum_rate03 * (rate / 100.0); + } + } + } + } + else + { + sum_rate03 = 0.00; + } + query.FPYDatas.Add(new FPY4MonthGroup + { + Month = DateTime.Now.Year.ToString() + "-03", + Yield = double.Parse(sum_rate03.ToString("0.00")) + }); + + #endregion + + #region 04 + + string dateStart04 = DateTime.Now.Year.ToString() + "-04-01"; + string dateEnd04 = DateTime.Now.Year.ToString() + "-05-01"; + var wipStaiton04 = await _pcsApi.GetWipStation4QRS014GroupM(param[1], dateStart04, dateEnd04, param[5], param[6]); + double sum_rate04 = 100.0; + if (wipStaiton04.DataTotal > 0) + { + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton04.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate04 = sum_rate04 * (rate / 100.0); + } + } + } + } + else + { + sum_rate04 = 0.00; + } + query.FPYDatas.Add(new FPY4MonthGroup + { + Month = DateTime.Now.Year.ToString() + "-04", + Yield = double.Parse(sum_rate04.ToString("0.00")) + }); + + #endregion + + #region 05 + + string dateStart05 = DateTime.Now.Year.ToString() + "-05-01"; + string dateEnd05 = DateTime.Now.Year.ToString() + "-06-01"; + var wipStaiton05 = await _pcsApi.GetWipStation4QRS014GroupM(param[1], dateStart05, dateEnd05, param[5], param[6]); + double sum_rate05 = 100.0; + if (wipStaiton05.DataTotal > 0) + { + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton05.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate05 = sum_rate05 * (rate / 100.0); + } + } + } + } + else + { + sum_rate05 = 0.00; + } + query.FPYDatas.Add(new FPY4MonthGroup + { + Month = DateTime.Now.Year.ToString() + "-05", + Yield = double.Parse(sum_rate05.ToString("0.00")) + }); + + #endregion + + #region 06 + + string dateStart06 = DateTime.Now.Year.ToString() + "-06-01"; + string dateEnd06 = DateTime.Now.Year.ToString() + "-07-01"; + var wipStaiton06 = await _pcsApi.GetWipStation4QRS014GroupM(param[1], dateStart06, dateEnd06, param[5], param[6]); + double sum_rate06 = 100.0; + if (wipStaiton06.DataTotal > 0) + { + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton06.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate06 = sum_rate06 * (rate / 100.0); + } + } + } + } + else + { + sum_rate06 = 0.00; + } + query.FPYDatas.Add(new FPY4MonthGroup + { + Month = DateTime.Now.Year.ToString() + "-06", + Yield = double.Parse(sum_rate06.ToString("0.00")) + }); + + #endregion + + #region 07 + + string dateStart07 = DateTime.Now.Year.ToString() + "-07-01"; + string dateEnd07 = DateTime.Now.Year.ToString() + "-08-01"; + var wipStaiton07 = await _pcsApi.GetWipStation4QRS014GroupM(param[1], dateStart07, dateEnd07, param[5], param[6]); + double sum_rate07 = 100.0; + if (wipStaiton07.DataTotal > 0) + { + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton07.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate07 = sum_rate07 * (rate / 100.0); + } + } + } + } + else + { + sum_rate07 = 0.00; + } + query.FPYDatas.Add(new FPY4MonthGroup + { + Month = DateTime.Now.Year.ToString() + "-07", + Yield = double.Parse(sum_rate07.ToString("0.00")) + }); + + #endregion + + #region 08 + + string dateStart08 = DateTime.Now.Year.ToString() + "-08-01"; + string dateEnd08 = DateTime.Now.Year.ToString() + "-09-01"; + var wipStaiton08 = await _pcsApi.GetWipStation4QRS014GroupM(param[1], dateStart08, dateEnd08, param[5], param[6]); + double sum_rate08 = 100.0; + if (wipStaiton08.DataTotal > 0) + { + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton08.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate08 = sum_rate08 * (rate / 100.0); + } + } + } + } + else + { + sum_rate08 = 0.00; + } + query.FPYDatas.Add(new FPY4MonthGroup + { + Month = DateTime.Now.Year.ToString() + "-08", + Yield = double.Parse(sum_rate08.ToString("0.00")) + }); + + #endregion + + #region 09 + + string dateStart09 = DateTime.Now.Year.ToString() + "-09-01"; + string dateEnd09 = DateTime.Now.Year.ToString() + "-10-01"; + var wipStaiton09 = await _pcsApi.GetWipStation4QRS014GroupM(param[1], dateStart09, dateEnd09, param[5], param[6]); + double sum_rate09 = 100.0; + if (wipStaiton09.DataTotal > 0) + { + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton09.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate09 = sum_rate09 * (rate / 100.0); + } + } + } + } + else + { + sum_rate09 = 0.00; + } + query.FPYDatas.Add(new FPY4MonthGroup + { + Month = DateTime.Now.Year.ToString() + "-09", + Yield = double.Parse(sum_rate09.ToString("0.00")) + }); + + #endregion + + #region 10 + + string dateStart10 = DateTime.Now.Year.ToString() + "-10-01"; + string dateEnd10 = DateTime.Now.Year.ToString() + "-11-01"; + var wipStaiton10 = await _pcsApi.GetWipStation4QRS014GroupM(param[1], dateStart10, dateEnd10, param[5], param[6]); + double sum_rate10 = 100.0; + if (wipStaiton10.DataTotal > 0) + { + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton10.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate10 = sum_rate10 * (rate / 100.0); + } + } + } + } + else + { + sum_rate10 = 0.00; + } + query.FPYDatas.Add(new FPY4MonthGroup + { + Month = DateTime.Now.Year.ToString() + "-10", + Yield = double.Parse(sum_rate10.ToString("0.00")) + }); + + #endregion + + #region 11 + + string dateStart11 = DateTime.Now.Year.ToString() + "-11-01"; + string dateEnd11 = DateTime.Now.Year.ToString() + "-12-01"; + var wipStaiton11 = await _pcsApi.GetWipStation4QRS014GroupM(param[1], dateStart11, dateEnd11, param[5], param[6]); + double sum_rate11 = 100.0; + if (wipStaiton11.DataTotal > 0) + { + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton11.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate11 = sum_rate11 * (rate / 100.0); + } + } + } + } + else + { + sum_rate11 = 0.00; + } + query.FPYDatas.Add(new FPY4MonthGroup + { + Month = DateTime.Now.Year.ToString() + "-11", + Yield = double.Parse(sum_rate11.ToString("0.00")) + }); + + #endregion + + #region 12 + + string dateStart12 = DateTime.Now.Year.ToString() + "-12-01"; + string dateEnd12 = DateTime.Now.AddYears(1).Year.ToString() + "-01-01"; + var wipStaiton12 = await _pcsApi.GetWipStation4QRS014GroupM(param[1], dateStart12, dateEnd12, param[5], param[6]); + double sum_rate12 = 100.0; + if (wipStaiton12.DataTotal > 0) + { + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton12.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate12 = sum_rate12 * (rate / 100.0); + } + } + } + } + else + { + sum_rate12 = 0.00; + } + query.FPYDatas.Add(new FPY4MonthGroup + { + Month = DateTime.Now.Year.ToString() + "-12", + Yield = double.Parse(sum_rate12.ToString("0.00")) + }); + + #endregion + + return Json(query.FPYDatas); + } + + public async Task QRS014AAsync(string unitNo, string werksNo, string itemNO, string wipNO, string dateStart, string dateEnd, string modelNO) + { + if (werksNo == "*") + { + werksNo = ""; + } + + ViewData["ParamList"] = unitNo + "_" + itemNO + "_" + wipNO + "_" + dateStart + "_" + dateEnd + "_" + modelNO + "_" + werksNo; + + ViewData["Title"] = "查詢條件 - 製程代碼 : " + unitNo + "; 生產廠別 : " + werksNo + "; 工單號碼 : " + wipNO + "; 料號 : " + itemNO + "; 機種 : " + modelNO + "; 生產日期 : " + dateStart + " ~ " + dateEnd; + + var ft_stations = await _basApi.GetStations4FTByConfig(unitNo); + + IResultModel result = await _pcsApi.GetWipInfo4QRS014(unitNo, itemNO, wipNO, dateStart, dateEnd, modelNO, werksNo); + + string rateDataList = ""; + + if (ft_stations.Count > 0) + { + int tdQty = ft_stations.Count * 4 + 3; + rateDataList = rateDataList + ""; + for (int i = 0; i < ft_stations.Count; i++) + { + rateDataList = rateDataList + ""; + } + rateDataList = rateDataList + ""; + + rateDataList = rateDataList + ""; + for (int i = 0; i < ft_stations.Count; i++) + { + rateDataList = rateDataList + ""; + } + rateDataList = rateDataList + ""; + + if (result.DataTotal > 0) + { + foreach (var item in result.Data) + { + JObject jo = JObject.Parse(item.ToString()); + int wip_id = int.Parse(jo["wipID"].ToString()); + string wip_no = jo["wipNO"].ToString(); + string item_no = jo["itemNO"].ToString(); + string type = ""; + if (jo["customerMedical"].ToString() == "Y") + { + type = "醫療"; + } + else + { + if (jo["unitNO"].ToString() == "B") + { + type = "系統"; + } + if (jo["unitNO"].ToString() == "S") + { + type = "板卡"; + } + } + + rateDataList = rateDataList + ""; + double sum_rate = 100.0; + + for (int i = 0; i < ft_stations.Count; i++) + { + int station_id = ft_stations[i].StationID; + var wip_station = await _pcsApi.GetWipStation4QRS009Group(wip_id, station_id); + + int okQty = 0, ngQty = 0, inputQty = 0; + + if (wip_station.DataTotal > 0) + { + foreach (var data in wip_station.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + } + } + inputQty = okQty + ngQty; + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + rateDataList = rateDataList + ""; + } + rateDataList = rateDataList + ""; + } + } + + + rateDataList = rateDataList + "
" + ft_stations[i].StationName + "
工單號碼板卡/系統/醫療料號InputPassFailYieldFPY
" + wip_no + "" + type + "" + item_no + "" + inputQty + "" + okQty + "" + ngQty + "" + rate.ToString("0.00") + "%" + sum_rate.ToString("0.00") + "%
"; + } + rateDataList = rateDataList + "
"; ViewData["RateDataList"] = rateDataList; return View(); } - - + + public async Task QRS014BAsync(string unitNo, string werksNo, string itemNO, string wipNO, string dateStart, string dateEnd, string modelNO) + { + if (werksNo == "*") + { + werksNo = ""; + } + + ViewData["ParamList"] = unitNo + "_" + itemNO + "_" + wipNO + "_" + dateStart + "_" + dateEnd + "_" + modelNO + "_" + werksNo; + + ViewData["Title"] = "查詢條件 - 製程代碼 : " + unitNo + "; 生產廠別 : " + werksNo + "; 工單號碼 : " + wipNO + "; 料號 : " + itemNO + "; 機種 : " + modelNO + "; 生產日期 : " + dateStart + " ~ " + dateEnd; + + string rateDataList = ""; + + rateDataList = rateDataList + @" + +"; + + //單板FPY + rateDataList = rateDataList + @""; + + #region 01 + + string dateStart01 = DateTime.Now.Year.ToString() + "-01-01"; + string dateEnd01 = DateTime.Now.Year.ToString() + "-02-01"; + var wipStaiton01 = await _pcsApi.GetWipStation4QRS014GroupS(itemNO, dateStart01, dateEnd01, modelNO, werksNo); + if (wipStaiton01.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton01.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + #region 02 + + string dateStart02 = DateTime.Now.Year.ToString() + "-02-01"; + string dateEnd02 = DateTime.Now.Year.ToString() + "-03-01"; + var wipStaiton02 = await _pcsApi.GetWipStation4QRS014GroupS(itemNO, dateStart02, dateEnd02, modelNO, werksNo); + if (wipStaiton02.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton02.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + #region 03 + + string dateStart03 = DateTime.Now.Year.ToString() + "-03-01"; + string dateEnd03 = DateTime.Now.Year.ToString() + "-04-01"; + var wipStaiton03 = await _pcsApi.GetWipStation4QRS014GroupS(itemNO, dateStart03, dateEnd03, modelNO, werksNo); + if (wipStaiton03.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton03.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + #region 04 + + string dateStart04 = DateTime.Now.Year.ToString() + "-04-01"; + string dateEnd04 = DateTime.Now.Year.ToString() + "-05-01"; + var wipStaiton04 = await _pcsApi.GetWipStation4QRS014GroupS(itemNO, dateStart04, dateEnd04, modelNO, werksNo); + if (wipStaiton04.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton04.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + #region 05 + + string dateStart05 = DateTime.Now.Year.ToString() + "-05-01"; + string dateEnd05 = DateTime.Now.Year.ToString() + "-06-01"; + var wipStaiton05 = await _pcsApi.GetWipStation4QRS014GroupS(itemNO, dateStart05, dateEnd05, modelNO, werksNo); + if (wipStaiton05.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton05.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + #region 06 + + string dateStart06 = DateTime.Now.Year.ToString() + "-06-01"; + string dateEnd06 = DateTime.Now.Year.ToString() + "-07-01"; + var wipStaiton06 = await _pcsApi.GetWipStation4QRS014GroupS(itemNO, dateStart06, dateEnd06, modelNO, werksNo); + if (wipStaiton06.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton06.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + #region 07 + + string dateStart07 = DateTime.Now.Year.ToString() + "-07-01"; + string dateEnd07 = DateTime.Now.Year.ToString() + "-08-01"; + var wipStaiton07 = await _pcsApi.GetWipStation4QRS014GroupS(itemNO, dateStart07, dateEnd07, modelNO, werksNo); + if (wipStaiton07.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton07.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + #region 08 + + string dateStart08 = DateTime.Now.Year.ToString() + "-08-01"; + string dateEnd08 = DateTime.Now.Year.ToString() + "-09-01"; + var wipStaiton08 = await _pcsApi.GetWipStation4QRS014GroupS(itemNO, dateStart08, dateEnd08, modelNO, werksNo); + if (wipStaiton08.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton08.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + #region 09 + + string dateStart09 = DateTime.Now.Year.ToString() + "-09-01"; + string dateEnd09 = DateTime.Now.Year.ToString() + "-10-01"; + var wipStaiton09 = await _pcsApi.GetWipStation4QRS014GroupS(itemNO, dateStart09, dateEnd09, modelNO, werksNo); + if (wipStaiton09.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton09.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + #region 10 + + string dateStart10 = DateTime.Now.Year.ToString() + "-10-01"; + string dateEnd10 = DateTime.Now.Year.ToString() + "-11-01"; + var wipStaiton10 = await _pcsApi.GetWipStation4QRS014GroupS(itemNO, dateStart10, dateEnd10, modelNO, werksNo); + if (wipStaiton10.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton10.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + #region 11 + + string dateStart11 = DateTime.Now.Year.ToString() + "-11-01"; + string dateEnd11 = DateTime.Now.Year.ToString() + "-12-01"; + var wipStaiton11 = await _pcsApi.GetWipStation4QRS014GroupS(itemNO, dateStart11, dateEnd11, modelNO, werksNo); + if (wipStaiton11.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton11.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + #region 12 + + string dateStart12 = DateTime.Now.Year.ToString() + "-12-01"; + string dateEnd12 = DateTime.Now.AddYears(1).Year.ToString() + "-01-01"; + var wipStaiton12 = await _pcsApi.GetWipStation4QRS014GroupS(itemNO, dateStart12, dateEnd12, modelNO, werksNo); + if (wipStaiton12.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton12.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + rateDataList = rateDataList + ""; + + //系統FPY + rateDataList = rateDataList + @""; + + #region 01 + + //string dateStart01 = DateTime.Now.Year.ToString() + "-01-01"; + //string dateEnd01 = DateTime.Now.Year.ToString() + "-02-01"; + wipStaiton01 = await _pcsApi.GetWipStation4QRS014GroupB(itemNO, dateStart01, dateEnd01, modelNO, werksNo); + if (wipStaiton01.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton01.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + #region 02 + + //string dateStart02 = DateTime.Now.Year.ToString() + "-02-01"; + //string dateEnd02 = DateTime.Now.Year.ToString() + "-03-01"; + wipStaiton02 = await _pcsApi.GetWipStation4QRS014GroupB(itemNO, dateStart02, dateEnd02, modelNO, werksNo); + if (wipStaiton02.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton02.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + #region 03 + + //string dateStart03 = DateTime.Now.Year.ToString() + "-03-01"; + //string dateEnd03 = DateTime.Now.Year.ToString() + "-04-01"; + wipStaiton03 = await _pcsApi.GetWipStation4QRS014GroupB(itemNO, dateStart03, dateEnd03, modelNO, werksNo); + if (wipStaiton03.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton03.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + #region 04 + + //string dateStart04 = DateTime.Now.Year.ToString() + "-04-01"; + //string dateEnd04 = DateTime.Now.Year.ToString() + "-05-01"; + wipStaiton04 = await _pcsApi.GetWipStation4QRS014GroupB(itemNO, dateStart04, dateEnd04, modelNO, werksNo); + if (wipStaiton04.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton04.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + #region 05 + + //string dateStart05 = DateTime.Now.Year.ToString() + "-05-01"; + //string dateEnd05 = DateTime.Now.Year.ToString() + "-06-01"; + wipStaiton05 = await _pcsApi.GetWipStation4QRS014GroupB(itemNO, dateStart05, dateEnd05, modelNO, werksNo); + if (wipStaiton05.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton05.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + #region 06 + + //string dateStart06 = DateTime.Now.Year.ToString() + "-06-01"; + //string dateEnd06 = DateTime.Now.Year.ToString() + "-07-01"; + wipStaiton06 = await _pcsApi.GetWipStation4QRS014GroupB(itemNO, dateStart06, dateEnd06, modelNO, werksNo); + if (wipStaiton06.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton06.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + #region 07 + + //string dateStart07 = DateTime.Now.Year.ToString() + "-07-01"; + //string dateEnd07 = DateTime.Now.Year.ToString() + "-08-01"; + wipStaiton07 = await _pcsApi.GetWipStation4QRS014GroupB(itemNO, dateStart07, dateEnd07, modelNO, werksNo); + if (wipStaiton07.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton07.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + #region 08 + + //string dateStart08 = DateTime.Now.Year.ToString() + "-08-01"; + //string dateEnd08 = DateTime.Now.Year.ToString() + "-09-01"; + wipStaiton08 = await _pcsApi.GetWipStation4QRS014GroupB(itemNO, dateStart08, dateEnd08, modelNO, werksNo); + if (wipStaiton08.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton08.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + #region 09 + + //string dateStart09 = DateTime.Now.Year.ToString() + "-09-01"; + //string dateEnd09 = DateTime.Now.Year.ToString() + "-10-01"; + wipStaiton09 = await _pcsApi.GetWipStation4QRS014GroupB(itemNO, dateStart09, dateEnd09, modelNO, werksNo); + if (wipStaiton09.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton09.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + #region 10 + + //string dateStart10 = DateTime.Now.Year.ToString() + "-10-01"; + //string dateEnd10 = DateTime.Now.Year.ToString() + "-11-01"; + wipStaiton10 = await _pcsApi.GetWipStation4QRS014GroupB(itemNO, dateStart10, dateEnd10, modelNO, werksNo); + if (wipStaiton10.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton10.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + #region 11 + + //string dateStart11 = DateTime.Now.Year.ToString() + "-11-01"; + //string dateEnd11 = DateTime.Now.Year.ToString() + "-12-01"; + wipStaiton11 = await _pcsApi.GetWipStation4QRS014GroupB(itemNO, dateStart11, dateEnd11, modelNO, werksNo); + if (wipStaiton11.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton11.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + #region 12 + + //string dateStart12 = DateTime.Now.Year.ToString() + "-12-01"; + //string dateEnd12 = DateTime.Now.AddYears(1).Year.ToString() + "-01-01"; + wipStaiton12 = await _pcsApi.GetWipStation4QRS014GroupB(itemNO, dateStart12, dateEnd12, modelNO, werksNo); + if (wipStaiton12.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton12.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + rateDataList = rateDataList + ""; + + //醫療 + rateDataList = rateDataList + @""; + + #region 01 + + //string dateStart01 = DateTime.Now.Year.ToString() + "-01-01"; + //string dateEnd01 = DateTime.Now.Year.ToString() + "-02-01"; + wipStaiton01 = await _pcsApi.GetWipStation4QRS014GroupM(itemNO, dateStart01, dateEnd01, modelNO, werksNo); + if (wipStaiton01.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton01.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + #region 02 + + //string dateStart02 = DateTime.Now.Year.ToString() + "-02-01"; + //string dateEnd02 = DateTime.Now.Year.ToString() + "-03-01"; + wipStaiton02 = await _pcsApi.GetWipStation4QRS014GroupM(itemNO, dateStart02, dateEnd02, modelNO, werksNo); + if (wipStaiton02.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton02.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + #region 03 + + //string dateStart03 = DateTime.Now.Year.ToString() + "-03-01"; + //string dateEnd03 = DateTime.Now.Year.ToString() + "-04-01"; + wipStaiton03 = await _pcsApi.GetWipStation4QRS014GroupM(itemNO, dateStart03, dateEnd03, modelNO, werksNo); + if (wipStaiton03.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton03.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + #region 04 + + //string dateStart04 = DateTime.Now.Year.ToString() + "-04-01"; + //string dateEnd04 = DateTime.Now.Year.ToString() + "-05-01"; + wipStaiton04 = await _pcsApi.GetWipStation4QRS014GroupM(itemNO, dateStart04, dateEnd04, modelNO, werksNo); + if (wipStaiton04.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton04.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + #region 05 + + //string dateStart05 = DateTime.Now.Year.ToString() + "-05-01"; + //string dateEnd05 = DateTime.Now.Year.ToString() + "-06-01"; + wipStaiton05 = await _pcsApi.GetWipStation4QRS014GroupM(itemNO, dateStart05, dateEnd05, modelNO, werksNo); + if (wipStaiton05.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton05.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + #region 06 + + //string dateStart06 = DateTime.Now.Year.ToString() + "-06-01"; + //string dateEnd06 = DateTime.Now.Year.ToString() + "-07-01"; + wipStaiton06 = await _pcsApi.GetWipStation4QRS014GroupM(itemNO, dateStart06, dateEnd06, modelNO, werksNo); + if (wipStaiton06.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton06.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + #region 07 + + //string dateStart07 = DateTime.Now.Year.ToString() + "-07-01"; + //string dateEnd07 = DateTime.Now.Year.ToString() + "-08-01"; + wipStaiton07 = await _pcsApi.GetWipStation4QRS014GroupM(itemNO, dateStart07, dateEnd07, modelNO, werksNo); + if (wipStaiton07.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton07.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + #region 08 + + //string dateStart08 = DateTime.Now.Year.ToString() + "-08-01"; + //string dateEnd08 = DateTime.Now.Year.ToString() + "-09-01"; + wipStaiton08 = await _pcsApi.GetWipStation4QRS014GroupM(itemNO, dateStart08, dateEnd08, modelNO, werksNo); + if (wipStaiton08.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton08.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + #region 09 + + //string dateStart09 = DateTime.Now.Year.ToString() + "-09-01"; + //string dateEnd09 = DateTime.Now.Year.ToString() + "-10-01"; + wipStaiton09 = await _pcsApi.GetWipStation4QRS014GroupM(itemNO, dateStart09, dateEnd09, modelNO, werksNo); + if (wipStaiton09.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton09.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + #region 10 + + //string dateStart10 = DateTime.Now.Year.ToString() + "-10-01"; + //string dateEnd10 = DateTime.Now.Year.ToString() + "-11-01"; + wipStaiton10 = await _pcsApi.GetWipStation4QRS014GroupM(itemNO, dateStart10, dateEnd10, modelNO, werksNo); + if (wipStaiton10.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton10.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + #region 11 + + //string dateStart11 = DateTime.Now.Year.ToString() + "-11-01"; + //string dateEnd11 = DateTime.Now.Year.ToString() + "-12-01"; + wipStaiton11 = await _pcsApi.GetWipStation4QRS014GroupM(itemNO, dateStart11, dateEnd11, modelNO, werksNo); + if (wipStaiton11.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton11.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + #region 12 + + //string dateStart12 = DateTime.Now.Year.ToString() + "-12-01"; + //string dateEnd12 = DateTime.Now.AddYears(1).Year.ToString() + "-01-01"; + wipStaiton12 = await _pcsApi.GetWipStation4QRS014GroupM(itemNO, dateStart12, dateEnd12, modelNO, werksNo); + if (wipStaiton12.DataTotal > 0) + { + double sum_rate = 100.0; + + DataTable dtRate = new DataTable(); + dtRate.Columns.Add("STATION_ID"); + dtRate.Columns.Add("OK_QTY"); + dtRate.Columns.Add("NG_QTY"); + dtRate.PrimaryKey = new DataColumn[] { dtRate.Columns[0] }; + dtRate.AcceptChanges(); + + foreach (var data in wipStaiton12.Data) + { + JObject j0 = JObject.Parse(data.ToString()); + int stationID = int.Parse(j0["stationID"].ToString()); + + bool existFlag = false; + int idx = 0; + + for (int i = 0; i < dtRate.Rows.Count; i++) + { + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } + + int okQty = 0, ngQty = 0; + + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) + { + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } + + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; + + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } + + if (dtRate.Rows.Count > 0) + { + for (int j = 0; j < dtRate.Rows.Count; j++) + { + int okQty = int.Parse(dtRate.Rows[j][1].ToString()); + int ngQty = int.Parse(dtRate.Rows[j][2].ToString()); + + int inputQty = okQty + ngQty; + + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } + + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + + #endregion + + rateDataList = rateDataList + ""; + + rateDataList = rateDataList + "
年度-類別JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC
" + DateTime.Now.Year.ToString()+"-單板" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "
" + DateTime.Now.Year.ToString() + "-系統" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "
" + DateTime.Now.Year.ToString() + "-醫療" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "" + sum_rate.ToString("0.00") + "" + "0.00" + "
"; + ViewData["RateDataList"] = rateDataList; + return View(); + } public async Task QRS015() { await GetUnitList(); diff --git a/AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs b/AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs index 45525fb6..76174a63 100644 --- a/AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs +++ b/AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs @@ -1013,8 +1013,28 @@ namespace AMESCoreStudio.Web /// /// [WebApiClient.Attributes.HttpGet("api/WipStation/GetWipStation4QRS014Group")] - ITask> GetWipStation4QRS014Group(string itemNo, string dateStart, string dateEnd, string modelNo); + ITask> GetWipStation4QRS014Group(string itemNo, string dateStart, string dateEnd, string modelNo, string werksNo); + /// + /// 查詢單板工單站别资料4QRS014 + /// + /// + [WebApiClient.Attributes.HttpGet("api/WipStation/GetWipStation4QRS014GroupS")] + ITask> GetWipStation4QRS014GroupS(string itemNo, string dateStart, string dateEnd, string modelNo, string werksNo); + + /// + /// 查詢系統工單站别资料4QRS014 + /// + /// + [WebApiClient.Attributes.HttpGet("api/WipStation/GetWipStation4QRS014GroupB")] + ITask> GetWipStation4QRS014GroupB(string itemNo, string dateStart, string dateEnd, string modelNo, string werksNo); + + /// + /// 查詢醫療工單站别资料4QRS014 + /// + /// + [WebApiClient.Attributes.HttpGet("api/WipStation/GetWipStation4QRS014GroupM")] + ITask> GetWipStation4QRS014GroupM(string itemNo, string dateStart, string dateEnd, string modelNo, string werksNo); /// /// 查詢工單站別在製條碼資料 /// @@ -1082,7 +1102,7 @@ namespace AMESCoreStudio.Web /// /// [WebApiClient.Attributes.HttpGet("api/WipInfos/GetWipInfo4QRS014")] - ITask> GetWipInfo4QRS014(string unitNo, string itemNO, string wipNO, string dateStart, string dateEnd, string modelNO); + ITask> GetWipInfo4QRS014(string unitNo, string itemNO, string wipNO, string dateStart, string dateEnd, string modelNO, string werksNo); #endregion diff --git a/AMESCoreStudio.Web/HttpApis/IBAS.cs b/AMESCoreStudio.Web/HttpApis/IBAS.cs index c5254788..0e09b079 100644 --- a/AMESCoreStudio.Web/HttpApis/IBAS.cs +++ b/AMESCoreStudio.Web/HttpApis/IBAS.cs @@ -321,6 +321,13 @@ namespace AMESCoreStudio.Web [WebApiClient.Attributes.HttpGet("api/Stationses/FT/{id}")] ITask> GetStations4FT(string id); + /// + /// 根據config獲取F/T站別 + /// + /// + [WebApiClient.Attributes.HttpGet("api/Stationses/FTByConfig/{id}")] + ITask> GetStations4FTByConfig(string id); + #endregion #region BAS009流程資料維護相關 diff --git a/AMESCoreStudio.Web/Views/QRS/QRS014.cshtml b/AMESCoreStudio.Web/Views/QRS/QRS014.cshtml index fae4979a..be6e9ecc 100644 --- a/AMESCoreStudio.Web/Views/QRS/QRS014.cshtml +++ b/AMESCoreStudio.Web/Views/QRS/QRS014.cshtml @@ -26,6 +26,17 @@ +
+
+ +
+ +
+ +
+
@@ -50,7 +61,7 @@
-
+
@@ -100,26 +111,28 @@ function result_a() { var unitNo = $("#unit").val(); + var werksNo = $("#werks").val(); var itemNO = $("#itemNO").val(); var wipNO = $("#wipNO").val(); var dateStart = $("#dateStart").val(); var dateEnd = $("#dateEnd").val(); var modelNO = $("#modelNO").val(); - var query = "?unitNo=" + unitNo + "&itemNO=" + itemNO + "&wipNO=" + wipNO + "&dateStart=" + dateStart + "&dateEnd=" + dateEnd + "&modelNO=" + modelNO; + var query = "?unitNo=" + unitNo + "&werksNo=" + werksNo + "&itemNO=" + itemNO + "&wipNO=" + wipNO + "&dateStart=" + dateStart + "&dateEnd=" + dateEnd + "&modelNO=" + modelNO; hg.open('直通率', '/QRS/QRS014A' + query, '', '', true); }; function result_b() { var unitNo = $("#unit").val(); + var werksNo = $("#werks").val(); var itemNO = $("#itemNO").val(); var wipNO = $("#wipNO").val(); var dateStart = $("#dateStart").val(); var dateEnd = $("#dateEnd").val(); var modelNO = $("#modelNO").val(); - var query = "?unitNo=" + unitNo + "&itemNO=" + itemNO + "&wipNO=" + wipNO + "&dateStart=" + dateStart + "&dateEnd=" + dateEnd + "&modelNO=" + modelNO; + var query = "?unitNo=" + unitNo + "&werksNo=" + werksNo + "&itemNO=" + itemNO + "&wipNO=" + wipNO + "&dateStart=" + dateStart + "&dateEnd=" + dateEnd + "&modelNO=" + modelNO; hg.open('直通率', '/QRS/QRS014B' + query, '', '', true); }; diff --git a/AMESCoreStudio.Web/Views/QRS/QRS014B.cshtml b/AMESCoreStudio.Web/Views/QRS/QRS014B.cshtml index 6fd44d60..6e72b787 100644 --- a/AMESCoreStudio.Web/Views/QRS/QRS014B.cshtml +++ b/AMESCoreStudio.Web/Views/QRS/QRS014B.cshtml @@ -16,7 +16,9 @@
-
+
+
+
@Html.Raw(ViewData["RateDataList"])
@@ -31,7 +33,7 @@ $.ajax({ type: "Post", - url: '/QRS/GetYieldData4QRS014B?id=' + param_list.value, + url: '/QRS/GetYieldData4QRS014BS?id=' + param_list.value, contentType: "application/json; charset=utf-8", dataType: 'json', success: function (response) { @@ -44,9 +46,9 @@ idx = idx + 1; }); - Highcharts.chart('divChart', { + Highcharts.chart('divChartS', { title: { - text: '直通率圖表' + text: '單板直通率圖表' }, subtitle: { text: '' @@ -56,7 +58,7 @@ }, yAxis: { title: { - text: '直通率' + text: '單板直通率' } }, plotOptions: { @@ -80,8 +82,120 @@ }); }, error: function () { - alert("查無直通率資料!"); - $("#divChart").empty(); + alert("查無單板直通率資料!"); + $("#divChartS").empty(); + } + }); + + $.ajax({ + type: "Post", + url: '/QRS/GetYieldData4QRS014BB?id=' + param_list.value, + contentType: "application/json; charset=utf-8", + dataType: 'json', + success: function (response) { + var idx = 0; + var xAxisData = new Array(); + var yieldData = new Array(); + $.each(response, function (i, item) { + yieldData[idx] = item["yield"]; + xAxisData[idx] = item["month"]; + idx = idx + 1; + }); + + Highcharts.chart('divChartB', { + title: { + text: '系統直通率圖表' + }, + subtitle: { + text: '' + }, + xAxis: { + categories: xAxisData + }, + yAxis: { + title: { + text: '系統直通率' + } + }, + plotOptions: { + line: { + dataLabels: { + enabled: true + }, + enableMouseTracking: false + } + }, + series: [{ + type: 'column', + name: '月份', + data: yieldData + }, + { + type: 'line', + name: '月份', + data: yieldData + }] + }); + }, + error: function () { + alert("查無系統直通率資料!"); + $("#divChartB").empty(); + } + }); + + $.ajax({ + type: "Post", + url: '/QRS/GetYieldData4QRS014BM?id=' + param_list.value, + contentType: "application/json; charset=utf-8", + dataType: 'json', + success: function (response) { + var idx = 0; + var xAxisData = new Array(); + var yieldData = new Array(); + $.each(response, function (i, item) { + yieldData[idx] = item["yield"]; + xAxisData[idx] = item["month"]; + idx = idx + 1; + }); + + Highcharts.chart('divChartM', { + title: { + text: '醫療直通率圖表' + }, + subtitle: { + text: '' + }, + xAxis: { + categories: xAxisData + }, + yAxis: { + title: { + text: '醫療直通率' + } + }, + plotOptions: { + line: { + dataLabels: { + enabled: true + }, + enableMouseTracking: false + } + }, + series: [{ + type: 'column', + name: '月份', + data: yieldData + }, + { + type: 'line', + name: '月份', + data: yieldData + }] + }); + }, + error: function () { + alert("查無醫療直通率資料!"); + $("#divChartM").empty(); } }); }); diff --git a/AMESCoreStudio.WebApi/Controllers/AMES/WipInfosController.cs b/AMESCoreStudio.WebApi/Controllers/AMES/WipInfosController.cs index 463a82f9..98d97edc 100644 --- a/AMESCoreStudio.WebApi/Controllers/AMES/WipInfosController.cs +++ b/AMESCoreStudio.WebApi/Controllers/AMES/WipInfosController.cs @@ -1513,7 +1513,7 @@ FROM [SFIS].[dbo].[ZPDKeyPart] B WHERE B.[IsActive] = 1 AND B.[ProductSN] = (S /// [Route("[action]")] [HttpGet] - public async Task> GetWipInfo4QRS014(string unitNo, string itemNO, string wipNO, string dateStart, string dateEnd, string modelNO) + public async Task> GetWipInfo4QRS014(string unitNo, string itemNO, string wipNO, string dateStart, string dateEnd, string modelNO, string werksNo) { ResultModel result = new ResultModel(); var q = from q1 in _context.WipInfos @@ -1524,6 +1524,8 @@ FROM [SFIS].[dbo].[ZPDKeyPart] B WHERE B.[IsActive] = 1 AND B.[ProductSN] = (S { q1.WipID, q1.WipNO, + q1.WerksNO, + q1.CustomerMedical, q1.PlanQTY, q1.CompleteQTY, q1.UnitNO, @@ -1543,6 +1545,84 @@ FROM [SFIS].[dbo].[ZPDKeyPart] B WHERE B.[IsActive] = 1 AND B.[ProductSN] = (S { q = q.Where(w => w.UnitNO == unitNo); } + if (werksNo != "*") + { + q = q.Where(w => w.WerksNO == werksNo); + } + if (itemNO != null && itemNO != "") + { + q = q.Where(w => w.ItemNO == itemNO); + } + if (modelNO != null && modelNO != "") + { + q = q.Where(w => w.ModelNO == modelNO); + } + if (wipNO != null && wipNO != "") + { + q = q.Where(w => w.WipNO == wipNO); + } + if (dateStart != null && dateStart != "" && dateEnd != null && dateEnd != "") + { + q = q.Where(w => w.CreateDate >= DateTime.Parse(dateStart) && w.CreateDate <= DateTime.Parse(dateEnd).AddDays(1)); + } + + //紀錄筆數 + result.DataTotal = q.Count(); + + result.Data = await q.ToListAsync(); + + if (result == null) + { + result.Msg = "查無資料"; + result.Success = false; + return result; + } + + result.Success = true; + result.Msg = "OK"; + return result; + } + + /// + /// 查詢工單資料QRS014 + /// + /// + [Route("[action]")] + [HttpGet] + public async Task> GetWipInfo4QRS014B(string itemNO, string wipNO, string dateStart, string dateEnd, string modelNO, string werksNo) + { + ResultModel result = new ResultModel(); + var q = from q1 in _context.WipInfos + join q2 in _context.WipAtts on q1.WipNO equals q2.WipNO + join q3 in _context.LineInfoes on q1.LineID equals q3.LineID + join q4 in _context.FactoryUnits on q1.UnitNO equals q4.UnitNo + select new + { + q1.WipID, + q1.WipNO, + q1.WerksNO, + q1.CustomerMedical, + q1.PlanQTY, + q1.CompleteQTY, + q1.UnitNO, + q1.LineID, + q1.FlowRuleID, + q1.StatusNO, + q1.CreateDate, + q2.ItemNO, + q2.ModelNO, + q3.LineDesc, + q4.UnitName + }; + + q = q.Where(w => w.CompleteQTY > 0); + + q = q.Where(w => w.UnitNO == "B" && w.CustomerMedical == "N"); + + if (werksNo != "*") + { + q = q.Where(w => w.WerksNO == werksNo); + } if (itemNO != null && itemNO != "") { q = q.Where(w => w.ItemNO == itemNO); @@ -1577,6 +1657,155 @@ FROM [SFIS].[dbo].[ZPDKeyPart] B WHERE B.[IsActive] = 1 AND B.[ProductSN] = (S return result; } + /// + /// 查詢工單資料QRS014 + /// + /// + [Route("[action]")] + [HttpGet] + public async Task> GetWipInfo4QRS014S(string itemNO, string wipNO, string dateStart, string dateEnd, string modelNO, string werksNo) + { + ResultModel result = new ResultModel(); + var q = from q1 in _context.WipInfos + join q2 in _context.WipAtts on q1.WipNO equals q2.WipNO + join q3 in _context.LineInfoes on q1.LineID equals q3.LineID + join q4 in _context.FactoryUnits on q1.UnitNO equals q4.UnitNo + select new + { + q1.WipID, + q1.WipNO, + q1.WerksNO, + q1.CustomerMedical, + q1.PlanQTY, + q1.CompleteQTY, + q1.UnitNO, + q1.LineID, + q1.FlowRuleID, + q1.StatusNO, + q1.CreateDate, + q2.ItemNO, + q2.ModelNO, + q3.LineDesc, + q4.UnitName + }; + + q = q.Where(w => w.CompleteQTY > 0); + + q = q.Where(w => w.UnitNO == "S" && w.CustomerMedical == "N"); + + if (werksNo != "*") + { + q = q.Where(w => w.WerksNO == werksNo); + } + if (itemNO != null && itemNO != "") + { + q = q.Where(w => w.ItemNO == itemNO); + } + if (modelNO != null && modelNO != "") + { + q = q.Where(w => w.ModelNO == modelNO); + } + if (wipNO != null && wipNO != "") + { + q = q.Where(w => w.WipNO == wipNO); + } + if (dateStart != null && dateStart != "" && dateEnd != null && dateEnd != "") + { + q = q.Where(w => w.CreateDate >= DateTime.Parse(dateStart) && w.CreateDate <= DateTime.Parse(dateEnd).AddDays(1)); + } + + //紀錄筆數 + result.DataTotal = q.Count(); + + result.Data = await q.ToListAsync(); + + if (result == null) + { + result.Msg = "查無資料"; + result.Success = false; + return result; + } + + result.Success = true; + result.Msg = "OK"; + return result; + } + + /// + /// 查詢工單資料QRS014 + /// + /// + [Route("[action]")] + [HttpGet] + public async Task> GetWipInfo4QRS014M(string unitNo, string itemNO, string wipNO, string dateStart, string dateEnd, string modelNO, string werksNo) + { + ResultModel result = new ResultModel(); + var q = from q1 in _context.WipInfos + join q2 in _context.WipAtts on q1.WipNO equals q2.WipNO + join q3 in _context.LineInfoes on q1.LineID equals q3.LineID + join q4 in _context.FactoryUnits on q1.UnitNO equals q4.UnitNo + select new + { + q1.WipID, + q1.WipNO, + q1.WerksNO, + q1.CustomerMedical, + q1.PlanQTY, + q1.CompleteQTY, + q1.UnitNO, + q1.LineID, + q1.FlowRuleID, + q1.StatusNO, + q1.CreateDate, + q2.ItemNO, + q2.ModelNO, + q3.LineDesc, + q4.UnitName + }; + + q = q.Where(w => w.CompleteQTY > 0 && w.CustomerMedical == "Y"); + + if (unitNo != "*") + { + q = q.Where(w => w.UnitNO == unitNo); + } + if (werksNo != "*") + { + q = q.Where(w => w.WerksNO == werksNo); + } + if (itemNO != null && itemNO != "") + { + q = q.Where(w => w.ItemNO == itemNO); + } + if (modelNO != null && modelNO != "") + { + q = q.Where(w => w.ModelNO == modelNO); + } + if (wipNO != null && wipNO != "") + { + q = q.Where(w => w.WipNO == wipNO); + } + if (dateStart != null && dateStart != "" && dateEnd != null && dateEnd != "") + { + q = q.Where(w => w.CreateDate >= DateTime.Parse(dateStart) && w.CreateDate <= DateTime.Parse(dateEnd).AddDays(1)); + } + + //紀錄筆數 + result.DataTotal = q.Count(); + + result.Data = await q.ToListAsync(); + + if (result == null) + { + result.Msg = "查無資料"; + result.Success = false; + return result; + } + + result.Success = true; + result.Msg = "OK"; + return result; + } /// /// 查詢工單資料 by SelectParameter /// diff --git a/AMESCoreStudio.WebApi/Controllers/AMES/WipStationController.cs b/AMESCoreStudio.WebApi/Controllers/AMES/WipStationController.cs index 54152391..732e8e93 100644 --- a/AMESCoreStudio.WebApi/Controllers/AMES/WipStationController.cs +++ b/AMESCoreStudio.WebApi/Controllers/AMES/WipStationController.cs @@ -197,9 +197,10 @@ FROM JHAMES.WIP_STATION"; /// 開始日期 /// 結束日期 /// 機種 + /// 生產廠別 /// [HttpGet("GetWipStation4QRS014Group")] - public async Task> GetWipStation4QRS014Group(string itemNo, string dateStart, string dateEnd,string modelNo) + public async Task> GetWipStation4QRS014Group(string itemNo, string dateStart, string dateEnd, string modelNo, string werksNo) { ResultModel result = new ResultModel(); @@ -209,6 +210,7 @@ FROM JHAMES.WIP_STATION"; select new { q1.WipID, + q2.WerksNO, q3.ItemNO, q3.ModelNO, q1.StationID, @@ -229,6 +231,160 @@ FROM JHAMES.WIP_STATION"; q = q.Where(w => w.ModelNO == modelNo); } + if (werksNo != null) + { + if (werksNo != "") + q = q.Where(w => w.WerksNO == werksNo); + } + + + if (dateStart != null && dateEnd != null) + { + if (dateStart != "" && dateEnd != "") + { + q = q.Where(w => w.CreateDate >= DateTime.Parse(dateStart) && w.CreateDate <= DateTime.Parse(dateEnd)); + } + } + + var g = q.GroupBy(x => new { x.StationID, x.RuleStatus }).Select(x => new + { + StationID = x.Key.StationID, + RuleStatus = x.Key.RuleStatus, + FirstCnt = q.Where(j => j.StationID == x.Key.StationID && j.RuleStatus == x.Key.RuleStatus).Sum(k => k.FirstCnt) + }); + + result.DataTotal = g.ToList().Count; + + result.Data = await g.ToListAsync(); + + return result; + } + + /// + /// 根據料號+時間起迄查詢首次過站紀錄 + /// + /// 料號 + /// 開始日期 + /// 結束日期 + /// 機種 + /// 生產廠別 + /// + [HttpGet("GetWipStation4QRS014GroupS")] + public async Task> GetWipStation4QRS014GroupS(string itemNo, string dateStart, string dateEnd, string modelNo, string werksNo) + { + ResultModel result = new ResultModel(); + + var q = from q1 in _context.WipStations + join q2 in _context.WipInfos on q1.WipID equals q2.WipID + join q3 in _context.WipAtts on q2.WipNO equals q3.WipNO + select new + { + q1.WipID, + q2.WerksNO, + q2.UnitNO, + q2.CustomerMedical, + q3.ItemNO, + q3.ModelNO, + q1.StationID, + q1.RuleStatus, + q1.FirstCnt, + q1.CreateDate + }; + + q = q.Where(w => w.CustomerMedical == "N" && w.UnitNO == "S"); + + if (itemNo != null) + { + if (itemNo != "") + q = q.Where(w => w.ItemNO == itemNo); + } + + if (modelNo != null) + { + if (modelNo != "") + q = q.Where(w => w.ModelNO == modelNo); + } + + if (werksNo != null) + { + if (werksNo != "") + q = q.Where(w => w.WerksNO == werksNo); + } + + + if (dateStart != null && dateEnd != null) + { + if (dateStart != "" && dateEnd != "") + { + q = q.Where(w => w.CreateDate >= DateTime.Parse(dateStart) && w.CreateDate <= DateTime.Parse(dateEnd)); + } + } + + var g = q.GroupBy(x => new { x.StationID, x.RuleStatus }).Select(x => new + { + StationID = x.Key.StationID, + RuleStatus = x.Key.RuleStatus, + FirstCnt = q.Where(j => j.StationID == x.Key.StationID && j.RuleStatus == x.Key.RuleStatus).Sum(k => k.FirstCnt) + }); + + result.DataTotal = g.ToList().Count; + + result.Data = await g.ToListAsync(); + + return result; + } + + /// + /// 根據料號+時間起迄查詢首次過站紀錄 + /// + /// 料號 + /// 開始日期 + /// 結束日期 + /// 機種 + /// 生產廠別 + /// + [HttpGet("GetWipStation4QRS014GroupB")] + public async Task> GetWipStation4QRS014GroupB(string itemNo, string dateStart, string dateEnd, string modelNo, string werksNo) + { + ResultModel result = new ResultModel(); + + var q = from q1 in _context.WipStations + join q2 in _context.WipInfos on q1.WipID equals q2.WipID + join q3 in _context.WipAtts on q2.WipNO equals q3.WipNO + select new + { + q1.WipID, + q2.WerksNO, + q2.CustomerMedical, + q2.UnitNO, + q3.ItemNO, + q3.ModelNO, + q1.StationID, + q1.RuleStatus, + q1.FirstCnt, + q1.CreateDate + }; + + q = q.Where(w => w.CustomerMedical == "N" && w.UnitNO == "B"); + + if (itemNo != null) + { + if (itemNo != "") + q = q.Where(w => w.ItemNO == itemNo); + } + + if (modelNo != null) + { + if (modelNo != "") + q = q.Where(w => w.ModelNO == modelNo); + } + + if (werksNo != null) + { + if (werksNo != "") + q = q.Where(w => w.WerksNO == werksNo); + } + if (dateStart != null && dateEnd != null) { @@ -252,6 +408,79 @@ FROM JHAMES.WIP_STATION"; return result; } + /// + /// 根據料號+時間起迄查詢首次過站紀錄 + /// + /// 料號 + /// 開始日期 + /// 結束日期 + /// 機種 + /// 生產廠別 + /// + [HttpGet("GetWipStation4QRS014GroupM")] + public async Task> GetWipStation4QRS014GroupM(string itemNo, string dateStart, string dateEnd, string modelNo, string werksNo) + { + ResultModel result = new ResultModel(); + + var q = from q1 in _context.WipStations + join q2 in _context.WipInfos on q1.WipID equals q2.WipID + join q3 in _context.WipAtts on q2.WipNO equals q3.WipNO + select new + { + q1.WipID, + q2.WerksNO, + q2.CustomerMedical, + q2.UnitNO, + q3.ItemNO, + q3.ModelNO, + q1.StationID, + q1.RuleStatus, + q1.FirstCnt, + q1.CreateDate + }; + + q = q.Where(w => w.CustomerMedical == "Y"); + + if (itemNo != null) + { + if (itemNo != "") + q = q.Where(w => w.ItemNO == itemNo); + } + + if (modelNo != null) + { + if (modelNo != "") + q = q.Where(w => w.ModelNO == modelNo); + } + + if (werksNo != null) + { + if (werksNo != "") + q = q.Where(w => w.WerksNO == werksNo); + } + + + if (dateStart != null && dateEnd != null) + { + if (dateStart != "" && dateEnd != "") + { + q = q.Where(w => w.CreateDate >= DateTime.Parse(dateStart) && w.CreateDate <= DateTime.Parse(dateEnd)); + } + } + + var g = q.GroupBy(x => new { x.StationID, x.RuleStatus }).Select(x => new + { + StationID = x.Key.StationID, + RuleStatus = x.Key.RuleStatus, + FirstCnt = q.Where(j => j.StationID == x.Key.StationID && j.RuleStatus == x.Key.RuleStatus).Sum(k => k.FirstCnt) + }); + + result.DataTotal = g.ToList().Count; + + result.Data = await g.ToListAsync(); + + return result; + } /// /// 基本查詢 diff --git a/AMESCoreStudio.WebApi/Controllers/BAS/StationsesController.cs b/AMESCoreStudio.WebApi/Controllers/BAS/StationsesController.cs index c839222a..fcaa28cf 100644 --- a/AMESCoreStudio.WebApi/Controllers/BAS/StationsesController.cs +++ b/AMESCoreStudio.WebApi/Controllers/BAS/StationsesController.cs @@ -8,6 +8,7 @@ using Microsoft.EntityFrameworkCore; using AMESCoreStudio.WebApi; using AMESCoreStudio.WebApi.Models.BAS; using AMESCoreStudio.CommonTools.Result; +using Microsoft.Extensions.Configuration; namespace AMESCoreStudio.WebApi.Controllers.BAS { @@ -19,6 +20,7 @@ namespace AMESCoreStudio.WebApi.Controllers.BAS public class StationsesController : ControllerBase { private readonly AMESContext _context; + private readonly IConfiguration _config; /// /// @@ -26,6 +28,7 @@ namespace AMESCoreStudio.WebApi.Controllers.BAS /// public StationsesController(AMESContext context) { + _config = new ConfigurationBuilder().SetBasePath(Environment.CurrentDirectory).AddJsonFile("appsettings.json").Build(); _context = context; } @@ -111,6 +114,42 @@ namespace AMESCoreStudio.WebApi.Controllers.BAS return Stations; } + /// + /// 根據config获取全部F/T站別资料 + /// + /// + // GET: api/Stationses + [HttpGet("FTByConfig/{id}")] + public async Task>> GetStations4FTByConfig(string id) + { + string fpyStation = _config["FPYStation"].ToString(); + string[] fpy_station = fpyStation.Split(','); + + IQueryable q = _context.Stationses; + /* + if (id != "0") + { + q = q.Where(p => p.UnitNo.Equals(id)); + } + */ + q = q.Where(p => p.TestType == "F/T" && p.TypeNo == "T" && p.StatusNo == "A"); + q = q.Where(p => fpy_station.Contains(p.StationName)); + q = q.OrderBy(p => p.StationName); + + var Stations = await q.ToListAsync(); + + foreach (var data in Stations) + { + if (data.UnitNo != "0") + data.Unit = _context.FactoryUnits.Find(data.UnitNo); + else + data.Unit.UnitName = "N/A"; + } + + + return Stations; + } + /// /// 根据單位ID获取该站別资料 /// diff --git a/AMESCoreStudio.WebApi/appsettings.json b/AMESCoreStudio.WebApi/appsettings.json index 4f3712b1..bd280ee3 100644 --- a/AMESCoreStudio.WebApi/appsettings.json +++ b/AMESCoreStudio.WebApi/appsettings.json @@ -13,6 +13,7 @@ //"AMESContext": "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=61.216.68.18)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=jhdb)));User Id=system;Password=admin;" //"AMESContextO": "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=61.216.68.18)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=cpadb)));User Id=JHSYS;Password=ASYS666;" }, + "FPYStation": "T1,T2,T3", "WebSiteUrl": "", "MailSmtpServer": "", "MailSmtpPort": "25",