diff --git a/DOAN.Service/MES/SmartScreen/Product/ProductSmartScreenService.cs b/DOAN.Service/MES/SmartScreen/Product/ProductSmartScreenService.cs
index 90ff88a..a26128b 100644
--- a/DOAN.Service/MES/SmartScreen/Product/ProductSmartScreenService.cs
+++ b/DOAN.Service/MES/SmartScreen/Product/ProductSmartScreenService.cs
@@ -1,18 +1,18 @@
-using DOAN.Model.MES.product;
-using DOAN.Service.MES.product.IService;
-using Infrastructure.Attribute;
-using System;
+using System;
using System.Collections.Generic;
+using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
-using DOAN.Service.MES.SmartScreen.Product.IService;
-using DOAN.Model.MES.SmartScreen.Product;
-using DOAN.Model.MES.SmartScreen;
-using Microsoft.Data.SqlClient;
using DOAN.Model.MES.base_;
+using DOAN.Model.MES.product;
+using DOAN.Model.MES.SmartScreen;
+using DOAN.Model.MES.SmartScreen.Product;
+using DOAN.Service.MES.product.IService;
+using DOAN.Service.MES.SmartScreen.Product.IService;
+using Infrastructure.Attribute;
using MathNet.Numerics;
-using System.Data;
+using Microsoft.Data.SqlClient;
using NPOI.SS.Formula.Atp;
namespace DOAN.Service.MES.SmartScreen.Product
@@ -20,7 +20,10 @@ namespace DOAN.Service.MES.SmartScreen.Product
///
/// 生产智慧屏
///
- [AppService(ServiceType = typeof(IProductSmartScreenService), ServiceLifetime = LifeTime.Transient)]
+ [AppService(
+ ServiceType = typeof(IProductSmartScreenService),
+ ServiceLifetime = LifeTime.Transient
+ )]
public class ProductSmartScreenService : BaseService, IProductSmartScreenService
{
///
@@ -30,7 +33,10 @@ namespace DOAN.Service.MES.SmartScreen.Product
public DigitalTurntableModel DigitalTurntable()
{
DigitalTurntableModel digital = new DigitalTurntableModel();
- digital.WorkorderQuantity = Context.Queryable().Where(it => it.WorkorderDate == DateTime.Today).Count();
+ digital.WorkorderQuantity = Context
+ .Queryable()
+ .Where(it => it.WorkorderDate == DateTime.Today)
+ .Count();
//digital.FinishedWorkorderQuantity=Context.Queryable().Where(it => it.WorkorderDate == DateTime.Today)
// .Where(it=>it.Status==2)
@@ -40,31 +46,51 @@ namespace DOAN.Service.MES.SmartScreen.Product
// .Where(it => it.Status <2)
// .Count();
- digital.ProductionPlanQuantity = Context.Queryable().Where(it => it.WorkorderDate == DateTime.Today).Sum(it => it.PlanNum ?? 0);
-
+ digital.ProductionPlanQuantity = Context
+ .Queryable()
+ .Where(it => it.WorkorderDate == DateTime.Today)
+ .Sum(it => it.PlanNum ?? 0);
//digital.ProductionFinishQuantity = Context.Queryable().Where(it => it.JobDateTime >= DateTime.Today && it.JobDateTime < DateTime.Today.AddDays(1))
// .Where(it => it.ProcessId == 90).Sum(it => it.FinishNum??0);
// 今日物料领用
- digital.MaterialRequisitionQuantity = Context.Queryable().Where(it => it.ProcessId == 10 && it.JobDateTime >= DateTime.Today && it.JobDateTime < DateTime.Today.AddDays(1)).Sum(it => it.FinishNum ?? 0);
+ digital.MaterialRequisitionQuantity = Context
+ .Queryable()
+ .Where(it =>
+ it.ProcessId == 10
+ && it.JobDateTime >= DateTime.Today
+ && it.JobDateTime < DateTime.Today.AddDays(1)
+ )
+ .Sum(it => it.FinishNum ?? 0);
+ digital.ShipmentQuantity = Context
+ .Queryable()
+ .Where(it =>
+ it.ProcessId == 90
+ && it.JobDateTime >= DateTime.Today
+ && it.JobDateTime < DateTime.Today.AddDays(1)
+ )
+ .Sum(it => it.FinishNum ?? 0);
- digital.ShipmentQuantity = Context.Queryable().Where(it => it.ProcessId == 90 && it.JobDateTime >= DateTime.Today && it.JobDateTime < DateTime.Today.AddDays(1)).Sum(it => it.FinishNum ?? 0);
-
- digital.GroupQuantity = Context.Queryable().Where(it => it.WorkorderDate == DateTime.Today).Select(it => it.GroupCode).Distinct().Count();
-
+ digital.GroupQuantity = Context
+ .Queryable()
+ .Where(it => it.WorkorderDate == DateTime.Today)
+ .Select(it => it.GroupCode)
+ .Distinct()
+ .Count();
return digital;
}
-
public EchartsOptions BarProcessProductStatistic()
{
EchartsOptions echartsOptions = new EchartsOptions();
echartsOptions.Title = new EchartsTitle("今日各工序产量统计", "今日各工序产量统计");
EchartsXAxis xAxis = new EchartsXAxis();
- xAxis.Data = Context.Queryable().LeftJoin((r, p) => r.FkWorkProcesses == p.Id)
+ xAxis.Data = Context
+ .Queryable()
+ .LeftJoin((r, p) => r.FkWorkProcesses == p.Id)
.Where((r, p) => p.Status == 1 && r.FkWorkRoute == 32)
.OrderBy((r, p) => p.Id)
.Select((r, p) => p.Name)
@@ -73,20 +99,31 @@ namespace DOAN.Service.MES.SmartScreen.Product
//获取各个工序今日累计报工值
EchartsSeries echartsSeries = new EchartsSeries();
echartsSeries.Name = "今日各个工序累计报工数";
- List Data = Context.Queryable()
+ List Data = Context
+ .Queryable()
.LeftJoin((it, w) => it.ProcessId == w.Id)
- .Where((it, w) => w.Status == 1 && it.JobDateTime >= DateTime.Today && it.JobDateTime <= DateTime.Today.AddDays(1))
+ .Where(
+ (it, w) =>
+ w.Status == 1
+ && it.JobDateTime >= DateTime.Today
+ && it.JobDateTime <= DateTime.Today.AddDays(1)
+ )
.GroupBy((it, w) => new { it.ProcessId, w.Name })
- .Select((it, w) => new EchartsSeriesData()
- {
- Name = w.Name,
- Value = SqlFunc.AggregateSum(it.FinishNum ?? 0)
- }).ToList();
+ .Select(
+ (it, w) =>
+ new EchartsSeriesData()
+ {
+ Name = w.Name,
+ Value = SqlFunc.AggregateSum(it.FinishNum ?? 0),
+ }
+ )
+ .ToList();
List NewData = new List();
foreach (var item in xAxis.Data)
{
-
- decimal value = Data.Where(it => it.Name == item).Select(it => it.Value).FirstOrDefault();
+ decimal value = Data.Where(it => it.Name == item)
+ .Select(it => it.Value)
+ .FirstOrDefault();
if (value == 0)
{
NewData.Add(new EchartsSeriesData() { Name = item, Value = 0 });
@@ -95,29 +132,37 @@ namespace DOAN.Service.MES.SmartScreen.Product
{
NewData.Add(new EchartsSeriesData() { Name = item, Value = value });
}
-
}
echartsSeries.Data = NewData;
echartsOptions.Series.Add(echartsSeries);
//获取各个工序今日累计计划值
EchartsSeries echartsSeries2 = new EchartsSeries();
echartsSeries2.Name = "今日各个工序累计计划数";
- List Data2 = Context.Queryable()
+ List Data2 = Context
+ .Queryable()
.LeftJoin((it, w) => it.ProcessId == w.Id)
- .Where((it, w) => w.Status == 1 && it.JobDateTime >= DateTime.Today && it.JobDateTime <= DateTime.Today.AddDays(1))
+ .Where(
+ (it, w) =>
+ w.Status == 1
+ && it.JobDateTime >= DateTime.Today
+ && it.JobDateTime <= DateTime.Today.AddDays(1)
+ )
.GroupBy((it, w) => new { it.ProcessId, w.Name })
- .Select((it, w) => new EchartsSeriesData()
- {
- Name = w.Name,
- Value = SqlFunc.AggregateSum(it.PlanNum ?? 0)
- }).ToList();
+ .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 BarProcessProductStatisticWeek()
{
// 获取当前时间
@@ -132,12 +177,13 @@ namespace DOAN.Service.MES.SmartScreen.Product
// 获取本周日午夜(实际上是下周一开始时间)
DateTime sundayMidnight = mondayMorning.AddDays(7);
-
EchartsOptions echartsOptions = new EchartsOptions();
echartsOptions.Title = new EchartsTitle("本周各工序产量统计", "本周各工序产量统计");
EchartsXAxis xAxis = new EchartsXAxis();
- xAxis.Data = Context.Queryable().LeftJoin((r, p) => r.FkWorkProcesses == p.Id)
+ xAxis.Data = Context
+ .Queryable()
+ .LeftJoin((r, p) => r.FkWorkProcesses == p.Id)
.Where((r, p) => r.FkWorkRoute == 32 && p.Status == 1)
.OrderBy((r, p) => p.Id)
.Select((r, p) => p.Name)
@@ -146,20 +192,31 @@ namespace DOAN.Service.MES.SmartScreen.Product
//获取各个工序今日累计报工值
EchartsSeries echartsSeries = new EchartsSeries();
echartsSeries.Name = "本周各个工序累计报工数";
- List Data = Context.Queryable()
+ List Data = Context
+ .Queryable()
.LeftJoin((it, w) => it.ProcessId == w.Id)
- .Where((it, w) => w.Status == 1 && it.JobDateTime >= mondayMorning && it.JobDateTime <= sundayMidnight)
+ .Where(
+ (it, w) =>
+ w.Status == 1
+ && 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();
+ .Select(
+ (it, w) =>
+ new EchartsSeriesData()
+ {
+ Name = w.Name,
+ Value = SqlFunc.AggregateSum(it.FinishNum ?? 0),
+ }
+ )
+ .ToList();
List NewData = new List();
foreach (var item in xAxis.Data)
{
-
- decimal value = Data.Where(it => it.Name == item).Select(it => it.Value).FirstOrDefault();
+ decimal value = Data.Where(it => it.Name == item)
+ .Select(it => it.Value)
+ .FirstOrDefault();
if (value == 0)
{
NewData.Add(new EchartsSeriesData() { Name = item, Value = 0 });
@@ -168,29 +225,37 @@ namespace DOAN.Service.MES.SmartScreen.Product
{
NewData.Add(new EchartsSeriesData() { Name = item, Value = value });
}
-
}
echartsSeries.Data = NewData;
echartsOptions.Series.Add(echartsSeries);
//获取各个工序今日累计计划值
EchartsSeries echartsSeries2 = new EchartsSeries();
echartsSeries2.Name = "本周各个工序累计计划数";
- List Data2 = Context.Queryable()
+ List Data2 = Context
+ .Queryable()
.LeftJoin((it, w) => it.ProcessId == w.Id)
- .Where((it, w) => w.Status == 1 && it.JobDateTime >= mondayMorning && it.JobDateTime <= sundayMidnight)
+ .Where(
+ (it, w) =>
+ w.Status == 1
+ && 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();
+ .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()
{
// 获取当前日期时间
@@ -203,12 +268,13 @@ namespace DOAN.Service.MES.SmartScreen.Product
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().LeftJoin((r, p) => r.FkWorkProcesses == p.Id)
+ xAxis.Data = Context
+ .Queryable()
+ .LeftJoin((r, p) => r.FkWorkProcesses == p.Id)
.Where((r, p) => p.Status == 1 && r.FkWorkRoute == 32)
.OrderBy((r, p) => p.Id)
.Select((r, p) => p.Name)
@@ -217,20 +283,31 @@ namespace DOAN.Service.MES.SmartScreen.Product
//获取各个工序今日累计报工值
EchartsSeries echartsSeries = new EchartsSeries();
echartsSeries.Name = "本月各个工序今日累计报工数";
- List Data = Context.Queryable()
+ List Data = Context
+ .Queryable()
.LeftJoin((it, w) => it.ProcessId == w.Id)
- .Where((it, w) => w.Status == 1 && it.JobDateTime >= firstDayOfMonth && it.JobDateTime <= lastDayOfMonth)
+ .Where(
+ (it, w) =>
+ w.Status == 1
+ && 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();
+ .Select(
+ (it, w) =>
+ new EchartsSeriesData()
+ {
+ Name = w.Name,
+ Value = SqlFunc.AggregateSum(it.FinishNum ?? 0),
+ }
+ )
+ .ToList();
List NewData = new List();
foreach (var item in xAxis.Data)
{
-
- decimal value = Data.Where(it => it.Name == item).Select(it => it.Value).FirstOrDefault();
+ decimal value = Data.Where(it => it.Name == item)
+ .Select(it => it.Value)
+ .FirstOrDefault();
if (value == 0)
{
NewData.Add(new EchartsSeriesData() { Name = item, Value = 0 });
@@ -239,27 +316,34 @@ namespace DOAN.Service.MES.SmartScreen.Product
{
NewData.Add(new EchartsSeriesData() { Name = item, Value = value });
}
-
}
echartsSeries.Data = NewData;
echartsOptions.Series.Add(echartsSeries);
//获取各个工序今日累计计划值
EchartsSeries echartsSeries2 = new EchartsSeries();
echartsSeries2.Name = "本月各个工序今日累计计划数";
- List Data2 = Context.Queryable()
+ List Data2 = Context
+ .Queryable()
.LeftJoin((it, w) => it.ProcessId == w.Id)
- .Where((it, w) => w.Status == 1 && it.JobDateTime >= firstDayOfMonth && it.JobDateTime <= lastDayOfMonth)
+ .Where(
+ (it, w) =>
+ w.Status == 1
+ && 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();
+ .Select(
+ (it, w) =>
+ new EchartsSeriesData()
+ {
+ Name = w.Name,
+ Value = SqlFunc.AggregateSum(it.PlanNum ?? 0),
+ }
+ )
+ .ToList();
// echartsSeries2.Data = Data2;
// echartsOptions.Series.Add(echartsSeries2);
-
-
return echartsOptions;
}
@@ -268,15 +352,18 @@ namespace DOAN.Service.MES.SmartScreen.Product
///
///
public EchartsOptions OutputOfCurrentmonth()
- { // 获取当前日期
+ { // 获取当前日期
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));
+ DateTime lastDayOfMonth = new DateTime(
+ today.Year,
+ today.Month,
+ DateTime.DaysInMonth(today.Year, today.Month)
+ );
EchartsOptions echartsOptions = new EchartsOptions();
EchartsTitle Title = new EchartsTitle("本月每天产量", "本月每天产量");
@@ -294,13 +381,11 @@ namespace DOAN.Service.MES.SmartScreen.Product
xAxis.Data = xData;
echartsOptions.XAxis = xAxis;
-
//折线系列
EchartsSeries LineSeries = new EchartsSeries();
LineSeries.Name = "本月每天产量";
LineSeries.Type = "line";
-
//var result = Context.Queryable()
// .LeftJoin((w, r) => w.Workorder == r.Workorder)
// .Where((w, r) =>r.ProcessId==70&&w.Status == 1 && w.WorkorderDate >= firstDayOfMonth && w.WorkorderDate <= lastDayOfMonth)
@@ -319,33 +404,46 @@ namespace DOAN.Service.MES.SmartScreen.Product
// Name = it.JobDateTime.Value.ToString("MM-dd"),// 获取日期部分
// Value = SqlFunc.AggregateSum(it.FinishNum ?? 0) // 聚合求和
// }).ToList();
- var result = Context.Queryable()
- .Where(it => it.ProcessId == 20 && it.JobDateTime >= firstDayOfMonth && it.JobDateTime <= lastDayOfMonth.AddDays(1))
- .GroupBy(it => SqlFunc.DateValue(it.JobDateTime ?? DateTime.MinValue, DateType.Day)) // 按天分组
- .Select(it => new
- {
- Name = SqlFunc.DateValue(it.JobDateTime ?? DateTime.MinValue, DateType.Day), // 获取日期部分
- Value = SqlFunc.AggregateSum(it.FinishNum ?? 0) // 聚合求和
- })
- .ToList();
+ var result = Context
+ .Queryable()
+ .Where(it =>
+ it.ProcessId == 20
+ && it.JobDateTime >= firstDayOfMonth
+ && it.JobDateTime <= lastDayOfMonth.AddDays(1)
+ )
+ .GroupBy(it => SqlFunc.DateValue(it.JobDateTime ?? DateTime.MinValue, DateType.Day)) // 按天分组
+ .Select(it => new
+ {
+ Name = SqlFunc.DateValue(it.JobDateTime ?? DateTime.MinValue, DateType.Day), // 获取日期部分
+ Value = SqlFunc.AggregateSum(it.FinishNum ?? 0), // 聚合求和
+ })
+ .ToList();
List LineSeriesData = new List();
foreach (var item in xData)
{
- LineSeriesData.Add(new EchartsSeriesData()
- {
- Name = item,
- Value = result.Where(it => it.Name==int.Parse (item)).Select(it => it.Value).FirstOrDefault(),
- });
+ LineSeriesData.Add(
+ new EchartsSeriesData()
+ {
+ Name = item,
+ Value = result
+ .Where(it => it.Name == int.Parse(item))
+ .Select(it => it.Value)
+ .FirstOrDefault(),
+ }
+ );
}
LineSeries.Data = LineSeriesData;
echartsOptions.Series = new List() { LineSeries };
-
// 各个组的产量系列
- string[] groupArray = Context.Queryable().Where(it => it.Status == 1).OrderBy(it => it.Id).Select(it => it.GroupCode)
+ string[] groupArray = Context
+ .Queryable()
+ .Where(it => it.Status == 1)
+ .OrderBy(it => it.Id)
+ .Select(it => it.GroupCode)
.ToArray();
if (groupArray.Length > 0)
{
@@ -361,18 +459,40 @@ namespace DOAN.Service.MES.SmartScreen.Product
// Value = SqlFunc.AggregateSum(r.FinishNum ?? 0)
// }).ToList();
-
- var GroupresultList = Context.Queryable().LeftJoin((r, w) => r.Workorder == w.Workorder)
+ var GroupresultList = Context
+ .Queryable()
+ .LeftJoin((r, w) => r.Workorder == w.Workorder)
.Where((r, w) => groupArray.Contains(w.GroupCode))
- .Where((r, w) => r.ProcessId == 20 && r.JobDateTime >= firstDayOfMonth && r.JobDateTime <= lastDayOfMonth.AddDays(1))
- .GroupBy((r, w) => new { w.GroupCode, Day = SqlFunc.DateValue(r.JobDateTime ?? DateTime.MinValue, DateType.Day) }) // 按天分组
- .Select((r, w) => new
- {
- groupCode = w.GroupCode,
- Name = SqlFunc.DateValue(r.JobDateTime ?? DateTime.MinValue, DateType.Day),// 获取日期部分
- Value = SqlFunc.AggregateSum(r.FinishNum ?? 0) // 聚合求和
- }).ToList();
-
+ .Where(
+ (r, w) =>
+ r.ProcessId == 20
+ && r.JobDateTime >= firstDayOfMonth
+ && r.JobDateTime <= lastDayOfMonth.AddDays(1)
+ )
+ .GroupBy(
+ (r, w) =>
+ new
+ {
+ w.GroupCode,
+ Day = SqlFunc.DateValue(
+ r.JobDateTime ?? DateTime.MinValue,
+ DateType.Day
+ ),
+ }
+ ) // 按天分组
+ .Select(
+ (r, w) =>
+ new
+ {
+ groupCode = w.GroupCode,
+ Name = SqlFunc.DateValue(
+ r.JobDateTime ?? DateTime.MinValue,
+ DateType.Day
+ ), // 获取日期部分
+ Value = SqlFunc.AggregateSum(r.FinishNum ?? 0), // 聚合求和
+ }
+ )
+ .ToList();
foreach (var group in groupArray)
{
@@ -380,16 +500,21 @@ namespace DOAN.Service.MES.SmartScreen.Product
groupSeries.Name = group + "组";
groupSeries.Type = "bar";
-
List LineSeriesData01 = new List();
foreach (var item in xData)
{
- LineSeriesData01.Add(new EchartsSeriesData()
- {
- Name = item,
- Value = GroupresultList.Where(it => it.Name ==int.Parse(item)).Where(it => it.groupCode == group).Select(it => it.Value).FirstOrDefault(),
- });
+ LineSeriesData01.Add(
+ new EchartsSeriesData()
+ {
+ Name = item,
+ Value = GroupresultList
+ .Where(it => it.Name == int.Parse(item))
+ .Where(it => it.groupCode == group)
+ .Select(it => it.Value)
+ .FirstOrDefault(),
+ }
+ );
}
groupSeries.Data = LineSeriesData01;
@@ -398,27 +523,30 @@ namespace DOAN.Service.MES.SmartScreen.Product
}
return echartsOptions;
-
}
-
public EchartsOptions AccumulatedReport()
{
EchartsOptions echartsOptions = new EchartsOptions();
- echartsOptions.Title = new EchartsTitle("昨日-今日各工序实时累计完工数折线图", "昨日-今日各工序实时累计完工数折线图");
+ echartsOptions.Title = new EchartsTitle(
+ "昨日-今日各工序实时累计完工数折线图",
+ "昨日-今日各工序实时累计完工数折线图"
+ );
//1.查询各个工序
- int[] processArray = Context.Queryable()
- .Where(it => it.JobDateTime > DateTime.Today && it.JobDateTime < DateTime.Today.AddDays(1))
- .OrderBy(it => it.ProcessId)
- .Select(it => it.ProcessId)
- .Distinct()
- .ToArray();
+ int[] processArray = Context
+ .Queryable()
+ .Where(it =>
+ it.JobDateTime > DateTime.Today && it.JobDateTime < DateTime.Today.AddDays(1)
+ )
+ .OrderBy(it => it.ProcessId)
+ .Select(it => it.ProcessId)
+ .Distinct()
+ .ToArray();
//1 X轴
List DateTimeArray = new List();
-
// 定义起始时间和结束时间
// 获取当前日期和时间
DateTime now = DateTime.Now;
@@ -427,22 +555,46 @@ namespace DOAN.Service.MES.SmartScreen.Product
DateTime yesterday = now.AddDays(-1);
// 设置时间为 20:00
- DateTime startTime = new DateTime(yesterday.Year, yesterday.Month, yesterday.Day, 20, 0, 0);
+ DateTime startTime = new DateTime(
+ yesterday.Year,
+ yesterday.Month,
+ yesterday.Day,
+ 20,
+ 0,
+ 0
+ );
//DateTime startTime = new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day., 8, 0, 0);
// DateTime startTime = DateTime.Today;
- DateTime endTime = new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day, 20, 0, 0); // 8 AM + 12 hours = 8 PM
+ DateTime endTime = new DateTime(
+ DateTime.Today.Year,
+ DateTime.Today.Month,
+ DateTime.Today.Day,
+ 20,
+ 0,
+ 0
+ ); // 8 AM + 12 hours = 8 PM
// 使用循环生成每30分钟的时间戳
- for (DateTime currentTime = startTime; currentTime <= endTime; currentTime = currentTime.AddMinutes(30))
+ for (
+ DateTime currentTime = startTime;
+ currentTime <= endTime;
+ currentTime = currentTime.AddMinutes(30)
+ )
{
DateTimeArray.Add(currentTime);
}
- List DateTimeArrayString = DateTimeArray.Select(it => it.ToString("dd-HH:mm")).ToList();
+ List DateTimeArrayString = DateTimeArray
+ .Select(it => it.ToString("dd-HH:mm"))
+ .ToList();
echartsOptions.XAxis = new EchartsXAxis() { Data = DateTimeArrayString };
//2 系列值-这组 今日实时累计完成数(每30分钟)
for (int i = 0; i < processArray.Length; i++)
{
- string ProcessName = Context.Queryable().Where(it => it.Id == processArray[i]).Select(it => it.Name).First();
+ string ProcessName = Context
+ .Queryable()
+ .Where(it => it.Id == processArray[i])
+ .Select(it => it.Name)
+ .First();
EchartsSeries echartsSeries = new EchartsSeries();
//echartsSeries.Name = ProcessName + "工序今日实时累计完成数(每10分钟)";
@@ -450,55 +602,67 @@ namespace DOAN.Service.MES.SmartScreen.Product
echartsSeries.Type = "line";
List echartsSeriesDatas = new List();
- string sql = "SELECT" +
- " FROM_UNIXTIME( FLOOR( UNIX_TIMESTAMP(job_datetime) / 600 ) * 600 ) AS time_period," +
- " SUM( finish_num ) AS count " +
- " FROM" +
- " pro_reportwork " +
- " WHERE" +
- " DATE(job_datetime) = CURDATE() AND @process_id=process_id " +
- " GROUP BY" +
- " FLOOR( UNIX_TIMESTAMP( job_datetime ) / 600 )" +
- " ORDER BY" +
- " time_period";
- string sql2 = "SELECT time_period, SUM(finish_num) AS count\r\nFROM (\r\n SELECT FROM_UNIXTIME( FLOOR( UNIX_TIMESTAMP( job_datetime ) / 600 ) * 600 ) AS time_period,\r\n finish_num\r\n FROM pro_reportwork\r\n WHERE DATE(job_datetime) = CURDATE() AND @process_id=process_id\r\n) AS subquery\r\nGROUP BY time_period\r\nORDER BY time_period";
- string sql3 = "SELECT time_period, SUM(finish_num) AS count\r\nFROM (\r\n SELECT FROM_UNIXTIME( FLOOR( UNIX_TIMESTAMP( job_datetime ) / 1800 ) * 1800 ) AS time_period,\r\n finish_num\r\n FROM pro_reportwork\r\n WHERE job_datetime>=@SearchDateTime01 AND job_datetime<=@SearchDateTime02 AND process_id=@process_id\r\n) AS subquery\r\nGROUP BY time_period\r\nORDER BY time_period";
+ string sql =
+ "SELECT"
+ + " FROM_UNIXTIME( FLOOR( UNIX_TIMESTAMP(job_datetime) / 600 ) * 600 ) AS time_period,"
+ + " SUM( finish_num ) AS count "
+ + " FROM"
+ + " pro_reportwork "
+ + " WHERE"
+ + " DATE(job_datetime) = CURDATE() AND @process_id=process_id "
+ + " GROUP BY"
+ + " FLOOR( UNIX_TIMESTAMP( job_datetime ) / 600 )"
+ + " ORDER BY"
+ + " time_period";
+ string sql2 =
+ "SELECT time_period, SUM(finish_num) AS count\r\nFROM (\r\n SELECT FROM_UNIXTIME( FLOOR( UNIX_TIMESTAMP( job_datetime ) / 600 ) * 600 ) AS time_period,\r\n finish_num\r\n FROM pro_reportwork\r\n WHERE DATE(job_datetime) = CURDATE() AND @process_id=process_id\r\n) AS subquery\r\nGROUP BY time_period\r\nORDER BY time_period";
+ string sql3 =
+ "SELECT time_period, SUM(finish_num) AS count\r\nFROM (\r\n SELECT FROM_UNIXTIME( FLOOR( UNIX_TIMESTAMP( job_datetime ) / 1800 ) * 1800 ) AS time_period,\r\n finish_num\r\n FROM pro_reportwork\r\n WHERE job_datetime>=@SearchDateTime01 AND job_datetime<=@SearchDateTime02 AND process_id=@process_id\r\n) AS subquery\r\nGROUP BY time_period\r\nORDER BY time_period";
- DataTable result = Context.Ado.GetDataTable(sql3, new { SearchDateTime01 = startTime, SearchDateTime02 = endTime, process_id = processArray[i], });
+ DataTable result = Context.Ado.GetDataTable(
+ sql3,
+ new
+ {
+ SearchDateTime01 = startTime,
+ SearchDateTime02 = endTime,
+ process_id = processArray[i],
+ }
+ );
int sum = 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;
+ DateTime value =
+ row["time_period"] != DBNull.Value
+ ? Convert.ToDateTime(row["time_period"])
+ : DateTime.MinValue;
int count = Convert.ToInt32(row["count"]);
sum = sum + count;
EchartsSeriesData echartsSeriesData = new EchartsSeriesData()
{
Name = value.ToString("dd-HH:mm"),
- Value = sum
+ Value = sum,
};
echartsSeriesDatas.Add(echartsSeriesData);
}
-
-
// 和X轴一 一对应
- int currentNum = Array.IndexOf(DateTimeArrayString.ToArray(), echartsSeriesDatas.Select(it => it.Name).LastOrDefault());
+ int currentNum = Array.IndexOf(
+ DateTimeArrayString.ToArray(),
+ echartsSeriesDatas.Select(it => it.Name).LastOrDefault()
+ );
for (int j = 0; j < currentNum; j++)
{
int point = 0;
foreach (var item in echartsSeriesDatas)
{
-
if (item.Name == DateTimeArrayString[j])
{
continue;
}
point++;
-
}
if (point == echartsSeriesDatas.Count())
@@ -507,26 +671,30 @@ namespace DOAN.Service.MES.SmartScreen.Product
decimal productNum = 0;
if (j >= 1)
{
- productNum = echartsSeriesDatas.Where(it => it.Name == DateTimeArrayString[j - 1]).Select(it => it.Value).FirstOrDefault();
+ productNum = echartsSeriesDatas
+ .Where(it => it.Name == DateTimeArrayString[j - 1])
+ .Select(it => it.Value)
+ .FirstOrDefault();
}
else
{
productNum = 0;
}
-
- echartsSeriesDatas.Add(new EchartsSeriesData() { Name = DateTimeArrayString[j], Value = productNum });
-
+ echartsSeriesDatas.Add(
+ new EchartsSeriesData()
+ {
+ Name = DateTimeArrayString[j],
+ Value = productNum,
+ }
+ );
}
}
echartsSeries.Data = echartsSeriesDatas.OrderBy(it => it.Name).ToList();
echartsOptions.Series.Add(echartsSeries);
-
}
-
return echartsOptions;
-
}
}
}
diff --git a/DOAN.Service/Mobile/ReportFlowService.cs b/DOAN.Service/Mobile/ReportFlowService.cs
index 93fecb7..e0eaf93 100644
--- a/DOAN.Service/Mobile/ReportFlowService.cs
+++ b/DOAN.Service/Mobile/ReportFlowService.cs
@@ -1,5 +1,7 @@
using System.Diagnostics;
using DOAN.Model;
+using DOAN.Model.BZFM;
+using DOAN.Model.BZFM.Dto;
using DOAN.Model.MES.base_;
using DOAN.Model.MES.base_.Dto;
using DOAN.Model.MES.order;
@@ -8,6 +10,7 @@ using DOAN.Model.Mobile.ReportFlow.Dto;
using DOAN.Model.Public;
using DOAN.Model.System;
using DOAN.Repository;
+using DOAN.Service.BZFM;
using DOAN.Service.Mobile.IService;
using DOAN.Service.Public.IPublicService;
using Infrastructure.Attribute;
@@ -48,7 +51,7 @@ public class ReportFlowService : BaseService, IReportFlowServic
}
///
- /// 首工序报工
+ /// 首工序报工(领料报工)
///
///
///
@@ -67,6 +70,7 @@ public class ReportFlowService : BaseService, IReportFlowServic
)
{
int result = 0;
+ // 是否首次提交
bool Exist = Context
.Queryable()
.Where(it => it.Workorder == workorder && it.ProcessId == processId)
@@ -96,6 +100,94 @@ public class ReportFlowService : BaseService, IReportFlowServic
.SetColumns(it => it.StoveCode == stove_code)
.SetColumns(it => it.FeedOrder == feed_order)
.ExecuteCommand();
+ //XXX 触发修改领料出库操作(上边代码先不动)
+ MmRecordOutbound outRecordbound = Context
+ .Queryable()
+ .Where(it => it.Workorder == workorder)
+ .First();
+ // 为空时依旧触发新建物料操作
+ ProWorkorder proWorkorder = Context
+ .Queryable()
+ .Where(it => it.Workorder == workorder)
+ .First();
+ if (proWorkorder == null)
+ {
+ throw new Exception($"工单异常,原材料无法出库:{workorder}");
+ }
+ if (outRecordbound == null)
+ {
+ OutboundReceiptDto revokeRecepitDto = new()
+ {
+ ReceiptType = 1,
+ MaterialCode = proWorkorder.MaterialCode,
+ BatchNo = feed_order,
+ LocationCode = "YCL001",
+ WarehouseCode = "WH003",
+ OrderNo = proWorkorder.CustomerOrder,
+ Workorder = workorder,
+ Operator = Worker,
+ Quantity = finish_num,
+ TransactionType = "领料出库",
+ Remarks = $"生产领料,工单号:{workorder}",
+ };
+ MmInventoryService mmInventoryService = new();
+ string createReceiptresult = mmInventoryService.CreateOutboundReceipt(
+ revokeRecepitDto
+ );
+ }
+ else
+ {
+ // 否则触发修改操作
+ // 检查物料是否发生变动
+ bool isUpdate = outRecordbound.Quantity != finish_num;
+ if (isUpdate)
+ {
+ // 检查是增加了还是减少了
+ bool isAdd = (finish_num - outRecordbound.Quantity) > 0;
+ if (isAdd)
+ {
+ OutboundReceiptDto revokeRecepitDto = new()
+ {
+ ReceiptType = 1,
+ MaterialCode = proWorkorder.MaterialCode,
+ BatchNo = feed_order,
+ LocationCode = "YCL001",
+ WarehouseCode = "WH003",
+ OrderNo = proWorkorder.CustomerOrder,
+ Workorder = workorder,
+ Operator = Worker,
+ Quantity = finish_num,
+ TransactionType = "领料出库",
+ Remarks = $"生产领料,数额调整,工单号:{workorder}",
+ };
+ MmInventoryService mmInventoryService = new();
+ string createReceiptresult = mmInventoryService.CreateOutboundReceipt(
+ revokeRecepitDto
+ );
+ }
+ else
+ {
+ OutboundReceiptDto revokeRecepitDto = new()
+ {
+ ReceiptType = 2,
+ MaterialCode = proWorkorder.MaterialCode,
+ BatchNo = feed_order,
+ LocationCode = "YCL001",
+ WarehouseCode = "WH003",
+ OrderNo = proWorkorder.CustomerOrder,
+ Workorder = workorder,
+ Operator = Worker,
+ Quantity = finish_num,
+ TransactionType = "出库红单",
+ Remarks = $"生产领料,数额调整,工单号:{workorder}",
+ };
+ MmInventoryService mmInventoryService = new();
+ string createReceiptresult = mmInventoryService.CreateOutboundReceipt(
+ revokeRecepitDto
+ );
+ }
+ }
+ }
}
else
{
@@ -116,10 +208,45 @@ public class ReportFlowService : BaseService, IReportFlowServic
.SetColumns(it => it.StoveCode == stove_code)
.SetColumns(it => it.FeedOrder == feed_order)
.ExecuteCommand();
+ //XXX 触发创建领料出库单操作(上边代码先不动)
+ // 做原材料库出库操作
+ ProWorkorder proWorkorder = Context
+ .Queryable()
+ .Where(it => it.Workorder == workorder)
+ .First();
+ if (proWorkorder == null)
+ {
+ throw new Exception($"工单异常,原材料无法出库:{workorder}");
+ }
+ OutboundReceiptDto revokeRecepitDto = new()
+ {
+ ReceiptType = 1,
+ MaterialCode = proWorkorder.MaterialCode,
+ BatchNo = feed_order,
+ LocationCode = "YCL001",
+ WarehouseCode = "WH003",
+ OrderNo = proWorkorder.CustomerOrder,
+ Workorder = workorder,
+ Operator = Worker,
+ Quantity = finish_num,
+ TransactionType = "领料出库",
+ Remarks = $"生产领料,工单号:{workorder}",
+ };
+ MmInventoryService mmInventoryService = new();
+ string createReceiptresult = mmInventoryService.CreateOutboundReceipt(revokeRecepitDto);
}
return result > 0;
}
+ ///
+ /// 普通工序报工
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
public bool ProcessReportWork(
string workorder,
int process,
@@ -168,6 +295,41 @@ public class ReportFlowService : BaseService, IReportFlowServic
proReportwork01.CreatedTime = DateTime.Now;
result = Context.Insertable(proReportwork01).ExecuteCommand();
}
+
+ // XXX TODO 成品入库(临时使用)
+
+ if (process == 70)
+ {
+ // 成品入库
+ ProWorkorder proWorkorder = Context
+ .Queryable()
+ .Where(it => it.Workorder == workorder)
+ .First();
+ if (proWorkorder == null)
+ {
+ throw new Exception($"工单异常,无法成品入库:{workorder}");
+ }
+
+ //做出库红单
+ InboundReceiptDto revokeRecepitDto = new()
+ {
+ ReceiptType = 1,
+ MaterialCode = proWorkorder.productionCode,
+ BatchNo = proWorkorder.FeedOrder,
+ LocationCode = "CP001",
+ WarehouseCode = "WH001",
+ SupplierCode = "",
+ StoveCode = proWorkorder.StoveCode,
+ Workorder = workorder,
+ Operator = Worker,
+ Quantity = finish_num,
+ TransactionType = "生产入库",
+ Remarks = $"成品入库,工单号:{workorder}",
+ };
+ MmInventoryService mmInventoryService = new();
+ string createReceiptresult = mmInventoryService.CreateInboundReceipt(revokeRecepitDto);
+ }
+
return result > 0;
}
@@ -205,18 +367,17 @@ public class ReportFlowService : BaseService, IReportFlowServic
return 2;
}
// 判断工单是否存在
- ProWorkorder workorderInfo =
- Context
- .Queryable()
- .Where(it => it.Workorder == workorder)
- .First();
+ ProWorkorder workorderInfo = Context
+ .Queryable()
+ .Where(it => it.Workorder == workorder)
+ .First();
if (workorderInfo == null)
{
// 工单不存在
return 4;
}
// 判断工单主体型号和订单物料号是否匹配
- if(workorderInfo.productionCode != orderPurchase.MaterialCode)
+ if (workorderInfo.productionCode != orderPurchase.MaterialCode)
{
return 5;
}
@@ -240,21 +401,39 @@ public class ReportFlowService : BaseService, IReportFlowServic
if (ReportWorkOrderDetail == null)
{
// 新增
- ProReportwork01 proReportwork01 =
- new()
- {
- Id = XueHua,
- Workorder = workorder,
- ProcessId = processId,
- FinishNum = finish_num,
- BadNum = bad_num,
- Worker = Worker,
- RouteId = 32,
- JobDateTime = DateTime.Now,
- CreatedBy = Worker,
- CreatedTime = DateTime.Now
- };
+ ProReportwork01 proReportwork01 = new()
+ {
+ Id = XueHua,
+ Workorder = workorder,
+ ProcessId = processId,
+ FinishNum = finish_num,
+ BadNum = bad_num,
+ Worker = Worker,
+ RouteId = 32,
+ JobDateTime = DateTime.Now,
+ CreatedBy = Worker,
+ CreatedTime = DateTime.Now,
+ };
result = Context.Insertable(proReportwork01).ExecuteCommand();
+ // XXX 成品库出库
+ OutboundReceiptDto revokeRecepitDto = new()
+ {
+ ReceiptType = 1,
+ MaterialCode = workorderInfo.productionCode,
+ BatchNo = workorderInfo.FeedOrder,
+ LocationCode = "CP001",
+ WarehouseCode = "WH001",
+ OrderNo = customer_order,
+ Workorder = workorder,
+ Operator = Worker,
+ Quantity = finish_num,
+ TransactionType = "出货出库",
+ Remarks = $"出货出库,工单号:{workorder},订单号{customer_order}",
+ };
+ MmInventoryService mmInventoryService = new();
+ string createReceiptresult = mmInventoryService.CreateOutboundReceipt(
+ revokeRecepitDto
+ );
}
else
{
@@ -265,6 +444,86 @@ public class ReportFlowService : BaseService, IReportFlowServic
ReportWorkOrderDetail.UpdatedBy = Worker;
ReportWorkOrderDetail.UpdatedTime = DateTime.Now;
result = Context.Updateable(ReportWorkOrderDetail).ExecuteCommand();
+ //XXX 修改成品库出库
+ MmRecordOutbound outRecordbound = Context
+ .Queryable()
+ .Where(it => it.Workorder == workorder)
+ .First();
+ if (outRecordbound == null)
+ {
+ OutboundReceiptDto revokeRecepitDto = new()
+ {
+ ReceiptType = 1,
+ MaterialCode = workorderInfo.productionCode,
+ BatchNo = workorderInfo.FeedOrder,
+ LocationCode = "CP001",
+ WarehouseCode = "WH001",
+ OrderNo = customer_order,
+ Workorder = workorder,
+ Operator = Worker,
+ Quantity = finish_num,
+ TransactionType = "出货出库",
+ Remarks = $"出货出库,工单号:{workorder},订单号{customer_order}",
+ };
+ MmInventoryService mmInventoryService = new();
+ string createReceiptresult = mmInventoryService.CreateOutboundReceipt(
+ revokeRecepitDto
+ );
+ }
+ else
+ {
+ // 否则触发修改操作
+ // 检查物料是否发生变动
+ bool isUpdate = outRecordbound.Quantity != finish_num;
+ if (isUpdate)
+ {
+ // 检查是增加了还是减少了
+ bool isAdd = (finish_num - outRecordbound.Quantity) > 0;
+ if (isAdd)
+ {
+ OutboundReceiptDto revokeRecepitDto = new()
+ {
+ ReceiptType = 1,
+ MaterialCode = workorderInfo.productionCode,
+ BatchNo = workorderInfo.FeedOrder,
+ LocationCode = "CP001",
+ WarehouseCode = "WH001",
+ OrderNo = customer_order,
+ Workorder = workorder,
+ Operator = Worker,
+ Quantity = finish_num,
+ TransactionType = "出货出库",
+ Remarks =
+ $"出货出库,数额调整,工单号:{workorder},订单号{customer_order}",
+ };
+ MmInventoryService mmInventoryService = new();
+ string createReceiptresult = mmInventoryService.CreateOutboundReceipt(
+ revokeRecepitDto
+ );
+ }
+ else
+ {
+ OutboundReceiptDto revokeRecepitDto = new()
+ {
+ ReceiptType = 2,
+ MaterialCode = workorderInfo.productionCode,
+ BatchNo = workorderInfo.FeedOrder,
+ LocationCode = "CP001",
+ WarehouseCode = "WH001",
+ OrderNo = customer_order,
+ Workorder = workorder,
+ Operator = Worker,
+ Quantity = finish_num,
+ TransactionType = "出库红单",
+ Remarks = $"出货出库,数额调整,工单号:{workorder}",
+ };
+ MmInventoryService mmInventoryService = new();
+ string createReceiptresult = mmInventoryService.CreateOutboundReceipt(
+ revokeRecepitDto
+ );
+ }
+ }
+ }
}
// 修改工单信息
Context
@@ -278,7 +537,8 @@ public class ReportFlowService : BaseService, IReportFlowServic
Context
.Queryable()
.Where(it => it.CustomerOrder == customer_order)
- .Sum(it => it.ShipmentNum) ?? 0;
+ .Sum(it => it.ShipmentNum)
+ ?? 0;
orderPurchase.DeliveryQuantity = newQuantity;
if (orderPurchase.DeliveryQuantity > orderPurchase.DemandQuantity)
{
@@ -312,7 +572,7 @@ public class ReportFlowService : BaseService, IReportFlowServic
.LeftJoin((rw, wp) => rw.ProcessId == wp.Id)
.Where((rw, wp) => rw.Workorder == workorder)
.OrderBy(rw => rw.ProcessId)
- .Select((rw, wp) => new ProReportWorkDetialDto() { ProcessName = wp.Name, }, true)
+ .Select((rw, wp) => new ProReportWorkDetialDto() { ProcessName = wp.Name }, true)
.ToList();
}
@@ -335,7 +595,7 @@ public class ReportFlowService : BaseService, IReportFlowServic
&& rw.JobDateTime < DateTime.Today.AddDays(1)
)
.OrderBy(rw => rw.ProcessId)
- .Select((rw, wp) => new ProReportWorkDetialDto() { ProcessName = wp.Name, }, true)
+ .Select((rw, wp) => new ProReportWorkDetialDto() { ProcessName = wp.Name }, true)
.ToPage_NO_Convert(query);
}
@@ -362,7 +622,7 @@ public class ReportFlowService : BaseService, IReportFlowServic
&& rw.JobDateTime < DateTime.Today.AddDays(1)
)
.OrderBy(rw => rw.ProcessId)
- .Select((rw, wp) => new ProReportWorkDetialDto() { ProcessName = wp.Name, }, true)
+ .Select((rw, wp) => new ProReportWorkDetialDto() { ProcessName = wp.Name }, true)
.ToPage_NO_Convert(query);
}
}