using System.ComponentModel; namespace SimpleAdmin.Web.Core; /// /// 提供员工档案及人事维护相关 HTTP 接口。 /// [ApiDescriptionSettings("Application", Tag = "入职员工档案")] [Route("biz/onboarding/employee")] [RolePermission] public class OnboardingEmployeeController { private readonly IOnboardingEmployeeService _service; private readonly IFileService _fileService; public OnboardingEmployeeController( IOnboardingEmployeeService service, IFileService fileService) { _service = service; _fileService = fileService; } /// /// 分页查询正式员工档案。 /// [HttpGet("page")] [DisplayName("分页查询员工档案")] public async Task Page([FromQuery] OnboardingEmployeePageInput input) { return await _service.Page(input); } /// /// 按当前列表筛选条件导出员工基本信息和合同快照。 /// [HttpPost("export")] [DisplayName("导出员工明细")] public async Task Export([FromBody] OnboardingEmployeePageInput input) { var file = await _service.Export(input); return new FileContentResult( file.FileBytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { FileDownloadName = file.FileName }; } /// /// 查询正式员工详情及来源记录。 /// [HttpGet("detail")] [DisplayName("查询员工档案详情")] public async Task Detail([FromQuery] BaseIdInput input) { return await _service.Detail(input); } /// /// 编辑员工用工、社保及合同性质等人事信息。 /// [HttpPost("hr-info/update")] [DisplayName("编辑员工人事信息")] public async Task UpdateHrInfo([FromBody] OnboardingEmployeeHrUpdateInput input) { await _service.UpdateHrInfo(input); } /// /// 上传转正等员工人事材料。 /// [HttpPost("attachment/upload")] [Consumes("multipart/form-data")] [RequestSizeLimit(20 * 1024 * 1024)] [DisplayName("上传员工人事材料")] public async Task UploadAttachment([FromForm] IFormFile file) { if (file == null || file.Length == 0) throw Oops.Bah("请选择需要上传的材料文件"); var allowedExtensions = new HashSet(StringComparer.OrdinalIgnoreCase) { ".pdf", ".doc", ".docx", ".xls", ".xlsx", ".jpg", ".jpeg", ".png", ".webp", ".zip" }; var extension = Path.GetExtension(file.FileName); if (!allowedExtensions.Contains(extension)) throw Oops.Bah("仅支持 PDF、Word、Excel、图片或 ZIP 文件"); return await _fileService.UploadFile(SysDictConst.FILE_ENGINE_ALIYUN_OSS, file); } /// /// 人工办理员工转正。 /// [HttpPost("regularization/confirm")] [DisplayName("办理员工转正")] public async Task Regularize([FromBody] OnboardingEmployeeRegularizeInput input) { await _service.Regularize(input); } /// /// 撤销员工转正。 /// [HttpPost("regularization/revoke")] [DisplayName("撤销员工转正")] public async Task RevokeRegularization( [FromBody] OnboardingEmployeeRegularizationRevokeInput input) { await _service.RevokeRegularization(input); } }