namespace Admin.NET.Plugin.AiDOP.Universal; /// /// 通用物料选择服务 📦 /// 路由前缀:/api/Universal /// [ApiDescriptionSettings(Order = 279, Description = "通用-物料选择")] [Route("api/Universal")] [AllowAnonymous] [NonUnify] public class UniversalItemService : IDynamicApiController, ITransient { private readonly SqlSugarRepository _itemRep; public UniversalItemService(SqlSugarRepository itemRep) { _itemRep = itemRep; } /// 获取物料选择分页列表 📦 [DisplayName("获取物料选择列表")] [HttpGet("item/page")] public async Task GetItemPage([FromQuery] UniversalItemPageInput input) { var query = _itemRep.AsQueryable() .WhereIF(!string.IsNullOrWhiteSpace(input.ItemNum), u => u.ItemNum!.Contains(input.ItemNum!.Trim())) .WhereIF(!string.IsNullOrWhiteSpace(input.Descr), u => u.Descr!.Contains(input.Descr!.Trim())); bool isDesc = string.Equals(input.SortOrder, "desc", StringComparison.OrdinalIgnoreCase); query = (input.SortField?.ToLower()) switch { "descr" => isDesc ? query.OrderByDescending(u => u.Descr) : query.OrderBy(u => u.Descr), "descr1" => isDesc ? query.OrderByDescending(u => u.Descr1) : query.OrderBy(u => u.Descr1), "um" => isDesc ? query.OrderByDescending(u => u.UM) : query.OrderBy(u => u.UM), "location" => isDesc ? query.OrderByDescending(u => u.Location) : query.OrderBy(u => u.Location), "rev" => isDesc ? query.OrderByDescending(u => u.Rev) : query.OrderBy(u => u.Rev), "drawing" => isDesc ? query.OrderByDescending(u => u.Drawing) : query.OrderBy(u => u.Drawing), _ => isDesc ? query.OrderByDescending(u => u.ItemNum) : query.OrderBy(u => u.ItemNum), }; var paged = await query .Select(u => new UniversalItemOutput { RecId = u.RecID.ToString(), ItemNum = u.ItemNum, Descr = u.Descr, Descr1 = u.Descr1, Um = u.UM, Location = u.Location, Rev = u.Rev, Drawing = u.Drawing, }) .ToPagedListAsync(input.Page, input.PageSize); return new { total = paged.Total, page = input.Page, pageSize = input.PageSize, list = paged.Items }; } }