diff --git a/BasicData/Tnb.BasicData.Entities/Dto/BasMaterial/MaterialQueryInput.cs b/BasicData/Tnb.BasicData.Entities/Dto/BasMaterial/MaterialQueryInput.cs new file mode 100644 index 00000000..7e5fd547 --- /dev/null +++ b/BasicData/Tnb.BasicData.Entities/Dto/BasMaterial/MaterialQueryInput.cs @@ -0,0 +1,26 @@ +namespace Tnb.BasicData.Entities.Dto +{ + public class MaterialQueryInput + { + + /// + /// 查询条件 + /// + public string queryJson { get; set; } = string.Empty; + + /// + /// 物料类型 + /// + public string types { get; set; } = string.Empty; + + /// + /// 当前页码:pageIndex. + /// + public virtual int currentPage { get; set; } = 1; + + /// + /// 每页行数. + /// + public virtual int pageSize { get; set; } = 50; + } +} \ No newline at end of file diff --git a/BasicData/Tnb.BasicData.Interfaces/IBasMaterialService.cs b/BasicData/Tnb.BasicData.Interfaces/IBasMaterialService.cs index fbe3bd00..1da4bc94 100644 --- a/BasicData/Tnb.BasicData.Interfaces/IBasMaterialService.cs +++ b/BasicData/Tnb.BasicData.Interfaces/IBasMaterialService.cs @@ -25,5 +25,12 @@ namespace Tnb.BasicData.Interfaces /// /// public Task GetMaterialByType(Dictionary dic); + + /// + /// 根据物料类型获取物料列表 + /// + /// + /// + public Task GetMaterialByQueryJson(MaterialQueryInput input); } } \ No newline at end of file diff --git a/BasicData/Tnb.BasicData/BasMaterialService.cs b/BasicData/Tnb.BasicData/BasMaterialService.cs index 91a92305..437833d4 100644 --- a/BasicData/Tnb.BasicData/BasMaterialService.cs +++ b/BasicData/Tnb.BasicData/BasMaterialService.cs @@ -8,6 +8,7 @@ using JNPF.FriendlyException; using JNPF.Systems.Entitys.System; using JNPF.Systems.Interfaces.System; using Microsoft.AspNetCore.Mvc; +using Newtonsoft.Json; using SqlSugar; using Tnb.BasicData.Entities; using Tnb.BasicData.Entities.Dto; @@ -174,6 +175,48 @@ namespace Tnb.BasicData return result; } + + [HttpPost] + public async Task GetMaterialByQueryJson(MaterialQueryInput input) + { + var db = _repository.AsSugarClient(); + Dictionary? queryJson = new Dictionary(); + if (input!=null && !string.IsNullOrEmpty(input.queryJson)) + { + queryJson = JsonConvert.DeserializeObject>(input?.queryJson ?? ""); + } + + List typeList = new List(); + if(!string.IsNullOrEmpty(input.types)) + { + typeList = JsonConvert.DeserializeObject>(input.types); + } + var query = db.Queryable() + .Where(x => x.state == "1") + .WhereIF(queryJson != null && queryJson.ContainsKey("name"), a => a.name.Contains(queryJson["name"])) + .WhereIF(queryJson != null && queryJson.ContainsKey("code"), a => a.code.Contains(queryJson["code"])) + .WhereIF(queryJson != null && queryJson.ContainsKey("material_standard"), + a => a.material_standard.Contains(queryJson["material_standard"])) + .Select(x => x); + + var list = new List>(); + foreach (var type in typeList) + { + list.Add(query.Clone().Where(x=>x.category_id.Contains(type))); + } + + if (list.Count <= 0) + { + var result = await query.ToPagedListAsync((input?.currentPage??1), (input?.pageSize??50)); + return PageResult.SqlSugarPageResult(result); + } + else + { + var result = await db.UnionAll(list).Select().ToPagedListAsync((input?.currentPage??1), (input?.pageSize??50)); + return PageResult.SqlSugarPageResult(result); + } + + } /// /// 获取物料清单下所子集物料id