From 80e210c6b6149292600b2c074e617fd23fe6d230 Mon Sep 17 00:00:00 2001 From: Marvin Date: Wed, 29 Mar 2023 17:23:23 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=E7=9B=B4=E9=80=9A=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/QRSController.cs | 2584 ++++++++++++++++- AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs | 7 + .../ViewModels/QRS/QRS014BViewModel.cs | 31 + AMESCoreStudio.Web/Views/QRS/QRS014.cshtml | 2 +- AMESCoreStudio.Web/Views/QRS/QRS014B.cshtml | 92 + .../Controllers/AMES/WipStationController.cs | 55 + 6 files changed, 2714 insertions(+), 57 deletions(-) create mode 100644 AMESCoreStudio.Web/ViewModels/QRS/QRS014BViewModel.cs create mode 100644 AMESCoreStudio.Web/Views/QRS/QRS014B.cshtml diff --git a/AMESCoreStudio.Web/Controllers/QRSController.cs b/AMESCoreStudio.Web/Controllers/QRSController.cs index 26464800..61b13d9e 100644 --- a/AMESCoreStudio.Web/Controllers/QRSController.cs +++ b/AMESCoreStudio.Web/Controllers/QRSController.cs @@ -13,6 +13,7 @@ using System.Linq; using AMESCoreStudio.WebApi.DTO.AMES; using AMESCoreStudio.WebApi.Models.BAS; using System; +using System.Data; namespace AMESCoreStudio.Web.Controllers { @@ -1103,95 +1104,2566 @@ namespace AMESCoreStudio.Web.Controllers return Json(query.SumYieldDatas); } - public async Task QRS014AAsync(string unitNo, string itemNO, string wipNO, string dateStart, string dateEnd) + + [HttpPost] + public async Task GetYieldData4QRS014BAsync(string id) { - ViewData["ParamList"] = unitNo + "_" + itemNO + "_" + wipNO + "_" + dateStart + "_" + dateEnd; + 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.GetWipStation4QRS014Group(param[1], dateStart01, dateEnd01); + 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.GetWipStation4QRS014Group(param[1], dateStart02, dateEnd02); + 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.GetWipStation4QRS014Group(param[1], dateStart03, dateEnd03); + 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.GetWipStation4QRS014Group(param[1], dateStart04, dateEnd04); + 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.GetWipStation4QRS014Group(param[1], dateStart05, dateEnd05); + 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.GetWipStation4QRS014Group(param[1], dateStart06, dateEnd06); + 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.GetWipStation4QRS014Group(param[1], dateStart07, dateEnd07); + 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.GetWipStation4QRS014Group(param[1], dateStart08, dateEnd08); + 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.GetWipStation4QRS014Group(param[1], dateStart09, dateEnd09); + 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.GetWipStation4QRS014Group(param[1], dateStart10, dateEnd10); + 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.GetWipStation4QRS014Group(param[1], dateStart11, dateEnd11); + 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.GetWipStation4QRS014Group(param[1], dateStart12, dateEnd12); + 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 itemNO, string wipNO, string dateStart, string dateEnd) + { + ViewData["ParamList"] = unitNo + "_" + itemNO + "_" + wipNO + "_" + dateStart + "_" + dateEnd; + + ViewData["Title"] = "查詢條件 - 製程代碼 : " + unitNo + "; 工單號碼 : " + wipNO + "; 料號 : " + itemNO + "; 生產日期 : " + dateStart + " ~ " + dateEnd; + + var ft_stations = await _basApi.GetStations4FT(unitNo); + + IResultModel result = await _pcsApi.GetWipInfo4QRS014(unitNo, itemNO, wipNO, dateStart, dateEnd); + + 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) + { + ViewData["ParamList"] = unitNo + "_" + itemNO + "_" + wipNO + "_" + dateStart + "_" + dateEnd; + + ViewData["Title"] = "查詢條件 - 製程代碼 : " + unitNo + "; 工單號碼 : " + wipNO + "; 料號 : " + itemNO + "; 生產日期 : " + dateStart + " ~ " + dateEnd; + + string rateDataList = ""; + + rateDataList = rateDataList + @" + +"; + + rateDataList = rateDataList + @""; + + #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); + 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.GetWipStation4QRS014Group(itemNO, dateStart02, dateEnd02); + 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.GetWipStation4QRS014Group(itemNO, dateStart03, dateEnd03); + 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.GetWipStation4QRS014Group(itemNO, dateStart04, dateEnd04); + 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.GetWipStation4QRS014Group(itemNO, dateStart05, dateEnd05); + 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.GetWipStation4QRS014Group(itemNO, dateStart06, dateEnd06); + 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.GetWipStation4QRS014Group(itemNO, dateStart07, dateEnd07); + 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.GetWipStation4QRS014Group(itemNO, dateStart08, dateEnd08); + 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; - ViewData["Title"] = "查詢條件 - 製程代碼 : " + unitNo + "; 工單號碼 : " + wipNO + "; 料號 : " + itemNO + "; 生產日期 : " + dateStart + " ~ " + dateEnd; + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } - var ft_stations = await _basApi.GetStations4FT(unitNo); + 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()); - IResultModel result = await _pcsApi.GetWipInfo4QRS014(unitNo, itemNO, wipNO, dateStart, dateEnd); + int inputQty = okQty + ngQty; - string rateDataList = ""; + double rate = 0; + if (okQty > 0) + { + rate = (okQty * 1.0 / inputQty) * 100; + } - if (ft_stations.Count > 0) + if (rate > 0) + { + sum_rate = sum_rate * (rate / 100.0); + } + } + } + rateDataList = rateDataList + ""; + } + else { - int tdQty = ft_stations.Count * 4 + 3; - 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") + "
"; - for (int i = 0; i < ft_stations.Count; i++) + 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.GetWipStation4QRS014Group(itemNO, dateStart09, dateEnd09); + 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) { - rateDataList = rateDataList + ""; + 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(); + } } - rateDataList = rateDataList + ""; - rateDataList = rateDataList + ""; - for (int i = 0; i < ft_stations.Count; i++) + if (dtRate.Rows.Count > 0) { - rateDataList = rateDataList + ""; + 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 + ""; + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } - if (result.DataTotal > 0) + #endregion + + #region 10 + + string dateStart10 = DateTime.Now.Year.ToString() + "-10-01"; + string dateEnd10 = DateTime.Now.Year.ToString() + "-11-01"; + var wipStaiton10 = await _pcsApi.GetWipStation4QRS014Group(itemNO, dateStart10, dateEnd10); + 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) { - foreach (var item in result.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++) { - 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(); + if (dtRate.Rows[i]["STATION_ID"].ToString() == stationID.ToString()) + { + idx = i; + existFlag = true; + break; + } + } - rateDataList = rateDataList + ""; - double sum_rate = 100.0; + int okQty = 0, ngQty = 0; - for (int i = 0; i < ft_stations.Count; i++) + if (j0["ruleStatus"].ToString() == "P") + { + okQty = int.Parse(j0["firstCnt"].ToString()); + } + else + { + ngQty = int.Parse(j0["firstCnt"].ToString()); + } + + if (existFlag) + { + if (okQty > 0) { - int station_id = ft_stations[i].StationID; - var wip_station = await _pcsApi.GetWipStation4QRS009Group(wip_id, station_id); + dtRate.Rows[idx][1] = okQty; + } + if (ngQty > 0) + { + dtRate.Rows[idx][2] = ngQty; + } - int okQty = 0, ngQty = 0, inputQty = 0; + dtRate.AcceptChanges(); + } + else + { + DataRow dr = dtRate.NewRow(); + dr[0] = stationID; + dr[1] = okQty; + dr[2] = ngQty; - 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; - } + dtRate.Rows.Add(dr); + dtRate.AcceptChanges(); + } + } - if (rate > 0) - { - sum_rate = sum_rate * (rate / 100.0); - } - rateDataList = rateDataList + ""; + 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 + ""; } } + rateDataList = rateDataList + ""; + } + else + { + rateDataList = rateDataList + ""; + } + #endregion - rateDataList = rateDataList + "
" + "0.00" + "" + ft_stations[i].StationName + "
工單號碼料號InputPassFailYield
" + sum_rate.ToString("0.00") + "" + "0.00" + "
" + wip_no + "" + item_no + "" + inputQty + "" + okQty + "" + ngQty + "" + rate.ToString("0.00") + "%" + sum_rate.ToString("0.00") + "%
" + sum_rate.ToString("0.00") + "" + "0.00" + "
"; + #region 11 + + string dateStart11 = DateTime.Now.Year.ToString() + "-11-01"; + string dateEnd11 = DateTime.Now.Year.ToString() + "-12-01"; + var wipStaiton11 = await _pcsApi.GetWipStation4QRS014Group(itemNO, dateStart11, dateEnd11); + 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 + "" + sum_rate.ToString("0.00") + ""; + } + else + { + rateDataList = rateDataList + "" + "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.GetWipStation4QRS014Group(itemNO, dateStart12, dateEnd12); + 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 + "" + sum_rate.ToString("0.00") + ""; + } + else + { + rateDataList = rateDataList + "" + "0.00" + ""; } + #endregion + + rateDataList = rateDataList + ""; + rateDataList = rateDataList + ""; 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 36f22da3..2b288dbe 100644 --- a/AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs +++ b/AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs @@ -1008,6 +1008,13 @@ namespace AMESCoreStudio.Web [WebApiClient.Attributes.HttpGet("api/BarcodeStation/GetWipStationBarcode4QRS009")] ITask> GetWipStationBarcode4QRS009(int wipID, int stationID, string ruleStatus, int page, int limit); + /// + /// 查詢工單站别资料4QRS014 + /// + /// + [WebApiClient.Attributes.HttpGet("api/WipStation/GetWipStation4QRS014Group")] + ITask> GetWipStation4QRS014Group(string itemNo, string dateStart, string dateEnd); + /// /// 查詢工單站別在製條碼資料 /// diff --git a/AMESCoreStudio.Web/ViewModels/QRS/QRS014BViewModel.cs b/AMESCoreStudio.Web/ViewModels/QRS/QRS014BViewModel.cs new file mode 100644 index 00000000..d934b590 --- /dev/null +++ b/AMESCoreStudio.Web/ViewModels/QRS/QRS014BViewModel.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace AMESCoreStudio.Web.ViewModels.QRS +{ + public class QRS014BViewModel + { + public QRS014BViewModel() + { + FPYDatas = new List(); + } + + public List FPYDatas { get; set; } + } + + public class FPY4MonthGroup + { + + /// + /// 月份 + /// + public string Month { get; set; } + + /// + /// 良率 + /// + public double Yield { get; set; } + } +} diff --git a/AMESCoreStudio.Web/Views/QRS/QRS014.cshtml b/AMESCoreStudio.Web/Views/QRS/QRS014.cshtml index 9bbcebb8..3cee2cb1 100644 --- a/AMESCoreStudio.Web/Views/QRS/QRS014.cshtml +++ b/AMESCoreStudio.Web/Views/QRS/QRS014.cshtml @@ -95,7 +95,7 @@ var dateEnd = $("#dateEnd").val(); var query = "?unitNo=" + unitNo + "&itemNO=" + itemNO + "&wipNO=" + wipNO + "&dateStart=" + dateStart + "&dateEnd=" + dateEnd; - hg.open('直通率', '/QRS/QRS014A' + query, '', '', true); + hg.open('直通率', '/QRS/QRS014B' + query, '', '', true); }; diff --git a/AMESCoreStudio.Web/Views/QRS/QRS014B.cshtml b/AMESCoreStudio.Web/Views/QRS/QRS014B.cshtml new file mode 100644 index 00000000..6fd44d60 --- /dev/null +++ b/AMESCoreStudio.Web/Views/QRS/QRS014B.cshtml @@ -0,0 +1,92 @@ +@{ + Layout = "~/Views/Shared/_AMESLayout.cshtml"; +} + + + + + +
+
+
+
+
@ViewBag.Title
+
+ +
+
+
+
+ + @Html.Raw(ViewData["RateDataList"]) +
+
+ +@section Scripts { + @{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); + await Html.RenderPartialAsync("_FileinputScriptsPartial"); } + + + + +} \ No newline at end of file diff --git a/AMESCoreStudio.WebApi/Controllers/AMES/WipStationController.cs b/AMESCoreStudio.WebApi/Controllers/AMES/WipStationController.cs index 0e5d5a28..c475c0a5 100644 --- a/AMESCoreStudio.WebApi/Controllers/AMES/WipStationController.cs +++ b/AMESCoreStudio.WebApi/Controllers/AMES/WipStationController.cs @@ -190,6 +190,61 @@ FROM JHAMES.WIP_STATION"; return result; } + /// + /// 根據料號+時間起迄查詢首次過站紀錄 + /// + /// 料號 + /// 開始日期 + /// 結束日期 + /// + [HttpGet("GetWipStation4QRS014Group")] + public async Task> GetWipStation4QRS014Group(string itemNo, string dateStart, string dateEnd) + { + 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, + q3.ItemNO, + q1.StationID, + q1.RuleStatus, + q1.FirstCnt, + q1.CreateDate + }; + + if (itemNo != null) + { + if (itemNo != "") + q = q.Where(w => w.ItemNO == itemNo); + } + + + 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; + } + + /// /// 基本查詢 ///