diff --git a/DOAN.Admin.WebApi/Controllers/MES/BigScreen/MaterialProgressScreenController.cs b/DOAN.Admin.WebApi/Controllers/MES/BigScreen/MaterialProgressScreenController.cs new file mode 100644 index 0000000..29e52df --- /dev/null +++ b/DOAN.Admin.WebApi/Controllers/MES/BigScreen/MaterialProgressScreenController.cs @@ -0,0 +1,42 @@ +using Microsoft.AspNetCore.Mvc; +using DOAN.Admin.WebApi.Filters; +using DOAN.Service.MES.bigScreen.IService; +using DOAN.Infrastructure; + +namespace DOAN.WebApi.Controllers.MES.BigScreen +{ + /// + /// 设备台账 + /// + [Verify] + [Route("mes/bigscreen/materialprogress")] + public class MaterialProgressScreenController : BaseController + { + private readonly IMaterialProgressService materialProgressService; + + + public MaterialProgressScreenController(IMaterialProgressService materialProgressService) + { + this.materialProgressService = materialProgressService; + } + + /// + /// 查看备料进度大屏 + /// + /// + /// + /// + [HttpGet("view_Material_paration_progress")] + public IActionResult ViewMaterialParationProgress(DateTime dateTime) + { + dateTime = ConvertDateTime.ConvertLocalDate(dateTime); + if (dateTime == DateTime.MinValue) { throw new CustomException("dateTime 为空"); } + + var response = materialProgressService.ViewMaterialParationProgress(dateTime); + + + return SUCCESS(response); + } + } +} + diff --git a/DOAN.Model/MES/bigscreen/Dto/MaterialProgressDto.cs b/DOAN.Model/MES/bigscreen/Dto/MaterialProgressDto.cs new file mode 100644 index 0000000..c187960 --- /dev/null +++ b/DOAN.Model/MES/bigscreen/Dto/MaterialProgressDto.cs @@ -0,0 +1,73 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DOAN.Model.MES.bigscreen.Dto +{ + public class MaterialProgressDto + { + + public DateTime Date { get; set; } + /// + /// 产线 code + /// + public string LineCode { get; set; } + /// + /// 产线 name + /// + public string LineName { get; set; } + + + public List materialInfos { get; set; } + + + + } + public class MaterialProgressDto2 + { + + public DateTime Date { get; set; } + /// + /// 产线 code + /// + public string LineCode { get; set; } + /// + /// 产线 name + /// + public string LineName { get; set; } + public string MaterialCode { get; set; } + + + public string MaterialName { get; set; } + + + + public decimal PlanNum { get; set; } + + + public decimal ActualNum { get; set; } + + + } + + + public class MaterialInfo + { + public string MaterialCode { get; set; } + + + public string MaterialName { get; set; } + + + + public decimal PlanNum { get; set; } + + + public decimal ActualNum { get; set; } + + + } + +} diff --git a/DOAN.Service/MES/bigScreen/IService/IMaterialProgressService.cs b/DOAN.Service/MES/bigScreen/IService/IMaterialProgressService.cs new file mode 100644 index 0000000..39ba1bd --- /dev/null +++ b/DOAN.Service/MES/bigScreen/IService/IMaterialProgressService.cs @@ -0,0 +1,16 @@ +using DOAN.Model.MES.bigscreen.Dto; +using DOAN.Model.MES.dev; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DOAN.Service.MES.bigScreen.IService +{ + public interface IMaterialProgressService : IBaseService + { + + List ViewMaterialParationProgress(DateTime dateTime); + } +} diff --git a/DOAN.Service/MES/bigScreen/MaterialProgressService.cs b/DOAN.Service/MES/bigScreen/MaterialProgressService.cs new file mode 100644 index 0000000..e6396ef --- /dev/null +++ b/DOAN.Service/MES/bigScreen/MaterialProgressService.cs @@ -0,0 +1,90 @@ +using DOAN.Model.MES.base_; +using DOAN.Model.MES.bigscreen.Dto; +using DOAN.Model.MES.dev; +using DOAN.Model.MES.mm; +using DOAN.Model.Mobile.Dto; +using DOAN.Service.MES.bigScreen.IService; +using DOAN.Service.MES.dev.IService; +using Infrastructure.Attribute; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static System.Runtime.InteropServices.JavaScript.JSType; + +namespace DOAN.Service.MES.bigScreen +{ + + + /// + /// 备料进度大屏 + /// + [AppService(ServiceType = typeof(IMaterialProgressService), ServiceLifetime = LifeTime.Transient)] + public class MaterialProgressService : BaseService, IMaterialProgressService + { + /// + /// 查看备料进度大屏 + /// + /// + /// + public List ViewMaterialParationProgress(DateTime dateTime) + { + var RequireMaterial = Context.Queryable().LeftJoin((r, p) => r.Code == p.LineCode) + .Where((r, p) => p.RequireDate == dateTime) + .Select((r, p) => new + { + LineCode = r.Code, + LineName = r.Name, + MaterialCode = p.MaterialCode, + MaterialName = p.MaterialName, + PlanNum = p.RequireNum + + }).ToList(); + + var ActualNumMaterial = Context.Queryable().LeftJoin((r, t) => r.Code == t.LineCode) + .LeftJoin((r, t, i) => t.TaskCode == i.FkTaskCode) + .Where((r, t, i) => t.TaskDate == dateTime) + .GroupBy((r, t, i) => new { r.Code,r.Name,i.MaterialCode, i.MaterialName }) + .Select((r, t, i) => new + { + LineCode = r.Code, + LineName = r.Name, + MaterialCode = i.MaterialCode, + MaterialName = i.MaterialName, + ActualNum = SqlFunc.AggregateSum(i.Quantity), + + }).ToList(); + List MaterialProgressDto2 = new List(); + foreach (var r in RequireMaterial) + { + MaterialProgressDto2 progressDto2 = new MaterialProgressDto2(); + progressDto2.Date = dateTime; + progressDto2.LineCode = r.LineCode; + progressDto2.LineName = r.LineName; + progressDto2.MaterialCode = r.MaterialCode; + progressDto2.MaterialName = r.MaterialName; + progressDto2.PlanNum = r.PlanNum; + progressDto2.ActualNum = ActualNumMaterial + .Where(it => it.LineCode == progressDto2.LineCode) + .Where(it => it.MaterialCode == progressDto2.MaterialCode).Select(it => it.ActualNum).FirstOrDefault(); + MaterialProgressDto2.Add(progressDto2); + } + return MaterialProgressDto2.GroupBy(it => new { it.Date, it.LineCode, it.LineName }).Select(group => new MaterialProgressDto() + { + + Date = group.Key.Date, + LineCode = group.Key.LineCode, + LineName = group.Key.LineName, + materialInfos = group.Select(item => new MaterialInfo + { + MaterialCode = item.MaterialCode, + MaterialName = item.MaterialName, + PlanNum =item.PlanNum, + ActualNum = item.ActualNum + }).ToList() + + }).ToList(); + } + } +}