优化根据明细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

@@ -9,7 +9,7 @@ namespace Tnb.WarehouseMgr.Entities.Dto
/// <summary> /// <summary>
/// 入库单据物料明细信息 /// 入库单据物料明细信息
/// </summary> /// </summary>
public class InStockDetailOutput public class InStockDetailOutput : IInOutStockDetail<WmsInstockCode>
{ {
/// <summary> /// <summary>
/// 入库单明细Id /// 入库单明细Id

View File

@@ -9,7 +9,7 @@ namespace Tnb.WarehouseMgr.Entities.Dto
/// <summary> /// <summary>
/// 出库库单据物料明细信息 /// 出库库单据物料明细信息
/// </summary> /// </summary>
public class OutStockDetailOutput public class OutStockDetailOutput : IInOutStockDetail<WmsOutstockCode>
{ {
/// <summary> /// <summary>
/// 出库单明细Id /// 出库单明细Id

View File

@@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Tnb.WarehouseMgr.Entities
{
public interface IInOutStockCode
{
string bill_d_id { get; set; }
}
}

View File

@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using JNPF.Common.Contracts;
namespace Tnb.WarehouseMgr.Entities
{
public interface IInOutStockDetail<TStockCode> where TStockCode : BaseEntity<string>, new()
{
string? line_status { get; set; }
List<TStockCode> CodeDetails { get; set; }
}
}

View File

@@ -3,6 +3,7 @@ using JNPF;
using JNPF.Common.Contracts; using JNPF.Common.Contracts;
using JNPF.Common.Security; using JNPF.Common.Security;
using SqlSugar; using SqlSugar;
using Tnb.WarehouseMgr.Entities;
namespace Tnb.WarehouseMgr.Entities; namespace Tnb.WarehouseMgr.Entities;
@@ -10,7 +11,7 @@ namespace Tnb.WarehouseMgr.Entities;
/// 入库申请条码表 /// 入库申请条码表
/// </summary> /// </summary>
[SugarTable("wms_instock_code")] [SugarTable("wms_instock_code")]
public partial class WmsInstockCode : BaseEntity<string> public partial class WmsInstockCode : BaseEntity<string>, IInOutStockCode
{ {
public WmsInstockCode() public WmsInstockCode()
{ {

View File

@@ -0,0 +1,15 @@
using JNPF.Common.Const;
using JNPF;
using JNPF.Common.Contracts;
using JNPF.Common.Security;
using SqlSugar;
namespace Tnb.WarehouseMgr.Entities;
/// <summary>
/// 入库申请条码表
/// </summary>
public partial class WmsInstockCode
{
}

View File

@@ -8,7 +8,7 @@ namespace Tnb.WarehouseMgr.Entities;
/// 出库申请条码表 /// 出库申请条码表
/// </summary> /// </summary>
[SugarTable("wms_outstock_code")] [SugarTable("wms_outstock_code")]
public partial class WmsOutstockCode : BaseEntity<string> public partial class WmsOutstockCode : BaseEntity<string>, IInOutStockCode
{ {
public WmsOutstockCode() public WmsOutstockCode()
{ {

View File

@@ -149,55 +149,30 @@ namespace Tnb.WarehouseMgr
{ {
dynamic? result = null; dynamic? result = null;
var dic = await _dictionaryDataService.GetDictionaryByTypeId(WmsWareHouseConst.WMS_INSTOCK_D_BILL_STATUS_TYPEID); 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) switch (input.inoutStockType)
{ {
case EnumInOutStockType.In: case EnumInOutStockType.In:
result = await _db.Queryable<WmsInstockD>() result = await _fetchInOutStockCodesById<WmsInstockD, InStockDetailOutput, WmsInstockCode>(input.bill_d_id);
.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();
break; break;
case EnumInOutStockType.Out: case EnumInOutStockType.Out:
result = await _db.Queryable<WmsOutstockD>() result = await _fetchInOutStockCodesById<WmsOutstockD, OutStockDetailOutput, WmsOutstockCode>(input.bill_d_id);
.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();
break; break;
} }
return result; return result;