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>
/// 库位类型 /// 库位类型
/// </summary> /// </summary>
public enum EnumLocationType //public enum EnumLocationType
{ //{
= 0, // 存储库位 = 0,
, // 入库库位,
, // 出库库位,
, // 出入库位,
, // 分拣库位,
} //}
} }

View File

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

View File

@@ -13,6 +13,6 @@ namespace Tnb.WarehouseMgr.Interfaces
/// </summary> /// </summary>
/// <param name="entity"></param> /// <param name="entity"></param>
/// <returns></returns> /// <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>(); var items = new List<BasLocation>();
try 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) catch (Exception)
{ {
@@ -173,8 +179,26 @@ namespace Tnb.WarehouseMgr
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[HttpGet] [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); return await Task.FromResult<dynamic>(true);
} }
/// <summary> /// <summary>

View File

@@ -156,7 +156,7 @@ namespace Tnb.WarehouseMgr
} }
[NonAction] [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; var row = 1;
Task<int> resTask = Task.FromResult(row); Task<int> resTask = Task.FromResult(row);

View File

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