diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsFeedingService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsFeedingService.cs index 3c20c3d1..021c620c 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsFeedingService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsFeedingService.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; using JNPF.DependencyInjection; @@ -40,41 +41,29 @@ namespace Tnb.WarehouseMgr { dicMaterial = await _db.Queryable().ToDictionaryAsync(x => x.id, x => x.name); } - var carry = await _db.Queryable().SingleAsync(it=>it.id == carryId); + var carry = await _db.Queryable().SingleAsync(it => it.id == carryId); List items = new(); + List carryMIds = new(); if (carry.carrystd_id == WmsWareHouseConst.CARRY_LJSTD_ID) { - var carryDs = await _db.Queryable().Where(it=>it.carry_id == carryId).ToListAsync(); - var carryMIds = carryDs.Select(x=>x.membercarry_id).ToList(); - items = await _db.Queryable().Where(a => carryMIds.Contains(a.carry_id)) - .Select(a => new CarryCodeDetailOutput - { - barcode = a.barcode, - code_batch = a.code_batch!, - codeqty = a.codeqty, - material_code = a.material_code, - material_id = a.material_id, - unit_id = a.unit_id, - }) - .Mapper(it => it.material_name = dicMaterial.ContainsKey(it.material_id) ? dicMaterial[it.material_id].ToString()! : "") - .ToListAsync(); + var carryDs = await _db.Queryable().Where(it => it.carry_id == carryId).ToListAsync(); + carryMIds = carryDs.Select(x => x.membercarry_id).ToList(); } - else - { - items = await _db.Queryable().Where(a => a.carry_id == carryId) - .Select(a => new CarryCodeDetailOutput - { - barcode = a.barcode, - code_batch = a.code_batch!, - codeqty = a.codeqty, - material_code = a.material_code, - material_id = a.material_id, - unit_id = a.unit_id, - }) - .Mapper(it => it.material_name = dicMaterial.ContainsKey(it.material_id) ? dicMaterial[it.material_id].ToString()! : "") - .ToListAsync(); - } - + Expression> whereExp = carryMIds?.Count > 0 ? a => carryMIds.Contains(a.carry_id) : a => a.carry_id == carryId; + items = await _db.Queryable().Where(whereExp) + .Select(a => new CarryCodeDetailOutput + { + barcode = a.barcode, + code_batch = a.code_batch!, + codeqty = a.codeqty, + material_code = a.material_code, + material_id = a.material_id, + unit_id = a.unit_id, + }) + .Mapper(it => it.material_name = (it.material_id != null && dicMaterial.ContainsKey(it.material_id)) ? dicMaterial[it.material_id].ToString() : "") + .ToListAsync(); + + return items ?? Enumerable.Empty(); } }