From 54ee03de40c7e7032e21fb8d561df1bff4de17b2 Mon Sep 17 00:00:00 2001 From: "qianhao.xu" Date: Tue, 18 Feb 2025 20:20:31 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=91=98=E5=B7=A5=E7=BB=A9?= =?UTF-8?q?=E6=95=88=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MES/Group/AchievementController.cs | 35 ++++++ DOAN.Model/MES/Group/Dto/AchievementDto.cs | 100 ++++++++++++++++++ .../MES/Group/Dto/AchievementQueryDto.cs | 17 +++ DOAN.Service/MES/Group/AchievementService.cs | 81 ++++++++++++++ .../MES/Group/IService/IAchievementService.cs | 16 +++ 5 files changed, 249 insertions(+) create mode 100644 DOAN.Admin.WebApi/Controllers/MES/Group/AchievementController.cs create mode 100644 DOAN.Model/MES/Group/Dto/AchievementDto.cs create mode 100644 DOAN.Model/MES/Group/Dto/AchievementQueryDto.cs create mode 100644 DOAN.Service/MES/Group/AchievementService.cs create mode 100644 DOAN.Service/MES/Group/IService/IAchievementService.cs 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); + + } +}