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