using F9WebAiTest.Application.Common; using F9WebAiTest.Application.Common.Exceptions; using F9WebAiTest.Application.CQRS.SYS.Employees.Commands; using F9WebAiTest.Application.CQRS.SYS.Employees.Queries; using F9WebAiTest.Domain.Enums.SYS.Employees; using MediatR; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace F9WebAiTest.Api.Controllers; /// 职工档案管理(含转正/离职/调岗/重新入职/生产信息维护) [ApiController] [Route("api/sys/employee")] [Authorize] public class SysEmployeeController : ControllerBase { private readonly IMediator _mediator; public SysEmployeeController(IMediator mediator) => _mediator = mediator; /// 分页查询(部门含子部门;workStatus/banci 不传表示全部) [HttpGet] public async Task GetPaged([FromQuery] long depId = 0, [FromQuery] long worktypeId = 0, [FromQuery] Employee_WorkStatus_Enum? workStatus = null, [FromQuery] Prod_Banci_Enum? banci = null, [FromQuery] string like = "", [FromQuery] int pageIndex = 1, [FromQuery] int pageSize = 20) => Ok(ApiResult.Ok(await _mediator.Send(new GetEmployeePagedQuery(depId, worktypeId, workStatus, banci, like ?? string.Empty, pageIndex, pageSize)))); [HttpGet("{id}")] public async Task GetById(long id) { var result = await _mediator.Send(new GetEmployeeByIdQuery(id)); return result == null ? NotFound(ApiResult.Fail("职工不存在", 404)) : Ok(ApiResult.Ok(result)); } /// 变更记录 [HttpGet("{id}/change-records")] public async Task GetChangeRecords(long id) => Ok(ApiResult.Ok(await _mediator.Send(new GetEmployeeChangeRecordsQuery(id)))); /// 调岗记录 [HttpGet("{id}/tiaogang-records")] public async Task GetTiaogangRecords(long id) => Ok(ApiResult.Ok(await _mediator.Send(new GetEmployeeTiaogangRecordsQuery(id)))); [HttpPost] public async Task Create([FromBody] Employee_CreateCommand command) { try { return Ok(ApiResult.Ok(new { id = await _mediator.Send(command) }, "新增成功")); } catch (F9NotFoundException ex) { return NotFound(ApiResult.Fail(ex.Message, 404)); } catch (F9OperationException ex) { return BadRequest(ApiResult.Fail(ex.Message, 400)); } } [HttpPut("{id}")] public async Task Update(long id, [FromBody] Employee_UpdateCommand command) { try { return Ok(ApiResult.Ok(await _mediator.Send(command with { Id = id }), "修改成功")); } catch (F9NotFoundException ex) { return NotFound(ApiResult.Fail(ex.Message, 404)); } catch (F9OperationException ex) { return BadRequest(ApiResult.Fail(ex.Message, 400)); } } [HttpDelete("{id}")] public async Task Delete(long id) { try { return Ok(ApiResult.Ok(await _mediator.Send(new Employee_DelCommand(id)), "删除成功")); } catch (F9NotFoundException ex) { return NotFound(ApiResult.Fail(ex.Message, 404)); } catch (F9OperationException ex) { return BadRequest(ApiResult.Fail(ex.Message, 400)); } } /// 转正 [HttpPut("{id}/zhuanzheng")] public async Task Zhuanzheng(long id, [FromBody] Employee_ZhuanzhengCommand command) { try { return Ok(ApiResult.Ok(await _mediator.Send(command with { Id = id }), "转正成功")); } catch (F9NotFoundException ex) { return NotFound(ApiResult.Fail(ex.Message, 404)); } catch (F9OperationException ex) { return BadRequest(ApiResult.Fail(ex.Message, 400)); } } /// 取消转正 [HttpPut("{id}/zhuanzheng-cancel")] public async Task ZhuanzhengCancel(long id) { try { return Ok(ApiResult.Ok(await _mediator.Send(new Employee_ZhuanzhengCancelCommand(id)), "已取消转正")); } catch (F9NotFoundException ex) { return NotFound(ApiResult.Fail(ex.Message, 404)); } catch (F9OperationException ex) { return BadRequest(ApiResult.Fail(ex.Message, 400)); } } /// 离职 [HttpPut("{id}/lizhi")] public async Task Lizhi(long id, [FromBody] Employee_LizhiCommand command) { try { return Ok(ApiResult.Ok(await _mediator.Send(command with { Id = id }), "已办理离职")); } catch (F9NotFoundException ex) { return NotFound(ApiResult.Fail(ex.Message, 404)); } catch (F9OperationException ex) { return BadRequest(ApiResult.Fail(ex.Message, 400)); } } /// 取消离职 [HttpPut("{id}/lizhi-cancel")] public async Task LizhiCancel(long id) { try { return Ok(ApiResult.Ok(await _mediator.Send(new Employee_LizhiCancelCommand(id)), "已取消离职")); } catch (F9NotFoundException ex) { return NotFound(ApiResult.Fail(ex.Message, 404)); } catch (F9OperationException ex) { return BadRequest(ApiResult.Fail(ex.Message, 400)); } } /// 调岗 [HttpPut("{id}/tiaogang")] public async Task Tiaogang(long id, [FromBody] Employee_TiaogangCommand command) { try { return Ok(ApiResult.Ok(await _mediator.Send(command with { Id = id }), "调岗成功")); } catch (F9NotFoundException ex) { return NotFound(ApiResult.Fail(ex.Message, 404)); } catch (F9OperationException ex) { return BadRequest(ApiResult.Fail(ex.Message, 400)); } } /// 重新入职 [HttpPut("{id}/renew-ruzhis")] public async Task RenewRuzhi(long id, [FromBody] Employee_RenewRuzhiCommand command) { try { return Ok(ApiResult.Ok(await _mediator.Send(command with { Id = id }), "重新入职成功")); } catch (F9NotFoundException ex) { return NotFound(ApiResult.Fail(ex.Message, 404)); } catch (F9OperationException ex) { return BadRequest(ApiResult.Fail(ex.Message, 400)); } } /// 修改生产信息(工作组 / 顺序号) [HttpPut("{id}/sc")] public async Task UpdateSc(long id, [FromBody] Employee_UpdateScCommand command) { try { return Ok(ApiResult.Ok(await _mediator.Send(command with { Id = id }), "修改成功")); } catch (F9NotFoundException ex) { return NotFound(ApiResult.Fail(ex.Message, 404)); } catch (F9OperationException ex) { return BadRequest(ApiResult.Fail(ex.Message, 400)); } } }