diff --git a/DOAN.Admin.WebApi/Controllers/MES/Group/AchievementController.cs b/DOAN.Admin.WebApi/Controllers/MES/Group/AchievementController.cs
new file mode 100644
index 0000000..0d2d085
--- /dev/null
+++ b/DOAN.Admin.WebApi/Controllers/MES/Group/AchievementController.cs
@@ -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
+{
+
+ ///
+ /// 员工绩效
+ ///
+ [Verify]
+ [Route("mes/deviceManagement/DeviceAccount")]
+ public class AchievementController : BaseController
+ {
+ private readonly IAchievementService _achievementService;
+ public AchievementController(IAchievementService achievementService)
+ {
+ _achievementService = achievementService;
+ }
+
+
+ ///
+ /// 获取y工绩效列表
+ ///
+ ///
+ ///
+ [HttpPost("get_staff_achievement_list")]
+ public IActionResult GetstaffAchievementList([FromBody]AchievementQueryDto parm)
+ {
+ var response = _achievementService.GetstaffAchievementList(parm);
+ return SUCCESS(response);
+ }
+
+ }
+}
diff --git a/DOAN.Model/MES/Group/Dto/AchievementDto.cs b/DOAN.Model/MES/Group/Dto/AchievementDto.cs
new file mode 100644
index 0000000..e7a6672
--- /dev/null
+++ b/DOAN.Model/MES/Group/Dto/AchievementDto.cs
@@ -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
+{
+ ///
+ /// 员工业绩Dto
+ ///
+ public class AchievementDto
+ {
+ public int Id { get; set; }
+
+ ///
+ /// 员工
+ ///
+ public string Worker { get; set; }
+
+ ///
+ /// 物料领用
+ ///
+ public int MaterialUse { get; set; }
+
+ ///
+ /// 工作时间
+ ///
+ public DateTime? JobDatetime01 { get; set; }
+
+ ///
+ /// 机械加工
+ ///
+ public int MechanicalProcessing { get; set; }
+ ///
+ /// 工作时间
+ ///
+ public DateTime? JobDatetime02 { get; set; }
+ ///
+ /// 中间检查
+ ///
+ public int MiddleCheck { get; set; }
+
+ ///
+ /// 工作时间
+ ///
+ public DateTime? JobDatetime03 { get; set; }
+ ///
+ /// 手工研磨
+ ///
+ public int Handgrind { get; set; }
+
+ ///
+ /// 工作时间
+ ///
+ public DateTime? JobDatetime04 { get; set; }
+
+ ///
+ /// 机研磨
+ ///
+ public int Machinegrind { get; set; }
+
+ ///
+ /// 工作时间
+ ///
+ public DateTime? JobDatetime05 { get; set; }
+
+ ///
+ /// 精研磨
+ ///
+ public int Finegrind { get; set; }
+
+ ///
+ /// 工作时间
+ ///
+ public DateTime? JobDatetime06 { get; set; }
+ ///
+ /// 入库检查
+ ///
+ public int WarehouseInspection { get; set; }
+ ///
+ /// 工作时间
+ ///
+ public DateTime? JobDatetime07 { get; set; }
+
+
+ ///
+ /// 出货
+ ///
+ public int Shipment { get; set; }
+ ///
+ /// 工作时间
+ ///
+ public DateTime? JobDatetime08 { get; set; }
+
+
+
+
+ }
+}
diff --git a/DOAN.Model/MES/Group/Dto/AchievementQueryDto.cs b/DOAN.Model/MES/Group/Dto/AchievementQueryDto.cs
new file mode 100644
index 0000000..bbadac5
--- /dev/null
+++ b/DOAN.Model/MES/Group/Dto/AchievementQueryDto.cs
@@ -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; }
+
+
+ }
+}
diff --git a/DOAN.Service/MES/Group/AchievementService.cs b/DOAN.Service/MES/Group/AchievementService.cs
new file mode 100644
index 0000000..0e2c4ea
--- /dev/null
+++ b/DOAN.Service/MES/Group/AchievementService.cs
@@ -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, IAchievementService
+ {
+ ///
+ /// 获取员工绩效列表
+ ///
+ ///
+ ///
+ public List GetstaffAchievementList(AchievementQueryDto parm)
+ {
+ var predicate = QueryExp(parm);
+ return Context.Queryable().Where(predicate.ToExpression())
+ .GroupBy(x => x.Worker)
+ .Select(it=>new AchievementDto
+ {
+ Worker = it.Worker,
+
+ MaterialUse=SqlFunc.Subqueryable().Where(x=>x.Worker==it.Worker&&x.ProcessId==10).Where(predicate.ToExpression()).Sum(x=>x.FinishNum??0),
+ JobDatetime01=SqlFunc.Subqueryable().Where(x=>x.Worker==it.Worker&&x.ProcessId==10).Where(predicate.ToExpression()).Max(x=>x.JobDateTime),
+
+ MechanicalProcessing = SqlFunc.Subqueryable().Where(x => x.Worker == it.Worker && x.ProcessId == 20).Where(predicate.ToExpression()).Sum(x => x.FinishNum ?? 0),
+ JobDatetime02 = SqlFunc.Subqueryable().Where(x => x.Worker == it.Worker && x.ProcessId == 20).Where(predicate.ToExpression()).Max(x => x.JobDateTime),
+
+ MiddleCheck = SqlFunc.Subqueryable().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Sum(x => x.FinishNum ?? 0),
+ JobDatetime03 = SqlFunc.Subqueryable().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Max(x => x.JobDateTime),
+
+
+ Handgrind = SqlFunc.Subqueryable().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Sum(x => x.FinishNum ?? 0),
+ JobDatetime04 = SqlFunc.Subqueryable().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Max(x => x.JobDateTime),
+
+
+ Machinegrind = SqlFunc.Subqueryable().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Sum(x => x.FinishNum ?? 0),
+ JobDatetime05 = SqlFunc.Subqueryable().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Max(x => x.JobDateTime),
+
+
+ Finegrind = SqlFunc.Subqueryable().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Sum(x => x.FinishNum ?? 0),
+ JobDatetime06 = SqlFunc.Subqueryable().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Max(x => x.JobDateTime),
+
+
+ WarehouseInspection = SqlFunc.Subqueryable().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Sum(x => x.FinishNum ?? 0),
+ JobDatetime07 = SqlFunc.Subqueryable().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Max(x => x.JobDateTime),
+
+
+ Shipment = SqlFunc.Subqueryable().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Sum(x => x.FinishNum ?? 0),
+ JobDatetime08 = SqlFunc.Subqueryable().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Max(x => x.JobDateTime),
+
+ }).Distinct().ToList();
+ }
+
+ private static Expressionable QueryExp(AchievementQueryDto parm)
+ {
+
+ var predicate = Expressionable.Create()
+ .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;
+ }
+ }
+
+}
diff --git a/DOAN.Service/MES/Group/IService/IAchievementService.cs b/DOAN.Service/MES/Group/IService/IAchievementService.cs
new file mode 100644
index 0000000..1b4e2e4
--- /dev/null
+++ b/DOAN.Service/MES/Group/IService/IAchievementService.cs
@@ -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 GetstaffAchievementList(AchievementQueryDto parm);
+
+ }
+}