156 lines
5.0 KiB
C#
156 lines
5.0 KiB
C#
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;
|
||
}
|
||
} |