91 lines
3.7 KiB
C#
91 lines
3.7 KiB
C#
using DOAN.Model.MES.base_;
|
|
using DOAN.Model.MES.BI.Dto;
|
|
using DOAN.Model.MES.dev;
|
|
using DOAN.Model.MES.mm;
|
|
using DOAN.Model.Mobile.Dto;
|
|
using DOAN.Service.MES.BI.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.BI
|
|
{
|
|
|
|
|
|
/// <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|| p.RequireDate ==null)
|
|
.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();
|
|
}
|
|
}
|
|
}
|