优化根据明细ID获取出入库明细代码

This commit is contained in:
alex
2023-07-05 10:04:48 +08:00
parent 6779adab6f
commit 9ce1f54f2f
8 changed files with 68 additions and 48 deletions

View File

@@ -149,55 +149,30 @@ namespace Tnb.WarehouseMgr
{
dynamic? result = null;
var dic = await _dictionaryDataService.GetDictionaryByTypeId(WmsWareHouseConst.WMS_INSTOCK_D_BILL_STATUS_TYPEID);
async Task<dynamic?> _fetchInOutStockCodesById<TEntity, TOut, TStockCode>(string billDId)
where TEntity : BaseEntity<string>, new()
where TOut : IInOutStockDetail<TStockCode>, new()
where TStockCode : BaseEntity<string>, IInOutStockCode, new()
{
var data = await _db.Queryable<TEntity>()
.Where(a => a.id == billDId)
.Select(a => new TOut
{
CodeDetails = SqlFunc.Subqueryable<TStockCode>().Where(it => it.bill_d_id == a.id).ToList(),
}, true)
.Mapper(it => it.line_status = dic.ContainsKey(it.line_status!) ? dic[it.line_status!]?.ToString()! : "")
.ToListAsync();
return data;
}
switch (input.inoutStockType)
{
case EnumInOutStockType.In:
result = await _db.Queryable<WmsInstockD>()
.Where(a => a.id == input.bill_d_id)
.Select(a => new InStockDetailOutput
{
id = a.id,
bill_id = a.bill_id,
unit_id = a.unit_id,
code_batch = a.code_batch,
warehouse_id = a.warehouse_id,
line_status = a.line_status,
reason = a.reason,
pr_qty = a.pr_qty,
qty = a.qty,
price = a.price,
tax_price = a.tax_price,
print_qty = a.print_qty,
scan_qty = a.scan_qty,
material_code = a.material_code,
amount = a.amount,
all_amount = a.all_amount,
CodeDetails = SqlFunc.Subqueryable<WmsInstockCode>().Where(it => it.bill_d_id == a.id).ToList(),
})
.Mapper(it => it.line_status = dic.ContainsKey(it.line_status!) ? dic[it.line_status!]?.ToString()! : "")
.ToListAsync();
result = await _fetchInOutStockCodesById<WmsInstockD, InStockDetailOutput, WmsInstockCode>(input.bill_d_id);
break;
case EnumInOutStockType.Out:
result = await _db.Queryable<WmsOutstockD>()
.Where(a => a.id == input.bill_d_id)
.Select(a => new OutStockDetailOutput
{
id = a.id,
bill_id = a.bill_id,
unit_id = a.unit_id,
code_batch = a.code_batch,
warehouse_id = a.warehouse_id,
line_status = a.line_status,
price = a.price,
tax_price = a.tax_price,
material_code = a.material_code,
amount = a.amount,
all_amount = a.all_amount,
CodeDetails = SqlFunc.Subqueryable<WmsOutstockCode>().Where(it => it.bill_d_id == a.id).ToList(),
})
.Mapper(it => it.line_status = dic.ContainsKey(it.line_status) ? dic[it.line_status]?.ToString()! : "")
.ToListAsync();
result = await _fetchInOutStockCodesById<WmsOutstockD, OutStockDetailOutput, WmsOutstockCode>(input.bill_d_id);
break;
}
return result;