using DOAN.Admin.WebApi.Filters; using DOAN.Model.MES.Group.Dto; using DOAN.Model.MES.order.Dto; using DOAN.Service.MES.Group.IService; using Infrastructure.Converter; using Microsoft.AspNetCore.Mvc; namespace DOAN.Admin.WebApi.Controllers.MES.Group { /// /// 员工绩效 /// [Verify] [Route("mes/groupManagement/Achievement")] public class AchievementController : BaseController { private readonly IAchievementService _achievementService; public AchievementController(IAchievementService achievementService) { _achievementService = achievementService; } /// /// /// /// [HttpPost("test")] [AllowAnonymous] public IActionResult Test([FromBody] TestQuery parm) { parm.JobDatetime= parm.JobDatetime.ToLocalTime(); return SUCCESS(parm.JobDatetime); } /// /// 获取y工绩效列表 /// /// /// [HttpPost("get_staff_achievement_list")] public IActionResult GetstaffAchievementList([FromBody]AchievementQueryDto parm) { parm.JobDatetime[0]= DOANConvertDate.ConvertLocalDateTime(parm.JobDatetime[0]); parm.JobDatetime[1]= DOANConvertDate.ConvertLocalDateTime(parm.JobDatetime[1]); var response = _achievementService.GetstaffAchievementList(parm); return SUCCESS(response); } /// /// 员工绩效excel导出 /// /// /// [HttpGet("export")] [Log(Title = "员工绩效导出", BusinessType = BusinessType.EXPORT)] [AllowAnonymous] public IActionResult UserExport([FromQuery] AchievementQueryDto parm) { var data = _achievementService.GetstaffAchievementList(parm); // 创建一个字典来映射属性名和中文标题 var columnMapping = new Dictionary { { nameof(AchievementDto.Id), "ID" }, { nameof(AchievementDto.Worker), "员工" }, { nameof(AchievementDto.MaterialUse), "物料领用" }, { nameof(AchievementDto.MechanicalProcessing), "机械加工" }, { nameof(AchievementDto.MiddleCheck), "中间检查" }, { nameof(AchievementDto.Handgrind), "手工研磨" }, { nameof(AchievementDto.Machinegrind), "机研磨" }, { nameof(AchievementDto.Finegrind), "精研磨" }, { nameof(AchievementDto.WarehouseInspection), "入库检查" }, { nameof(AchievementDto.Shipment), "出货" } }; // 将数据转换为字典列表,以便 MiniExcel 可以识别列名 var rows = data.Select(dto => columnMapping.ToDictionary( mapping => mapping.Value, // 使用中文标题作为列名 mapping => dto.GetType().GetProperty(mapping.Key).GetValue(dto, null) )).ToList(); var result = ExportExcelMini(rows, "staff", "员工绩效"); return ExportExcel(result.Item2, result.Item1); } } }