UniversalItemService.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. namespace Admin.NET.Plugin.AiDOP.Universal;
  2. /// <summary>
  3. /// 通用物料选择服务 📦
  4. /// 路由前缀:/api/Universal
  5. /// </summary>
  6. [ApiDescriptionSettings(Order = 279, Description = "通用-物料选择")]
  7. [Route("api/Universal")]
  8. [AllowAnonymous]
  9. [NonUnify]
  10. public class UniversalItemService : IDynamicApiController, ITransient
  11. {
  12. private readonly SqlSugarRepository<ItemMaster> _itemRep;
  13. public UniversalItemService(SqlSugarRepository<ItemMaster> itemRep)
  14. {
  15. _itemRep = itemRep;
  16. }
  17. /// <summary>获取物料选择分页列表 📦</summary>
  18. [DisplayName("获取物料选择列表")]
  19. [HttpGet("item/page")]
  20. public async Task<object> GetItemPage([FromQuery] UniversalItemPageInput input)
  21. {
  22. var query = _itemRep.AsQueryable()
  23. .WhereIF(!string.IsNullOrWhiteSpace(input.ItemNum), u => u.ItemNum!.Contains(input.ItemNum!.Trim()))
  24. .WhereIF(!string.IsNullOrWhiteSpace(input.Descr), u => u.Descr!.Contains(input.Descr!.Trim()));
  25. bool isDesc = string.Equals(input.SortOrder, "desc", StringComparison.OrdinalIgnoreCase);
  26. query = (input.SortField?.ToLower()) switch
  27. {
  28. "descr" => isDesc ? query.OrderByDescending(u => u.Descr) : query.OrderBy(u => u.Descr),
  29. "descr1" => isDesc ? query.OrderByDescending(u => u.Descr1) : query.OrderBy(u => u.Descr1),
  30. "um" => isDesc ? query.OrderByDescending(u => u.UM) : query.OrderBy(u => u.UM),
  31. "location" => isDesc ? query.OrderByDescending(u => u.Location) : query.OrderBy(u => u.Location),
  32. "rev" => isDesc ? query.OrderByDescending(u => u.Rev) : query.OrderBy(u => u.Rev),
  33. "drawing" => isDesc ? query.OrderByDescending(u => u.Drawing) : query.OrderBy(u => u.Drawing),
  34. _ => isDesc ? query.OrderByDescending(u => u.ItemNum) : query.OrderBy(u => u.ItemNum),
  35. };
  36. var paged = await query
  37. .Select(u => new UniversalItemOutput
  38. {
  39. RecId = u.RecID.ToString(),
  40. ItemNum = u.ItemNum,
  41. Descr = u.Descr,
  42. Descr1 = u.Descr1,
  43. Um = u.UM,
  44. Location = u.Location,
  45. Rev = u.Rev,
  46. Drawing = u.Drawing,
  47. })
  48. .ToPagedListAsync(input.Page, input.PageSize);
  49. return new { total = paged.Total, page = input.Page, pageSize = input.PageSize, list = paged.Items };
  50. }
  51. }