From 210a9296859d5d11f1ec3d27f222c928985de315 Mon Sep 17 00:00:00 2001 From: FanLian Date: Thu, 20 Jul 2023 15:49:15 +0800 Subject: [PATCH] =?UTF-8?q?=E9=BD=90=E5=A5=97=E5=88=86=E6=8B=A3=E8=A1=A8?= =?UTF-8?q?=E8=BE=BE=E5=BC=8F=E9=94=99=E8=AF=AF=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Tnb.WarehouseMgr/WmsSetSortingService.cs | 42 +++++++++++-------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsSetSortingService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsSetSortingService.cs index 98a05402..079c898c 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsSetSortingService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsSetSortingService.cs @@ -56,7 +56,9 @@ namespace Tnb.WarehouseMgr var endLocation = await _db.Queryable().SingleAsync(it => it.id == secondLocationId); var setSortings = await _db.Queryable() - .Where(a => a.status == WmsWareHouseConst.BILLSTATUS_ADD_ID).OrderBy(a => a.seq) + .Where(a => a.status == WmsWareHouseConst.BILLSTATUS_ADD_ID) + .Select() + .OrderBy(a => a.seq) .ToListAsync(); var items = await _db.Queryable().Where(it => it.status == WmsWareHouseConst.BILLSTATUS_ON_ID).ToListAsync(); var onFlag = items?.Count > 0; @@ -64,17 +66,12 @@ namespace Tnb.WarehouseMgr { await _db.Ado.BeginTranAsync(); - var singleSorting = new WmsSetsortingH(); - if (setSortings?.Count > 0) - { - singleSorting = setSortings[0]; - var curCarry = await _db.Queryable().SingleAsync(it => it.id == singleSorting.carry_id); - var isMatch = await IsCarryAndLocationMatchByCarryStd(curCarry, endLocation); - if (!isMatch) throw new AppFriendlyException("库位与载具规格不匹配", 500); - } + + if (setSortings?.Count > 0 && !onFlag) { + var singleSorting = setSortings[0]; var setSortingDList = await _db.Queryable().Where(it => it.bill_id == singleSorting.id).ToListAsync(); if (setSortingDList?.Count > 0) @@ -83,18 +80,20 @@ namespace Tnb.WarehouseMgr List carryCodes = new(); List carryIds = new(); - 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.占用); + ; foreach (var os in setSortingDList) { - whereExpr.And((a, b, c) => b.material_id == os.material_id) - .And((a, b, c) => c.wh_id == os.warehouse_id) - .AndIF(!string.IsNullOrEmpty(os.code_batch), (a, b, c) => b.code_batch == os.code_batch); - + 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) => b.material_id == os.material_id) + .And((a, b, c) => c.wh_id == os.warehouse_id) + .AndIF(!string.IsNullOrEmpty(os.code_batch), (a, b, c) => b.code_batch == os.code_batch) + .ToExpression(); +; var carryCodesPart = await _db.Queryable().InnerJoin((a, b) => a.id == b.carry_id).InnerJoin((a, b, c) => a.location_id == c.id) - .Where(whereExpr.ToExpression()) + .Where(whereExpr) .Select() .ToListAsync(); if (carryCodesPart?.Count > 0) @@ -152,6 +151,13 @@ namespace Tnb.WarehouseMgr var carrys = await _db.Queryable().Where(it => carryIds.Contains(it.id)).ToArrayAsync(); if (carrys?.Length > 0) { + if (setSortings?.Count > 0) + { + + var curCarry = carrys[^carrys.Length]; + var isMatch = await IsCarryAndLocationMatchByCarryStd(curCarry, endLocation); + if (!isMatch) throw new AppFriendlyException("库位与载具规格不匹配", 500); + } List preTasks = new(); List locIds = new();