From 7160730c40cdfdb8c2ae2680eaf1f03a5c0ac49d Mon Sep 17 00:00:00 2001 From: icewint Date: Fri, 14 Jun 2024 09:22:11 +0800 Subject: [PATCH] =?UTF-8?q?[important]=E6=9B=B4=E6=96=B0=E6=99=AE?= =?UTF-8?q?=E9=80=9A=E7=A7=BB=E6=A0=BD=E7=AB=99=E5=8F=B0=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HisGetData/PickStandGetData.cs | 110 +++++++++++++++++- WcsMain/DataBase/Dao/AppConveyTaskDao.cs | 20 ++++ WcsMain/Enum/Convey/ConveyTaskStatusEnum.cs | 2 +- 3 files changed, 128 insertions(+), 4 deletions(-) diff --git a/WcsMain/Business/Convey/HistoryDataHandler/HisGetData/PickStandGetData.cs b/WcsMain/Business/Convey/HistoryDataHandler/HisGetData/PickStandGetData.cs index 757624e..80dec76 100644 --- a/WcsMain/Business/Convey/HistoryDataHandler/HisGetData/PickStandGetData.cs +++ b/WcsMain/Business/Convey/HistoryDataHandler/HisGetData/PickStandGetData.cs @@ -1,20 +1,124 @@ using WcsMain.Business.Convey.HistoryDataHandler.HisGetData.I; +using WcsMain.DataBase.Dao; using WcsMain.DataBase.TableEntity; +using WcsMain.DataService; +using WcsMain.Enum.Convey; +using WcsMain.EquipOperation.Convey; +using WcsMain.EquipOperation.Entity; +using WcsMain.ExtendMethod; namespace WcsMain.Business.Convey.HistoryDataHandler.HisGetData; /// /// 拣选站台的逻辑 /// -public class PickStandGetData : IBaseGetData +/// +public class PickStandGetData(ConveyOperation conveyOperation, DataBaseData dataBaseData, AppConveyTaskDao conveyTaskDao) : IBaseGetData { + private readonly ConveyOperation _conveyOperation = conveyOperation; + private readonly DataBaseData _dataBaseData = dataBaseData; + private readonly AppConveyTaskDao _conveyTaskDao = conveyTaskDao; + + + /// + /// 读码失败 + /// + /// + /// + /// + /// public void ReadFail(string? disPlayName, string msg, string? area, AppRouterMethod routerMethodData) { - + int plcId = _dataBaseData.GetNewPlcTaskId() ?? StaticData.StaticInt.ErrPlcId; + ConveyPLCTask plcTask = new(plcId, (short)ConveyRouterEnum.Move); // 读码失败,移栽 + string errText = _conveyOperation.WriteTask(area, plcTask); + if (string.IsNullOrEmpty(errText)) + { + ConsoleLog.Success($"拣选站台:{area} 读码失败,写入PLC成功,{plcTask}"); + return; + } + ConsoleLog.Warning($"【警告】拣选站台:{area} 读码失败,写入PLC失败,{plcTask},信息:{errText}"); + return; } + /// + /// 读码成功 + /// + /// + /// + /// + /// public void ReadSuccess(string? disPlayName, string msg, string? area, AppRouterMethod routerMethodData) { - + int plcId = _dataBaseData.GetNewPlcTaskId() ?? StaticData.StaticInt.ErrPlcId; // 获取一个 plcId + (string code, string direction) = msg.FormatDir(); + /* 判断方向是否正确 */ + string? routerDirection = routerMethodData.AllowDirection; + if (!string.IsNullOrEmpty(routerDirection)) + { + string[] dirs = routerDirection.Split(','); + if (!dirs.Contains(direction)) + { + ConsoleLog.Warning($"【警告】拣选站台:{area} 箱码:{msg} 方向:{direction} 方向不正确,允许的方向为:{routerDirection}"); + ConveyPLCTask plcTask = new(plcId, (short)ConveyRouterEnum.Go); + string errText = _conveyOperation.WriteTask(area, plcTask); + if (string.IsNullOrEmpty(errText)) + { + ConsoleLog.Success($"拣选站台:{area} 箱码:{msg},写入PLC成功,{plcTask}"); + return; + } + ConsoleLog.Warning($"【警告】拣选站台:{area} 箱码:{msg},写入PLC失败,{plcTask},信息:{errText}"); + return; + } + } + /* 判断条码有没有这个拣选站台的拣选任务 */ + List? conveyTasks = _conveyTaskDao.Query(new AppConveyTask { VehicleNo = code, TaskStatus = (int)ConveyTaskStatusEnum.create, Location = area }); + if (conveyTasks == default) + { + ConsoleLog.Warning($"【警告】拣选站台:{area} 箱码:{msg} 查询任务失败,和服务器连接中断"); + ConveyPLCTask plcTask = new(plcId, (short)ConveyRouterEnum.Move); // 连接中断去往拣选区 + string errText = _conveyOperation.WriteTask(area, plcTask); + if (string.IsNullOrEmpty(errText)) + { + ConsoleLog.Success($"拣选站台:{area} 箱码:{msg},写入PLC成功,{plcTask}"); + return; + } + ConsoleLog.Warning($"【警告】拣选站台:{area} 箱码:{msg},写入PLC失败,{plcTask},信息:{errText}"); + return; + } + if (conveyTasks.Count < 1) + { + ConsoleLog.Warning($"【警告】拣选站台:{area} 箱码:{msg} 无拣选任务"); + ConveyPLCTask plcTask = new(plcId, (short)ConveyRouterEnum.Go); + string errText = _conveyOperation.WriteTask(area, plcTask); + if (string.IsNullOrEmpty(errText)) + { + ConsoleLog.Success($"拣选站台:{area} 箱码:{msg},写入PLC成功,{plcTask}"); + return; + } + ConsoleLog.Warning($"【警告】拣选站台:{area} 箱码:{msg},写入PLC失败,{plcTask},信息:{errText}"); + return; + } + var conveyTask = conveyTasks.First(); + // 有拣选任务 + ConsoleLog.Success($"拣选站台:{area} 箱码:{msg} 存在拣选任务"); + ConveyPLCTask plcTaskOk = new(plcId, (short)ConveyRouterEnum.Go); + string errTextOk = _conveyOperation.WriteTask(area, plcTaskOk); + if (string.IsNullOrEmpty(errTextOk)) + { + ConsoleLog.Success($"拣选站台:{area} 箱码:{msg},写入PLC成功,{plcTaskOk}"); + int updateResult = _conveyTaskDao.Update(new AppConveyTask() { TaskId = conveyTask.TaskId, MoveTime = DateTime.Now, TaskStatus = (int)ConveyTaskStatusEnum.moved }); + if (updateResult < 1) + { + ConsoleLog.Warning($"【警告】拣选站台:{area} 箱码:{msg} 更新移栽状态失败"); + } + else + { + ConsoleLog.Success($"拣选站台:{area} 箱码:{msg} 更新移栽状态成功"); + } + return; + } + ConsoleLog.Warning($"【警告】拣选站台:{area} 箱码:{msg},写入PLC失败,{plcTaskOk},信息:{errTextOk}"); + return; } } diff --git a/WcsMain/DataBase/Dao/AppConveyTaskDao.cs b/WcsMain/DataBase/Dao/AppConveyTaskDao.cs index b62310f..4ec72c2 100644 --- a/WcsMain/DataBase/Dao/AppConveyTaskDao.cs +++ b/WcsMain/DataBase/Dao/AppConveyTaskDao.cs @@ -70,10 +70,30 @@ public class AppConveyTaskDao public List? Query() => Query(new AppConveyTask()); + /// + /// 根据主键更新数据 + /// + /// + /// + public int Update(params AppConveyTask[] conveyTask) + { + try + { + var sqlFuc = CommonTool.DbServe.Updateable(conveyTask).IgnoreColumns(ignoreAllNullColumns: true); + return sqlFuc.ExecuteCommand(); + } + catch(Exception ex) + { + _ = ex; + return 0; + } + } + + diff --git a/WcsMain/Enum/Convey/ConveyTaskStatusEnum.cs b/WcsMain/Enum/Convey/ConveyTaskStatusEnum.cs index 92663ec..8c8e0ed 100644 --- a/WcsMain/Enum/Convey/ConveyTaskStatusEnum.cs +++ b/WcsMain/Enum/Convey/ConveyTaskStatusEnum.cs @@ -6,7 +6,7 @@ public enum ConveyTaskStatusEnum { create = 0, // 新创建 - noved = 1, // 已经移栽 + moved = 1, // 已经移栽 arrive = 2, // 到达