1、出库库策略接口函数新增

2、调整更新 空载具函数,去除多余参数
This commit is contained in:
alex
2023-07-31 14:43:43 +08:00
parent 703eda463e
commit d707daa395
6 changed files with 46 additions and 16 deletions

View File

@@ -9,12 +9,12 @@ namespace Tnb.BasicData.Entities.Enums
/// <summary>
/// 库位类型
/// </summary>
public enum EnumLocationType
{
= 0,
,
,
,
,
}
//public enum EnumLocationType
//{
// 存储库位 = 0,
// 入库库位,
// 出库库位,
// 出入库位,
// 分拣库位,
//}
}

View File

@@ -8,7 +8,10 @@ namespace Tnb.WarehouseMgr.Entities.Dto
{
public class OutStockStrategyQuery
{
/// <summary>
/// 仓库Id
/// </summary>
public string warehouse_id { get; set; }
/// <summary>
/// 载具Id
/// </summary>
@@ -27,5 +30,6 @@ namespace Tnb.WarehouseMgr.Entities.Dto
public int BllType { get; set; }
public int Size { get; set; }
}
}

View File

@@ -13,6 +13,6 @@ namespace Tnb.WarehouseMgr.Interfaces
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
Task<Task<int>> UpdateNullCarry(WmsCarryH carryObj, Func<WmsCarryH, Task<int>> updateTask = null, [CallerMemberName] string original = "");
Task<Task<int>> UpdateNullCarry(WmsCarryH carryObj, Func<WmsCarryH, Task<int>>? updateTask = null);
}
}

View File

@@ -159,8 +159,14 @@ namespace Tnb.WarehouseMgr
var items = new List<BasLocation>();
try
{
items = await _db.Queryable<BasLocation>().Where(it => it.wh_id == input.warehouse_id && it.is_lock == 0 && it.is_type == "0" && it.is_use == ((int)EnumCarryStatus.).ToString()).OrderBy(it => new { it.layers, it.loc_line, it.loc_column }, OrderByType.Asc).ToListAsync();
var policy = await _db.Queryable<WmsInstockPolicies>().Where(it => it.status == 1).FirstAsync();
if (policy == null) throw new AppFriendlyException("没有可用的策略", 500);
var whereExp = Expressionable.Create<BasLocation>()
.And(it => it.wh_id == input.warehouse_id)
.And(it => it.is_lock == 0)
.And(it => it.is_use == ((int)EnumCarryStatus.).ToString())
.ToExpression();
items = await _db.Queryable<BasLocation>().Where(whereExp).OrderBy(policy.policy).ToListAsync();
}
catch (Exception)
{
@@ -173,8 +179,26 @@ namespace Tnb.WarehouseMgr
/// </summary>
/// <returns></returns>
[HttpGet]
public async Task<dynamic> OutStockStrategy()
public async Task<dynamic> OutStockStrategy(OutStockStrategyQuery input)
{
var whereExpr = Expressionable.Create<WmsCarryH, WmsCarryCode, BasLocation>()
.And((a, b, c) => a.is_lock == 0)
.And((a, b, c) => !string.IsNullOrEmpty(a.location_id))
.And((a, b, c) => a.status == (int)EnumCarryStatus.)
.And((a, b, c) => c.is_type == ((int)EnumLocationType.).ToString())
.And((a, b, c) => a.out_status == "0")
.And((a, b, c) => c.wh_id == input.warehouse_id)
.AndIF(!string.IsNullOrEmpty(input.material_id), (a, b, c) => b.material_id == input.material_id)
.AndIF(!string.IsNullOrEmpty(input.code_batch), (a, b, c) => b.code_batch == input.code_batch)
.ToExpression();
var policy = await _db.Queryable<WmsInstockPolicies>().Where(it => it.status == 1).FirstAsync();
if (policy == null) throw new AppFriendlyException("没有可用策略", 500);
var result = await _db.Queryable<WmsCarryH>().InnerJoin<WmsCarryCode>((a, b) => a.id == b.carry_id)
.InnerJoin<BasLocation>((a, b, c) => a.location_id == c.id)
.Where(whereExpr)
.OrderBy(policy.policy)
.Select<WmsCarryH>()
.ToListAsync();
return await Task.FromResult<dynamic>(true);
}
/// <summary>

View File

@@ -156,7 +156,7 @@ namespace Tnb.WarehouseMgr
}
[NonAction]
public async Task<Task<int>> UpdateNullCarry(WmsCarryH carryObj, Func<WmsCarryH, Task<int>> updateTask = null, [CallerMemberName] string original = "")
public async Task<Task<int>> UpdateNullCarry(WmsCarryH carryObj, Func<WmsCarryH, Task<int>>? updateTask = null)
{
var row = 1;
Task<int> resTask = Task.FromResult(row);

View File

@@ -56,6 +56,7 @@ namespace Tnb.WarehouseMgr
private async Task<dynamic> Create(VisualDevModelDataCrInput input)
{
var row = 1;
if (input == null) throw new ArgumentNullException(nameof(input));
try
{
@@ -90,7 +91,7 @@ namespace Tnb.WarehouseMgr
await _runService.Create(templateEntity, input);
List<WmsCarryCode> carryCodes = new();
List<WmsCheckstockD> details = new();
switch (checkType.ToEnum<EnumCheckType>())
switch (checkType!.ToEnum<EnumCheckType>())
{
case EnumCheckType.:
carryCodes = await _db.Queryable<BasLocation>().InnerJoin<WmsCarryCode>((a, b) => a.id == b.location_id)
@@ -213,10 +214,11 @@ namespace Tnb.WarehouseMgr
}
catch (Exception)
{
row = 0;
await _db.Ado.RollbackTranAsync();
throw;
}
return Task.FromResult(1);
return Task.FromResult(row);
}
private Task<List<WmsDistaskH>> FetchDisTasks(Expression<Func<WmsDistaskH, BasLocation, bool>> joinExp, Expression<Func<WmsDistaskH, BasLocation, bool>> whereExp)