From 8bbda915c8429ab998f2d4031fde70760bb62bf4 Mon Sep 17 00:00:00 2001 From: Marvin Date: Sun, 2 Jul 2023 22:40:54 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=E7=94=9F=E4=BA=A7=E7=9C=8B?= =?UTF-8?q?=E6=9D=BF=201.1.=E4=BF=AE=E6=94=B9=E5=BC=82=E5=B8=B8=E5=B7=A5?= =?UTF-8?q?=E6=97=B6=EF=BC=88=E6=8C=89=E6=9C=88=EF=BC=89=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=20=E5=A0=86=E5=8F=A0=E5=9B=BE=201.2.=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E5=B7=A5=E6=97=B6=EF=BC=88=E6=8C=89=E6=97=A5?= =?UTF-8?q?=EF=BC=89=E6=98=BE=E7=A4=BA=E5=BC=82=E5=B8=B8=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E5=8E=9F=E5=9B=A0=EF=BC=88=E5=8E=9F=E6=9C=AC=E6=98=AF=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E4=BB=A3=E7=A0=81=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/RPTController.cs | 209 +++++++++++++++++- .../ViewModels/RPT/RPT001AViewModel.cs | 12 +- .../ViewModels/RPT/RPT001BViewModel.cs | 12 +- .../ViewModels/RPT/RPT001CViewModel.cs | 30 +++ AMESCoreStudio.Web/Views/RPT/RPT001C.cshtml | 55 ++++- .../AMES/ExceptionWorktimesController.cs | 5 +- 6 files changed, 305 insertions(+), 18 deletions(-) create mode 100644 AMESCoreStudio.Web/ViewModels/RPT/RPT001CViewModel.cs diff --git a/AMESCoreStudio.Web/Controllers/RPTController.cs b/AMESCoreStudio.Web/Controllers/RPTController.cs index fa7de1a7..de13fab7 100644 --- a/AMESCoreStudio.Web/Controllers/RPTController.cs +++ b/AMESCoreStudio.Web/Controllers/RPTController.cs @@ -213,6 +213,99 @@ namespace AMESCoreStudio.Web.Controllers } ViewBag.Title = title; + //堆叠图 + DataTable dtTime = new DataTable(); + + dtTime.Columns.Add("Group"); + dtTime.Columns.Add("M01"); + dtTime.Columns.Add("M02"); + dtTime.Columns.Add("M03"); + dtTime.Columns.Add("M04"); + dtTime.Columns.Add("M05"); + dtTime.Columns.Add("M06"); + dtTime.Columns.Add("M07"); + dtTime.Columns.Add("M08"); + dtTime.Columns.Add("M09"); + dtTime.Columns.Add("M10"); + dtTime.Columns.Add("M11"); + dtTime.Columns.Add("M12"); + dtTime.PrimaryKey = new DataColumn[] { dtTime.Columns[0] }; + dtTime.AcceptChanges(); + + var result = await _rptApi.GetExceptionWorktime4RPT001D(data.Substring(0, 4) + "/01/01", data.Substring(0, 4) + "/12/31"); + if (result.DataTotal > 0) + { + foreach (var item in result.Data) + { + JObject jo = JObject.Parse(item.ToString()); + string no = jo["exceptionNo"].ToString(); + + DataRow dr = dtTime.NewRow(); + dr[0] = no; + dr[1] = 0.00; + dr[2] = 0.00; + dr[3] = 0.00; + dr[4] = 0.00; + dr[5] = 0.00; + dr[6] = 0.00; + dr[7] = 0.00; + dr[8] = 0.00; + dr[9] = 0.00; + dr[10] = 0.00; + dr[11] = 0.00; + dr[12] = 0.00; + + dtTime.Rows.Add(dr); + dtTime.AcceptChanges(); + } + } + + for (int m = 1; m <= 12; m++) + { + var Data = DateTime.Parse(data.Substring(0, 4) + "/" + m.ToString().PadLeft(2, '0')); + var sDate = new DateTime(Data.Year, Data.Month, 1).ToString("yyyy/MM/dd"); + var eDate = new DateTime(Data.Year, Data.Month, DateTime.DaysInMonth(Data.Year, Data.Month)).ToString("yyyy/MM/dd"); + var pi = await _rptApi.GetExceptionWorktime4RPT001D(sDate, eDate); + + if (pi.DataTotal > 0) + { + foreach (var item in pi.Data) + { + JObject jo = JObject.Parse(item.ToString()); + double time = 0.00; + string no = jo["exceptionNo"].ToString(); + time = double.Parse(jo["exceptionTime"].ToString()); + + DataRow dr = dtTime.Rows.Find(no); + + dr[m] = time; + + dtTime.AcceptChanges(); + } + } + } + + string seriesData = "["; + + for (int r = 0; r < dtTime.Rows.Count; r++) + { + seriesData = seriesData + "{name:'" + dtTime.Rows[r][0].ToString() + "',"; + seriesData = seriesData + "data:[" + double.Parse(dtTime.Rows[r][1].ToString()) + ","; + seriesData = seriesData + double.Parse(dtTime.Rows[r][2].ToString()) + ","; + seriesData = seriesData + double.Parse(dtTime.Rows[r][3].ToString()) + ","; + seriesData = seriesData + double.Parse(dtTime.Rows[r][4].ToString()) + ","; + seriesData = seriesData + double.Parse(dtTime.Rows[r][5].ToString()) + ","; + seriesData = seriesData + double.Parse(dtTime.Rows[r][6].ToString()) + ","; + seriesData = seriesData + double.Parse(dtTime.Rows[r][7].ToString()) + ","; + seriesData = seriesData + double.Parse(dtTime.Rows[r][8].ToString()) + ","; + seriesData = seriesData + double.Parse(dtTime.Rows[r][9].ToString()) + ","; + seriesData = seriesData + double.Parse(dtTime.Rows[r][10].ToString()) + ","; + seriesData = seriesData + double.Parse(dtTime.Rows[r][11].ToString()) + ","; + seriesData = seriesData + double.Parse(dtTime.Rows[r][12].ToString()) + "]},"; + } + + ViewBag.SeriesData = seriesData.Substring(0, seriesData.Length - 1)+"]"; + string MonthDataList = ""; for (int m = 1; m <= 12; m++) @@ -254,6 +347,8 @@ namespace AMESCoreStudio.Web.Controllers ViewData["MonthDataList"] = MonthDataList; + + return View(); } @@ -403,7 +498,7 @@ namespace AMESCoreStudio.Web.Controllers var Data = DateTime.Parse(data.Substring(0, 4) + "/" + m.ToString().PadLeft(2, '0')); var sDate = new DateTime(Data.Year, Data.Month, 1).ToString("yyyy/MM/dd"); var eDate = new DateTime(Data.Year, Data.Month, DateTime.DaysInMonth(Data.Year, Data.Month)).ToString("yyyy/MM/dd"); - var pi = await _rptApi.GetExceptionWorktime4RPT001(sDate, eDate); + var pi = await _rptApi.GetExceptionWorktime4RPT001D(sDate, eDate); if (pi.DataTotal > 0) { @@ -412,8 +507,9 @@ namespace AMESCoreStudio.Web.Controllers { JObject jo = JObject.Parse(item.ToString()); double time = 0.00; + string no = jo["exceptionNo"].ToString(); + time = double.Parse(jo["exceptionTime"].ToString()); - time = double.Parse(jo["time"].ToString()); sum_time = sum_time + time; } @@ -422,7 +518,8 @@ namespace AMESCoreStudio.Web.Controllers Month = Data.ToString("yyyyMM"), Yield = double.Parse(sum_time.ToString("0.00")) }); - } + + } else { query.Datas.Add(new MonthGroup @@ -432,6 +529,112 @@ namespace AMESCoreStudio.Web.Controllers }); } + + } + + return Json(query.Datas); + } + + public async Task GetMonthData4RPT001C2Async(string id) + { + string[] param = id.Split("_"); + string type = param[0]; + string data = param[1]; + string title = ""; + + switch (type) + { + case "11": + title = data.Substring(0, 4) + "異常工時"; + break; + } + + ViewBag.Title = title; + ViewBag.Title2 = data.Substring(0, 4); + + var query = new RPT001CViewModel(); + + DataTable dtTime = new DataTable(); + + dtTime.Columns.Add("Group"); + dtTime.Columns.Add("M01"); + dtTime.Columns.Add("M02"); + dtTime.Columns.Add("M03"); + dtTime.Columns.Add("M04"); + dtTime.Columns.Add("M05"); + dtTime.Columns.Add("M06"); + dtTime.Columns.Add("M07"); + dtTime.Columns.Add("M08"); + dtTime.Columns.Add("M09"); + dtTime.Columns.Add("M10"); + dtTime.Columns.Add("M11"); + dtTime.Columns.Add("M12"); + dtTime.PrimaryKey = new DataColumn[] { dtTime.Columns[0] }; + dtTime.AcceptChanges(); + + var result = await _rptApi.GetExceptionWorktime4RPT001D(data.Substring(0, 4) + "/01/01", data.Substring(0, 4) + "/12/31"); + if (result.DataTotal > 0) + { + foreach (var item in result.Data) + { + JObject jo = JObject.Parse(item.ToString()); + string no = jo["exceptionNo"].ToString(); + + DataRow dr = dtTime.NewRow(); + dr[0] = no; + dr[1] = 0.00; + dr[2] = 0.00; + dr[3] = 0.00; + dr[4] = 0.00; + dr[5] = 0.00; + dr[6] = 0.00; + dr[7] = 0.00; + dr[8] = 0.00; + dr[9] = 0.00; + dr[10] = 0.00; + dr[11] = 0.00; + dr[12] = 0.00; + + dtTime.Rows.Add(dr); + dtTime.AcceptChanges(); + } + } + + for (int m = 1; m <= 12; m++) + { + var Data = DateTime.Parse(data.Substring(0, 4) + "/" + m.ToString().PadLeft(2, '0')); + var sDate = new DateTime(Data.Year, Data.Month, 1).ToString("yyyy/MM/dd"); + var eDate = new DateTime(Data.Year, Data.Month, DateTime.DaysInMonth(Data.Year, Data.Month)).ToString("yyyy/MM/dd"); + var pi = await _rptApi.GetExceptionWorktime4RPT001D(sDate, eDate); + + double[] yield = new double[dtTime.Columns.Count - 1]; + + if (pi.DataTotal > 0) + { + foreach (var item in pi.Data) + { + JObject jo = JObject.Parse(item.ToString()); + double time = 0.00; + string no = jo["exceptionNo"].ToString(); + time = double.Parse(jo["exceptionTime"].ToString()); + + DataRow dr = dtTime.Rows.Find(no); + + dr[m] = time; + + dtTime.AcceptChanges(); + + } + } + } + + for (int r = 0; r < dtTime.Rows.Count; r++) + { + query.Datas.Add(new YieldGroup + { + Group = dtTime.Rows[r][0].ToString(), + Yield = new double[12] { double.Parse(dtTime.Rows[r][1].ToString()), double.Parse(dtTime.Rows[r][2].ToString()) , double.Parse(dtTime.Rows[r][3].ToString()) , double.Parse(dtTime.Rows[r][4].ToString()) , double.Parse(dtTime.Rows[r][5].ToString()) , double.Parse(dtTime.Rows[r][6].ToString()) , double.Parse(dtTime.Rows[r][7].ToString()) , double.Parse(dtTime.Rows[r][8].ToString()) , double.Parse(dtTime.Rows[r][9].ToString()) , double.Parse(dtTime.Rows[r][10].ToString()) , double.Parse(dtTime.Rows[r][11].ToString()) , double.Parse(dtTime.Rows[r][12].ToString()) } + }); } return Json(query.Datas); diff --git a/AMESCoreStudio.Web/ViewModels/RPT/RPT001AViewModel.cs b/AMESCoreStudio.Web/ViewModels/RPT/RPT001AViewModel.cs index 5fa5a1bd..c129e2fc 100644 --- a/AMESCoreStudio.Web/ViewModels/RPT/RPT001AViewModel.cs +++ b/AMESCoreStudio.Web/ViewModels/RPT/RPT001AViewModel.cs @@ -5,23 +5,23 @@ using System.Threading.Tasks; namespace AMESCoreStudio.Web.ViewModels.RPT { - public class RPT001BViewModel + public class RPT001AViewModel { - public RPT001BViewModel() + public RPT001AViewModel() { - Datas = new List(); + Datas = new List(); } - public List Datas { get; set; } + public List Datas { get; set; } } - public class DayGroup + public class MonthGroup { /// /// 月份 /// - public string Day { get; set; } + public string Month { get; set; } /// /// 良率 diff --git a/AMESCoreStudio.Web/ViewModels/RPT/RPT001BViewModel.cs b/AMESCoreStudio.Web/ViewModels/RPT/RPT001BViewModel.cs index c129e2fc..5fa5a1bd 100644 --- a/AMESCoreStudio.Web/ViewModels/RPT/RPT001BViewModel.cs +++ b/AMESCoreStudio.Web/ViewModels/RPT/RPT001BViewModel.cs @@ -5,23 +5,23 @@ using System.Threading.Tasks; namespace AMESCoreStudio.Web.ViewModels.RPT { - public class RPT001AViewModel + public class RPT001BViewModel { - public RPT001AViewModel() + public RPT001BViewModel() { - Datas = new List(); + Datas = new List(); } - public List Datas { get; set; } + public List Datas { get; set; } } - public class MonthGroup + public class DayGroup { /// /// 月份 /// - public string Month { get; set; } + public string Day { get; set; } /// /// 良率 diff --git a/AMESCoreStudio.Web/ViewModels/RPT/RPT001CViewModel.cs b/AMESCoreStudio.Web/ViewModels/RPT/RPT001CViewModel.cs new file mode 100644 index 00000000..e19d7754 --- /dev/null +++ b/AMESCoreStudio.Web/ViewModels/RPT/RPT001CViewModel.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace AMESCoreStudio.Web.ViewModels.RPT +{ + public class RPT001CViewModel + { + public RPT001CViewModel() + { + Datas = new List(); + } + + public List Datas { get; set; } + } + + public class YieldGroup + { + /// + /// 分組 + /// + public string Group { get; set; } + + /// + /// 数值 + /// + public double[] Yield { get; set; } + } +} diff --git a/AMESCoreStudio.Web/Views/RPT/RPT001C.cshtml b/AMESCoreStudio.Web/Views/RPT/RPT001C.cshtml index af87a776..69696c61 100644 --- a/AMESCoreStudio.Web/Views/RPT/RPT001C.cshtml +++ b/AMESCoreStudio.Web/Views/RPT/RPT001C.cshtml @@ -38,6 +38,7 @@
+
@Html.Raw(ViewData["MonthDataList"])
@@ -48,7 +49,7 @@ @{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); await Html.RenderPartialAsync("_FileinputScriptsPartial"); } - + } \ No newline at end of file diff --git a/AMESCoreStudio.WebApi/Controllers/AMES/ExceptionWorktimesController.cs b/AMESCoreStudio.WebApi/Controllers/AMES/ExceptionWorktimesController.cs index 956bef61..62af6e77 100644 --- a/AMESCoreStudio.WebApi/Controllers/AMES/ExceptionWorktimesController.cs +++ b/AMESCoreStudio.WebApi/Controllers/AMES/ExceptionWorktimesController.cs @@ -407,11 +407,13 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES { ResultModel result = new ResultModel(); var q = from q1 in _context.ExceptionWorktimes + join q2 in _context.ExceptionCodes on q1.ExceptionNo equals q2.ExceptionNo select new { q1.ExceptionID, q1.ExceptionDate, q1.ExceptionNo, + q2.ExceptionDescCH, q1.Time }; @@ -434,9 +436,10 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES } - var g = q.GroupBy(x => new { x.ExceptionNo }).Select(x => new + var g = q.GroupBy(x => new { x.ExceptionNo, x.ExceptionDescCH }).Select(x => new { ExceptionNo = x.Key.ExceptionNo, + ExceptionDesc = x.Key.ExceptionDescCH, ExceptionTime = x.Sum(h => h.Time) });
月份010203040506070809101112
數值