diff --git a/BasicData/Tnb.BasicData.Entities/Enums/EnumLocationType.cs b/BasicData/Tnb.BasicData.Entities/Enums/EnumLocationType.cs index 785a10fb..8e021211 100644 --- a/BasicData/Tnb.BasicData.Entities/Enums/EnumLocationType.cs +++ b/BasicData/Tnb.BasicData.Entities/Enums/EnumLocationType.cs @@ -9,12 +9,12 @@ namespace Tnb.BasicData.Entities.Enums /// /// 库位类型 /// - public enum EnumLocationType - { - 存储库位 = 0, - 入库库位, - 出库库位, - 出入库位, - 分拣库位, - } + //public enum EnumLocationType + //{ + // 存储库位 = 0, + // 入库库位, + // 出库库位, + // 出入库位, + // 分拣库位, + //} } diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Queries/OutStockStrategyQuery.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Queries/OutStockStrategyQuery.cs index fdd959d3..de9911a5 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Queries/OutStockStrategyQuery.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Queries/OutStockStrategyQuery.cs @@ -8,7 +8,10 @@ namespace Tnb.WarehouseMgr.Entities.Dto { public class OutStockStrategyQuery { - + /// + /// 仓库Id + /// + public string warehouse_id { get; set; } /// /// 载具Id /// @@ -27,5 +30,6 @@ namespace Tnb.WarehouseMgr.Entities.Dto public int BllType { get; set; } public int Size { get; set; } + } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWmsCarryService.cs b/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWmsCarryService.cs index ae2deba4..b35a8c3a 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWmsCarryService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWmsCarryService.cs @@ -13,6 +13,6 @@ namespace Tnb.WarehouseMgr.Interfaces /// /// /// - Task> UpdateNullCarry(WmsCarryH carryObj, Func> updateTask = null, [CallerMemberName] string original = ""); + Task> UpdateNullCarry(WmsCarryH carryObj, Func>? updateTask = null); } } \ No newline at end of file diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs index 3dfa04c8..657db482 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs @@ -159,8 +159,14 @@ namespace Tnb.WarehouseMgr var items = new List(); try { - items = await _db.Queryable().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().Where(it => it.status == 1).FirstAsync(); + if (policy == null) throw new AppFriendlyException("没有可用的策略", 500); + var whereExp = Expressionable.Create() + .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().Where(whereExp).OrderBy(policy.policy).ToListAsync(); } catch (Exception) { @@ -173,8 +179,26 @@ namespace Tnb.WarehouseMgr /// /// [HttpGet] - public async Task OutStockStrategy() + public async Task OutStockStrategy(OutStockStrategyQuery input) { + var whereExpr = Expressionable.Create() + .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().Where(it => it.status == 1).FirstAsync(); + if (policy == null) throw new AppFriendlyException("没有可用策略", 500); + var result = await _db.Queryable().InnerJoin((a, b) => a.id == b.carry_id) + .InnerJoin((a, b, c) => a.location_id == c.id) + .Where(whereExpr) + .OrderBy(policy.policy) + .Select() + .ToListAsync(); return await Task.FromResult(true); } /// diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryService.cs index 7e8ca3ba..108fca64 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryService.cs @@ -156,7 +156,7 @@ namespace Tnb.WarehouseMgr } [NonAction] - public async Task> UpdateNullCarry(WmsCarryH carryObj, Func> updateTask = null, [CallerMemberName] string original = "") + public async Task> UpdateNullCarry(WmsCarryH carryObj, Func>? updateTask = null) { var row = 1; Task resTask = Task.FromResult(row); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsCheckTaskService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsCheckTaskService.cs index f7cd1c6a..e05bef60 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsCheckTaskService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsCheckTaskService.cs @@ -56,6 +56,7 @@ namespace Tnb.WarehouseMgr private async Task 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 carryCodes = new(); List details = new(); - switch (checkType.ToEnum()) + switch (checkType!.ToEnum()) { case EnumCheckType.全库盘点: carryCodes = await _db.Queryable().InnerJoin((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> FetchDisTasks(Expression> joinExp, Expression> whereExp)