zhuangpei-mesbackend/DOAN.Service/MES/bigScreen/Product2BigScreenService.cs
2024-12-23 11:35:16 +08:00

662 lines
28 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.base_;
using DOAN.Model.MES.bigscreen.Dto;
using DOAN.Model.mes.echarts;
using DOAN.Model.MES.exception;
using DOAN.Model.MES.product;
using DOAN.Service.MES.bigScreen.IService;
using Infrastructure.Attribute;
using Mapster;
using SqlSugar.SplitTableExtensions;
using DOAN.Model.MES.group;
using System.Data;
namespace DOAN.Service.MES.bigScreen
{
/// <summary>
/// 生产大屏 2
/// </summary>
[AppService(ServiceType = typeof(IProduct2BigScreenService), ServiceLifetime = LifeTime.Transient)]
public class Product2BigScreenService : BaseService<ProWorkorder>, IProduct2BigScreenService
{
public ProductBigScreenMoudle02Dto GetMoudle01()
{
ProductBigScreenMoudle02Dto productBigScreen = new ProductBigScreenMoudle02Dto();
//今日班组
productBigScreen.TodayGroupQuantity = Context.Queryable<ProWorkorder>()
.Where(it => it.WorkorderDate == DateTime.Today)
.GroupBy(it => it.GroupCode).Select(it => it.GroupCode).ToArray().Length;
//今天产线
productBigScreen.TodayLineQuantity = Context.Queryable<ProWorkorder>()
.Where(it => it.WorkorderDate == DateTime.Today)
.GroupBy(it => it.LineCode).Select(it => it.LineCode).ToArray().Length;
//今日计划产量
productBigScreen.TodayPlanQuantity = Context.Queryable<ProWorkorder>()
.Where(it => it.WorkorderDate == DateTime.Today)
.Sum(it => it.DeliveryNum ?? 0);
//今日实际产量
productBigScreen.TodayActionProductionQuantity = Context.Queryable<ProWorkorder>()
.LeftJoin<ProReportwork>((p, r) => p.Workorder == r.FkWorkorder)
.Where((p, r) => p.WorkorderDate == DateTime.Today)
.Sum((p, r) => r.FinishedNum ?? 0);
//今日产成品种类
productBigScreen.TodayProductTypeQuantity = Context.Queryable<ProWorkorder>()
.Where(it => it.WorkorderDate == DateTime.Today)
.GroupBy(it => it.ProductionCode)
.Select(it => it.ProductionCode).ToArray().Length;
// 七日变更计划
productBigScreen.SevenDaysPriorPlanQuantity = Context.Queryable<ProWorkorderUpdateLog>()
.Where(it => it.ChangeTime <= DateTime.Today && it.ChangeTime >= DateTime.Today.AddDays(-7))
.Count();
return productBigScreen;
}
public List<TodayGroupProductionProgress> GetMoudle02()
{
return Context.Queryable<ProWorkorder>().LeftJoin<ProReportwork>((w, r) => w.Workorder == r.FkWorkorder)
.LeftJoin<BaseGroup>((w, r, g) => w.GroupCode == g.GroupCode)
.Where((w, r, g) => w.WorkorderDate == DateTime.Today && g.Status == 1)
.GroupBy((w, r, g) => w.GroupCode)
.OrderBy((w, r, g) => g.Id)
.Select((w, r) => new TodayGroupProductionProgress()
{
GroupCode = w.GroupCode,
PlanQuantity = SqlFunc.AggregateSum(w.DeliveryNum ?? 0),
ReportQuantity = SqlFunc.AggregateSum(r.FinishedNum ?? 0)
}).ToList();
}
public EchartsOptions GetMoudle03()
{
EchartsOptions echartsOptions = new EchartsOptions();
echartsOptions.Title = new EchartsTitle("昨天各组报工数和计划数直方图", "昨天各组报工数和计划数直方图");
//x轴
EchartsXAxis XAxis = new EchartsXAxis();
List<string> Data = Context.Queryable<BaseGroup>().Where(it => it.Status == 1).OrderBy(it => it.Id).Select(it => it.GroupCode).ToList();
XAxis.Data = Data;
echartsOptions.XAxis = XAxis;
//值
EchartsSeries Series1 = new EchartsSeries();
List<EchartsSeriesData> Data1 = Context.Queryable<ProWorkorder>()
.Where(it => it.WorkorderDate == DateTime.Today.AddDays(-1))
.GroupBy(it => it.GroupCode)
.Select(it => new EchartsSeriesData()
{
Name = it.GroupCode,
Value = SqlFunc.AggregateSum(it.DeliveryNum ?? 0)
}).ToList();
List<EchartsSeriesData> insertData = new List<EchartsSeriesData>();
foreach (var item in Data)
{
insertData.Add(new EchartsSeriesData()
{
Name = item,
Value = Data1.Where(it => it.Name == item).Select(it => it.Value).FirstOrDefault()
});
}
Series1.Data = insertData;
Series1.Name = "计划数";
EchartsSeries Series2 = new EchartsSeries();
List<EchartsSeriesData> Data2 = Context.Queryable<ProWorkorder>()
.LeftJoin<ProReportwork>((w, r) => w.Workorder == r.FkWorkorder)
.Where((w, r) => w.WorkorderDate == DateTime.Today.AddDays(-1))
.GroupBy((w, r) => w.GroupCode)
.Select((w, r) => new EchartsSeriesData()
{
Name = w.GroupCode,
Value = SqlFunc.AggregateSum(r.FinishedNum ?? 0)
}).ToList();
List<EchartsSeriesData> insertData2 = new List<EchartsSeriesData>();
foreach (var item in Data)
{
insertData2.Add(new EchartsSeriesData()
{
Name = item,
Value = Data2.Where(it => it.Name == item).Select(it => it.Value).FirstOrDefault()
});
}
Series2.Data = insertData2;
Series2.Name = "报工数";
List<EchartsSeries> Series = new List<EchartsSeries> { Series2, Series1 };
echartsOptions.Series = Series;
return echartsOptions;
}
public EchartsOptions GetMoudle09()
{
EchartsOptions echartsOptions = new EchartsOptions();
echartsOptions.Title = new EchartsTitle("昨天各班组计划完成率统计", "昨天各班组计划完成率统计");
//x轴
EchartsXAxis XAxis = new EchartsXAxis();
echartsOptions.XAxis = XAxis;
//值
EchartsSeries Series2 = new EchartsSeries();
List<EchartsSeriesData> Data2 = Context.Queryable<ProWorkorder>()
.LeftJoin<ProReportwork>((w, r) => w.Workorder == r.FkWorkorder)
.Where((w, r) => w.WorkorderDate == DateTime.Today.AddDays(-1))
.GroupBy((w, r) => w.GroupCode)
.Select((w, r) => new EchartsSeriesData()
{
Name = w.GroupCode,
Value = SqlFunc.AggregateSum(r.FinishedNum ?? 0) / SqlFunc.AggregateSum(r.DispatchNum ?? 0)
}).ToList();
List<EchartsSeriesData> insertData2 = new List<EchartsSeriesData>();
insertData2 = Data2.Select(it => new EchartsSeriesData() { Name = it.Name, Value = Math.Round(it.Value, 2) * 100 }).OrderBy(it => it.Value).ToList();
XAxis.Data = insertData2.Select(it => it.Name).ToList();
Series2.Data = insertData2;
Series2.Name = "报工数/计划数(%";
Series2.Type = "bar";
List<EchartsSeries> Series = new List<EchartsSeries> { Series2 };
echartsOptions.Series = Series;
return echartsOptions;
}
public EchartsOptions GetMoudle10()
{
// 获取今天的日期
DateTime today = DateTime.Today;
// 计算上周一的日期
DateTime lastMonday = today.AddDays(-(int)today.DayOfWeek - 6);
// 计算上周日的日期
DateTime lastSunday = lastMonday.AddDays(6);
EchartsOptions echartsOptions = new EchartsOptions();
echartsOptions.Title = new EchartsTitle("上周各班组计划完成率统计", "上周各班组计划完成率统计");
//x轴
EchartsXAxis XAxis = new EchartsXAxis();
echartsOptions.XAxis = XAxis;
//值
EchartsSeries Series2 = new EchartsSeries();
List<EchartsSeriesData> Data2 = Context.Queryable<ProWorkorder>()
.LeftJoin<ProReportwork>((w, r) => w.Workorder == r.FkWorkorder)
.Where((w, r) => w.WorkorderDate >= lastMonday && w.WorkorderDate <= lastSunday)
.GroupBy((w, r) => w.GroupCode)
.Select((w, r) => new EchartsSeriesData()
{
Name = w.GroupCode,
Value = SqlFunc.AggregateSum(r.FinishedNum ?? 0) / SqlFunc.AggregateSum(r.DispatchNum ?? 0)
}).ToList();
List<EchartsSeriesData> insertData2 = new List<EchartsSeriesData>();
insertData2 = Data2.Select(it => new EchartsSeriesData() { Name = it.Name, Value = Math.Round(it.Value, 2) * 100 }).OrderBy(it => it.Value).ToList();
XAxis.Data = insertData2.Select(it => it.Name).ToList();
Series2.Data = insertData2;
Series2.Name = "报工数/计划数(%";
Series2.Type = "bar";
List<EchartsSeries> Series = new List<EchartsSeries> { Series2 };
echartsOptions.Series = Series;
return echartsOptions;
}
public EchartsOptions GetMoudle04()
{
// 获取今天的日期
DateTime today = DateTime.Today;
// 计算上周一的日期
DateTime lastMonday = today.AddDays(-(int)today.DayOfWeek - 6);
// 计算上周日的日期
DateTime lastSunday = lastMonday.AddDays(6);
EchartsOptions echartsOptions = new EchartsOptions();
echartsOptions.Title = new EchartsTitle("上周各组报工数和计划数直方图", "上周各组报工数和计划数直方图");
//x轴
EchartsXAxis XAxis = new EchartsXAxis();
List<string> Data = Context.Queryable<BaseGroup>().Where(it => it.Status == 1).OrderBy(it => it.Id).Select(it => it.GroupCode).ToList();
XAxis.Data = Data;
echartsOptions.XAxis = XAxis;
//值
EchartsSeries Series1 = new EchartsSeries();
List<EchartsSeriesData> Data1 = Context.Queryable<ProWorkorder>()
.Where(it => it.WorkorderDate >= lastMonday && it.WorkorderDate <= lastSunday)
.GroupBy(it => it.GroupCode)
.Select(it => new EchartsSeriesData()
{
Name = it.GroupCode,
Value = SqlFunc.AggregateSum(it.DeliveryNum ?? 0)
}).ToList();
List<EchartsSeriesData> insertData = new List<EchartsSeriesData>();
foreach (var item in Data)
{
insertData.Add(new EchartsSeriesData()
{
Name = item,
Value = Data1.Where(it => it.Name == item).Select(it => it.Value).FirstOrDefault()
});
}
Series1.Data = insertData;
Series1.Name = "计划数";
EchartsSeries Series2 = new EchartsSeries();
List<EchartsSeriesData> Data2 = Context.Queryable<ProWorkorder>()
.LeftJoin<ProReportwork>((w, r) => w.Workorder == r.FkWorkorder)
.Where((w, r) => w.WorkorderDate >= lastMonday && w.WorkorderDate <= lastSunday)
.GroupBy((w, r) => w.GroupCode)
.Select((w, r) => new EchartsSeriesData()
{
Name = w.GroupCode,
Value = SqlFunc.AggregateSum(r.FinishedNum ?? 0)
}).ToList();
List<EchartsSeriesData> insertData2 = new List<EchartsSeriesData>();
foreach (var item in Data)
{
insertData2.Add(new EchartsSeriesData()
{
Name = item,
Value = Data2.Where(it => it.Name == item).Select(it => it.Value).FirstOrDefault()
});
}
Series2.Data = insertData2;
Series2.Name = "报工数";
List<EchartsSeries> Series = new List<EchartsSeries> { Series2, Series1 };
echartsOptions.Series = Series;
return echartsOptions;
}
public List<TodayExceptionWorkOrder> GetMoudle05()
{
return Context.Queryable<ProWorkorderUpdateLog>().Where(it => it.ChangeTime > DateTime.Today && it.ChangeTime <= DateTime.Today.AddDays(1))
.Select(it => new TodayExceptionWorkOrder()
{
workorder = it.Workorder,
description = it.Log
}).ToList();
}
/// <summary>
/// 本月工单达成率
/// </summary>
/// <returns></returns>
public EchartsOptions GetMoudle06()
{
// 获取当前日期
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;
EchartsSeries pieSeries = new EchartsSeries();
pieSeries.Name = "本月报工工单达成率";
pieSeries.Type = "pie";
//达成
int Reached = Context.Queryable<ProReportwork>()
.Where(it => it.CreatedTime >= firstDayOfMonth && it.CreatedTime <= lastDayOfMonth.AddDays(1))
.Where(it => it.DispatchNum <= it.FinishedNum).Count();
//不达成
int UnReached = Context.Queryable<ProReportwork>()
.Where(it => it.CreatedTime >= firstDayOfMonth && it.CreatedTime <= lastDayOfMonth.AddDays(1))
.Where(it => it.DispatchNum > it.FinishedNum).Count();
List<EchartsSeriesData> Data = new List<EchartsSeriesData>()
{
new EchartsSeriesData() { Name = "达成", Value = Reached },
new EchartsSeriesData() { Name = "不达成", Value = UnReached },
};
pieSeries.Data = Data;
echartsOptions.Series = new List<EchartsSeries>() { pieSeries };
return echartsOptions;
}
//本月 生产产品 top10
public EchartsOptions GetMoudle07()
{
// 获取当前日期
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("本月生产产品TOP10", "本月生产产品TOP10");
echartsOptions.Title = Title;
EchartsSeries LineSeries = new EchartsSeries();
LineSeries.Name = "不同产品的本月生产的数量";
LineSeries.Type = "bar";
LineSeries.Data = Context.Queryable<ProWorkorder>()
.LeftJoin<ProReportwork>((it, wr) => it.Workorder == wr.FkWorkorder)
.Where((it, wr) => it.WorkorderDate >= firstDayOfMonth && it.WorkorderDate <= lastDayOfMonth.AddDays(1))
.GroupBy((it, wr) => it.ProductionCode)
.Select((it, wr) => new EchartsSeriesData()
{
Name = it.ProductionCode,
Value = SqlFunc.AggregateSum(wr.FinishedNum ?? 0)
})
.MergeTable()
.OrderByDescending(it => it.Value)
.Take(10).ToList();
;
echartsOptions.Series = new List<EchartsSeries>() { LineSeries };
EchartsYAxis YAxis = new EchartsYAxis();
YAxis.Data = LineSeries.Data.Select(it => it.Name).ToList();
echartsOptions.YAxis = YAxis;
return echartsOptions;
}
//本月 报工不满原因 top10
public EchartsOptions GetMoudle77()
{
// 获取当前日期
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("本月报工未完成原因 top10", "本月报工未完成原因TOP10");
echartsOptions.Title = Title;
EchartsSeries LineSeries = new EchartsSeries();
LineSeries.Name = "本月报工未完成原因TOP10";
LineSeries.Type = "bar";
LineSeries.Data = Context.Queryable<ProWorkorder>()
.LeftJoin<ProReportwork>((it, wr) => it.Workorder == wr.FkWorkorder)
.Where((it, wr) => it.WorkorderDate >= firstDayOfMonth && it.WorkorderDate <= lastDayOfMonth.AddDays(1))
.GroupBy((it, wr) => wr.UnfinishedReanson)
.Select((it, wr) => new EchartsSeriesData()
{
Name = wr.UnfinishedReanson,
Value = SqlFunc.AggregateCount(wr.UnfinishedReanson)
})
.MergeTable()
.OrderByDescending(it => it.Value)
.Take(10).ToList();
;
echartsOptions.Series = new List<EchartsSeries>() { LineSeries };
EchartsYAxis YAxis = new EchartsYAxis();
YAxis.Data = LineSeries.Data.Select(it => it.Name).ToList();
echartsOptions.YAxis = YAxis;
return echartsOptions;
}
public EchartsOptions GetMoudle08()
{
// 获取当前日期
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<string> xData = new List<string>();
DateTime index = firstDayOfMonth;
do
{
xData.Add(index.ToString("yyyy-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<ProWorkorder>()
.LeftJoin<ProReportwork>((w, r) => w.Workorder == r.FkWorkorder)
.Where((w, r) => w.WorkorderDate >= firstDayOfMonth && w.WorkorderDate <= lastDayOfMonth)
.GroupBy((w, r) => w.WorkorderDate)
.Select((w, r) => new EchartsSeriesData()
{
Name = w.WorkorderDate.Value.ToString("yyyy-MM-dd"),
Value = SqlFunc.AggregateSum(r.FinishedNum ?? 0)
}).ToList();
List<EchartsSeriesData> LineSeriesData = new List<EchartsSeriesData>();
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<EchartsSeries>() { LineSeries };
// 各个组的产量系列
string[] groupArray = Context.Queryable<BaseGroup>().Where(it => it.Status == 1).OrderBy(it => it.Id).Select(it => it.GroupCode)
.ToArray();
if (groupArray.Length > 0)
{
var GroupresultList = Context.Queryable<ProWorkorder>()
.LeftJoin<ProReportwork>((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("yyyy-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<EchartsSeriesData> LineSeriesData01 = new List<EchartsSeriesData>();
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;
}
public List<BaseGroup> GetAllGrouops()
{
return Context.Queryable<GroupSchedule>().LeftJoin<BaseGroup>((sc, g) => sc.GroupCode == g.GroupCode)
.Where((sc, g) => sc.ScheduleDate == DateTime.Today)
.Select((sc, g) => g)
.ToList();
}
public EchartsOptions AccumulateReportWork(string groupCode)
{
EchartsOptions echartsOptions = new EchartsOptions();
echartsOptions.Title = new EchartsTitle("获取各时段各组累计完工数折线图", "获取各时段各组累计完工数折线图");
//横轴 8:00 20:00 每10分钟累加一次
// 1.获取这个班组工作时间
GroupShift Shifts = Context.Queryable<GroupSchedule>().LeftJoin<GroupShift>((sc, sh) => sc.FkShift == sh.Id)
.Where((sc, sh) => sc.ScheduleDate == DateTime.Today&&sc.GroupCode== groupCode).Select((sc, sh) => sh).First();
if (Shifts == null)
{
return null;
}
int intervals = (int)Math.Ceiling((Shifts.EndTime - Shifts.StartTime).Value.TotalMinutes / 10);
intervals++;
// 获取今天的日期
DateTime today = DateTime.Today;
// 定义一个表示8小时的时间间隔
TimeSpan eightOClock = new TimeSpan(Shifts.StartTime.Value.Hour, Shifts.StartTime.Value.Minute, Shifts.StartTime.Value.Second);
// 将今天的日期与8点的时间间隔相加
DateTime todayAtEight = today + eightOClock;
DateTime[] dateTimeArray = new DateTime[intervals];
for (int i = 0; i < intervals; i++)
{
TimeSpan spanItem = new TimeSpan(0, 10 * i, 0);// 10分钟间隔
DateTime TodayItem = todayAtEight + spanItem;
dateTimeArray[i] = TodayItem;
}
EchartsXAxis XAxis = new EchartsXAxis();
XAxis.Data = dateTimeArray.Select(it => it.ToString("HH:mm")).ToList();
echartsOptions.XAxis = XAxis;
//2 系列值-这组 今日实时累计完成数每10分钟
EchartsSeries echartsSeries = new EchartsSeries();
echartsSeries.Name = groupCode + "组今日实时累计完成数每10分钟";
echartsSeries.Type = "line";
List<EchartsSeriesData> echartsSeriesDatas = new List<EchartsSeriesData>();
//UNIX_TIMESTAMP(timestamp) 把 timestamp 转换为自 Unix 纪元以来的秒数。
//FLOOR(... / 600) 将该时间戳除以60010分钟的秒数然后向下取整到最接近的整数。
//*600 再次乘以600以获得每个10分钟周期开始的时间戳。
//FROM_UNIXTIME(...) 将处理后的时间戳转换回日期时间格式,以便在结果集中显示。
string sql = "SELECT FROM_UNIXTIME( FLOOR( UNIX_TIMESTAMP( d.created_time ) / 600 ) * 600 ) AS time_period, COUNT(*) AS count FROM " +
"pro_workorder AS r RIGHT JOIN pro_reportwork_detail AS d ON r.workorder = d.workorder " +
"WHERE r.workorder_date = CURDATE() AND r.group_code= @groupCode " +
" GROUP BY FLOOR( UNIX_TIMESTAMP( d.created_time ) / 600 ) ORDER BY time_period";
DataTable result = Context.Ado.GetDataTable(sql, new { groupCode = groupCode, });
int sum = 0;
//添加800
echartsSeriesDatas.Add(new EchartsSeriesData()
{
Name = dateTimeArray[0].ToString("HH:mm"),
Value = 0
});
foreach (DataRow row in result.Rows)
{
// DateTime value =(DateTime)row["time_period"];
DateTime value = row["time_period"] != DBNull.Value ? Convert.ToDateTime(row["time_period"]) : DateTime.MinValue;
int count = Convert.ToInt32(row["count"]);
sum += count;
EchartsSeriesData echartsSeriesData = new EchartsSeriesData()
{
Name = value.ToString("HH:mm"),
Value = sum
};
echartsSeriesDatas.Add(echartsSeriesData);
}
echartsSeries.Data = echartsSeriesDatas;
echartsOptions.Series.Add(echartsSeries);
//3 系列值-这组 今日计划累计完成数每10分钟
//获取今天这个组的所有工单
List<ProWorkorder> ProWorkorderList = Context.Queryable<ProWorkorder>().Where(it => it.GroupCode == groupCode && it.WorkorderDate == DateTime.Today).ToList();
//求出总产量需要多少s
int allSecends = 0;
foreach (var item in ProWorkorderList)
{
int num = (item.DeliveryNum ?? 0) * (item.Beat ?? 0);
allSecends = num + allSecends;
}
// 将节拍转为每10分钟产量
int allproduct = ProWorkorderList.Sum(it => it.DeliveryNum ?? 0);
int productOfeachTenMin = allproduct / (allSecends / (10 * 60));
EchartsSeries echartsSeries02 = new EchartsSeries();
echartsSeries02.Name = groupCode + "组今日计划累计完成数每10分钟";
echartsSeries02.Type = "line";
List<EchartsSeriesData> echartsSeriesData02s = new List<EchartsSeriesData>();
int all_plan_product = 0;
for (int i = 0; i < dateTimeArray.Length; i++)
{
EchartsSeriesData echartsSeriesData = new EchartsSeriesData();
echartsSeriesData.Name = dateTimeArray[i].ToString("HH:mm");
echartsSeriesData.Value = all_plan_product;
echartsSeriesData02s.Add(echartsSeriesData);
all_plan_product = all_plan_product + productOfeachTenMin;
}
echartsSeries02.Data = echartsSeriesData02s;
echartsOptions.Series.Add(echartsSeries02);
return echartsOptions;
}
}
}