82 lines
4.7 KiB
C#
82 lines
4.7 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);
|
|
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;
|
|
}
|
|
}
|
|
|
|
}
|