优化WmsFeedingService 代码

This commit is contained in:
alex
2023-07-17 11:43:45 +08:00
parent c7a14fccfc
commit f1c8ad986e

View File

@@ -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<BasMaterial>().ToDictionaryAsync(x => x.id, x => x.name);
}
var carry = await _db.Queryable<WmsCarryH>().SingleAsync(it=>it.id == carryId);
var carry = await _db.Queryable<WmsCarryH>().SingleAsync(it => it.id == carryId);
List<CarryCodeDetailOutput> items = new();
List<string> carryMIds = new();
if (carry.carrystd_id == WmsWareHouseConst.CARRY_LJSTD_ID)
{
var carryDs = await _db.Queryable<WmsCarryD>().Where(it=>it.carry_id == carryId).ToListAsync();
var carryMIds = carryDs.Select(x=>x.membercarry_id).ToList();
items = await _db.Queryable<WmsCarryCode>().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<WmsCarryD>().Where(it => it.carry_id == carryId).ToListAsync();
carryMIds = carryDs.Select(x => x.membercarry_id).ToList();
}
else
{
items = await _db.Queryable<WmsCarryCode>().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<Func<WmsCarryCode, bool>> whereExp = carryMIds?.Count > 0 ? a => carryMIds.Contains(a.carry_id) : a => a.carry_id == carryId;
items = await _db.Queryable<WmsCarryCode>().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<dynamic>();
}
}