From b0d03462392ea656cf9e06297cacf1546a459cec Mon Sep 17 00:00:00 2001 From: FanLian Date: Mon, 19 Jun 2023 13:46:19 +0800 Subject: [PATCH] =?UTF-8?q?PDA=E7=A9=BA=E8=BD=BD=E5=85=B7=E5=85=A5?= =?UTF-8?q?=E5=BA=93=E6=A8=A1=E5=9D=97=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WmsPDAEmptyOutstockService .cs | 112 +++++++++++------- 1 file changed, 69 insertions(+), 43 deletions(-) diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAEmptyOutstockService .cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAEmptyOutstockService .cs index f6086b8d..355825e5 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAEmptyOutstockService .cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAEmptyOutstockService .cs @@ -21,6 +21,7 @@ using Tnb.WarehouseMgr.Entities; using Tnb.WarehouseMgr.Entities.Attributes; using Tnb.WarehouseMgr.Entities.Consts; using Tnb.WarehouseMgr.Entities.Dto; +using Tnb.WarehouseMgr.Entities.Enums; using Tnb.WarehouseMgr.Interfaces; namespace Tnb.WarehouseMgr @@ -29,12 +30,11 @@ namespace Tnb.WarehouseMgr /// /// 空载具出库 /// - [OverideVisualDev(ModuleConsts.MODULE_WMSEMPTYOUTSTKPDA_ID)] - [ServiceModule(BizTypeId)] + [OverideVisualDev(ModuleConsts.MODULE_WMSEMPTYOUTSTK_ID)] + public class WmsPDAEmptyOutstockService : BaseWareHouseService { - private const string BizTypeId = "pda26121986416677"; private readonly ISqlSugarClient _db; private readonly IRunService _runService; private readonly IVisualDevService _visualDevService; @@ -65,11 +65,7 @@ namespace Tnb.WarehouseMgr { await _db.Ado.BeginTranAsync(); - - - - - VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleConsts.MODULE_WMSEMPTYOUTSTKPDA_ID, true); + VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleConsts.MODULE_WMSEMPTYOUTSTK_ID, true); await _runService.Create(templateEntity, input); /*//入库取终点 @@ -77,33 +73,27 @@ namespace Tnb.WarehouseMgr var endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput);*/ //出库取起点,获取所有符合输入的载具规格的载具 - var setQty = await _db.Queryable().FirstAsync(it => it.bill_code == input.data[nameof(WmsEmptyOutstockH.bill_code)]); + 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) - .Select((a,b) => new - { - carry_id = a.id, - 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 - }) - .Where(it => it.carrystd_id == input.data[nameof(WmsEmptyOutstockH.carrystd_id)].ToString() - && it.carry_status == "0"&& it.c_is_lock == 0 && it.l_is_lock == 0 && it.l_is_use == "0" && it.l_is_type == "0") + .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) .ToListAsync(); - + WmsPointH sPoint = null; WmsPointH ePoint = null; if (input.data.ContainsKey(nameof(WmsPointH.location_id))) { 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++) { - sPoint = await _db.Queryable().FirstAsync(it => it.location_id == carrys[i].location_id); + + if (carrys?.Count > 0) + sPoint = await _db.Queryable().FirstAsync(it => it.location_id == carrys[i].location_id); if (sPoint != null && ePoint != null) { @@ -119,18 +109,19 @@ namespace Tnb.WarehouseMgr WmsPretaskH preTask = new(); preTask.org_id = _userManager.User.OrganizeId; - preTask.startlocation_id = sPoint?.location_id; - preTask.startlocation_code = sPoint?.location_code; - preTask.endlocation_id = ePoint?.location_id; - preTask.endlocation_code = ePoint?.location_code; + preTask.startlocation_id = sPoint?.location_id!; + preTask.startlocation_code = sPoint?.location_code!; + preTask.endlocation_id = ePoint?.location_id!; + preTask.endlocation_code = ePoint?.location_code!; preTask.start_floor = sPoint?.floor.ToString(); preTask.end_floor = ePoint?.floor.ToString(); preTask.bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(); preTask.status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID; - preTask.biz_type = WmsWareHouseConst.BIZTYPE_WMSEMPTYINSTOCK_ID; - preTask.carry_id = input.data[nameof(preTask.carry_id)]?.ToString()!; - preTask.carry_code = input.data[nameof(preTask.carry_code)]?.ToString()!; - preTask.area_id = sPoint?.area_id; + preTask.biz_type = WmsWareHouseConst.BIZTYPE_WMSEPTYOUTSTK_ID; + preTask.task_type = WmsWareHouseConst.WMS_PRETASK_OUTSTOCK_TYPE_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; preTask.require_id = input.data["ReturnIdentity"].ToString(); preTask.require_code = input.data[nameof(preTask.bill_code)]?.ToString()!; @@ -138,20 +129,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.BILLSTATUS_COMPLETE_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();