AdoS0MfgProcessFlowCardsController.cs 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using Admin.NET.Plugin.AiDOP.Dto.S0.Manufacturing;
  2. using Admin.NET.Plugin.AiDOP.Entity;
  3. using Admin.NET.Plugin.AiDOP.Entity.S0.Manufacturing;
  4. using Admin.NET.Plugin.AiDOP.Infrastructure;
  5. namespace Admin.NET.Plugin.AiDOP.Controllers.S0.Manufacturing;
  6. /// <summary>
  7. /// 流转卡打印记录(legacy MissedPrint 只读投影)。
  8. /// 路由保留 /api/s0/manufacturing/process-flow-cards 以降低前端 / 菜单 / 权限迁移成本。
  9. /// 数据源由 S0ProcessFlowCard(当前 0 行)切换为 MissedPrint(200+ 行)。
  10. /// 写入路径仍由 S3 SupplierShipment / SupplierDelivery 服务负责,本 Controller 仅提供只读分页查询。
  11. /// </summary>
  12. [ApiController]
  13. [Route("api/s0/manufacturing/process-flow-cards")]
  14. [AllowAnonymous]
  15. [NonUnify]
  16. public class AdoS0MfgProcessFlowCardsController : ControllerBase
  17. {
  18. private readonly SqlSugarRepository<AdoS0MissedPrintRecord> _rep;
  19. public AdoS0MfgProcessFlowCardsController(SqlSugarRepository<AdoS0MissedPrintRecord> rep) => _rep = rep;
  20. [HttpGet]
  21. public async Task<IActionResult> GetPagedAsync([FromQuery] AdoS0FlowCardPrintRecordQueryDto q)
  22. {
  23. var page = q.EffectivePage;
  24. var pageSize = q.PageSize;
  25. (page, pageSize) = PagingGuard.Normalize(page, pageSize);
  26. var query = _rep.Context.Queryable<AdoS0MissedPrintRecord, AdoGeneralizedCodeRecord>(
  27. (m, g) => new JoinQueryInfos(
  28. JoinType.Left, g.FldName == "BarcodeStatus" && g.Val == m.Status))
  29. .WhereIF(!string.IsNullOrWhiteSpace(q.Keyword),
  30. (m, g) => (m.WorkOrd != null && m.WorkOrd.Contains(q.Keyword!))
  31. || (m.ItemNum != null && m.ItemNum.Contains(q.Keyword!))
  32. || (m.Descr != null && m.Descr.Contains(q.Keyword!)))
  33. .WhereIF(!string.IsNullOrWhiteSpace(q.WorkOrd),
  34. (m, g) => m.WorkOrd != null && m.WorkOrd.Contains(q.WorkOrd!))
  35. .WhereIF(!string.IsNullOrWhiteSpace(q.ItemNum),
  36. (m, g) => m.ItemNum != null && m.ItemNum.Contains(q.ItemNum!))
  37. .WhereIF(!string.IsNullOrWhiteSpace(q.LabelColor),
  38. (m, g) => m.LabelColor == q.LabelColor)
  39. .WhereIF(!string.IsNullOrWhiteSpace(q.Status),
  40. (m, g) => m.Status == q.Status)
  41. .WhereIF(q.CreateTimeFrom.HasValue,
  42. (m, g) => m.CreateTime >= q.CreateTimeFrom!.Value)
  43. .WhereIF(q.CreateTimeTo.HasValue,
  44. (m, g) => m.CreateTime <= q.CreateTimeTo!.Value);
  45. var total = await query.CountAsync();
  46. var list = await query
  47. .Select((m, g) => new S0MfgFlowCardPrintRecordRow
  48. {
  49. Id = m.Id,
  50. WorkOrd = m.WorkOrd,
  51. Op = m.Op,
  52. ItemNum = m.ItemNum,
  53. Descr = m.Descr,
  54. LabelFormat = m.LabelFormat,
  55. LabelColor = m.LabelColor,
  56. Status = m.Status,
  57. StatusDesc = g.Comments ?? m.Status,
  58. CreateTime = m.CreateTime
  59. })
  60. .MergeTable()
  61. .OrderByDescending(r => r.CreateTime)
  62. .OrderByDescending(r => r.Id)
  63. .Skip((page - 1) * pageSize).Take(pageSize)
  64. .ToListAsync();
  65. return Ok(new { total, page, pageSize, list });
  66. }
  67. }