查看备料进度大屏

This commit is contained in:
qianhao.xu 2024-10-15 11:05:51 +08:00
parent c0ff32769f
commit 50c2fa7e0d
4 changed files with 221 additions and 0 deletions

View File

@ -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
{
/// <summary>
/// 设备台账
/// </summary>
[Verify]
[Route("mes/bigscreen/materialprogress")]
public class MaterialProgressScreenController : BaseController
{
private readonly IMaterialProgressService materialProgressService;
public MaterialProgressScreenController(IMaterialProgressService materialProgressService)
{
this.materialProgressService = materialProgressService;
}
/// <summary>
/// 查看备料进度大屏
/// </summary>
/// <param name="dateTime"></param>
/// <returns></returns>
/// <exception cref="CustomException"></exception>
[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);
}
}
}

View File

@ -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; }
/// <summary>
/// 产线 code
/// </summary>
public string LineCode { get; set; }
/// <summary>
/// 产线 name
/// </summary>
public string LineName { get; set; }
public List<MaterialInfo> materialInfos { get; set; }
}
public class MaterialProgressDto2
{
public DateTime Date { get; set; }
/// <summary>
/// 产线 code
/// </summary>
public string LineCode { get; set; }
/// <summary>
/// 产线 name
/// </summary>
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; }
}
}

View File

@ -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<DeviceAccount>
{
List<MaterialProgressDto> ViewMaterialParationProgress(DateTime dateTime);
}
}

View File

@ -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
{
/// <summary>
/// 备料进度大屏
/// </summary>
[AppService(ServiceType = typeof(IMaterialProgressService), ServiceLifetime = LifeTime.Transient)]
public class MaterialProgressService : BaseService<DeviceAccount>, IMaterialProgressService
{
/// <summary>
/// 查看备料进度大屏
/// </summary>
/// <param name="dateTime"></param>
/// <returns></returns>
public List<MaterialProgressDto> ViewMaterialParationProgress(DateTime dateTime)
{
var RequireMaterial = Context.Queryable<BaseWorkRoute>().LeftJoin<MmRequirePlanByline>((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<BaseWorkRoute>().LeftJoin<MmPreparationTaskLine>((r, t) => r.Code == t.LineCode)
.LeftJoin<MmTaskMaterialInfoByLine>((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> MaterialProgressDto2 = new List<MaterialProgressDto2>();
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();
}
}
}