diff --git a/AMESCoreStudio.Web/Controllers/RPTController.cs b/AMESCoreStudio.Web/Controllers/RPTController.cs index 370021ec..fa7de1a7 100644 --- a/AMESCoreStudio.Web/Controllers/RPTController.cs +++ b/AMESCoreStudio.Web/Controllers/RPTController.cs @@ -197,6 +197,66 @@ namespace AMESCoreStudio.Web.Controllers return View(); } + public async Task RPT001C(string id) + { + ViewData["ParamList"] = 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; + + string MonthDataList = ""; + + 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.GetExceptionWorktime4RPT001(sDate, eDate); + + if (pi.DataTotal > 0) + { + double sum_time = 0.00; + double sum_hour = 0.00; + foreach (var item in pi.Data) + { + JObject jo = JObject.Parse(item.ToString()); + double time = 0.00; + + time = double.Parse(jo["time"].ToString()); + sum_time = sum_time + time; + } + + if (sum_time > 0) + { + sum_hour = sum_time / 60.0; + } + + MonthDataList = MonthDataList + ""; + + + } + else + { + MonthDataList = MonthDataList + ""; + } + } + + MonthDataList = MonthDataList + "
月份010203040506070809101112
數值" + "" + sum_hour.ToString("0.00") + "0.00
"; + + ViewData["MonthDataList"] = MonthDataList; + + return View(); + } + [HttpPost] public async Task GetMonthData4RPT001AAsync(string id) { @@ -318,6 +378,65 @@ namespace AMESCoreStudio.Web.Controllers return Json(query.Datas); } + [HttpPost] + public async Task GetMonthData4RPT001CAsync(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 RPT001AViewModel(); + + 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.GetExceptionWorktime4RPT001(sDate, eDate); + + if (pi.DataTotal > 0) + { + double sum_time = 0.00; + foreach (var item in pi.Data) + { + JObject jo = JObject.Parse(item.ToString()); + double time = 0.00; + + time = double.Parse(jo["time"].ToString()); + sum_time = sum_time + time; + } + + query.Datas.Add(new MonthGroup + { + Month = Data.ToString("yyyyMM"), + Yield = double.Parse(sum_time.ToString("0.00")) + }); + } + else + { + query.Datas.Add(new MonthGroup + { + Month = Data.ToString("yyyyMM"), + Yield = 0.00 + }); + } + + } + + return Json(query.Datas); + } + [HttpPost] public async Task GetDayData4RPT001BAsync(string id) { @@ -362,7 +481,7 @@ namespace AMESCoreStudio.Web.Controllers switch (type) { case "01": - fieldName = "productionDate"; + fieldName = "productivity"; break; case "02": fieldName = "efficiency"; @@ -397,6 +516,103 @@ namespace AMESCoreStudio.Web.Controllers return Json(query.Datas); } + [HttpPost] + public async Task GetExceptionTime4RPT001DAsync(string id) + { + string[] param = id.Split("_"); + string type = param[0]; + string data = param[1]; + string title = ""; + + ViewBag.Title = title; + ViewBag.Title2 = data; + switch (type) + { + case "11": + title = data + "異常代碼統計"; + break; + } + + var Data = DateTime.Parse(data.Substring(0, 4) + "/" + data.Substring(4)); + 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 result = await _rptApi.GetExceptionWorktime4RPT001D(sDate, eDate); + + return Json(result.Data); + //return Json(new { data = result.Data }); + } + + [HttpPost] + public async Task GetDayData4RPT001DAsync(string id) + { + string[] param = id.Split("_"); + string type = param[0]; + string data = param[1]; + string title = ""; + + switch (type) + { + case "11": + title = data + "異常工時"; + break; + } + + ViewBag.Title = title; + ViewBag.Title2 = data; + + var query = new RPT001BViewModel(); + + var Data = DateTime.Parse(data.Substring(0, 4) + "/" + data.Substring(4)); + 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); + + string fieldName = "time"; + + DataTable dt = new DataTable(); + dt.Columns.Add("Day"); + dt.Columns.Add("Time"); + dt.PrimaryKey = new DataColumn[] { dt.Columns[0] }; + dt.AcceptChanges(); + + foreach (var item in pi.Data) + { + JObject jo = JObject.Parse(item.ToString()); + DateTime date = DateTime.Parse(jo["exceptionDate"].ToString()); + + DataRow dr = dt.NewRow(); + dr[0] = date.ToString("yyyyMMdd"); + dr[1] = double.Parse(jo[fieldName].ToString()); + + try + { + dt.Rows.Add(dr); + dt.AcceptChanges(); + } + catch + { + DataRow drFind = dt.Rows.Find(date.ToString("yyyyMMdd")); + drFind[1] = double.Parse(drFind[1].ToString()) + double.Parse(jo[fieldName].ToString()); + + dt.AcceptChanges(); + } + + } + + for (int i = 0; i < dt.Rows.Count; i++) + { + query.Datas.Add(new DayGroup + { + Day = dt.Rows[i]["Day"].ToString(), + + Yield = double.Parse(dt.Rows[i]["Time"].ToString()) + }); + } + + return Json(query.Datas); + } + public async Task RPT001B(string id) { ViewData["ParamList"] = id; @@ -443,7 +659,7 @@ namespace AMESCoreStudio.Web.Controllers switch (type) { case "01": - fieldName = "productionDate"; + fieldName = "productivity"; break; case "02": @@ -581,5 +797,153 @@ namespace AMESCoreStudio.Web.Controllers return View(); } + + public async Task RPT001D(string id) + { + ViewData["ParamList"] = id; + string[] param = id.Split("_"); + string type = param[0]; + string data = param[1]; + string title = ""; + + switch (type) + { + case "11": + title = data + "異常工時"; + break; + } + + ViewBag.Title = title; + + var Data = DateTime.Parse(data.Substring(0, 4) + "/" + data.Substring(4)); + 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); + + double day01 = 0.00, day02 = 0.00, day03 = 0.00, day04 = 0.00, day05 = 0.00, day06 = 0.00, day07 = 0.00, day08 = 0.00, day09 = 0.00, day10 = 0.00; + double day11 = 0.00, day12 = 0.00, day13 = 0.00, day14 = 0.00, day15 = 0.00, day16 = 0.00, day17 = 0.00, day18 = 0.00, day19 = 0.00, day20 = 0.00; + double day21 = 0.00, day22 = 0.00, day23 = 0.00, day24 = 0.00, day25 = 0.00, day26 = 0.00, day27 = 0.00, day28 = 0.00, day29 = 0.00, day30 = 0.00; + double day31 = 0.00; + + string fieldName = "time"; + + foreach (var item in pi.Data) + { + JObject jo = JObject.Parse(item.ToString()); + DateTime date = DateTime.Parse(jo["exceptionDate"].ToString()); + switch (date.Day) + { + case 1: + day01 = day01 + double.Parse(jo[fieldName].ToString()); + break; + case 2: + day02 = day02 + double.Parse(jo[fieldName].ToString()); + break; + case 3: + day03 = day03 + double.Parse(jo[fieldName].ToString()); + break; + case 4: + day04 = day04 + double.Parse(jo[fieldName].ToString()); + break; + case 5: + day05 = day05 + double.Parse(jo[fieldName].ToString()); + break; + case 6: + day06 = day06 + double.Parse(jo[fieldName].ToString()); + break; + case 7: + day07 = day07 + double.Parse(jo[fieldName].ToString()); + break; + case 8: + day08 = day08 + double.Parse(jo[fieldName].ToString()); + break; + case 9: + day09 = day09 + double.Parse(jo[fieldName].ToString()); + break; + case 10: + day10 = day10 + double.Parse(jo[fieldName].ToString()); + break; + case 11: + day11 = day11 + double.Parse(jo[fieldName].ToString()); + break; + case 12: + day12 = day12 + double.Parse(jo[fieldName].ToString()); + break; + case 13: + day13 = day13 + double.Parse(jo[fieldName].ToString()); + break; + case 14: + day14 = day14 + double.Parse(jo[fieldName].ToString()); + break; + case 15: + day15 = day15 + double.Parse(jo[fieldName].ToString()); + break; + case 16: + day16 = day16 + double.Parse(jo[fieldName].ToString()); + break; + case 17: + day17 = day17 + double.Parse(jo[fieldName].ToString()); + break; + case 18: + day18 = day18 + double.Parse(jo[fieldName].ToString()); + break; + case 19: + day19 = day19 + double.Parse(jo[fieldName].ToString()); + break; + case 20: + day20 = day20 + double.Parse(jo[fieldName].ToString()); + break; + case 21: + day21 = day21 + double.Parse(jo[fieldName].ToString()); + break; + case 22: + day22 = day22 + double.Parse(jo[fieldName].ToString()); + break; + case 23: + day23 = day23 + double.Parse(jo[fieldName].ToString()); + break; + case 24: + day24 = day24 + double.Parse(jo[fieldName].ToString()); + break; + case 25: + day25 = day25 + double.Parse(jo[fieldName].ToString()); + break; + case 26: + day26 = day26 + double.Parse(jo[fieldName].ToString()); + break; + case 27: + day27 = day27 + double.Parse(jo[fieldName].ToString()); + break; + case 28: + day28 = day28 + double.Parse(jo[fieldName].ToString()); + break; + case 29: + day29 = day29 + double.Parse(jo[fieldName].ToString()); + break; + case 30: + day30 = day30 + double.Parse(jo[fieldName].ToString()); + break; + case 31: + day31 = day31 + double.Parse(jo[fieldName].ToString()); + break; + } + } + + string DayDataList = ""; + DayDataList = DayDataList + ""; + DayDataList = DayDataList + ""; + DayDataList = DayDataList + ""; + DayDataList = DayDataList + ""; + DayDataList = DayDataList + ""; + DayDataList = DayDataList + ""; + DayDataList = DayDataList + ""; + DayDataList = DayDataList + ""; + + DayDataList = DayDataList + "
日期01020304050607080910
數值" + day01 + "" + day02 + "" + day03 + "" + day04 + "" + day05 + "" + day06 + "" + day07 + "" + day08 + "" + day09 + "" + day10 + "
日期11121314151617181920
數值" + day11 + "" + day12 + "" + day13 + "" + day14 + "" + day15 + "" + day16 + "" + day17 + "" + day18 + "" + day19 + "" + day20 + "
日期21222324252627282930
數值" + day21 + "" + day22 + "" + day23 + "" + day24 + "" + day25 + "" + day26 + "" + day27 + "" + day28 + "" + day29 + "" + day30 + "
日期31
數值" + day31 + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "
"; + + ViewData["DayDataList"] = DayDataList; + + return View(); + } } } diff --git a/AMESCoreStudio.Web/HttpApis/AMES/IRPT.cs b/AMESCoreStudio.Web/HttpApis/AMES/IRPT.cs index 955cdf13..25e199c2 100644 --- a/AMESCoreStudio.Web/HttpApis/AMES/IRPT.cs +++ b/AMESCoreStudio.Web/HttpApis/AMES/IRPT.cs @@ -33,5 +33,19 @@ namespace AMESCoreStudio.Web /// [WebApiClient.Attributes.HttpGet("api/ProductionIndexes/GetProductionIndex4RPT001")] ITask> GetProductionIndex4RPT001(string sdate, string edate); + + /// + /// 生產看板-異常工時 + /// + /// + [WebApiClient.Attributes.HttpGet("api/ExceptionWorktimes/GetExceptionWorktime4RPT001")] + ITask> GetExceptionWorktime4RPT001(string sdate, string edate); + + /// + /// 生產看板-異常工時代碼統計 + /// + /// + [WebApiClient.Attributes.HttpGet("api/ExceptionWorktimes/GetExceptionWorktime4RPT001D")] + ITask> GetExceptionWorktime4RPT001D(string sdate, string edate); } } diff --git a/AMESCoreStudio.Web/Views/RPT/RPT001.cshtml b/AMESCoreStudio.Web/Views/RPT/RPT001.cshtml index d487dea2..53a04f5a 100644 --- a/AMESCoreStudio.Web/Views/RPT/RPT001.cshtml +++ b/AMESCoreStudio.Web/Views/RPT/RPT001.cshtml @@ -207,7 +207,7 @@
-
異常工時
+
@Model.abnormalTime

