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, // 到达