using Microsoft.AspNetCore.Mvc; using AspNetCore.Reporting; using Microsoft.AspNetCore.Hosting; using System.Collections.Generic; using System.Threading.Tasks; using System; using System.Data; using Oracle.EntityFrameworkCore; using Oracle.ManagedDataAccess.Client; using AMESCoreStudio.WebApi.Models.BAS; using AMESCoreStudio.CommonTools.Result; using AMESCoreStudio.Web.Models; using AMESCoreStudio.WebApi.DTO.AMES; using DocumentFormat.OpenXml.Math; using AMESCoreStudio.Web.ViewModels.PCS; using Microsoft.AspNetCore.Http; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using AMESCoreStudio.Web.ViewModels.RPT; // For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860 namespace AMESCoreStudio.Web.Controllers { public class RPTController : Controller { private readonly IWebHostEnvironment environment = null; public readonly IRPT _rptApi; public RPTController(IWebHostEnvironment environment, IRPT rptApi) { this.environment = environment; System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance); _rptApi = rptApi; } public async Task<IActionResult> RPT001() { var sdate = ""; var edate = ""; ViewBag.QueryDate = DateTime.Now.ToString("yyyy/MM"); ViewBag.QueryDate2 = DateTime.Now.ToString("yyyyMM"); var model = await _rptApi.GetRPT001View(sdate, edate); return View(model); } [HttpPost] public async Task<IActionResult> RPT001(string SerachData) { var Data = DateTime.Parse(SerachData); ViewBag.QueryDate = new DateTime(Data.Year, Data.Month, 1).ToString("yyyy/MM"); ViewBag.QueryDate2 = new DateTime(Data.Year, Data.Month, 1).ToString("yyyyMM"); 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 model = await _rptApi.GetRPT001View(sDate, eDate); return View(model); } public async Task<IActionResult> RPT002() { var sdate = ""; var edate = ""; var model = await _rptApi.GetRPT002View(sdate, edate); model.SerachData = DateTime.Now.ToString("yyyy/MM"); return View(model); } [HttpPost] public async Task<IActionResult> RPT002(string SerachData) { var Data = DateTime.Parse(SerachData); 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 model = await _rptApi.GetRPT002View(sDate, eDate); model.SerachData = SerachData; return View(model); } public async Task<IActionResult> RPT001A(string id) { ViewData["ParamList"] = id; string[] param = id.Split("_"); string type = param[0]; string data = param[1]; string title = ""; switch (type) { case "01": title = data.Substring(0, 4) + "生產力"; break; } ViewBag.Title = title; string MonthDataList = "<table border='1' cellpadding='2'><tr bgcolor='#66CCFF'><td width='60'>月份</td><td width='60'>01</td><td width='60'>02</td><td width='60'>03</td><td width='60'>04</td><td width='60'>05</td><td width='60'>06</td><td width='60'>07</td><td width='60'>08</td><td width='60'>09</td><td width='60'>10</td><td width='60'>11</td><td width='60'>12</td></tr><tr><td width='60'>數值</td>"; 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.GetProductionIndex4RPT001(sDate, eDate); if (pi.DataTotal > 0) { double sum_productivity = 0.00; foreach (var item in pi.Data) { JObject jo = JObject.Parse(item.ToString()); double productivity = double.Parse(jo["productivity"].ToString()); sum_productivity = sum_productivity + productivity; } double avg_productivity = sum_productivity / pi.DataTotal; MonthDataList = MonthDataList + "<td width='60'>" + "<a href =\"javascript:hg.open('按日期統計資料','/RPT/RPT001B/" + type + "_" + Data.ToString("yyyyMM") + "',800,720);\">" + avg_productivity.ToString("0.00") + "</a></td>"; } else { MonthDataList = MonthDataList + "<td width='60'>0.00</td>"; } } MonthDataList = MonthDataList + "</tr></table>"; ViewData["MonthDataList"] = MonthDataList; return View(); } [HttpPost] public async Task<JsonResult> GetMonthData4RPT001AAsync(string id) { string[] param = id.Split("_"); string type = param[0]; string data = param[1]; string title = ""; switch (type) { case "01": 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.GetProductionIndex4RPT001(sDate, eDate); if (pi.DataTotal > 0) { double sum_productivity = 0.00; foreach (var item in pi.Data) { JObject jo = JObject.Parse(item.ToString()); double productivity = double.Parse(jo["productivity"].ToString()); sum_productivity = sum_productivity + productivity; } double avg_productivity = sum_productivity / pi.DataTotal; query.Datas.Add(new MonthGroup { Month = Data.ToString("yyyyMM"), Yield = double.Parse(avg_productivity.ToString("0.00")) }); } else { query.Datas.Add(new MonthGroup { Month = Data.ToString("yyyyMM"), Yield = 0.00 }); } } return Json(query.Datas); } [HttpPost] public async Task<JsonResult> GetDayData4RPT001BAsync(string id) { string[] param = id.Split("_"); string type = param[0]; string data = param[1]; string title = ""; switch (type) { case "01": 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.GetProductionIndex4RPT001(sDate, eDate); foreach (var item in pi.Data) { JObject jo = JObject.Parse(item.ToString()); DateTime date = DateTime.Parse(jo["productionDate"].ToString()); query.Datas.Add(new DayGroup { Day = date.ToString("yyyyMMdd"), Yield = double.Parse(jo["productivity"].ToString()) }); } return Json(query.Datas); } public async Task<IActionResult> RPT001B(string id) { ViewData["ParamList"] = id; string[] param = id.Split("_"); string type = param[0]; string data = param[1]; string title = ""; switch (type) { case "01": 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.GetProductionIndex4RPT001(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; foreach (var item in pi.Data) { JObject jo = JObject.Parse(item.ToString()); DateTime date = DateTime.Parse(jo["productionDate"].ToString()); switch (date.Day) { case 1: day01 = double.Parse(jo["productivity"].ToString()); break; case 2: day02 = double.Parse(jo["productivity"].ToString()); break; case 3: day03 = double.Parse(jo["productivity"].ToString()); break; case 4: day04 = double.Parse(jo["productivity"].ToString()); break; case 5: day05 = double.Parse(jo["productivity"].ToString()); break; case 6: day06 = double.Parse(jo["productivity"].ToString()); break; case 7: day07 = double.Parse(jo["productivity"].ToString()); break; case 8: day08 = double.Parse(jo["productivity"].ToString()); break; case 9: day09 = double.Parse(jo["productivity"].ToString()); break; case 10: day10 = double.Parse(jo["productivity"].ToString()); break; case 11: day11 = double.Parse(jo["productivity"].ToString()); break; case 12: day12 = double.Parse(jo["productivity"].ToString()); break; case 13: day13 = double.Parse(jo["productivity"].ToString()); break; case 14: day14 = double.Parse(jo["productivity"].ToString()); break; case 15: day15 = double.Parse(jo["productivity"].ToString()); break; case 16: day16 = double.Parse(jo["productivity"].ToString()); break; case 17: day17 = double.Parse(jo["productivity"].ToString()); break; case 18: day18 = double.Parse(jo["productivity"].ToString()); break; case 19: day19 = double.Parse(jo["productivity"].ToString()); break; case 20: day20 = double.Parse(jo["productivity"].ToString()); break; case 21: day21 = double.Parse(jo["productivity"].ToString()); break; case 22: day22 = double.Parse(jo["productivity"].ToString()); break; case 23: day23 = double.Parse(jo["productivity"].ToString()); break; case 24: day24 = double.Parse(jo["productivity"].ToString()); break; case 25: day25 = double.Parse(jo["productivity"].ToString()); break; case 26: day26 = double.Parse(jo["productivity"].ToString()); break; case 27: day27 = double.Parse(jo["productivity"].ToString()); break; case 28: day28 = double.Parse(jo["productivity"].ToString()); break; case 29: day29 = double.Parse(jo["productivity"].ToString()); break; case 30: day30 = double.Parse(jo["productivity"].ToString()); break; case 31: day31 = double.Parse(jo["productivity"].ToString()); break; } } string DayDataList = "<table border='1' cellpadding='2'>"; DayDataList = DayDataList + "<tr bgcolor='#66CCFF'><td width='60'>日期</td><td width='60'>01</td><td width='60'>02</td><td width='60'>03</td><td width='60'>04</td><td width='60'>05</td><td width='60'>06</td><td width='60'>07</td><td width='60'>08</td><td width='60'>09</td><td width='60'>10</td></tr>"; DayDataList = DayDataList + "<tr><td width='60'>數值</td><td width='60'>" + day01 + "</td><td width='60'>" + day02 + "</td><td width='60'>" + day03 + "</td><td width='60'>" + day04 + "</td><td width='60'>" + day05 + "</td><td width='60'>" + day06 + "</td><td width='60'>" + day07 + "</td><td width='60'>" + day08 + "</td><td width='60'>" + day09 + "</td><td width='60'>" + day10 + "</td></tr>"; DayDataList = DayDataList + "<tr bgcolor='#66CCFF'><td width='60'>日期</td><td width='60'>11</td><td width='60'>12</td><td width='60'>13</td><td width='60'>14</td><td width='60'>15</td><td width='60'>16</td><td width='60'>17</td><td width='60'>18</td><td width='60'>19</td><td width='60'>20</td></tr>"; DayDataList = DayDataList + "<tr><td width='60'>數值</td><td width='60'>" + day11 + "</td><td width='60'>" + day12 + "</td><td width='60'>" + day13 + "</td><td width='60'>" + day14 + "</td><td width='60'>" + day15 + "</td><td width='60'>" + day16 + "</td><td width='60'>" + day17 + "</td><td width='60'>" + day18 + "</td><td width='60'>" + day19 + "</td><td width='60'>" + day20 + "</td></tr>"; DayDataList = DayDataList + "<tr bgcolor='#66CCFF'><td width='60'>日期</td><td width='60'>21</td><td width='60'>22</td><td width='60'>23</td><td width='60'>24</td><td width='60'>25</td><td width='60'>26</td><td width='60'>27</td><td width='60'>28</td><td width='60'>29</td><td width='60'>30</td></tr>"; DayDataList = DayDataList + "<tr><td width='60'>數值</td><td width='60'>" + day21 + "</td><td width='60'>" + day22 + "</td><td width='60'>" + day23 + "</td><td width='60'>" + day24 + "</td><td width='60'>" + day25 + "</td><td width='60'>" + day26 + "</td><td width='60'>" + day27 + "</td><td width='60'>" + day28 + "</td><td width='60'>" + day29 + "</td><td width='60'>" + day30 + "</td></tr>"; DayDataList = DayDataList + "<tr bgcolor='#66CCFF'><td width='60'>日期</td><td width='60'>31</td><td width='60'></td><td width='60'></td><td width='60'></td><td width='60'></td><td width='60'></td><td width='60'></td><td width='60'></td><td width='60'></td><td width='60'></td></tr>"; DayDataList = DayDataList + "<tr><td width='60'>數值</td><td width='60'>" + day31 + "</td><td width='60'>" + "" + "</td><td width='60'>" + "" + "</td><td width='60'>" + "" + "</td><td width='60'>" + "" + "</td><td width='60'>" + "" + "</td><td width='60'>" + "" + "</td><td width='60'>" + "" + "</td><td width='60'>" + "" + "</td><td width='60'>" + "" + "</td></tr>"; DayDataList = DayDataList + "</table>"; ViewData["DayDataList"] = DayDataList; return View(); } } }