本月每天产量
This commit is contained in:
parent
37146621c1
commit
54e920680d
@ -35,6 +35,25 @@ namespace DOAN.Admin.WebApi.Controllers.MES.SmartScreen.Product
|
||||
|
||||
}
|
||||
|
||||
//TODO 今日 各工序产量统计
|
||||
[HttpGet("BarProcessProductStatistic")]
|
||||
public IActionResult BarProcessProductStatistic()
|
||||
{
|
||||
var response = _productSmartScreenService.BarProcessProductStatistic();
|
||||
|
||||
return SUCCESS(response);
|
||||
}
|
||||
|
||||
|
||||
//TODO 本月产量 折线图
|
||||
//本月每天产量
|
||||
[HttpGet("outputOfCurrentmonth")]
|
||||
public IActionResult OutputOfCurrentmonth()
|
||||
{
|
||||
var response = _productSmartScreenService.OutputOfCurrentmonth();
|
||||
return SUCCESS(response);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
using DOAN.Model.Mobile.ReportFlow.Dto;
|
||||
using DOAN.Service.Mobile.IService;
|
||||
using Infrastructure.Converter;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
@ -77,6 +78,9 @@ public class ReportFlowController : BaseController
|
||||
}
|
||||
return ToResponse(ResultCode.SUCCESS,_reportFlowService.GetProcessReportWorkDetail(workorder, processId));
|
||||
}
|
||||
|
||||
|
||||
|
||||
//TODO 领料工序
|
||||
[HttpGet("feed_process_reportwork")]
|
||||
public IActionResult FeedProcessReportwork(string workorder, int processId, int finish_num,string stove_code,string feed_order,string process_operator)
|
||||
@ -100,14 +104,14 @@ public class ReportFlowController : BaseController
|
||||
/// <returns></returns>
|
||||
/// <exception cref="CustomException"></exception>
|
||||
[HttpGet("process_reportwork")]
|
||||
public IActionResult ProcessReportWork(string workorder, int processId, int finish_num,int bad_num,string process_operator)
|
||||
public IActionResult ProcessReportWork([FromQuery]ProReportWorkDto proReportWorkDto)
|
||||
{
|
||||
if (string.IsNullOrEmpty(workorder))
|
||||
if (string.IsNullOrEmpty(proReportWorkDto.workorder))
|
||||
{
|
||||
throw new CustomException("workorder or process is null");
|
||||
}
|
||||
|
||||
return SUCCESS(_reportFlowService.ProcessReportWork(workorder, processId, finish_num,bad_num, process_operator));
|
||||
return SUCCESS(_reportFlowService.ProcessReportWork(proReportWorkDto.workorder, proReportWorkDto. processId, proReportWorkDto.finish_num, proReportWorkDto.bad_num, proReportWorkDto.process_operator));
|
||||
}
|
||||
|
||||
//TODO 出货工序
|
||||
|
||||
@ -8,7 +8,7 @@ namespace DOAN.Model.BZFM.Dto
|
||||
{
|
||||
public string Workorder { get; set; }
|
||||
|
||||
public string RouteCode { get; set; }
|
||||
public string RouteId { get; set; }
|
||||
|
||||
public int ProcessId { get; set; }
|
||||
|
||||
@ -27,7 +27,7 @@ namespace DOAN.Model.BZFM.Dto
|
||||
|
||||
public string Workorder { get; set; }
|
||||
|
||||
public string RouteCode { get; set; }
|
||||
public string RouteId { get; set; }
|
||||
|
||||
public int ProcessId { get; set; }
|
||||
public string ProcessName { get; set; }
|
||||
@ -40,7 +40,7 @@ namespace DOAN.Model.BZFM.Dto
|
||||
|
||||
public string Worker { get; set; }
|
||||
|
||||
public DateTime? JobDate { get; set; }
|
||||
public DateTime? JobDateTime { get; set; }
|
||||
|
||||
public string Remark { get; set; }
|
||||
|
||||
|
||||
@ -21,8 +21,8 @@ namespace DOAN.Model.MES.product
|
||||
/// <summary>
|
||||
/// 路线code
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "route_code")]
|
||||
public string RouteCode { get; set; }
|
||||
[SugarColumn(ColumnName = "route_id")]
|
||||
public int RouteId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 工序id
|
||||
@ -56,8 +56,8 @@ namespace DOAN.Model.MES.product
|
||||
/// <summary>
|
||||
/// 作业日期
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "job_date")]
|
||||
public DateTime? JobDate { get; set; }
|
||||
[SugarColumn(ColumnName = "job_datetime")]
|
||||
public DateTime? JobDateTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 备注
|
||||
|
||||
17
DOAN.Model/Mobile/ReportFlow/Dto/ProReportWorkDto.cs
Normal file
17
DOAN.Model/Mobile/ReportFlow/Dto/ProReportWorkDto.cs
Normal file
@ -0,0 +1,17 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DOAN.Model.Mobile.ReportFlow.Dto
|
||||
{
|
||||
public class ProReportWorkDto
|
||||
{
|
||||
public string workorder { get; set; }
|
||||
public int processId { get; set; }
|
||||
public int finish_num { get; set; }
|
||||
public int bad_num { get; set; }
|
||||
public string process_operator { get; set; }
|
||||
}
|
||||
}
|
||||
@ -1,98 +0,0 @@
|
||||
using Newtonsoft.Json.Converters;
|
||||
|
||||
namespace DOAN.Model.mes.echarts
|
||||
{
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// echarts 通用Options返回值
|
||||
/// </summary>
|
||||
public class EchartsOptions
|
||||
{
|
||||
public EchartsTitle Title { get; set; } = null;
|
||||
public EchartsXAxis XAxis { get; set; } = null;
|
||||
public EchartsYAxis YAxis { get; set; } = null;
|
||||
public List<EchartsSeries> Series { get; set; } = new List<EchartsSeries>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// echarts图表标题
|
||||
///</summary>
|
||||
public class EchartsTitle
|
||||
{
|
||||
public EchartsTitle(string Text,string SubText)
|
||||
{
|
||||
this.Text = Text;
|
||||
this.SubText = SubText;
|
||||
}
|
||||
|
||||
public EchartsTitle(){}
|
||||
public string Text { get; set; } = string.Empty;
|
||||
public string SubText { get; set; } = string.Empty;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// echarts X轴
|
||||
///</summary>
|
||||
public class EchartsXAxis
|
||||
{
|
||||
public List<string> Data { get; set; } = new List<string>();
|
||||
// public string[] Data { get; set; } =Array.Empty<string>();
|
||||
|
||||
// value 数值轴,适用于连续数据 category 类目轴,适用于离散的类目数据 time 时间轴,适用于连续的时序数据 log 对数轴。适用于对数数据
|
||||
public string Type { get; set; } = "category";
|
||||
public string Max { get; set; }
|
||||
public string Min { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// echarts Y轴
|
||||
///</summary>
|
||||
public class EchartsYAxis
|
||||
{
|
||||
public List<string> Data { get; set; } = new List<string>();
|
||||
|
||||
// value 数值轴,适用于连续数据 category 类目轴,适用于离散的类目数据 time 时间轴,适用于连续的时序数据 log 对数轴。适用于对数数据
|
||||
public string Type { get; set; } = "category";
|
||||
public string Max { get; set; }
|
||||
public string Min { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// echarts图表series返回值
|
||||
///</summary>
|
||||
public class EchartsSeries
|
||||
{
|
||||
/// <summary>
|
||||
/// 标签名称
|
||||
/// </summary>
|
||||
public string Name { get; set; } = "category";
|
||||
|
||||
/// <summary>
|
||||
/// bar-柱状图 line-折线图 EchartsSeriesType enum结构
|
||||
/// </summary>
|
||||
public string Type { get; set; } = "bar";
|
||||
|
||||
/// <summary>
|
||||
/// 参数值
|
||||
/// </summary>
|
||||
public List<EchartsSeriesData> Data { get; set; } = new List<EchartsSeriesData>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// echarts图表series返回值内容
|
||||
///</summary>
|
||||
public class EchartsSeriesData
|
||||
{
|
||||
/// <summary>
|
||||
/// 标签名称
|
||||
/// </summary>
|
||||
public string Name { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 参数值
|
||||
/// </summary>
|
||||
public decimal Value { get; set; } = new decimal();
|
||||
}
|
||||
}
|
||||
@ -1,4 +1,5 @@
|
||||
using DOAN.Model.MES.product;
|
||||
using DOAN.Model.MES.SmartScreen;
|
||||
using DOAN.Model.MES.SmartScreen.Product;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
@ -12,5 +13,9 @@ namespace DOAN.Service.MES.SmartScreen.Product.IService
|
||||
{
|
||||
DigitalTurntableModel DigitalTurntable();
|
||||
|
||||
EchartsOptions BarProcessProductStatistic();
|
||||
|
||||
EchartsOptions OutputOfCurrentmonth();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -8,6 +8,9 @@ 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_;
|
||||
|
||||
namespace DOAN.Service.MES.SmartScreen.Product
|
||||
{
|
||||
@ -46,5 +49,158 @@ namespace DOAN.Service.MES.SmartScreen.Product
|
||||
|
||||
return digital;
|
||||
}
|
||||
|
||||
|
||||
public EchartsOptions BarProcessProductStatistic()
|
||||
{
|
||||
EchartsOptions echartsOptions = new EchartsOptions();
|
||||
echartsOptions.Title = new EchartsTitle("今日各工序产量统计", "今日各工序产量统计");
|
||||
EchartsXAxis xAxis = new EchartsXAxis();
|
||||
|
||||
xAxis.Data = Context.Queryable<BaseRelWorkRouteProcesses>().LeftJoin<BaseWorkProcesses>((r, p) => r.FkWorkProcesses == p.Id)
|
||||
.Where((r, p) => r.FkWorkRoute == 32)
|
||||
.OrderBy((r, p) => p.Id)
|
||||
.Select((r, p) => p.Name)
|
||||
.ToList();
|
||||
echartsOptions.XAxis=xAxis;
|
||||
//获取各个工序今日累计报工值
|
||||
EchartsSeries echartsSeries = new EchartsSeries();
|
||||
echartsSeries.Name = "今日各个工序今日累计报工数";
|
||||
List<EchartsSeriesData> Data = Context.Queryable<ProReportwork01>()
|
||||
.LeftJoin<BaseWorkProcesses>((it,w)=>it.ProcessId==w.Id)
|
||||
.Where((it, w) => 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();
|
||||
echartsSeries.Data = Data;
|
||||
echartsOptions.Series.Add(echartsSeries);
|
||||
//获取各个工序今日累计计划值
|
||||
EchartsSeries echartsSeries2 = new EchartsSeries();
|
||||
echartsSeries2.Name = "今日各个工序今日累计计划数";
|
||||
List<EchartsSeriesData> Data2 = Context.Queryable<ProReportwork01>()
|
||||
.LeftJoin<BaseWorkProcesses>((it, w) => it.ProcessId == w.Id)
|
||||
.Where((it, w) => 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();
|
||||
echartsSeries2.Data = Data2;
|
||||
echartsOptions.Series.Add(echartsSeries2);
|
||||
|
||||
|
||||
|
||||
return echartsOptions;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 本月每天产量
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
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));
|
||||
|
||||
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("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<ProReportwork01>((w, r) => w.Workorder == r.Workorder)
|
||||
.Where((w, r) => w.WorkorderDate >= firstDayOfMonth && w.WorkorderDate <= lastDayOfMonth)
|
||||
.GroupBy((w, r) => w.WorkorderDate)
|
||||
.Select((w, r) => new EchartsSeriesData()
|
||||
{
|
||||
Name = w.WorkorderDate.Value.ToString("MM-dd"),
|
||||
Value = SqlFunc.AggregateSum(r.FinishNum ?? 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("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;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -58,6 +58,7 @@ public class ReportFlowService : BaseService<ProReportwork01>, IReportFlowServic
|
||||
.SetColumns(it => it.FinishNum == finish_num)
|
||||
.SetColumns(it => it.Worker == Worker)
|
||||
.SetColumns(it => it.JobDate == DateTime.Now)
|
||||
.SetColumns(it => it.RouteId == 32)
|
||||
.SetColumns(it => it.UpdatedBy == Worker)
|
||||
.SetColumns(it => it.UpdatedTime == DateTime.Now)
|
||||
.ExecuteCommand();
|
||||
@ -73,7 +74,7 @@ public class ReportFlowService : BaseService<ProReportwork01>, IReportFlowServic
|
||||
proReportwork01.Workorder = workorder;
|
||||
proReportwork01.ProcessId = processId;
|
||||
proReportwork01.FinishNum = finish_num;
|
||||
|
||||
proReportwork01.RouteId = 32;
|
||||
proReportwork01.Worker = Worker;
|
||||
proReportwork01.JobDate = DateTime.Now;
|
||||
proReportwork01.CreatedBy = Worker;
|
||||
@ -100,6 +101,7 @@ public class ReportFlowService : BaseService<ProReportwork01>, IReportFlowServic
|
||||
.SetColumns(it => it.FinishNum == finish_num)
|
||||
.SetColumns(it => it.BadNum == bad_num)
|
||||
.SetColumns(it => it.Worker == Worker)
|
||||
.SetColumns(it => it.RouteId == 32)
|
||||
.SetColumns(it => it.JobDate == DateTime.Now)
|
||||
.SetColumns(it => it.UpdatedBy == Worker)
|
||||
.SetColumns(it => it.UpdatedTime == DateTime.Now)
|
||||
@ -115,6 +117,7 @@ public class ReportFlowService : BaseService<ProReportwork01>, IReportFlowServic
|
||||
proReportwork01.FinishNum = finish_num;
|
||||
proReportwork01.BadNum = bad_num;
|
||||
proReportwork01.Worker = Worker;
|
||||
proReportwork01.RouteId = 32;
|
||||
proReportwork01.JobDate = DateTime.Now;
|
||||
proReportwork01.CreatedBy = Worker;
|
||||
proReportwork01.CreatedTime = DateTime.Now;
|
||||
@ -145,6 +148,7 @@ public class ReportFlowService : BaseService<ProReportwork01>, IReportFlowServic
|
||||
result = Context.Updateable<ProReportwork01>()
|
||||
.Where(it => it.Workorder == workorder && it.ProcessId == processId)
|
||||
.SetColumns(it => it.FinishNum == finish_num)
|
||||
.SetColumns(it => it.RouteId == 32)
|
||||
.SetColumns(it => it.BadNum == bad_num)
|
||||
.SetColumns(it => it.Worker == Worker)
|
||||
.SetColumns(it => it.JobDate == DateTime.Now)
|
||||
@ -165,6 +169,7 @@ public class ReportFlowService : BaseService<ProReportwork01>, IReportFlowServic
|
||||
proReportwork01.FinishNum = finish_num;
|
||||
proReportwork01.BadNum = bad_num;
|
||||
proReportwork01.Worker = Worker;
|
||||
proReportwork01.RouteId = 32;
|
||||
proReportwork01.JobDate = DateTime.Now;
|
||||
proReportwork01.CreatedBy = Worker;
|
||||
proReportwork01.CreatedTime = DateTime.Now;
|
||||
@ -211,13 +216,13 @@ public class ReportFlowService : BaseService<ProReportwork01>, IReportFlowServic
|
||||
public List<BaseWorkProcessesDto> GetProcessByRoute(int route_id)
|
||||
{
|
||||
|
||||
return Context.Queryable<BaseRelWorkRouteProcesses>()
|
||||
.LeftJoin<BaseWorkProcesses>((rel, pro) => rel.FkWorkProcesses == pro.Id)
|
||||
.Where((rel, pro) => rel.FkWorkRoute == route_id)
|
||||
.Select((rel, pro) => pro)
|
||||
.ToList()
|
||||
.Adapt<List<BaseWorkProcesses>, List<BaseWorkProcessesDto>>();
|
||||
|
||||
return Context.Queryable<BaseRelWorkRouteProcesses>()
|
||||
.LeftJoin<BaseWorkProcesses>((rel, pro) => rel.FkWorkProcesses == pro.Id)
|
||||
.Where((rel, pro) => rel.FkWorkRoute == route_id)
|
||||
.Select((rel, pro) => pro)
|
||||
.ToList()
|
||||
.Adapt<List<BaseWorkProcesses>, List<BaseWorkProcessesDto>>();
|
||||
|
||||
}
|
||||
|
||||
public List<ProReportWorkDetialDto> GetReportByProcessId(int processId)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user