diff --git a/WcsMain/Business/Convey/HistoryDataHandler/HisGetData/PickStandGetData.cs b/WcsMain/Business/Convey/HistoryDataHandler/HisGetData/PickStandGetData.cs index 80dec76..2e3afc2 100644 --- a/WcsMain/Business/Convey/HistoryDataHandler/HisGetData/PickStandGetData.cs +++ b/WcsMain/Business/Convey/HistoryDataHandler/HisGetData/PickStandGetData.cs @@ -12,7 +12,12 @@ namespace WcsMain.Business.Convey.HistoryDataHandler.HisGetData; /// /// 拣选站台的逻辑 /// -/// +/// +/// +/// +/// +/// P1、P2、P3、P4、P6、P7、P8 +/// public class PickStandGetData(ConveyOperation conveyOperation, DataBaseData dataBaseData, AppConveyTaskDao conveyTaskDao) : IBaseGetData { private readonly ConveyOperation _conveyOperation = conveyOperation; diff --git a/WcsMain/Business/Convey/HistoryDataHandler/HisGetData/PickStandP5.cs b/WcsMain/Business/Convey/HistoryDataHandler/HisGetData/PickStandP5.cs new file mode 100644 index 0000000..76676ef --- /dev/null +++ b/WcsMain/Business/Convey/HistoryDataHandler/HisGetData/PickStandP5.cs @@ -0,0 +1,167 @@ +using WcsMain.Business.Convey.HistoryDataHandler.HisGetData.I; +using WcsMain.Common; +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; + +/// +/// 拣选站台 P5 +/// +/// +/// +/// +public class PickStandP5(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}); + 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.Router_2); // 右移栽出环线 + 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.Find(f => f.Location == area); + if(conveyTask != default) // 存在任务 + { + 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; + } + /* 检查有没有 (6~9) pick2区的任务 */ + List pick2Stand = CommonData.AppConveyStands.FindAll(f => f.StandType == (int)ConveyStandTypeEnum.pick && f.Area == "pick2"); + List pick2Stands = pick2Stand.Select(f => f.StandId).ToList(); + bool exists = false; // 默认不存在 6~9 站台(pick2 区域) 任务 + foreach (var conveyTaskItem in conveyTasks) + { + if (pick2Stands.Contains(conveyTaskItem.Location)) + { + exists = true; + break; + } + } + if(exists) // 存在 6~9 站台(pick2 区域) 任务 + { + ConsoleLog.Info($"拣选站台:{area} 箱码:{msg} 存在pick2区域的任务"); + 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; + } + else + { + ConsoleLog.Warning($"【警告】拣选站台:{area} 箱码:{msg} 无 pick2 区域拣选任务"); + ConveyPLCTask plcTask = new(plcId, (short)ConveyRouterEnum.Router_2); // 右移栽出环线 + 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; + } + } +} diff --git a/WcsMain/appsettings.json b/WcsMain/appsettings.json index 33113d0..3cbf822 100644 --- a/WcsMain/appsettings.json +++ b/WcsMain/appsettings.json @@ -8,7 +8,7 @@ "AllowedHosts": "*", "Settings": { "DBMysql": "server=192.168.103.200;port=3306;user=developer;password=developer;database=wcs_main;", - "DBMysqlLocal": "server=192.168.234.128;port=3306;user=developer;password=developer;database=wcs_suzhoukt;", + "DBMysqlLocal": "server=112.4.208.194;port=3001;user=developer;password=developer;database=wcs_kate_suzhou;", "DBMssql": "Data Source=192.168.142.131;Initial Catalog=wcs;User Id=sa;Password=Sa123;", "DBMssqlLocal": "Data Source=192.168.142.131;Initial Catalog=wcs_stacker;User Id=sa;Password=Sa123;",