获取员工绩效列表

This commit is contained in:
qianhao.xu
2025-02-18 20:20:31 +08:00
parent ae4920531c
commit 54ee03de40
5 changed files with 249 additions and 0 deletions

View File

@@ -0,0 +1,35 @@
using DOAN.Admin.WebApi.Filters;
using DOAN.Model.MES.Group.Dto;
using DOAN.Service.MES.Group.IService;
using Microsoft.AspNetCore.Mvc;
namespace DOAN.Admin.WebApi.Controllers.MES.Group
{
/// <summary>
/// 员工绩效
/// </summary>
[Verify]
[Route("mes/deviceManagement/DeviceAccount")]
public class AchievementController : BaseController
{
private readonly IAchievementService _achievementService;
public AchievementController(IAchievementService achievementService)
{
_achievementService = achievementService;
}
/// <summary>
/// 获取y工绩效列表
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
[HttpPost("get_staff_achievement_list")]
public IActionResult GetstaffAchievementList([FromBody]AchievementQueryDto parm)
{
var response = _achievementService.GetstaffAchievementList(parm);
return SUCCESS(response);
}
}
}

View File

@@ -0,0 +1,100 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DOAN.Model.MES.Group.Dto
{
/// <summary>
/// 员工业绩Dto
/// </summary>
public class AchievementDto
{
public int Id { get; set; }
/// <summary>
/// 员工
/// </summary>
public string Worker { get; set; }
/// <summary>
/// 物料领用
/// </summary>
public int MaterialUse { get; set; }
/// <summary>
/// 工作时间
/// </summary>
public DateTime? JobDatetime01 { get; set; }
/// <summary>
/// 机械加工
/// </summary>
public int MechanicalProcessing { get; set; }
/// <summary>
/// 工作时间
/// </summary>
public DateTime? JobDatetime02 { get; set; }
/// <summary>
/// 中间检查
/// </summary>
public int MiddleCheck { get; set; }
/// <summary>
/// 工作时间
/// </summary>
public DateTime? JobDatetime03 { get; set; }
/// <summary>
/// 手工研磨
/// </summary>
public int Handgrind { get; set; }
/// <summary>
/// 工作时间
/// </summary>
public DateTime? JobDatetime04 { get; set; }
/// <summary>
/// 机研磨
/// </summary>
public int Machinegrind { get; set; }
/// <summary>
/// 工作时间
/// </summary>
public DateTime? JobDatetime05 { get; set; }
/// <summary>
/// 精研磨
/// </summary>
public int Finegrind { get; set; }
/// <summary>
/// 工作时间
/// </summary>
public DateTime? JobDatetime06 { get; set; }
/// <summary>
/// 入库检查
/// </summary>
public int WarehouseInspection { get; set; }
/// <summary>
/// 工作时间
/// </summary>
public DateTime? JobDatetime07 { get; set; }
/// <summary>
/// 出货
/// </summary>
public int Shipment { get; set; }
/// <summary>
/// 工作时间
/// </summary>
public DateTime? JobDatetime08 { get; set; }
}
}

View File

@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DOAN.Model.MES.Group.Dto
{
public class AchievementQueryDto
{
public DateTime[] JobDatetime { get; set; }
public string Worker { get; set; }
}
}

View 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;
}
}
}

View File

@@ -0,0 +1,16 @@
using DOAN.Model.MES.Group.Dto;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DOAN.Service.MES.Group.IService
{
public interface IAchievementService
{
List<AchievementDto> GetstaffAchievementList(AchievementQueryDto parm);
}
}