今日各工序实时累计完工数折线图

This commit is contained in:
qianhao.xu
2024-12-23 17:09:35 +08:00
parent 2d91318931
commit 2ef2cfe58a
3 changed files with 83 additions and 2 deletions

View File

@@ -71,6 +71,16 @@ namespace DOAN.Admin.WebApi.Controllers.MES.SmartScreen.Product
}
//TODO 今天各工序(人)的累计完工数
[HttpGet("accumulatedreport")]
public IActionResult AccumulatedReport()
{
var response = _productSmartScreenService.AccumulatedReport();
return SUCCESS(response);
}
}

View File

@@ -19,5 +19,7 @@ namespace DOAN.Service.MES.SmartScreen.Product.IService
EchartsOptions OutputOfCurrentmonth();
EchartsOptions AccumulatedReport();
}
}

View File

@@ -12,6 +12,7 @@ using DOAN.Model.MES.SmartScreen;
using Microsoft.Data.SqlClient;
using DOAN.Model.MES.base_;
using MathNet.Numerics;
using System.Data;
namespace DOAN.Service.MES.SmartScreen.Product
{
@@ -45,7 +46,7 @@ namespace DOAN.Service.MES.SmartScreen.Product
.Where(it => it.ProcessId == 90).Sum(it => it.FinishNum??0);
digital.GroupQuantity=Context.Queryable<ProWorkorder>().Where(it => it.WorkorderDate == DateTime.Today).GroupBy(it=>it.GroupCode).Count();
digital.GroupQuantity=Context.Queryable<ProWorkorder>().Where(it => it.WorkorderDate == DateTime.Today).Select(it=>it.GroupCode).MergeTable().Distinct().Count();
return digital;
@@ -127,7 +128,7 @@ namespace DOAN.Service.MES.SmartScreen.Product
echartsSeries.Name = "本周各个工序累计报工数";
List<EchartsSeriesData> Data = Context.Queryable<ProReportwork01>()
.LeftJoin<BaseWorkProcesses>((it, w) => it.ProcessId == w.Id)
.Where((it, w) => 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()
{
@@ -314,6 +315,74 @@ namespace DOAN.Service.MES.SmartScreen.Product
}
}
return echartsOptions;
}
public EchartsOptions AccumulatedReport()
{
EchartsOptions echartsOptions = new EchartsOptions();
echartsOptions.Title = new EchartsTitle("今日各工序实时累计完工数折线图", "今日各工序实时累计完工数折线图");
//1.查询各个工序
int[] processArray= Context.Queryable<ProReportwork01>()
.Where(it => it.JobDateTime > DateTime.Today && it.JobDateTime < DateTime.Today.AddDays(1))
.Select(it => it.ProcessId)
.Distinct()
.ToArray();
//2 系列值-这组 今日实时累计完成数每10分钟
for(int i=0;i<processArray.Length;i++)
{
string ProcessName= Context.Queryable<BaseWorkProcesses>().Where(it => it.Id == processArray[i]).Select(it => it.Name).First();
EchartsSeries echartsSeries = new EchartsSeries();
echartsSeries.Name = ProcessName + "工序今日实时累计完成数每10分钟";
echartsSeries.Type = "line";
List<EchartsSeriesData> echartsSeriesDatas = new List<EchartsSeriesData>();
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";
DataTable result = Context.Ado.GetDataTable(sql, new { 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;
int count = Convert.ToInt32(row["count"]);
sum = sum + count;
EchartsSeriesData echartsSeriesData = new EchartsSeriesData()
{
Name = value.ToString("HH:mm"),
Value = sum
};
echartsSeriesDatas.Add(echartsSeriesData);
}
echartsSeries.Data = echartsSeriesDatas.OrderBy(it => it.Name).ToList();
echartsOptions.XAxis = new EchartsXAxis() { Data = echartsSeriesDatas.Select(it => it.Name).ToList() };
echartsOptions.Series.Add(echartsSeries);
}
return echartsOptions;
}