zhuangpei-mesbackend/DOAN.Service/MES/bigScreen/ProductBigScreenService.cs
2024-11-11 11:29:32 +08:00

156 lines
5.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using DOAN.Model.MES.bigscreen.Dto;
using DOAN.Model.MES.dev;
using DOAN.Model.mes.echarts;
using DOAN.Model.MES.product;
using DOAN.Service.MES.bigScreen.IService;
using Infrastructure.Attribute;
namespace DOAN.Service.MES.bigScreen;
/// <summary>
/// 生产大屏
/// </summary>
[AppService(ServiceType = typeof(IProductBigScreenService), ServiceLifetime = LifeTime.Transient)]
public class ProductBigScreenService : BaseService<DeviceAccount>, IProductBigScreenService
{
/// <summary>
/// </summary>
/// <returns></returns>
public ProductBigScreenMoudle01Dto GetMoudle01()
{
var now = DateTime.Now.ToLocalTime().Date;
var startOfWeek = GetStartOfWeek(now);
var endOfWeek = startOfWeek.AddDays(6);
var moudle01 = new ProductBigScreenMoudle01Dto();
moudle01.TodayOutputQuantity = Context.Queryable<ProWorkorder>().LeftJoin<ProReportwork>((w, r) =>
w.Workorder == r.FkWorkorder && w.WorkorderDate == now)
.Sum((w, r) => r.FinishedNum ?? 0);
moudle01.TodayWorkOrderQuantity =
Context.Queryable<ProWorkorder>().Where(it => it.WorkorderDate == now).Count();
moudle01.WeekWorkOrderQuantity = Context.Queryable<ProWorkorder>()
.Where(it => it.WorkorderDate >= startOfWeek && it.WorkorderDate <= endOfWeek)
.Count();
moudle01.WeekOutputQuantity = Context.Queryable<ProWorkorder>().LeftJoin<ProReportwork>((w, r) =>
w.Workorder == r.FkWorkorder && w.WorkorderDate >= startOfWeek && w.WorkorderDate <= endOfWeek)
.Sum((w, r) => r.FinishedNum ?? 0);
moudle01.TodayExceptionWorkOrderQuantity = Context.Queryable<ProWorkorderUpdateLog>()
.Where(it => it.ChangeTime > now && it.ChangeTime < now.AddDays(1)).Count();
moudle01.WeekExceptionWorkOrderQuantity = Context.Queryable<ProWorkorderUpdateLog>()
.Where(it => it.ChangeTime > now && it.ChangeTime < now.AddDays(1)).Count();
return moudle01;
}
public EchartsOptions GetMoudle02()
{
var LineEchart = new EchartsOptions();
var Title = new EchartsTitle();
Title.Text = "7日产量趋势图";
Title.SubText = "7日产量趋势图";
LineEchart.Title = Title;
var XAxis = new EchartsXAxis();
// 获取今天的日期
var today = DateTime.Today;
// 创建一个数组来存储七天的日期
var dates = new DateTime[7];
// 填充数组
for (var i = 0; i < 7; i++) dates[i] = today.AddDays(-i);
// 反转数组,使得日期从最早的开始
Array.Reverse(dates);
XAxis.Data = dates.Select(it => it.ToString("yyyy-MM-dd")).ToList();
LineEchart.XAxis = XAxis;
var Series = new EchartsSeries();
var SeriesData = Context.Queryable<ProWorkorder>()
.LeftJoin<ProReportwork>((w, r) =>
w.Workorder == r.FkWorkorder && w.WorkorderDate > today && w.WorkorderDate < today.AddDays(-7))
.Select((w, r) => new EchartsSeriesData
{
Name = w.WorkorderDate.Value.ToString("yyyy-MM-dd"),
Value = r.FinishedNum ?? 0
}).ToList();
Series.Data = SeriesData;
Series.Type = "line";
LineEchart.Series = new List<EchartsSeries>(){Series};
return LineEchart;
}
public EchartsOptions GetMoudle03()
{
var LineEchart = new EchartsOptions();
var Title = new EchartsTitle();
Title.Text = "7日工单趋势图";
Title.SubText = "7日工单趋势图";
LineEchart.Title = Title;
var XAxis = new EchartsXAxis();
// 获取今天的日期
var today = DateTime.Today;
// 创建一个数组来存储七天的日期
var dates = new DateTime[7];
// 填充数组
for (var i = 0; i < 7; i++) dates[i] = today.AddDays(-i);
// 反转数组,使得日期从最早的开始
Array.Reverse(dates);
XAxis.Data = dates.Select(it => it.ToString("yyyy-MM-dd")).ToList();
LineEchart.XAxis = XAxis;
var Series = new EchartsSeries();
var SeriesData = Context.Queryable<ProWorkorder>()
.Where(w=>w.WorkorderDate > today && w.WorkorderDate < today.AddDays(-7))
.Select(w => new EchartsSeriesData
{
Name = w.WorkorderDate.Value.ToString("yyyy-MM-dd"),
Value = w.DeliveryNum ?? 0
}).ToList();
Series.Data = SeriesData;
LineEchart.Series = new List<EchartsSeries>(){Series};
return LineEchart;
}
private static DateTime GetStartOfWeek(DateTime dt)
{
// 获取本周周一的日期时间时间为00:00:00
var daysOffset = dt.DayOfWeek - DayOfWeek.Monday;
if (daysOffset < 0) daysOffset += 7; // 如果今天是周日那么偏移量应该是6而不是-1
return dt.AddDays(-daysOffset).Date;
}
}