本月各工序产量统计

This commit is contained in:
qianhao.xu
2024-12-23 15:55:39 +08:00
parent 6b4e25fc57
commit e60a80d0ed
3 changed files with 135 additions and 2 deletions

View File

@@ -11,6 +11,7 @@ using DOAN.Model.MES.SmartScreen.Product;
using DOAN.Model.MES.SmartScreen;
using Microsoft.Data.SqlClient;
using DOAN.Model.MES.base_;
using MathNet.Numerics;
namespace DOAN.Service.MES.SmartScreen.Product
{
@@ -65,7 +66,7 @@ namespace DOAN.Service.MES.SmartScreen.Product
echartsOptions.XAxis=xAxis;
//获取各个工序今日累计报工值
EchartsSeries echartsSeries = new EchartsSeries();
echartsSeries.Name = "今日各个工序今日累计报工数";
echartsSeries.Name = "今日各个工序累计报工数";
List<EchartsSeriesData> Data = Context.Queryable<ProReportwork01>()
.LeftJoin<BaseWorkProcesses>((it,w)=>it.ProcessId==w.Id)
.Where((it, w) => it.JobDateTime >= DateTime.Today && it.JobDateTime <= DateTime.Today.AddDays(1))
@@ -79,7 +80,7 @@ namespace DOAN.Service.MES.SmartScreen.Product
echartsOptions.Series.Add(echartsSeries);
//获取各个工序今日累计计划值
EchartsSeries echartsSeries2 = new EchartsSeries();
echartsSeries2.Name = "今日各个工序今日累计计划数";
echartsSeries2.Name = "今日各个工序累计计划数";
List<EchartsSeriesData> Data2 = Context.Queryable<ProReportwork01>()
.LeftJoin<BaseWorkProcesses>((it, w) => it.ProcessId == w.Id)
.Where((it, w) => it.JobDateTime >= DateTime.Today && it.JobDateTime <= DateTime.Today.AddDays(1))
@@ -94,6 +95,120 @@ namespace DOAN.Service.MES.SmartScreen.Product
return echartsOptions;
}
public EchartsOptions BarProcessProductStatisticWeek()
{
// 获取当前时间
DateTime now = DateTime.Now;
// 计算到本周一需要减去的天数
int daysToSubtract = ((int)now.DayOfWeek - (int)DayOfWeek.Monday + 7) % 7;
// 获取本周一的日期
DateTime mondayMorning = now.AddDays(-daysToSubtract).Date; // .Date将时间设置为00:00:00
// 获取本周日午夜(实际上是下周一开始时间)
DateTime sundayMidnight = mondayMorning.AddDays(7);
EchartsOptions echartsOptions = new EchartsOptions();
echartsOptions.Title = new EchartsTitle("本周各工序产量统计", "本周各工序产量统计");
EchartsXAxis xAxis = new EchartsXAxis();
xAxis.Data = Context.Queryable<BaseRelWorkRouteProcesses>().LeftJoin<BaseWorkProcesses>((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<EchartsSeriesData> Data = Context.Queryable<ProReportwork01>()
.LeftJoin<BaseWorkProcesses>((it, w) => it.ProcessId == w.Id)
.Where((it, w) => it.JobDateTime >= mondayMorning && it.JobDateTime <= sundayMidnight)
.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<EchartsSeriesData> Data2 = Context.Queryable<ProReportwork01>()
.LeftJoin<BaseWorkProcesses>((it, w) => it.ProcessId == w.Id)
.Where((it, w) => it.JobDateTime >= mondayMorning && it.JobDateTime <= sundayMidnight)
.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 BarProcessProductStatisticMonth()
{
// 获取当前日期时间
DateTime now = DateTime.Now;
// 获取本月第一天的日期时间(凌晨)
DateTime firstDayOfMonth = new DateTime(now.Year, now.Month, 1, 0, 0, 0);
// 获取本月最后一天的日期时间(午夜)
int daysInMonth = DateTime.DaysInMonth(now.Year, now.Month);
DateTime lastDayOfMonth = new DateTime(now.Year, now.Month, daysInMonth, 23, 59, 59);
EchartsOptions echartsOptions = new EchartsOptions();
echartsOptions.Title = new EchartsTitle("本月各工序产量统计", "本月各工序产量统计");
EchartsXAxis xAxis = new EchartsXAxis();
xAxis.Data = Context.Queryable<BaseRelWorkRouteProcesses>().LeftJoin<BaseWorkProcesses>((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<EchartsSeriesData> Data = Context.Queryable<ProReportwork01>()
.LeftJoin<BaseWorkProcesses>((it, w) => it.ProcessId == w.Id)
.Where((it, w) => it.JobDateTime >= firstDayOfMonth && it.JobDateTime <= lastDayOfMonth)
.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<EchartsSeriesData> Data2 = Context.Queryable<ProReportwork01>()
.LeftJoin<BaseWorkProcesses>((it, w) => it.ProcessId == w.Id)
.Where((it, w) => it.JobDateTime >= firstDayOfMonth && it.JobDateTime <= lastDayOfMonth)
.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;
}