Files
kunshan-bzfm-mes-backend/DOAN.Service/MES/Group/AchievementService.cs

66 lines
2.8 KiB
C#
Raw Normal View History

2025-02-18 20:20:31 +08:00
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>
2025-02-21 13:04:44 +08:00
public List<AchievementDto> GetstaffAchievementList(AchievementQueryDto parm)
2025-02-18 20:20:31 +08:00
{
var predicate = QueryExp(parm);
2025-02-21 13:04:44 +08:00
var result = Context.Queryable<ProReportwork01>().Where(predicate.ToExpression())
.GroupBy(it => it.Worker)
.Select(it => new AchievementDto
2025-02-18 20:20:31 +08:00
{
Worker = it.Worker,
2025-02-21 13:04:44 +08:00
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();
2025-02-19 10:45:10 +08:00
int index = 0;
foreach (var item in result)
{
index++;
item.Id = index;
}
return result;
2025-02-18 20:20:31 +08:00
}
private static Expressionable<ProReportwork01> QueryExp(AchievementQueryDto parm)
{
2025-02-21 13:04:44 +08:00
2025-02-18 20:20:31 +08:00
var predicate = Expressionable.Create<ProReportwork01>()
.AndIF(!string.IsNullOrEmpty(parm.Worker), it => it.Worker.Contains(parm.Worker))
2025-02-21 13:04:44 +08:00
.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])
2025-02-18 20:20:31 +08:00
;
return predicate;
}
}
}