using F9WebAiTest.Application.Common; using F9WebAiTest.Application.Dtos.Prod; using F9WebAiTest.Application.Services.Prod; using F9WebAiTest.Domain.Common; using F9WebAiTest.Domain.Enums.SYS.Employees; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace F9WebAiTest.Api.Controllers.Prod; /// 看台记录(生产-前缫):车头工 / 挡车工 [ApiController] [Route("api/prod/ktjl")] [Authorize] public class KtjlController : ControllerBase { private readonly IKtjlService _svc; public KtjlController(IKtjlService svc) => _svc = svc; // ---------- 查询 ---------- /// 挡车工看台记录(某日某车间某班次) [HttpGet("dcg")] public async Task GetDcg([FromQuery] DateTime date, [FromQuery] long depId, [FromQuery] Prod_Banci_Enum banci = Prod_Banci_Enum.甲, [FromQuery] string like = "") => Ok(ApiResult>.Ok( await _svc.GetDcgAsync(date, depId, banci, like ?? string.Empty))); /// 车头工看台记录 [HttpGet("ctg")] public async Task GetCtg([FromQuery] DateTime date, [FromQuery] long depId, [FromQuery] Prod_Banci_Enum banci = Prod_Banci_Enum.甲, [FromQuery] string like = "") => Ok(ApiResult>.Ok( await _svc.GetCtgAsync(date, depId, banci, like ?? string.Empty))); // ---------- 录入(新增):按看台排班带出默认记录 ---------- [HttpGet("dcg/defaults")] public async Task GetDcgDefaults([FromQuery] DateTime date, [FromQuery] long depId, [FromQuery] Prod_Banci_Enum banci = Prod_Banci_Enum.甲) { try { return Ok(ApiResult>.Ok(await _svc.BuildDcgDefaultsAsync(date, depId, banci))); } catch (ServiceException ex) { return StatusCode(ex.Code, ApiResult.Fail(ex.Message, ex.Code)); } } [HttpGet("ctg/defaults")] public async Task GetCtgDefaults([FromQuery] DateTime date, [FromQuery] long depId, [FromQuery] Prod_Banci_Enum banci = Prod_Banci_Enum.甲) { try { return Ok(ApiResult>.Ok(await _svc.BuildCtgDefaultsAsync(date, depId, banci))); } catch (ServiceException ex) { return StatusCode(ex.Code, ApiResult.Fail(ex.Message, ex.Code)); } } // ---------- 整组保存 ---------- [HttpPost("dcg/batch")] public async Task SaveDcg([FromBody] KtjldcgBatchDto dto) { try { var count = await _svc.SaveDcgAsync(dto); return Ok(ApiResult.Ok(count, count > 0 ? $"已保存 {count} 条看台记录" : "已清空该班次看台记录")); } catch (ServiceException ex) { return StatusCode(ex.Code, ApiResult.Fail(ex.Message, ex.Code)); } } [HttpPost("ctg/batch")] public async Task SaveCtg([FromBody] KtjlctgBatchDto dto) { try { var count = await _svc.SaveCtgAsync(dto); return Ok(ApiResult.Ok(count, count > 0 ? $"已保存 {count} 条看台记录" : "已清空该班次看台记录")); } catch (ServiceException ex) { return StatusCode(ex.Code, ApiResult.Fail(ex.Message, ex.Code)); } } // ---------- 整组删除 ---------- [HttpDelete("dcg")] public async Task DeleteDcg([FromQuery] DateTime date, [FromQuery] long depId, [FromQuery] Prod_Banci_Enum banci = Prod_Banci_Enum.甲) { try { await _svc.DeleteDcgAsync(date, depId, banci); return Ok(ApiResult.Ok(null, "删除成功")); } catch (ServiceException ex) { return StatusCode(ex.Code, ApiResult.Fail(ex.Message, ex.Code)); } } [HttpDelete("ctg")] public async Task DeleteCtg([FromQuery] DateTime date, [FromQuery] long depId, [FromQuery] Prod_Banci_Enum banci = Prod_Banci_Enum.甲) { try { await _svc.DeleteCtgAsync(date, depId, banci); return Ok(ApiResult.Ok(null, "删除成功")); } catch (ServiceException ex) { return StatusCode(ex.Code, ApiResult.Fail(ex.Message, ex.Code)); } } /// 工种下拉 [HttpGet("worktypes")] public async Task GetWorktypes() => Ok(ApiResult>.Ok(await _svc.GetWorktypeOptionsAsync())); }