Files
yanpeng200212 8c4c464362 完善机组车台功能,并导入机组车台 / 车间班次数据
一、机组车台功能完善
- 车间下拉改为只取「前缫」职责类型的部门(新增接口 /api/jizuchetai/qianxian-deps)
- 补齐校验:车间、机组号、开始车台号必填;结束车台号不得小于开始车台号;同车间同机组不可重复
- 前端页面同步调整:车间改为下拉选择、增加必填提示、表格加 row-key

二、数据导入(新增 ProdSeedData,幂等导入器)
- biz_prod_qs_jzct:机组车台 35 条(其中 11 条已删除)→ 有效 24 条
- biz_prod_qs_cjbc:车间班次 7 条(其中 1 条已删除)→ 有效 6 条
- F9 的部门 Id 通过部门名称映射到本系统部门;已删除的数据不导入;
  已存在且一致的数据不重复写入,缺失的自动补回
2026-10-14 09:42:06 +08:00

159 lines
6.8 KiB
C#

using F9WebAiTest.Application.Common;
using F9WebAiTest.Application.Dtos;
using F9WebAiTest.Application.Dtos.Base;
using F9WebAiTest.Application.Services;
using F9WebAiTest.Application.Services.Base;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace F9WebAiTest.Api.Controllers.Base;
// ==================== 工艺庄口 ====================
[ApiController]
[Route("api/craftzhuangkou")]
[Authorize]
public class CraftZhuangKouController : ControllerBase
{
private readonly ICraftZhuangKouService _svc;
public CraftZhuangKouController(ICraftZhuangKouService svc) => _svc = svc;
[HttpGet]
public async Task<IActionResult> GetPaged([FromQuery] int pageIndex = 1, [FromQuery] int pageSize = 20, [FromQuery] string keyword = "", [FromQuery] int? year = null)
=> Ok(ApiResult<PageResult<CraftZhuangKouDto>>.Ok(await _svc.GetPagedAsync(pageIndex, pageSize, keyword, year)));
[HttpPost]
public async Task<IActionResult> Create([FromBody] CraftZhuangKouCreateDto dto)
{
try { return Ok(ApiResult<CraftZhuangKouDto>.Ok(await _svc.CreateAsync(dto), "创建成功")); }
catch (ServiceException ex) { return StatusCode(ex.Code, ApiResult<object>.Fail(ex.Message, ex.Code)); }
}
[HttpPut("{id}")]
public async Task<IActionResult> Update(long id, [FromBody] CraftZhuangKouCreateDto dto)
{
try { return Ok(ApiResult<CraftZhuangKouDto>.Ok(await _svc.UpdateAsync(id, dto), "更新成功")); }
catch (ServiceException ex) { return StatusCode(ex.Code, ApiResult<object>.Fail(ex.Message, ex.Code)); }
}
[HttpDelete("{id}")]
public async Task<IActionResult> Delete(long id)
{
try { await _svc.DeleteAsync(id); return Ok(ApiResult<object>.Ok(null, "删除成功")); }
catch (ServiceException ex) { return StatusCode(ex.Code, ApiResult<object>.Fail(ex.Message, ex.Code)); }
}
}
// ==================== 生丝规格 ====================
[ApiController]
[Route("api/shengsiguige")]
[Authorize]
public class ShengsiGuigeController : ControllerBase
{
private readonly IShengsiGuigeService _svc;
public ShengsiGuigeController(IShengsiGuigeService svc) => _svc = svc;
[HttpGet]
public async Task<IActionResult> GetPaged([FromQuery] int pageIndex = 1, [FromQuery] int pageSize = 20, [FromQuery] string keyword = "")
=> Ok(ApiResult<PageResult<ShengsiGuigeDto>>.Ok(await _svc.GetPagedAsync(pageIndex, pageSize, keyword)));
[HttpGet("all")]
public async Task<IActionResult> GetAllGuige()
=> Ok(ApiResult<List<string>>.Ok(await _svc.GetAllGuigeAsync()));
[HttpPost]
public async Task<IActionResult> Create([FromBody] ShengsiGuigeDto dto)
{
try { return Ok(ApiResult<ShengsiGuigeDto>.Ok(await _svc.CreateAsync(dto), "创建成功")); }
catch (ServiceException ex) { return StatusCode(ex.Code, ApiResult<object>.Fail(ex.Message, ex.Code)); }
}
[HttpPut("{id}")]
public async Task<IActionResult> Update(long id, [FromBody] ShengsiGuigeDto dto)
{
try { return Ok(ApiResult<ShengsiGuigeDto>.Ok(await _svc.UpdateAsync(id, dto), "更新成功")); }
catch (ServiceException ex) { return StatusCode(ex.Code, ApiResult<object>.Fail(ex.Message, ex.Code)); }
}
[HttpDelete("{id}")]
public async Task<IActionResult> Delete(long id)
{
try { await _svc.DeleteAsync(id); return Ok(ApiResult<object>.Ok(null, "删除成功")); }
catch (ServiceException ex) { return StatusCode(ex.Code, ApiResult<object>.Fail(ex.Message, ex.Code)); }
}
}
// ==================== 生丝定级指标 ====================
[ApiController]
[Route("api/shengsidingjizhibiao")]
[Authorize]
public class ShengsiDingjizhibiaoController : ControllerBase
{
private readonly IShengsiDingjizhibiaoService _svc;
public ShengsiDingjizhibiaoController(IShengsiDingjizhibiaoService svc) => _svc = svc;
[HttpGet]
public async Task<IActionResult> GetPaged([FromQuery] int pageIndex = 1, [FromQuery] int pageSize = 20, [FromQuery] string keyword = "", [FromQuery] int? standard = null, [FromQuery] string guige = "")
=> Ok(ApiResult<PageResult<ShengsiDingjizhibiaoDto>>.Ok(await _svc.GetPagedAsync(pageIndex, pageSize, keyword, standard, guige)));
[HttpPost]
public async Task<IActionResult> Create([FromBody] ShengsiDingjizhibiaoDto dto)
{
try { return Ok(ApiResult<ShengsiDingjizhibiaoDto>.Ok(await _svc.CreateAsync(dto), "创建成功")); }
catch (ServiceException ex) { return StatusCode(ex.Code, ApiResult<object>.Fail(ex.Message, ex.Code)); }
}
[HttpPut("{id}")]
public async Task<IActionResult> Update(long id, [FromBody] ShengsiDingjizhibiaoDto dto)
{
try { return Ok(ApiResult<ShengsiDingjizhibiaoDto>.Ok(await _svc.UpdateAsync(id, dto), "更新成功")); }
catch (ServiceException ex) { return StatusCode(ex.Code, ApiResult<object>.Fail(ex.Message, ex.Code)); }
}
[HttpDelete("{id}")]
public async Task<IActionResult> Delete(long id)
{
try { await _svc.DeleteAsync(id); return Ok(ApiResult<object>.Ok(null, "删除成功")); }
catch (ServiceException ex) { return StatusCode(ex.Code, ApiResult<object>.Fail(ex.Message, ex.Code)); }
}
}
// ==================== 机组车台 ====================
[ApiController]
[Route("api/jizuchetai")]
[Authorize]
public class JizuChetaiController : ControllerBase
{
private readonly IJizuChetaiService _svc;
public JizuChetaiController(IJizuChetaiService svc) => _svc = svc;
[HttpGet]
public async Task<IActionResult> GetPaged([FromQuery] int pageIndex = 1, [FromQuery] int pageSize = 20, [FromQuery] string keyword = "")
=> Ok(ApiResult<PageResult<JizuChetaiDto>>.Ok(await _svc.GetPagedAsync(pageIndex, pageSize, keyword)));
// 车间下拉(前缫车间)
[HttpGet("qianxian-deps")]
public async Task<IActionResult> GetQianxianDeps()
=> Ok(ApiResult<List<DeptOptionDto>>.Ok(await _svc.GetQianxianDepsAsync()));
[HttpPost]
public async Task<IActionResult> Create([FromBody] JizuChetaiDto dto)
{
try { return Ok(ApiResult<JizuChetaiDto>.Ok(await _svc.CreateAsync(dto), "创建成功")); }
catch (ServiceException ex) { return StatusCode(ex.Code, ApiResult<object>.Fail(ex.Message, ex.Code)); }
}
[HttpPut("{id}")]
public async Task<IActionResult> Update(long id, [FromBody] JizuChetaiDto dto)
{
try { return Ok(ApiResult<JizuChetaiDto>.Ok(await _svc.UpdateAsync(id, dto), "更新成功")); }
catch (ServiceException ex) { return StatusCode(ex.Code, ApiResult<object>.Fail(ex.Message, ex.Code)); }
}
[HttpDelete("{id}")]
public async Task<IActionResult> Delete(long id)
{
try { await _svc.DeleteAsync(id); return Ok(ApiResult<object>.Ok(null, "删除成功")); }
catch (ServiceException ex) { return StatusCode(ex.Code, ApiResult<object>.Fail(ex.Message, ex.Code)); }
}
}