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 = "
月份 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
數值 | ";
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)
});