diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyOutstockService .cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyOutstockService .cs index a651944c..dbde0785 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyOutstockService .cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyOutstockService .cs @@ -77,20 +77,7 @@ namespace Tnb.WarehouseMgr var setQty = await _db.Queryable().FirstAsync(it => it.bill_code == input.data[nameof(WmsEmptyOutstockH.bill_code)].ToString()); var carrys = await _db.Queryable().LeftJoin((a, b) => a.location_id == b.id) .Where((a, b) => a.carrystd_id == input.data[nameof(WmsEmptyOutstockH.carrystd_id)].ToString() - && a.carry_status == "0" && a.is_lock == 0 && b.is_lock == 0 && b.is_type == "0") - .Select((a, b) => new - { - carry_id = a.id, - carry_code= a.carry_code, - carrystd_id = a.id, - location_id = b.id, - carry_status = a.carry_status, - c_is_lock = a.is_lock, - l_is_lock = b.is_lock, - l_is_use = b.is_use, - l_is_type = b.is_type - }) - + && a.carry_status == "0" && a.is_lock == 0 && b.is_lock == 0) .ToListAsync(); WmsPointH sPoint = null; @@ -99,9 +86,13 @@ namespace Tnb.WarehouseMgr { ePoint = await _db.Queryable().FirstAsync(it => it.location_id == input.data[nameof(WmsPointH.location_id)].ToString()); } + int i = 0; + var isOk = false; + //根据每个载具的起始库位做路径运算 - for (int i = 0; i < setQty.qty; i++) + for (i = 0; i < setQty.qty; i++) { + if (carrys?.Count > 0) sPoint = await _db.Queryable().FirstAsync(it => it.location_id == carrys[i].location_id); @@ -129,7 +120,7 @@ namespace Tnb.WarehouseMgr preTask.status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID; preTask.biz_type = WmsWareHouseConst.BIZTYPE_WMSEPTYOUTSTK_ID; preTask.task_type = WmsWareHouseConst.WMS_PRETASK_OUTSTOCK_TYPE_ID; - preTask.carry_id = carrys![i].carry_id; + preTask.carry_id = carrys![i].id; preTask.carry_code = carrys![i].carry_code; preTask.area_id = sPoint?.area_id!; preTask.area_code = it.Key; @@ -139,19 +130,55 @@ namespace Tnb.WarehouseMgr preTask.create_time = DateTime.Now; return preTask; }).ToList(); - var isOk = await _wareHouseService.GenPreTask(preTasks, null); - if (isOk) - { - //所有载具加锁 - var ids = carrys.Select(x => x.carry_id).ToList(); - await _db.Updateable().SetColumns(it => new BasLocation { is_lock = 1 }).Where(it => ids.Contains(it.id)).ExecuteCommandAsync(); - //所有库位加锁 - var loc = carrys.Select(x => x.location_id).ToList(); - await _db.Updateable().SetColumns(it => new BasLocation { is_lock = 1 }).Where(it => loc.Contains(it.id)).ExecuteCommandAsync(); + //更新页面 + isOk = await _wareHouseService.GenPreTask(preTasks, null); + + } + if (isOk) + { + var preTaskUpInput = new GenPreTaskUpInput(); + preTaskUpInput.RquireId = input.data["ReturnIdentity"].ToString(); + preTaskUpInput.CarryId = carrys![i].id; + preTaskUpInput.CarryStartLocationId = points.FirstOrDefault().location_id; + preTaskUpInput.CarryStartLocationCode = points.FirstOrDefault().location_code; + preTaskUpInput.LocationIds = points.Select(x => x.location_id).ToList(); - } + //更新明细表 + WmsEmptyOutstockD wmsEmptyOutstockD = new (); + wmsEmptyOutstockD.id = SnowflakeIdHelper.NextId(); + wmsEmptyOutstockD.bill_id = input.data[nameof(WmsEmptyOutstockH.bill_code)]?.ToString()!; + wmsEmptyOutstockD.biz_type = WmsWareHouseConst.BIZTYPE_WMSEPTYOUTSTK_ID; + wmsEmptyOutstockD.location_id = ePoint.location_id; + wmsEmptyOutstockD.status = WmsWareHouseConst.BIZTYPE_WMSEPTYOUTSTK_ID; + wmsEmptyOutstockD.carry_id = carrys[i].id; + wmsEmptyOutstockD.carry_code = carrys[i].carry_code; + wmsEmptyOutstockD.create_id = _userManager.UserId; + wmsEmptyOutstockD.create_time = DateTime.Now; + await _db.Insertable(wmsEmptyOutstockD) + .ExecuteCommandAsync(); + + WmsHandleH handleH = new(); + handleH.org_id = _userManager.User.OrganizeId; + handleH.startlocation_id = carrys?[i].location_id!; + handleH.endlocation_id = ePoint.location_id; + handleH.bill_code = input.data[nameof(WmsHandleH.bill_code)]?.ToString()!; + handleH.biz_type = input.data[nameof(WmsHandleH.biz_type)]?.ToString()!; + handleH.carry_id = input.data[nameof(WmsHandleH.carry_id)]?.ToString()!; + handleH.carry_code = input.data[nameof(WmsHandleH.carry_code)]?.ToString(); + handleH.require_id = input.data["ReturnIdentity"].ToString(); + handleH.require_code = input.data[nameof(WmsHandleH.bill_code)]?.ToString()!; + handleH.create_id = _userManager.UserId; + handleH.create_time = DateTime.Now; + preTaskUpInput.PreTaskRecord = handleH; + //根据载具移出Id,回更单据状态 + await _db.Updateable().SetColumns(it => new WmsEmptyOutstockH { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == preTaskUpInput.RquireId).ExecuteCommandAsync(); + + await _wareHouseService.GenInStockTaskHandleAfter(preTaskUpInput, + it => new WmsCarryH { is_lock = 1, location_id = preTaskUpInput.CarryStartLocationId, location_code = preTaskUpInput.CarryStartLocationCode }, + it => new BasLocation { is_lock = 1 }); } } + } await _db.Ado.CommitTranAsync();