diff --git a/src/Khd.Core.Application/WcsTaskApplication.cs b/src/Khd.Core.Application/WcsTaskApplication.cs index b7c1a40..d210053 100644 --- a/src/Khd.Core.Application/WcsTaskApplication.cs +++ b/src/Khd.Core.Application/WcsTaskApplication.cs @@ -166,10 +166,11 @@ namespace Khd.Core.Application { var wcsTask = _dbContext.WcsTask .Where(t => (t.taskType == 32 || t.taskType == 48) && (t.endPointId == baseEquip.objid || t.currPointId == baseEquip.objid)) + .OrderByDescending(t=>t.createTime) .FirstOrDefault(); if (wcsTask != null) { - if (wcsTask.taskType != 48) + if (wcsTask.taskType != 48 && wcsTask.taskStatus != 0) { wcsTask.taskStatus = 7; _dbContext.WcsTask.Update(wcsTask); @@ -178,7 +179,7 @@ namespace Khd.Core.Application agvCompeletedResponse.code = "0"; agvCompeletedResponse.message = "成功"; } - else + else if (wcsTask.taskStatus != 0) { wcsTask.taskStatus = 4; _dbContext.WcsTask.Update(wcsTask); @@ -187,6 +188,11 @@ namespace Khd.Core.Application agvCompeletedResponse.code = "0"; agvCompeletedResponse.message = "成功"; } + else + { + agvCompeletedResponse.code = "1"; + agvCompeletedResponse.message = "未找到当前任务"; + } } else { @@ -445,8 +451,8 @@ namespace Khd.Core.Application { var AgvMessage = new { - reqCode= _snowId.NextId().ToString(), - robots=new string[] {agvStopOrStart.AgvCode} + reqCode = _snowId.NextId().ToString(), + robots = new string[] { agvStopOrStart.AgvCode } }; string result = HttpHelper.SendPostMessage(Ip, Port, "rcms/services/rest/hikRpcService/stopRobot", AgvMessage.ToJsonString()); ReponseMessage reponseMessage = JsonConvert.DeserializeObject(result); diff --git a/src/Khd.Core.Plc/StaticPlcHelper.cs b/src/Khd.Core.Plc/StaticPlcHelper.cs index bdc1158..585e392 100644 --- a/src/Khd.Core.Plc/StaticPlcHelper.cs +++ b/src/Khd.Core.Plc/StaticPlcHelper.cs @@ -88,6 +88,10 @@ namespace Khd.Core.Plc { return Convert.ToBoolean(value); } + if (len == "12") + { + return Convert.ToSingle(value); + } throw new ArgumentException("StaticPlcHelper Ex len is not support"); } } diff --git a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs index 68ddecf..a37a79d 100644 --- a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs +++ b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs @@ -542,11 +542,15 @@ namespace Khd.Core.Wcs.Wcs { try { + bool isCreate = false; dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); - bool canCreate = dbContext.WcsTask.Where(t => t.nextPointId == 9).Where(t => t.taskStatus < 5).Any(); + bool canCreate = dbContext.WcsTask.Where(t => t.nextPointId == 9) + .Where(t => t.useFlag == 1) + .Where(t => t.taskStatus <= 6).Any(); if (!canCreate) { BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 35); + #region 原逻辑 //if (baseEquip.emptyCount == (SystemData.maxTray / 2)) //{ // var endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.equipStatus == 1 && t.emptyCount == (SystemData.maxTray / 2)); @@ -618,6 +622,7 @@ namespace Khd.Core.Wcs.Wcs // } //} //else + #endregion if (baseEquip.emptyCount == SystemData.maxTray)//达到最大值 { var endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.equipStatus == 0 && t.emptyCount == 0);//找周转区 @@ -651,6 +656,80 @@ namespace Khd.Core.Wcs.Wcs dbContext.Add(wcsTask); dbContext.Add(wcsTaskLog); dbContext.SaveChanges(); + isCreate = true; + } + } + if (!isCreate) + { + var emptyEquip = dbContext.BaseEquip.Where(t => t.equipType == 15).Where(t => t.emptyCount == SystemData.maxTray).ToList(); + var secondEmptyEquip = dbContext.BaseEquip.Where(t => t.equipType == 20).Where(t => t.emptyCount == 0).ToList(); + if (emptyEquip.Count >= 2 && secondEmptyEquip.Count >= 4)//二楼空库位多余4个,三楼空库位大于4个 + { + BaseEquip startEquip = emptyEquip.First(); + WcsTask wcsTask = new WcsTask() + { + objid = StaticData.SnowId.NextId(), + serialNo = SystemData.GetSerialNo(dbContext), + taskType = 101, + nextPointId = agvEquip.objid, + nextPointNo = agvEquip.equipNo, + currPointId = startEquip.objid, + currPointNo = startEquip.equipNo, + endPointId = secondEmptyEquip.First().objid, + endPointNo = secondEmptyEquip.First().equipNo, + equipmentNo = agvEquip.equipNo, + useFlag = 1, + qty = startEquip.emptyCount, + isEmpty = "1", + taskStatus = 0, + createBy = "WCS", + createTime = DateTime.Now, + floorNo = 2, + fromFloorNo = 3, + masterId = 0, + orderId = 0, + materialId = 0, + }; + WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask); + dbContext.Add(wcsTask); + dbContext.Add(wcsTaskLog); + dbContext.SaveChanges(); + } + else if (emptyEquip.Count == 3&& secondEmptyEquip.Count >= 2) + { + BaseEquip startEquip = emptyEquip.First(); + WcsTask wcsTask = new WcsTask() + { + objid = StaticData.SnowId.NextId(), + serialNo = SystemData.GetSerialNo(dbContext), + taskType = 101, + nextPointId = agvEquip.objid, + nextPointNo = agvEquip.equipNo, + currPointId = startEquip.objid, + currPointNo = startEquip.equipNo, + endPointId = secondEmptyEquip.First().objid, + endPointNo = secondEmptyEquip.First().equipNo, + equipmentNo = agvEquip.equipNo, + useFlag = 1, + qty = startEquip.emptyCount, + isEmpty = "1", + taskStatus = 0, + createBy = "WCS", + createTime = DateTime.Now, + floorNo = 2, + fromFloorNo = 3, + masterId = 0, + orderId = 0, + materialId = 0, + }; + WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask); + dbContext.Add(wcsTask); + dbContext.Add(wcsTaskLog); + dbContext.SaveChanges(); + } + else + { + //报警 } } } diff --git a/src/Khd.Core.Wcs/Wcs/SystemTimer.cs b/src/Khd.Core.Wcs/Wcs/SystemTimer.cs index 14bbe4f..0980f8a 100644 --- a/src/Khd.Core.Wcs/Wcs/SystemTimer.cs +++ b/src/Khd.Core.Wcs/Wcs/SystemTimer.cs @@ -127,7 +127,7 @@ namespace Khd.Core.Wcs.Wcs BaseEquip agvEquip = StaticData.BaseEquip.First(t => t.objid == item.nextPointId); if (!string.IsNullOrEmpty(item.taskCode) && !string.IsNullOrEmpty(agvEquip.serverIp)) { - if(item.endPointId== 11) + if (item.endPointId == 11) { dbContext.WcsTask.Remove(item); if (item.taskStatus == 6) @@ -329,16 +329,86 @@ namespace Khd.Core.Wcs.Wcs { try { - FiveAgvStatusLogic(); - SecondAgvLogic(); - ThirdAgvLogic(); - SendTrayMessage(); - HositerLogic(); - CtuLineLogic(); - FiveAgvLogic(); - FiveBearAgvLogic(); - CtuCmdLogic(); - UpdatePlcPointValue(); + try + { + FiveAgvStatusLogic(); + } + catch + { + + } + try + { + SecondAgvLogic(); + } + catch + { + + } + try + { + ThirdAgvLogic(); + } + catch + { + + } + try + { + SendTrayMessage(); + } + catch + { + + } + try + { + HositerLogic(); + } + catch + { + + } + try + { + CtuLineLogic(); + } + catch + { + + } + try + { + FiveAgvLogic(); + } + catch + { + + } + try + { + FiveBearAgvLogic(); + } + catch + { + + } + try + { + CtuCmdLogic(); + } + catch + { + + } + try + { + UpdatePlcPointValue(); + } + catch + { + + } } catch (Exception ex) { diff --git a/src/Khd.Core.Wpf/Form/FormBoardT.xaml b/src/Khd.Core.Wpf/Form/FormBoardT.xaml index 6871989..76e0a37 100644 --- a/src/Khd.Core.Wpf/Form/FormBoardT.xaml +++ b/src/Khd.Core.Wpf/Form/FormBoardT.xaml @@ -1976,7 +1976,7 @@ - +