From b19350ce1a8f5f0ee075bc5bff3c80f3ebc3bb7a Mon Sep 17 00:00:00 2001 From: "LAPTOP-NLSJV9RB\\91647" <916477576@qq.com> Date: Thu, 28 Mar 2024 15:46:51 +0800 Subject: [PATCH] -- --- src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs | 55 ++++---- src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs | 167 +++++++++++++------------ 2 files changed, 111 insertions(+), 111 deletions(-) diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs index 9ada8db..ee3745f 100644 --- a/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs +++ b/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs @@ -90,37 +90,32 @@ namespace Khd.Core.Wcs.Wcs if (item.taskType == 5 || item.taskType == 11)//入库 { var loc = dbContext.WmsBaseLocation.Where(t => t.activeFlag == "1").ToList(); - - //2楼成品 - if (item.taskType == 5 || item.taskType == 11)//成品入库||成品移库 + var stock = dbContext.WmsProductStock.Where(t => t.activeFlag == "1").ToList(); + //获取有物料的库位 + var locStock = from l in loc + join s in stock on l.locationCode equals s.locationCode + select new + { + LocId = l.locationId, + locCode = l.locationCode, + LocDeep = l.locDeep, + productBatch = s.productBatch + }; + //获取空库位 + var nullLocList = loc.Where(r => !locStock.Select(t => t.locCode).Contains(r.locationCode) && r.warehouseId == 1).ToList(); + var location = nullLocList.OrderBy(t => t.locColumn).FirstOrDefault(); + if (location == null) return; + item.currPointId = 8; + item.currPointNo = "AGV01"; + item.nextPointId = location.locationId; + item.nextPointNo = location.locationCode; + //锁定库位 + dbContext.WmsBaseLocation.Where(t => t.locRow == location.locRow && t.locColumn == location.locColumn && t.layerNum == location.layerNum).Update(t => new WmsBaseLocation() { - var stock = dbContext.WmsProductStock.Where(t => t.activeFlag == "1").ToList(); - //获取有物料的库位 - var locStock = from l in loc - join s in stock on l.locationCode equals s.locationCode - select new - { - LocId = l.locationId, - locCode = l.locationCode, - LocDeep = l.locDeep, - productBatch = s.productBatch - }; - //获取空库位 - var nullLocList = loc.Where(r => !locStock.Select(t => t.locCode).Contains(r.locationCode) && r.warehouseId == 1).ToList(); - var location = nullLocList.OrderBy(t => t.locColumn).FirstOrDefault(); - if (location == null) return; - item.currPointId = 8; - item.currPointNo = "AGV01"; - item.nextPointId = location.locationId; - item.nextPointNo = location.locationCode; - //锁定库位 - dbContext.WmsBaseLocation.Where(t => t.locRow == location.locRow && t.locColumn == location.locColumn && t.layerNum == location.layerNum).Update(t => new WmsBaseLocation() - { - locationStatus = "6", - updateTime = DateTime.Now, - updateBy = "agv出库", - }); - } + locationStatus = "6", + updateTime = DateTime.Now, + updateBy = "agv出库", + }); //下发agv出库指令 SendAndUpdateTask(item); } diff --git a/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs index 64046e0..af636ca 100644 --- a/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs +++ b/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs @@ -75,8 +75,6 @@ namespace Khd.Core.Wcs.Wcs { using var scope = _host.Services.CreateScope(); using var dbContext = scope.ServiceProvider.GetRequiredService(); - List taskInType = new List { 1, 3, 5, 7 }; - List taskOutType = new List { 2, 4, 6, 8 }; while (true) { try @@ -89,7 +87,7 @@ namespace Khd.Core.Wcs.Wcs } foreach (var item in taskList) { - if (item.taskType == 1)//入库 + if (item.taskType == 1|| item.taskType == 9)//入库||移库 { var loc = dbContext.WmsBaseLocation.Where(t => t.activeFlag == "1").ToList(); @@ -113,6 +111,13 @@ namespace Khd.Core.Wcs.Wcs item.nextPointId = location.locationId; item.nextPointNo = location.locationCode; dbContext.Update(item); + //锁定库位 + dbContext.WmsBaseLocation.Where(t => t.locRow == location.locRow && t.locColumn == location.locColumn && t.layerNum == location.layerNum).Update(t => new WmsBaseLocation() + { + locationStatus = "6", + updateTime = DateTime.Now, + updateBy = "agv出库", + }); //下发agv出库指令 SendAndUpdateTask(item); } @@ -328,86 +333,86 @@ namespace Khd.Core.Wcs.Wcs // } // return wcsTask; //} - public void SendTask(WcsTask task) - { - //获取 - if (task == null) return; - using var scope = _host.Services.CreateScope(); - using var dbContext = scope.ServiceProvider.GetRequiredService(); - WcsToWms wcsToWms = new WcsToWms(); - //首先判断是否已下发指令 - var cmd = StaticData.WcsCmd.Where(t => t.taskId == task.objid).FirstOrDefault(); - //指令表存在说明已下发 - if (cmd == null) - { //获取下发agv指令 - string ip = ""; int port = 0; string url = ""; - RequestAGVTaskDto agvtask = new RequestAGVTaskDto(); - agvtask.reqCode = task.serialNo.ToString(); - //var json = JsonConvert.SerializeObject(agvtask); - //HttpHelper.SendPostMessage(ip, port, url, json); - wcsToWms.genAgvSchedulingTask(agvtask); - //未下发给agv下发指令 - WcsCmd taskCmd = new WcsCmd() - { - taskId = task.objid, - cmdType = task.taskType, - serialNo = task.serialNo, - equipmentNo = task.equipmentNo, - cmdStatus = 1, - createBy = FloorNo + "楼AGV", - createTime = DateTime.Now, - }; - dbContext.Add(taskCmd); - dbContext.SaveChanges(); - } - else - { - //获取接驳位是否有托盘 - var IsPallet = this._plc.Read(this.LineIsPallet.plcpointAddress); - if (cmd.sendFlag == 0) - { - if (taskInType.Contains(task.taskType.GetValueOrDefault()))//入库 - { - //入库时有托盘继续任务 - if (Convert.ToInt32(IsPallet) == 1) - { + //public void SendTask(WcsTask task) + //{ + // //获取 + // if (task == null) return; + // using var scope = _host.Services.CreateScope(); + // using var dbContext = scope.ServiceProvider.GetRequiredService(); + // WcsToWms wcsToWms = new WcsToWms(); + // //首先判断是否已下发指令 + // var cmd = StaticData.WcsCmd.Where(t => t.taskId == task.objid).FirstOrDefault(); + // //指令表存在说明已下发 + // if (cmd == null) + // { //获取下发agv指令 + // string ip = ""; int port = 0; string url = ""; + // RequestAGVTaskDto agvtask = new RequestAGVTaskDto(); + // agvtask.reqCode = task.serialNo.ToString(); + // //var json = JsonConvert.SerializeObject(agvtask); + // //HttpHelper.SendPostMessage(ip, port, url, json); + // wcsToWms.genAgvSchedulingTask(agvtask); + // //未下发给agv下发指令 + // WcsCmd taskCmd = new WcsCmd() + // { + // taskId = task.objid, + // cmdType = task.taskType, + // serialNo = task.serialNo, + // equipmentNo = task.equipmentNo, + // cmdStatus = 1, + // createBy = FloorNo + "楼AGV", + // createTime = DateTime.Now, + // }; + // dbContext.Add(taskCmd); + // dbContext.SaveChanges(); + // } + // else + // { + // //获取接驳位是否有托盘 + // var IsPallet = this._plc.Read(this.LineIsPallet.plcpointAddress); + // if (cmd.sendFlag == 0) + // { + // if (taskInType.Contains(task.taskType.GetValueOrDefault()))//入库 + // { + // //入库时有托盘继续任务 + // if (Convert.ToInt32(IsPallet) == 1) + // { - continueTaskDto continueTask = new continueTaskDto(); - continueTask.taskCode = task.objid.ToString(); - wcsToWms.continueTask(continueTask); - //未下发给agv下发指令 - WcsCmd taskCmd = new WcsCmd() - { - taskId = task.objid, - sendFlag = 1, - createBy = FloorNo + "楼AGV", - createTime = DateTime.Now, - }; - dbContext.Update(taskCmd); - dbContext.SaveChanges(); - } - } - else - { - //出库时没有托盘继续任务 - if (Convert.ToInt32(IsPallet) == 0) - { - continueTaskDto continueTask = new continueTaskDto(); - continueTask.taskCode = task.objid.ToString(); + // continueTaskDto continueTask = new continueTaskDto(); + // continueTask.taskCode = task.objid.ToString(); + // wcsToWms.continueTask(continueTask); + // //未下发给agv下发指令 + // WcsCmd taskCmd = new WcsCmd() + // { + // taskId = task.objid, + // sendFlag = 1, + // createBy = FloorNo + "楼AGV", + // createTime = DateTime.Now, + // }; + // dbContext.Update(taskCmd); + // dbContext.SaveChanges(); + // } + // } + // else + // { + // //出库时没有托盘继续任务 + // if (Convert.ToInt32(IsPallet) == 0) + // { + // continueTaskDto continueTask = new continueTaskDto(); + // continueTask.taskCode = task.objid.ToString(); - wcsToWms.continueTask(continueTask); - //更新任务 - dbContext.WcsCmd.Where(t => t.taskId == task.objid).Update(t => new WcsCmd() - { - sendFlag = 1, - updateTime = DateTime.Now, - updateBy = "agv出库", - }); - } - } - } - } - } + // wcsToWms.continueTask(continueTask); + // //更新任务 + // dbContext.WcsCmd.Where(t => t.taskId == task.objid).Update(t => new WcsCmd() + // { + // sendFlag = 1, + // updateTime = DateTime.Now, + // updateBy = "agv出库", + // }); + // } + // } + // } + // } + //} } }