diff --git a/DOAN.Admin.WebApi/Controllers/MES/SmartScreen/Product/ProductSmartScreenController.cs b/DOAN.Admin.WebApi/Controllers/MES/SmartScreen/Product/ProductSmartScreenController.cs
index e499e48..47b8064 100644
--- a/DOAN.Admin.WebApi/Controllers/MES/SmartScreen/Product/ProductSmartScreenController.cs
+++ b/DOAN.Admin.WebApi/Controllers/MES/SmartScreen/Product/ProductSmartScreenController.cs
@@ -35,6 +35,25 @@ namespace DOAN.Admin.WebApi.Controllers.MES.SmartScreen.Product
}
+ //TODO 今日 各工序产量统计
+ [HttpGet("BarProcessProductStatistic")]
+ public IActionResult BarProcessProductStatistic()
+ {
+ var response = _productSmartScreenService.BarProcessProductStatistic();
+
+ return SUCCESS(response);
+ }
+
+
+ //TODO 本月产量 折线图
+ //本月每天产量
+ [HttpGet("outputOfCurrentmonth")]
+ public IActionResult OutputOfCurrentmonth()
+ {
+ var response = _productSmartScreenService.OutputOfCurrentmonth();
+ return SUCCESS(response);
+ }
+
diff --git a/DOAN.Admin.WebApi/Controllers/Mobile/ReportFlowController.cs b/DOAN.Admin.WebApi/Controllers/Mobile/ReportFlowController.cs
index c0122f9..1adad67 100644
--- a/DOAN.Admin.WebApi/Controllers/Mobile/ReportFlowController.cs
+++ b/DOAN.Admin.WebApi/Controllers/Mobile/ReportFlowController.cs
@@ -1,3 +1,4 @@
+using DOAN.Model.Mobile.ReportFlow.Dto;
using DOAN.Service.Mobile.IService;
using Infrastructure.Converter;
using Microsoft.AspNetCore.Mvc;
@@ -77,6 +78,9 @@ public class ReportFlowController : BaseController
}
return ToResponse(ResultCode.SUCCESS,_reportFlowService.GetProcessReportWorkDetail(workorder, processId));
}
+
+
+
//TODO 领料工序
[HttpGet("feed_process_reportwork")]
public IActionResult FeedProcessReportwork(string workorder, int processId, int finish_num,string stove_code,string feed_order,string process_operator)
@@ -100,14 +104,14 @@ public class ReportFlowController : BaseController
///
///
[HttpGet("process_reportwork")]
- public IActionResult ProcessReportWork(string workorder, int processId, int finish_num,int bad_num,string process_operator)
+ public IActionResult ProcessReportWork([FromQuery]ProReportWorkDto proReportWorkDto)
{
- if (string.IsNullOrEmpty(workorder))
+ if (string.IsNullOrEmpty(proReportWorkDto.workorder))
{
throw new CustomException("workorder or process is null");
}
- return SUCCESS(_reportFlowService.ProcessReportWork(workorder, processId, finish_num,bad_num, process_operator));
+ return SUCCESS(_reportFlowService.ProcessReportWork(proReportWorkDto.workorder, proReportWorkDto. processId, proReportWorkDto.finish_num, proReportWorkDto.bad_num, proReportWorkDto.process_operator));
}
//TODO 出货工序
diff --git a/DOAN.Model/MES/Product/Dto/ProReportworkDto.cs b/DOAN.Model/MES/Product/Dto/ProReportworkDto.cs
index 83e8375..96e5875 100644
--- a/DOAN.Model/MES/Product/Dto/ProReportworkDto.cs
+++ b/DOAN.Model/MES/Product/Dto/ProReportworkDto.cs
@@ -8,7 +8,7 @@ namespace DOAN.Model.BZFM.Dto
{
public string Workorder { get; set; }
- public string RouteCode { get; set; }
+ public string RouteId { get; set; }
public int ProcessId { get; set; }
@@ -27,7 +27,7 @@ namespace DOAN.Model.BZFM.Dto
public string Workorder { get; set; }
- public string RouteCode { get; set; }
+ public string RouteId { get; set; }
public int ProcessId { get; set; }
public string ProcessName { get; set; }
@@ -40,7 +40,7 @@ namespace DOAN.Model.BZFM.Dto
public string Worker { get; set; }
- public DateTime? JobDate { get; set; }
+ public DateTime? JobDateTime { get; set; }
public string Remark { get; set; }
diff --git a/DOAN.Model/MES/Product/ProReportwork01.cs b/DOAN.Model/MES/Product/ProReportwork01.cs
index 6feb309..f85795a 100644
--- a/DOAN.Model/MES/Product/ProReportwork01.cs
+++ b/DOAN.Model/MES/Product/ProReportwork01.cs
@@ -21,8 +21,8 @@ namespace DOAN.Model.MES.product
///
/// 路线code
///
- [SugarColumn(ColumnName = "route_code")]
- public string RouteCode { get; set; }
+ [SugarColumn(ColumnName = "route_id")]
+ public int RouteId { get; set; }
///
/// 工序id
@@ -56,8 +56,8 @@ namespace DOAN.Model.MES.product
///
/// 作业日期
///
- [SugarColumn(ColumnName = "job_date")]
- public DateTime? JobDate { get; set; }
+ [SugarColumn(ColumnName = "job_datetime")]
+ public DateTime? JobDateTime { get; set; }
///
/// 备注
diff --git a/DOAN.Model/Mobile/ReportFlow/Dto/ProReportWorkDto.cs b/DOAN.Model/Mobile/ReportFlow/Dto/ProReportWorkDto.cs
new file mode 100644
index 0000000..77ffeda
--- /dev/null
+++ b/DOAN.Model/Mobile/ReportFlow/Dto/ProReportWorkDto.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace DOAN.Model.Mobile.ReportFlow.Dto
+{
+ public class ProReportWorkDto
+ {
+ public string workorder { get; set; }
+ public int processId { get; set; }
+ public int finish_num { get; set; }
+ public int bad_num { get; set; }
+ public string process_operator { get; set; }
+ }
+}
diff --git a/DOAN.Model/echarts/EchartsDto.cs b/DOAN.Model/echarts/EchartsDto.cs
deleted file mode 100644
index ab328c6..0000000
--- a/DOAN.Model/echarts/EchartsDto.cs
+++ /dev/null
@@ -1,98 +0,0 @@
-using Newtonsoft.Json.Converters;
-
-namespace DOAN.Model.mes.echarts
-{
-
-
-
- ///
- /// echarts 通用Options返回值
- ///
- public class EchartsOptions
- {
- public EchartsTitle Title { get; set; } = null;
- public EchartsXAxis XAxis { get; set; } = null;
- public EchartsYAxis YAxis { get; set; } = null;
- public List Series { get; set; } = new List();
- }
-
- ///
- /// echarts图表标题
- ///
- public class EchartsTitle
- {
- public EchartsTitle(string Text,string SubText)
- {
- this.Text = Text;
- this.SubText = SubText;
- }
-
- public EchartsTitle(){}
- public string Text { get; set; } = string.Empty;
- public string SubText { get; set; } = string.Empty;
- }
-
- ///
- /// echarts X轴
- ///
- public class EchartsXAxis
- {
- public List Data { get; set; } = new List();
- // public string[] Data { get; set; } =Array.Empty();
-
- // value 数值轴,适用于连续数据 category 类目轴,适用于离散的类目数据 time 时间轴,适用于连续的时序数据 log 对数轴。适用于对数数据
- public string Type { get; set; } = "category";
- public string Max { get; set; }
- public string Min { get; set; }
- }
-
- ///
- /// echarts Y轴
- ///
- public class EchartsYAxis
- {
- public List Data { get; set; } = new List();
-
- // value 数值轴,适用于连续数据 category 类目轴,适用于离散的类目数据 time 时间轴,适用于连续的时序数据 log 对数轴。适用于对数数据
- public string Type { get; set; } = "category";
- public string Max { get; set; }
- public string Min { get; set; }
- }
-
- ///
- /// echarts图表series返回值
- ///
- public class EchartsSeries
- {
- ///
- /// 标签名称
- ///
- public string Name { get; set; } = "category";
-
- ///
- /// bar-柱状图 line-折线图 EchartsSeriesType enum结构
- ///
- public string Type { get; set; } = "bar";
-
- ///
- /// 参数值
- ///
- public List Data { get; set; } = new List();
- }
-
- ///
- /// echarts图表series返回值内容
- ///
- public class EchartsSeriesData
- {
- ///
- /// 标签名称
- ///
- public string Name { get; set; } = string.Empty;
-
- ///
- /// 参数值
- ///
- public decimal Value { get; set; } = new decimal();
- }
-}
diff --git a/DOAN.Service/MES/SmartScreen/Product/IService/IProductSmartScreenService.cs b/DOAN.Service/MES/SmartScreen/Product/IService/IProductSmartScreenService.cs
index 4c748d5..cd009d2 100644
--- a/DOAN.Service/MES/SmartScreen/Product/IService/IProductSmartScreenService.cs
+++ b/DOAN.Service/MES/SmartScreen/Product/IService/IProductSmartScreenService.cs
@@ -1,4 +1,5 @@
using DOAN.Model.MES.product;
+using DOAN.Model.MES.SmartScreen;
using DOAN.Model.MES.SmartScreen.Product;
using System;
using System.Collections.Generic;
@@ -12,5 +13,9 @@ namespace DOAN.Service.MES.SmartScreen.Product.IService
{
DigitalTurntableModel DigitalTurntable();
+ EchartsOptions BarProcessProductStatistic();
+
+ EchartsOptions OutputOfCurrentmonth();
+
}
}
diff --git a/DOAN.Service/MES/SmartScreen/Product/ProductSmartScreenService.cs b/DOAN.Service/MES/SmartScreen/Product/ProductSmartScreenService.cs
index 6d66392..a2d3ccd 100644
--- a/DOAN.Service/MES/SmartScreen/Product/ProductSmartScreenService.cs
+++ b/DOAN.Service/MES/SmartScreen/Product/ProductSmartScreenService.cs
@@ -8,6 +8,9 @@ using System.Text;
using System.Threading.Tasks;
using DOAN.Service.MES.SmartScreen.Product.IService;
using DOAN.Model.MES.SmartScreen.Product;
+using DOAN.Model.MES.SmartScreen;
+using Microsoft.Data.SqlClient;
+using DOAN.Model.MES.base_;
namespace DOAN.Service.MES.SmartScreen.Product
{
@@ -46,5 +49,158 @@ namespace DOAN.Service.MES.SmartScreen.Product
return digital;
}
+
+
+ public EchartsOptions BarProcessProductStatistic()
+ {
+ EchartsOptions echartsOptions = new EchartsOptions();
+ echartsOptions.Title = new EchartsTitle("今日各工序产量统计", "今日各工序产量统计");
+ EchartsXAxis xAxis = new EchartsXAxis();
+
+ xAxis.Data = Context.Queryable().LeftJoin((r, p) => r.FkWorkProcesses == p.Id)
+ .Where((r, p) => r.FkWorkRoute == 32)
+ .OrderBy((r, p) => p.Id)
+ .Select((r, p) => p.Name)
+ .ToList();
+ echartsOptions.XAxis=xAxis;
+ //获取各个工序今日累计报工值
+ EchartsSeries echartsSeries = new EchartsSeries();
+ echartsSeries.Name = "今日各个工序今日累计报工数";
+ List Data = Context.Queryable()
+ .LeftJoin((it,w)=>it.ProcessId==w.Id)
+ .Where((it, w) => it.JobDateTime >= DateTime.Today && it.JobDateTime <= DateTime.Today.AddDays(1))
+ .GroupBy((it, w) => new {it.ProcessId,w.Name})
+ .Select((it, w) => new EchartsSeriesData()
+ {
+ Name = w.Name,
+ Value=SqlFunc.AggregateSum(it.FinishNum??0)
+ }).ToList();
+ echartsSeries.Data = Data;
+ echartsOptions.Series.Add(echartsSeries);
+ //获取各个工序今日累计计划值
+ EchartsSeries echartsSeries2 = new EchartsSeries();
+ echartsSeries2.Name = "今日各个工序今日累计计划数";
+ List Data2 = Context.Queryable()
+ .LeftJoin((it, w) => it.ProcessId == w.Id)
+ .Where((it, w) => it.JobDateTime >= DateTime.Today && it.JobDateTime <= DateTime.Today.AddDays(1))
+ .GroupBy((it, w) => new { it.ProcessId, w.Name })
+ .Select((it, w) => new EchartsSeriesData()
+ {
+ Name = w.Name,
+ Value = SqlFunc.AggregateSum(it.PlanNum ?? 0)
+ }).ToList();
+ echartsSeries2.Data = Data2;
+ echartsOptions.Series.Add(echartsSeries2);
+
+
+
+ return echartsOptions;
+ }
+
+ ///
+ /// 本月每天产量
+ ///
+ ///
+ public EchartsOptions OutputOfCurrentmonth()
+ { // 获取当前日期
+ DateTime today = DateTime.Today;
+
+ // 获取当前月的第一天
+ DateTime firstDayOfMonth = new DateTime(today.Year, today.Month, 1);
+
+ // 获取当前月的最后一天
+ DateTime lastDayOfMonth =
+ new DateTime(today.Year, today.Month, DateTime.DaysInMonth(today.Year, today.Month));
+
+ EchartsOptions echartsOptions = new EchartsOptions();
+ EchartsTitle Title = new EchartsTitle("本月每天产量", "本月每天产量");
+ echartsOptions.Title = Title;
+ // 横坐标
+ EchartsXAxis xAxis = new EchartsXAxis();
+ List xData = new List();
+ DateTime index = firstDayOfMonth;
+ do
+ {
+ xData.Add(index.ToString("MM-dd"));
+ index = index.AddDays(1);
+ } while (index < lastDayOfMonth.AddDays(1));
+
+ xAxis.Data = xData;
+ echartsOptions.XAxis = xAxis;
+
+
+ //折线系列
+ EchartsSeries LineSeries = new EchartsSeries();
+ LineSeries.Name = "本月每天产量";
+ LineSeries.Type = "line";
+
+
+ var result = Context.Queryable()
+ .LeftJoin((w, r) => w.Workorder == r.Workorder)
+ .Where((w, r) => w.WorkorderDate >= firstDayOfMonth && w.WorkorderDate <= lastDayOfMonth)
+ .GroupBy((w, r) => w.WorkorderDate)
+ .Select((w, r) => new EchartsSeriesData()
+ {
+ Name = w.WorkorderDate.Value.ToString("MM-dd"),
+ Value = SqlFunc.AggregateSum(r.FinishNum ?? 0)
+
+ }).ToList();
+ List LineSeriesData = new List();
+
+ foreach (var item in xData)
+ {
+ LineSeriesData.Add(new EchartsSeriesData()
+ {
+ Name = item,
+ Value = result.Where(it => it.Name == item).Select(it => it.Value).FirstOrDefault(),
+ });
+ }
+
+ LineSeries.Data = LineSeriesData;
+ echartsOptions.Series = new List() { LineSeries };
+
+
+ // 各个组的产量系列
+ string[] groupArray = Context.Queryable().Where(it => it.Status == 1).OrderBy(it => it.Id).Select(it => it.GroupCode)
+ .ToArray();
+ if (groupArray.Length > 0)
+ {
+ var GroupresultList = Context.Queryable()
+ .LeftJoin((w, r) => w.Workorder == r.FkWorkorder)
+ .Where((w, r) => groupArray.Contains(w.GroupCode))
+ .Where((w, r) => w.WorkorderDate >= firstDayOfMonth && w.WorkorderDate <= lastDayOfMonth)
+ .GroupBy((w, r) => new { w.GroupCode, w.WorkorderDate })
+ .Select((w, r) => new
+ {
+ groupCode = w.GroupCode,
+ Name = w.WorkorderDate.Value.ToString("MM-dd"),
+ Value = SqlFunc.AggregateSum(r.FinishedNum ?? 0)
+ }).ToList();
+ foreach (var group in groupArray)
+ {
+ EchartsSeries groupSeries = new EchartsSeries();
+ groupSeries.Name = group + "组";
+ groupSeries.Type = "bar";
+
+
+ List LineSeriesData01 = new List();
+
+ foreach (var item in xData)
+ {
+ LineSeriesData01.Add(new EchartsSeriesData()
+ {
+ Name = item,
+ Value = GroupresultList.Where(it => it.Name == item).Where(it => it.groupCode == group).Select(it => it.Value).FirstOrDefault(),
+ });
+ }
+
+ groupSeries.Data = LineSeriesData01;
+ echartsOptions.Series.Add(groupSeries);
+ }
+ }
+
+ return echartsOptions;
+
+ }
}
}
diff --git a/DOAN.Service/Mobile/ReportFlowService.cs b/DOAN.Service/Mobile/ReportFlowService.cs
index 57f8a9d..8ffb13d 100644
--- a/DOAN.Service/Mobile/ReportFlowService.cs
+++ b/DOAN.Service/Mobile/ReportFlowService.cs
@@ -58,6 +58,7 @@ public class ReportFlowService : BaseService, IReportFlowServic
.SetColumns(it => it.FinishNum == finish_num)
.SetColumns(it => it.Worker == Worker)
.SetColumns(it => it.JobDate == DateTime.Now)
+ .SetColumns(it => it.RouteId == 32)
.SetColumns(it => it.UpdatedBy == Worker)
.SetColumns(it => it.UpdatedTime == DateTime.Now)
.ExecuteCommand();
@@ -73,7 +74,7 @@ public class ReportFlowService : BaseService, IReportFlowServic
proReportwork01.Workorder = workorder;
proReportwork01.ProcessId = processId;
proReportwork01.FinishNum = finish_num;
-
+ proReportwork01.RouteId = 32;
proReportwork01.Worker = Worker;
proReportwork01.JobDate = DateTime.Now;
proReportwork01.CreatedBy = Worker;
@@ -100,6 +101,7 @@ public class ReportFlowService : BaseService, IReportFlowServic
.SetColumns(it => it.FinishNum == finish_num)
.SetColumns(it => it.BadNum == bad_num)
.SetColumns(it => it.Worker == Worker)
+ .SetColumns(it => it.RouteId == 32)
.SetColumns(it => it.JobDate == DateTime.Now)
.SetColumns(it => it.UpdatedBy == Worker)
.SetColumns(it => it.UpdatedTime == DateTime.Now)
@@ -115,6 +117,7 @@ public class ReportFlowService : BaseService, IReportFlowServic
proReportwork01.FinishNum = finish_num;
proReportwork01.BadNum = bad_num;
proReportwork01.Worker = Worker;
+ proReportwork01.RouteId = 32;
proReportwork01.JobDate = DateTime.Now;
proReportwork01.CreatedBy = Worker;
proReportwork01.CreatedTime = DateTime.Now;
@@ -145,6 +148,7 @@ public class ReportFlowService : BaseService, IReportFlowServic
result = Context.Updateable()
.Where(it => it.Workorder == workorder && it.ProcessId == processId)
.SetColumns(it => it.FinishNum == finish_num)
+ .SetColumns(it => it.RouteId == 32)
.SetColumns(it => it.BadNum == bad_num)
.SetColumns(it => it.Worker == Worker)
.SetColumns(it => it.JobDate == DateTime.Now)
@@ -165,6 +169,7 @@ public class ReportFlowService : BaseService, IReportFlowServic
proReportwork01.FinishNum = finish_num;
proReportwork01.BadNum = bad_num;
proReportwork01.Worker = Worker;
+ proReportwork01.RouteId = 32;
proReportwork01.JobDate = DateTime.Now;
proReportwork01.CreatedBy = Worker;
proReportwork01.CreatedTime = DateTime.Now;
@@ -211,13 +216,13 @@ public class ReportFlowService : BaseService, IReportFlowServic
public List GetProcessByRoute(int route_id)
{
- return Context.Queryable()
- .LeftJoin((rel, pro) => rel.FkWorkProcesses == pro.Id)
- .Where((rel, pro) => rel.FkWorkRoute == route_id)
- .Select((rel, pro) => pro)
- .ToList()
- .Adapt, List>();
-
+ return Context.Queryable()
+ .LeftJoin((rel, pro) => rel.FkWorkProcesses == pro.Id)
+ .Where((rel, pro) => rel.FkWorkRoute == route_id)
+ .Select((rel, pro) => pro)
+ .ToList()
+ .Adapt, List>();
+
}
public List GetReportByProcessId(int processId)