H

diff --git a/AMESCoreStudio.Web/Views/RPT/RPT001C.cshtml b/AMESCoreStudio.Web/Views/RPT/RPT001C.cshtml new file mode 100644 index 00000000..af87a776 --- /dev/null +++ b/AMESCoreStudio.Web/Views/RPT/RPT001C.cshtml @@ -0,0 +1,114 @@ +@{ + Layout = "~/Views/Shared/_AMESLayout.cshtml"; +} + + + + + + + +
+
+
+
+
@ViewBag.Title
+
+
+
+ +
+
+ + @Html.Raw(ViewData["MonthDataList"]) +
+
+ + +@section Scripts { + @{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); + await Html.RenderPartialAsync("_FileinputScriptsPartial"); } + + + + +} \ No newline at end of file diff --git a/AMESCoreStudio.Web/Views/RPT/RPT001D.cshtml b/AMESCoreStudio.Web/Views/RPT/RPT001D.cshtml new file mode 100644 index 00000000..26df52d5 --- /dev/null +++ b/AMESCoreStudio.Web/Views/RPT/RPT001D.cshtml @@ -0,0 +1,163 @@ +@{ + Layout = "~/Views/Shared/_AMESLayout.cshtml"; +} + + + + + + +
+
+
+
+
@ViewBag.Title
+
+
+
+ +
+
+
+ + @Html.Raw(ViewData["DayDataList"]) +
+
+ +@section Scripts { + @{ 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 2f34aeb7..956bef61 100644 --- a/AMESCoreStudio.WebApi/Controllers/AMES/ExceptionWorktimesController.cs +++ b/AMESCoreStudio.WebApi/Controllers/AMES/ExceptionWorktimesController.cs @@ -395,6 +395,68 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES return result; } + /// + /// + /// + /// + /// + /// + [Route("[action]")] + [HttpGet] + public async Task> GetExceptionWorktime4RPT001D(string sdate, string edate) + { + ResultModel result = new ResultModel(); + var q = from q1 in _context.ExceptionWorktimes + select new + { + q1.ExceptionID, + q1.ExceptionDate, + q1.ExceptionNo, + q1.Time + + }; + + DateTime dateValue; + if (sdate != "*") + { + + if (DateTime.TryParse(sdate, out dateValue)) + { + q = q.Where(p => p.ExceptionDate >= DateTime.Parse(sdate)); + } + } + if (edate != "*") + { + if (DateTime.TryParse(edate, out dateValue)) + { + q = q.Where(p => p.ExceptionDate <= DateTime.Parse(edate)); + } + + } + + var g = q.GroupBy(x => new { x.ExceptionNo }).Select(x => new + { + ExceptionNo = x.Key.ExceptionNo, + ExceptionTime = x.Sum(h => h.Time) + }); + + //紀錄筆數 + result.DataTotal = g.Count(); + + result.Data = await g.ToListAsync(); + + if (result == null) + { + result.Msg = "查無資料"; + result.Success = false; + return result; + } + + result.Success = true; + result.Msg = "OK"; + return result; + } + /// /// 異常工時查詢QuerybyWHS009 ///