From 11b5973f22e46205a838d179107ce2af54712e3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8C=83?= <15095123350@163.com> Date: Mon, 5 Aug 2024 17:32:39 +0800 Subject: [PATCH] 20240805 --- src/Khd.Core.Wcs/MainCentralControl.cs | 27 +++++--------- src/Khd.Core.Wcs/Wcs/FirstFloor.cs | 49 +++++++++++++++----------- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/src/Khd.Core.Wcs/MainCentralControl.cs b/src/Khd.Core.Wcs/MainCentralControl.cs index b166475..ac50440 100644 --- a/src/Khd.Core.Wcs/MainCentralControl.cs +++ b/src/Khd.Core.Wcs/MainCentralControl.cs @@ -72,28 +72,23 @@ namespace Khd.Core.Wcs firstFloor.StartPoint(); //二层接驳位 - var SecondBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 2 && t.equipType == 1).First(); - SecondFloorPoint secondFloorPoint = new(_host, SecondBaseFloorEquip.floorNo.Value); + SecondFloorPoint secondFloorPoint = new(_host, 2); secondFloorPoint.StartPoint(); //二层AGV - var SecondFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 2 && t.equipType == 4).First(); - SecondFloorAGV secondFloorAGV = new(_host, SecondFloorAgvEquip.floorNo.Value); + SecondFloorAGV secondFloorAGV = new(_host,2); secondFloorAGV.StartPoint(); //二楼线体 - var SecondFloorLineEquip = StaticData.BaseEquip.Where(t => t.floorNo == 2 && t.equipType == 17).First(); - SecondFloorLine secondFloorLine = new(_host, SecondFloorLineEquip.floorNo.Value); + SecondFloorLine secondFloorLine = new(_host, 2); secondFloorLine.StartPoint(); //三层接驳位 - var ThirdBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 3 && t.equipType == 1).First(); - ThirdFloorPoint thirdFloorPoint = new(_host, ThirdBaseFloorEquip.floorNo.Value); + ThirdFloorPoint thirdFloorPoint = new(_host, 3); thirdFloorPoint.StartPoint(); //三层AGV - var ThirdFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 3 && t.equipType == 4).First(); - ThirdFloorAGV thirdFloorAGV = new(_host, ThirdFloorAgvEquip.floorNo.Value); + ThirdFloorAGV thirdFloorAGV = new(_host, 3); thirdFloorAGV.StartPoint(); //四楼接驳位 @@ -101,23 +96,19 @@ namespace Khd.Core.Wcs fourthFloorPoint.StartPoint(); //五层接驳位 - var FifthBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 1).First(); - FiveFloorPoint fifthFloorPoint = new(_host, FifthBaseFloorEquip.floorNo.Value); + FiveFloorPoint fifthFloorPoint = new(_host, 5); fifthFloorPoint.StartPoint(); //五层CTU - var FiveFloorCTUEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 6).First(); - FiveFloorCTU fiveFloorCTU = new(_host, FiveFloorCTUEquip.floorNo.Value); + FiveFloorCTU fiveFloorCTU = new(_host,5); fiveFloorCTU.StartPoint(); //五层AGV - var FifthFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 5).First(); - FiveFloorAGV fifthFloorAGV = new(_host, FifthFloorAgvEquip.floorNo.Value); + FiveFloorAGV fifthFloorAGV = new(_host, 5); fifthFloorAGV.StartPoint(); //背负式Agv - var FifthFloorBearAgvEquip = StaticData.BaseEquip.Where(t => t.objid == 28).First(); - FiveFloorBearAgv fiveFloorBearAgv = new(_host, FifthFloorBearAgvEquip.floorNo.Value); + FiveFloorBearAgv fiveFloorBearAgv = new(_host,5); fiveFloorBearAgv.StartPoint(); } catch (Exception ex) diff --git a/src/Khd.Core.Wcs/Wcs/FirstFloor.cs b/src/Khd.Core.Wcs/Wcs/FirstFloor.cs index 16cce37..7eed33f 100644 --- a/src/Khd.Core.Wcs/Wcs/FirstFloor.cs +++ b/src/Khd.Core.Wcs/Wcs/FirstFloor.cs @@ -494,6 +494,7 @@ namespace Khd.Core.Wcs.Wcs { using var scope = _host.Services.CreateScope(); using var dbContext = scope.ServiceProvider.GetRequiredService(); + using var transaction = dbContext.Database.BeginTransaction(); while (true) { try @@ -545,15 +546,16 @@ namespace Khd.Core.Wcs.Wcs wcsTask.updateTime = DateTime.Now; wcsTask.remark = "提升机任务执行中"; BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.fromFloorNo && t.plcpointNo.Contains("wcsrun")); - StaticData.PlcDic[0].WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString()); - StaticData.PlcDic[0].WriteToPoint(this.serialno06.plcpointAddress, wcsTask.serialNo.ToString(), this.serialno06.plcpointLength.ToString()); - Console.WriteLine(DateTime.Now + ":提升机下发" + wcsTask.fromFloorNo + "楼入库指令"); - _logger.Info("提升机下发" + wcsTask.fromFloorNo + "楼入库指令"); dbContext.Update(wcsTask); dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行中" }); lineEquip.equipStatus = 1; dbContext.Update(lineEquip); dbContext.SaveChanges(); + StaticData.PlcDic[0].WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString()); + StaticData.PlcDic[0].WriteToPoint(this.serialno06.plcpointAddress, wcsTask.serialNo.ToString(), this.serialno06.plcpointLength.ToString()); + Console.WriteLine(DateTime.Now + ":提升机下发" + wcsTask.fromFloorNo + "楼入库指令"); + _logger.Info("提升机下发" + wcsTask.fromFloorNo + "楼入库指令"); + transaction.Commit(); } else//当前楼层和起始楼层不一致 { @@ -561,15 +563,16 @@ namespace Khd.Core.Wcs.Wcs wcsTask.updateBy = "提升机线程"; wcsTask.updateTime = DateTime.Now; wcsTask.remark = "提升机任务执行中"; - StaticData.PlcDic[0].WriteToPoint(this.targetfloor06.plcpointAddress, wcsTask.fromFloorNo.ToString(), this.targetfloor06.plcpointLength.ToString());//目的地楼层 - StaticData.PlcDic[0].WriteToPoint(this.serialno06.plcpointAddress, wcsTask.serialNo.ToString(), this.serialno06.plcpointLength.ToString()); - Console.WriteLine(DateTime.Now + ":提升机下发去往" + wcsTask.fromFloorNo + "楼指令"); - _logger.Info("提升机下发去往" + wcsTask.fromFloorNo + "楼指令"); dbContext.Update(wcsTask); dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 1, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行中" }); lineEquip.equipStatus = 1; dbContext.Update(lineEquip); dbContext.SaveChanges(); + StaticData.PlcDic[0].WriteToPoint(this.targetfloor06.plcpointAddress, wcsTask.fromFloorNo.ToString(), this.targetfloor06.plcpointLength.ToString());//目的地楼层 + StaticData.PlcDic[0].WriteToPoint(this.serialno06.plcpointAddress, wcsTask.serialNo.ToString(), this.serialno06.plcpointLength.ToString()); + Console.WriteLine(DateTime.Now + ":提升机下发去往" + wcsTask.fromFloorNo + "楼指令"); + _logger.Info("提升机下发去往" + wcsTask.fromFloorNo + "楼指令"); + transaction.Commit(); } } } @@ -585,13 +588,14 @@ namespace Khd.Core.Wcs.Wcs wcsTask.updateTime = DateTime.Now; wcsTask.remark = "提升机任务执行中"; BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.fromFloorNo && t.plcpointNo.Contains("wcsrun")); + dbContext.Update(wcsTask); + dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行中" }); + dbContext.SaveChanges(); StaticData.PlcDic[0].WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString()); StaticData.PlcDic[0].WriteToPoint(this.serialno06.plcpointAddress, wcsTask.serialNo.ToString(), this.serialno06.plcpointLength.ToString()); Console.WriteLine(DateTime.Now + ":提升机下发" + wcsTask.fromFloorNo + "楼入库指令"); _logger.Info("提升机下发" + wcsTask.fromFloorNo + "楼入库指令"); - dbContext.Update(wcsTask); - dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行中" }); - dbContext.SaveChanges(); + transaction.Commit(); } } } @@ -603,12 +607,13 @@ namespace Khd.Core.Wcs.Wcs wcsTask.updateBy = "提升机线程"; wcsTask.updateTime = DateTime.Now; wcsTask.remark = "提升机任务执行完成"; - StaticData.PlcDic[0].WriteToPoint(this.targetfloor06.plcpointAddress, wcsTask.floorNo.ToString(), this.targetfloor06.plcpointLength.ToString());//目的地楼层 - Console.WriteLine(DateTime.Now + ":提升机下发去往" + wcsTask.floorNo + "楼目的地指令"); - _logger.Info("提升机下发去往" + wcsTask.floorNo + "楼目的地指令"); dbContext.Update(wcsTask); dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 3, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" }); dbContext.SaveChanges(); + StaticData.PlcDic[0].WriteToPoint(this.targetfloor06.plcpointAddress, wcsTask.floorNo.ToString(), this.targetfloor06.plcpointLength.ToString());//目的地楼层 + Console.WriteLine(DateTime.Now + ":提升机下发去往" + wcsTask.floorNo + "楼目的地指令"); + _logger.Info("提升机下发去往" + wcsTask.floorNo + "楼目的地指令"); + transaction.Commit(); } } if (wcsTask.taskStatus == 3 && Convert.ToInt32(currentfloor06Value) == wcsTask.floorNo && Convert.ToInt32(reserialno06) == wcsTask.serialNo)//任务状态为3,且当前楼层为任务的目的楼层 @@ -632,13 +637,14 @@ namespace Khd.Core.Wcs.Wcs wcsTask.updateBy = "提升机线程"; wcsTask.updateTime = DateTime.Now; wcsTask.remark = "提升机任务执行完成"; + dbContext.Update(wcsTask); + dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 4, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" }); + dbContext.SaveChanges(); BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.floorNo && t.plcpointNo.Contains("wcsrun")); StaticData.PlcDic[0].WriteToPoint(basePlcpoint.plcpointAddress, "2", basePlcpoint.plcpointLength.ToString());//去向为2,表示提升机已到达目的地,让货出去 Console.WriteLine(DateTime.Now + ":提升机下发" + wcsTask.floorNo + "楼出库指令"); _logger.Info("提升机下发" + wcsTask.floorNo + "楼出库指令"); - dbContext.Update(wcsTask); - dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 4, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" }); - dbContext.SaveChanges(); + transaction.Commit(); } else//接驳位外侧有东西 { @@ -665,13 +671,14 @@ namespace Khd.Core.Wcs.Wcs wcsTask.updateBy = "提升机线程"; wcsTask.updateTime = DateTime.Now; wcsTask.remark = "提升机任务执行完成"; + dbContext.Update(wcsTask); + dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 4, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" }); + dbContext.SaveChanges(); BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.floorNo && t.plcpointNo.Contains("wcsrun")); StaticData.PlcDic[0].WriteToPoint(basePlcpoint.plcpointAddress, "2", basePlcpoint.plcpointLength.ToString());//去向为2,表示提升机已到达目的地,让货出去 Console.WriteLine(DateTime.Now + ":提升机下发" + wcsTask.floorNo + "楼出库指令"); _logger.Info("提升机下发" + wcsTask.floorNo + "楼出库指令"); - dbContext.Update(wcsTask); - dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 4, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" }); - dbContext.SaveChanges(); + transaction.Commit(); } else { @@ -700,6 +707,7 @@ namespace Khd.Core.Wcs.Wcs dbContext.Update(wcsTask); dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 5, nextPointId = floorEquip.objid, nextPointNo = floorEquip.equipNo, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" }); dbContext.SaveChanges(); + transaction.Commit(); } } break; @@ -723,6 +731,7 @@ namespace Khd.Core.Wcs.Wcs } catch (Exception ex) { + transaction.Rollback(); if (ex is PlcException) {