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();