2024-11-19 17:15:34 +08:00

173 lines
6.4 KiB
C#

using DOAN.Model.mes.echarts;
using DOAN.Model.MES.andon;
using DOAN.Model.MES.base_;
using DOAN.Model.MES.console;
using DOAN.Model.MES.dev;
using DOAN.Model.MES.mm;
using DOAN.Model.MES.product;
using DOAN.Model.MES.quality.FQC;
using DOAN.Model.MES.quality.IPQC;
using DOAN.Service.MES.Console_.IService;
using Infrastructure.Attribute;
using System.Collections.Generic;
using DOAN.Model.MES.exception;
namespace DOAN.Service.MES.Console_;
[AppService(ServiceType = typeof(IConsoleService), ServiceLifetime = LifeTime.Transient)]
public class ConsoleService : BaseService<ProWorkorder>, IConsoleService
{
/// <summary>
/// 获取色块看板信息
/// </summary>
/// <returns></returns>
public ConsoleMoudle01 GetColorBlockKanbanInformation()
{
ConsoleMoudle01 consoleMoudle01 = new ConsoleMoudle01();
DateTime nowDate = DateTime.Now.Date;
DateTime nextDate = nowDate.AddDays(1);
UseTran2(() =>
{
//workorders
consoleMoudle01.workorders=Context.Queryable<ProWorkorder>().Where(it => it.WorkorderDate == nowDate).Count();
consoleMoudle01.finishWorkorders=Context.Queryable<ProWorkorder>().Where(it => it.WorkorderDate == nowDate).Where(it=>it.Status==3).Count();
consoleMoudle01.exceptionWorkorders=Context.Queryable<ProWorkorderUpdateLog>().Where(it => it.ChangeTime == nowDate).Count();
consoleMoudle01.preparationTasks=Context.Queryable<MmPreparationTaskLine>().Where(it=>it.TaskDate== nowDate).Count();
consoleMoudle01.ClaimsQuantity= Context.Queryable<QcDefectCollection>().Where(it => it.Type == 2)
.Where(it => it.CreatedTime > nowDate && it.CreatedTime < nextDate)
.Sum(it => it.Quantity);
consoleMoudle01.reportedLossQuantity= Context.Queryable<QcDefectCollection>().Where(it => it.Type == 1)
.Where(it => it.CreatedTime > nowDate && it.CreatedTime < nextDate)
.Sum(it => it.Quantity);
consoleMoudle01.ProductDefectQuantity= Context.Queryable<QcFinishedproductDefectCollection>()
.Where(it => it.CreatedTime > nowDate && it.CreatedTime < nextDate)
.Sum(it => it.Number??0);
consoleMoudle01.InspectionTaskQuantity = Context.Queryable<DeviceTaskExecute>()
.Where(it => it.CreatedTime > nowDate && it.CreatedTime < nextDate)
.Count();
consoleMoudle01.AndonQuantity= Context.Queryable<AndonFaultRecord>()
.Where(it => it.StartTime > nowDate && it.StartTime < nextDate)
.Count();
consoleMoudle01.EquipmentRepairQuantity = Context.Queryable<DeviceRepair>()
.Where(it => it.CreatedTime > nowDate && it.CreatedTime < nextDate)
.Count();
});
return consoleMoudle01;
}
/// <summary>
/// 获取线 工单数/任务数
/// </summary>
/// <returns></returns>
public EchartsOptions GetLineOfTaskNumAndWorkorder()
{
EchartsOptions echartsOptions = new EchartsOptions();
EchartsTitle Title=new EchartsTitle();
Title.Text = "今日产线产能";
Title.SubText = "今日产线工单和物料配送车数对比";
echartsOptions.Title = Title;
EchartsXAxis XAxis=new EchartsXAxis();
XAxis.Type = "category";
XAxis.Data =Context.Queryable<BaseWorkRoute>().OrderBy(it=>it.Id).Select(it => it.Name).ToList();
echartsOptions.XAxis = XAxis;
EchartsYAxis YAxis=new EchartsYAxis();
YAxis.Type = "value";
echartsOptions.YAxis = YAxis;
List<EchartsSeries> Series=new List<EchartsSeries>();
EchartsSeries serie01 = new EchartsSeries();
serie01.Name = "工单数";
serie01.Type = "bar";
List<EchartsSeriesData> EchartsSeriesDataList = Context.Queryable<BaseWorkRoute>().LeftJoin<ProWorkorder>((r, w) => r.Code == w.LineCode&& w.WorkorderDate == DateTime.Now.Date)
.OrderBy((r, w) => r.Id)
.GroupBy((r, w) => r.Code)
.Select((r, w) => new EchartsSeriesData {
Name=r.Name,
Value=SqlFunc.AggregateCount(w.Id)
}).ToList();
serie01.Data = EchartsSeriesDataList;
Series.Add(serie01);
EchartsSeries serie02 = new EchartsSeries();
serie02.Name = "物料配送车数";
serie02.Type = "bar";
List<EchartsSeriesData> EchartsSeriesDataList02 = Context.Queryable<BaseWorkRoute>().LeftJoin<MmPreparationTaskLine>((r, w) => r.Code == w.LineCode&& w.TaskDate == DateTime.Now.Date)
.OrderBy((r, w) => r.Id)
.GroupBy((r, w) => r.Name)
.Select((r, w) => new EchartsSeriesData
{
Name = r.Name,
Value = SqlFunc.AggregateCount(w.Id)
}).ToList();
serie02.Data = EchartsSeriesDataList02;
Series.Add(serie02);
echartsOptions.Series= Series;
return echartsOptions;
}
/// <summary>
/// 班组工单数今日班组产能
/// </summary>
/// <returns></returns>
public EchartsOptions GetGroupWorkOrderNum()
{
EchartsOptions echartsOptions = new EchartsOptions();
EchartsTitle Title = new EchartsTitle();
Title.Text = "今日班组产能";
Title.SubText = "今日班组产能详情";
echartsOptions.Title = Title;
EchartsXAxis XAxis = new EchartsXAxis();
XAxis.Type = "category";
XAxis.Data = Context.Queryable<BaseGroup>().OrderBy(it => it.Id).Select(it => it.GroupName).ToList();
echartsOptions.XAxis = XAxis;
EchartsYAxis YAxis = new EchartsYAxis();
YAxis.Type = "value";
echartsOptions.YAxis = YAxis;
List<EchartsSeries> Series = new List<EchartsSeries>();
EchartsSeries serie01 = new EchartsSeries();
serie01.Name = "工单数";
serie01.Type = "bar";
List<EchartsSeriesData> EchartsSeriesDataList = Context.Queryable<BaseGroup>().LeftJoin<ProWorkorder>((r, w) => r.GroupCode == w.GroupCode)
.Where((r, w) => w.WorkorderDate == DateTime.Now.Date)
.OrderBy((r, w) => r.Id)
.GroupBy((r, w) => r.GroupCode)
.Select((r, w) => new EchartsSeriesData
{
Name = r.GroupName,
Value = SqlFunc.AggregateCount(w)
}).ToList();
serie01.Data = EchartsSeriesDataList;
Series.Add(serie01);
echartsOptions.Series = Series;
return echartsOptions;
}
}