Files
kunshan-bzfm-mes-backend/DOAN.Service/MES/Group/AchievementService.cs
2025-02-19 13:37:58 +08:00

77 lines
3.6 KiB
C#

using DOAN.Model.MES.Group.Dto;
using DOAN.Model.MES.order;
using DOAN.Model.MES.order.Dto;
using DOAN.Model.MES.product;
using DOAN.Model.MES.product.Dto;
using DOAN.Service.MES.Group.IService;
using DOAN.Service.MES.Order.IService;
using Infrastructure.Attribute;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DOAN.Service.MES.Group
{
[AppService(ServiceType = typeof(IAchievementService), ServiceLifetime = LifeTime.Transient)]
public class AchievementService : BaseService<ProReportwork01>, IAchievementService
{
/// <summary>
/// 获取员工绩效列表
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
public List<AchievementDto> GetstaffAchievementList(AchievementQueryDto parm)
{
var predicate = QueryExp(parm);
var result= Context.Queryable<ProReportwork01>().Where(predicate.ToExpression())
.GroupBy(x => x.Worker)
.Select(it=>new AchievementDto
{
Worker = it.Worker,
MaterialUse=SqlFunc.Subqueryable<ProReportwork01>().Where(x=>x.Worker==it.Worker&&x.ProcessId==10).Where(predicate.ToExpression()).Sum(x=>x.FinishNum??0),
MechanicalProcessing = SqlFunc.Subqueryable<ProReportwork01>().Where(x => x.Worker == it.Worker && x.ProcessId == 20).Where(predicate.ToExpression()).Sum(x => x.FinishNum ?? 0),
MiddleCheck = SqlFunc.Subqueryable<ProReportwork01>().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Sum(x => x.FinishNum ?? 0),
Handgrind = SqlFunc.Subqueryable<ProReportwork01>().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Sum(x => x.FinishNum ?? 0),
Machinegrind = SqlFunc.Subqueryable<ProReportwork01>().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Sum(x => x.FinishNum ?? 0),
Finegrind = SqlFunc.Subqueryable<ProReportwork01>().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Sum(x => x.FinishNum ?? 0),
WarehouseInspection = SqlFunc.Subqueryable<ProReportwork01>().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Sum(x => x.FinishNum ?? 0),
Shipment = SqlFunc.Subqueryable<ProReportwork01>().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Sum(x => x.FinishNum ?? 0),
}).Distinct().ToList();
int index = 0;
foreach (var item in result)
{
index++;
item.Id = index;
}
return result;
}
private static Expressionable<ProReportwork01> QueryExp(AchievementQueryDto parm)
{
var predicate = Expressionable.Create<ProReportwork01>()
.AndIF(!string.IsNullOrEmpty(parm.Worker), it => it.Worker.Contains(parm.Worker))
.AndIF(parm.JobDatetime != null&& parm.JobDatetime[0]>DateTime.MinValue, it => it.JobDateTime >=parm.JobDatetime[0])
.AndIF(parm.JobDatetime != null&& parm.JobDatetime[0]>DateTime.MinValue, it => it.JobDateTime <=parm.JobDatetime[1])
;
return predicate;
}
}
}