From 337707f006a2e9550a442d5497518bde65d3ef90 Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 20 Jun 2023 10:11:43 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8E=BB=E9=9B=86=E5=90=88=E6=9C=80=E5=90=8E?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E5=85=83=E7=B4=A0=E6=A0=B7=E4=BE=8B=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Tnb.WarehouseMgr/WareHouseService.cs | 1 - .../Tnb.WarehouseMgr/WmsOutStockService.cs | 29 ++++++++++++++++--- .../WmsPDACarryMoveOutStockService.cs | 5 +++- 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs index ebf0852b..8bb2354d 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs @@ -281,7 +281,6 @@ namespace Tnb.WarehouseMgr { x.status = WmsWareHouseConst.TASK_BILL_STATUS_DZX_ID; x.bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_TASK_EXECUTE_ENCODE).GetAwaiter().GetResult(); - x.is_sign = 1; }); var areaPreTasks = itGroup.ToList(); if (moveNum == 1) diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs index be645c1f..cb1e2121 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs @@ -61,21 +61,23 @@ namespace Tnb.WarehouseMgr if (outStockDList?.Count > 0) { List carryMats = new(); + List carryCodes = new(); foreach (var os in outStockDList) { - var carryCodes = await _db.Queryable().InnerJoin((a, b) => a.id == b.carry_id) + var carryCodesPart = await _db.Queryable().InnerJoin((a, b) => a.id == b.carry_id) .Where((a, b) => b.material_id == os.material_id && b.code_batch == os.code_batch && a.is_lock == 0 && !string.IsNullOrEmpty(a.location_id) && a.status == (int)EnumCarryStatus.占用) .Select() .ToListAsync(); - if (carryCodes?.Count > 0) + if (carryCodesPart?.Count > 0) { + carryCodes.AddRange(carryCodesPart); var codeQty = carryCodes.Sum(x => x.codeqty); if (codeQty < os.pr_qty) { throw new AppFriendlyException($"需要出库[{os.pr_qty}],实际库存{codeQty},数量不足", 500); } - var partCarryMats = carryCodes.Adapt>(); + var partCarryMats = carryCodesPart.Adapt>(); partCarryMats.ForEach(x => { x.need_qty = (int)os.pr_qty; @@ -96,7 +98,26 @@ namespace Tnb.WarehouseMgr }) .ToList(); await _db.Insertable(carryMats).ExecuteCommandAsync(); - + var dic = carryMats.ToDictionary(x => x.id, x => x.real_qty); + var allOutIds = new List(); + var sortingOutIds = new List(); + foreach (var pair in dic) + { + var codes = carryCodes.FindAll(x => x.carry_id == pair.Key); + if (codes?.Count > 0) + { + if (pair.Value == codes.Sum(d => d.codeqty)) + { + allOutIds.Add(pair.Key); + } + else + { + sortingOutIds.Add(pair.Key); + } + } + } + await _db.Updateable().SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.全部出).ToString() }).Where(it => allOutIds.Contains(it.id)).ExecuteCommandAsync(); + await _db.Updateable().SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.分拣出).ToString() }).Where(it => sortingOutIds.Contains(it.id)).ExecuteCommandAsync(); } } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryMoveOutStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryMoveOutStockService.cs index 666a683d..5f2ced5c 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryMoveOutStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryMoveOutStockService.cs @@ -85,6 +85,7 @@ namespace Tnb.WarehouseMgr //根据获取的路径点生成预任务,生成顺序必须预路径算法返回的起终点的顺序一致(预任务顺序) if (points?.Count > 0) { + if (points.Count <= 2) throw new AppFriendlyException("该路径不存在", 500); var preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => { @@ -113,7 +114,9 @@ namespace Tnb.WarehouseMgr preTask.create_time = DateTime.Now; return preTask; }).ToList(); - var isOk = await _wareHouseService.GenPreTask(preTasks,null); + + //preTasks[^1].is_sign =1; 修改最后一个元素的是否签收值 + var isOk = await _wareHouseService.GenPreTask(preTasks, null); if (isOk) { var preTaskUpInput = new GenPreTaskUpInput();