66 lines
2.8 KiB
C#
66 lines
2.8 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(it => it.Worker)
|
|
.Select(it => new AchievementDto
|
|
{
|
|
Worker = it.Worker,
|
|
MaterialUse = SqlFunc.AggregateSum(it.ProcessId == 10 ? it.FinishNum ?? 0 : 0),
|
|
MechanicalProcessing = SqlFunc.AggregateSum(it.ProcessId == 20 ? it.FinishNum ?? 0 : 0),
|
|
MiddleCheck = SqlFunc.AggregateSum(it.ProcessId == 30 ? it.FinishNum ?? 0 : 0),
|
|
Handgrind = SqlFunc.AggregateSum(it.ProcessId == 40 ? it.FinishNum ?? 0 : 0),
|
|
Machinegrind = SqlFunc.AggregateSum(it.ProcessId == 50 ? it.FinishNum ?? 0 : 0),
|
|
Finegrind = SqlFunc.AggregateSum(it.ProcessId == 60 ? it.FinishNum ?? 0 : 0),
|
|
WarehouseInspection = SqlFunc.AggregateSum(it.ProcessId == 70 ? it.FinishNum ?? 0 : 0),
|
|
Shipment = SqlFunc.AggregateSum(it.ProcessId == 90 ? it.FinishNum ?? 0 : 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;
|
|
}
|
|
}
|
|
|
|
}
|