UniversalItemService.cs 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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. private readonly UserManager _userManager;
  14. public UniversalItemService(SqlSugarRepository<ItemMaster> itemRep, UserManager userManager)
  15. {
  16. _itemRep = itemRep;
  17. _userManager = userManager;
  18. }
  19. /// <summary>获取物料选择分页列表 📦</summary>
  20. [DisplayName("获取物料选择列表")]
  21. [HttpGet("item/page")]
  22. public async Task<object> GetItemPage([FromQuery] UniversalItemPageInput input)
  23. {
  24. var tenantId = _userManager.TenantId;
  25. var query = _itemRep.AsQueryable()
  26. .Where(u => u.TenantId == tenantId)
  27. .WhereIF(!string.IsNullOrWhiteSpace(input.ItemNum), u => u.ItemNum!.Contains(input.ItemNum!.Trim()))
  28. .WhereIF(!string.IsNullOrWhiteSpace(input.Descr), u => u.Descr!.Contains(input.Descr!.Trim()));
  29. bool isDesc = string.Equals(input.SortOrder, "desc", StringComparison.OrdinalIgnoreCase);
  30. query = (input.SortField?.ToLower()) switch
  31. {
  32. "descr" => isDesc ? query.OrderByDescending(u => u.Descr) : query.OrderBy(u => u.Descr),
  33. "descr1" => isDesc ? query.OrderByDescending(u => u.Descr1) : query.OrderBy(u => u.Descr1),
  34. "um" => isDesc ? query.OrderByDescending(u => u.UM) : query.OrderBy(u => u.UM),
  35. "location" => isDesc ? query.OrderByDescending(u => u.Location) : query.OrderBy(u => u.Location),
  36. "rev" => isDesc ? query.OrderByDescending(u => u.Rev) : query.OrderBy(u => u.Rev),
  37. "drawing" => isDesc ? query.OrderByDescending(u => u.Drawing) : query.OrderBy(u => u.Drawing),
  38. _ => isDesc ? query.OrderByDescending(u => u.ItemNum) : query.OrderBy(u => u.ItemNum),
  39. };
  40. var paged = await query
  41. .Select(u => new UniversalItemOutput
  42. {
  43. RecId = u.RecID.ToString(),
  44. ItemNum = u.ItemNum,
  45. Descr = u.Descr,
  46. Descr1 = u.Descr1,
  47. Um = u.UM,
  48. Location = u.Location,
  49. Rev = u.Rev,
  50. Drawing = u.Drawing,
  51. })
  52. .ToPagedListAsync(input.Page, input.PageSize);
  53. return new { total = paged.Total, page = input.Page, pageSize = input.PageSize, list = paged.Items };
  54. }
  55. }