From 4d8cc561aecd10da469e7f06afc5af19db6dd1fe Mon Sep 17 00:00:00 2001 From: zhangxy Date: Wed, 30 Jul 2025 09:36:45 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E6=AD=A3=E7=A7=BB=E5=BA=93=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E9=87=8D=E5=A4=8D=E6=B8=85=E5=BA=93=E7=9A=84BUG=202.?= =?UTF-8?q?=E7=BB=99=E9=80=81=E5=B0=8F=E6=96=99=E7=AE=B1=E7=9A=84=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E7=94=9F=E6=88=90=E5=8A=A0=E5=85=A5=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Application/WcsTaskApplication.cs | 2 +- SlnMesnac.WCS/WCS/BearAgv.cs | 33 ++++++++++++++++++------- SlnMesnac.WCS/WCS/CreateTaskByRecord.cs | 17 +++++++++++-- 3 files changed, 40 insertions(+), 12 deletions(-) diff --git a/Application/WcsTaskApplication.cs b/Application/WcsTaskApplication.cs index 0339a87..8e3bdbf 100644 --- a/Application/WcsTaskApplication.cs +++ b/Application/WcsTaskApplication.cs @@ -347,7 +347,7 @@ namespace Application try { List Locationlist = sqlSugarClient.SqlQueryable - ("SELECT agv_position_code,location_status,ifnull(amount,0) as amount FROM wms_base_location wbl LEFT JOIN wms_pallet_info wpi ON wbl.container_code=wpi.pallet_info_code") + ("SELECT location_code as agv_position_code,location_status,ifnull(amount,0) as amount FROM wms_base_location wbl LEFT JOIN wms_pallet_info wpi ON wbl.container_code=wpi.pallet_info_code") .ToList(); //List Locationlist = sqlSugarClient.Queryable().LeftJoin((wbi, wpi) => wbi.ContainerCode == wpi.PalletInfoCode).ToList(); //List locationInfos = new List(); diff --git a/SlnMesnac.WCS/WCS/BearAgv.cs b/SlnMesnac.WCS/WCS/BearAgv.cs index 63b3e57..e5b443c 100644 --- a/SlnMesnac.WCS/WCS/BearAgv.cs +++ b/SlnMesnac.WCS/WCS/BearAgv.cs @@ -252,9 +252,30 @@ namespace SlnMesnac.WCS.WCS //---------------------------------- if (string.IsNullOrEmpty(readEpc) || readEpc != task.PalletInfoCode) { - if (string.IsNullOrEmpty(readEpc)){ + int RFIDretrytime; + for (RFIDretrytime = 0; RFIDretrytime < 3; RFIDretrytime++) + { + readEpc = ReadEpcStrByRfidKey(endLocation.EquipKey); + if (string.IsNullOrEmpty(readEpc)){ + + _logger.Error("入库校验RFID失败,当前库位RFID为空,未读取到,正在重试读取,任务RFID:" + task.PalletInfoCode); + Thread.Sleep(500); + } + else + { + _logger.Error("入库校验RFID失败,当前库位RFID:" + readEpc + ",任务RFID:" + task.PalletInfoCode); + return; + } + } + RFIDretrytime = 0; + if (string.IsNullOrEmpty(readEpc)) + { + workShop3Plc.writeBoolByAddress("DB100.DBX120.1", true); - _logger.Error("入库校验RFID失败,当前库位RFID为空,未读取到,任务RFID:" + task.PalletInfoCode); + _logger.Error("入库校验RFID失败,当前库位RFID为空,未读取到,重试多次读取到,已锁库,任务RFID:" + task.PalletInfoCode); + endLocation.LocationStatus = 1; + sqlSugarClient.Updateable(endLocation).ExecuteCommand(); + Thread.Sleep(500); } else { @@ -262,7 +283,7 @@ namespace SlnMesnac.WCS.WCS return; } //workShop3Plc.writeBoolByAddress(StaticData.GetPlcAddress("3#机台校验失败提示"), true); - + } //workShop3Plc.writeBoolByAddress(StaticData.GetPlcAddress("3#机台校验失败提示"), false); endLocation.LocationStatus = 0; @@ -393,11 +414,6 @@ namespace SlnMesnac.WCS.WCS } else if (task.TaskStatus == 4) { - //解锁起始库位 - WmsBaseLocation? startLocation = sqlSugarClient.Queryable().First(t => t.AgvPositionCode == task.CurrPointNo); - startLocation.ContainerCode = ""; - startLocation.LocationStatus = 0; - //解锁终点库位 WmsBaseLocation? endLocation = sqlSugarClient.Queryable().First(t => t.AgvPositionCode == task.EndPointNo); if (endLocation != null) @@ -407,7 +423,6 @@ namespace SlnMesnac.WCS.WCS sqlSugarClient.AsTenant().BeginTran(); try { - sqlSugarClient.Updateable(startLocation).ExecuteCommand(); sqlSugarClient.Updateable(endLocation).ExecuteCommand(); sqlSugarClient.Deleteable(task).ExecuteCommand(); sqlSugarClient.AsTenant().CommitTran(); diff --git a/SlnMesnac.WCS/WCS/CreateTaskByRecord.cs b/SlnMesnac.WCS/WCS/CreateTaskByRecord.cs index 53e6422..08687ba 100644 --- a/SlnMesnac.WCS/WCS/CreateTaskByRecord.cs +++ b/SlnMesnac.WCS/WCS/CreateTaskByRecord.cs @@ -538,9 +538,12 @@ namespace SlnMesnac.WCS.WCS WcsTaskLog wcsTaskLog = CoreMapper.Map(task); wcsTaskLog.Id = id; targetLocation.LocationStatus = 1; - sqlSugarClient.Updateable(targetLocation).ExecuteCommand(); + int LockFlag = sqlSugarClient.Updateable(targetLocation).ExecuteCommand(); sqlSugarClient.Insertable(wcsTaskLog).ExecuteCommand(); - + while (LockFlag<=0) + { + LockFlag = sqlSugarClient.Updateable(targetLocation).ExecuteCommand(); + } #region 修改托盘信息 if (wmsPalletInfo != null) @@ -582,12 +585,22 @@ namespace SlnMesnac.WCS.WCS { //判断agv是否有来这里的任务 bool hasTask = sqlSugarClient.Queryable().Any(it => it.TaskType == StaticTaskType.TransferMaterialMetrologyRoomBoxTask && it.PalletInfoCode == rfid); + if (hasTask) { _logger.Info($"该托盘{rfid}已有3#接驳位到2#计量室接驳位的送料任务"); return; } + //限制送料任务生成数量 + int transTaskAmount = sqlSugarClient.Queryable().Where(it => it.TaskType == StaticTaskType.TransferMaterialMetrologyRoomBoxTask).ToList().Count(); + + if (transTaskAmount > 2) + { + _logger.Info($"小托盘任务生成任务已大于上限(上限为2)!请稍等,所有小车同时运输小托盘将会导致卡死!"); + return; + } + //起点库位 3#车间小料箱取送货接驳点 WcsBaseEquip startEquip = sqlSugarClient.Queryable().First(it => it.EquipNo == "3DeliverSmallGoodsPoint"); //终点库位 2#车间计量室接驳点