获取员工绩效列表
This commit is contained in:
81
DOAN.Service/MES/Group/AchievementService.cs
Normal file
81
DOAN.Service/MES/Group/AchievementService.cs
Normal file
@@ -0,0 +1,81 @@
|
||||
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);
|
||||
return 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),
|
||||
JobDatetime01=SqlFunc.Subqueryable<ProReportwork01>().Where(x=>x.Worker==it.Worker&&x.ProcessId==10).Where(predicate.ToExpression()).Max(x=>x.JobDateTime),
|
||||
|
||||
MechanicalProcessing = SqlFunc.Subqueryable<ProReportwork01>().Where(x => x.Worker == it.Worker && x.ProcessId == 20).Where(predicate.ToExpression()).Sum(x => x.FinishNum ?? 0),
|
||||
JobDatetime02 = SqlFunc.Subqueryable<ProReportwork01>().Where(x => x.Worker == it.Worker && x.ProcessId == 20).Where(predicate.ToExpression()).Max(x => x.JobDateTime),
|
||||
|
||||
MiddleCheck = SqlFunc.Subqueryable<ProReportwork01>().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Sum(x => x.FinishNum ?? 0),
|
||||
JobDatetime03 = SqlFunc.Subqueryable<ProReportwork01>().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Max(x => x.JobDateTime),
|
||||
|
||||
|
||||
Handgrind = SqlFunc.Subqueryable<ProReportwork01>().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Sum(x => x.FinishNum ?? 0),
|
||||
JobDatetime04 = SqlFunc.Subqueryable<ProReportwork01>().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Max(x => x.JobDateTime),
|
||||
|
||||
|
||||
Machinegrind = SqlFunc.Subqueryable<ProReportwork01>().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Sum(x => x.FinishNum ?? 0),
|
||||
JobDatetime05 = SqlFunc.Subqueryable<ProReportwork01>().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Max(x => x.JobDateTime),
|
||||
|
||||
|
||||
Finegrind = SqlFunc.Subqueryable<ProReportwork01>().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Sum(x => x.FinishNum ?? 0),
|
||||
JobDatetime06 = SqlFunc.Subqueryable<ProReportwork01>().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Max(x => x.JobDateTime),
|
||||
|
||||
|
||||
WarehouseInspection = SqlFunc.Subqueryable<ProReportwork01>().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Sum(x => x.FinishNum ?? 0),
|
||||
JobDatetime07 = SqlFunc.Subqueryable<ProReportwork01>().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Max(x => x.JobDateTime),
|
||||
|
||||
|
||||
Shipment = SqlFunc.Subqueryable<ProReportwork01>().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Sum(x => x.FinishNum ?? 0),
|
||||
JobDatetime08 = SqlFunc.Subqueryable<ProReportwork01>().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Max(x => x.JobDateTime),
|
||||
|
||||
}).Distinct().ToList();
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user