<add>[important]添加入库分流逻辑
This commit is contained in:
parent
3a245faa2c
commit
d16b29ed6b
|
|
@ -44,7 +44,7 @@ public class LoginGetData(WmsWebApiPost wmsWebApiPost) : IBaseGetData
|
||||||
string[] dirs = routerDirection.Split(',');
|
string[] dirs = routerDirection.Split(',');
|
||||||
if(!dirs.Contains(direction))
|
if(!dirs.Contains(direction))
|
||||||
{
|
{
|
||||||
ConsoleLog.Warning($"【警告】注册口:{area} 箱码:{code} 方向:{direction} 方向不正确,允许的方向为:{routerDirection}");
|
ConsoleLog.Warning($"【警告】注册口:{area} 箱码:{msg} 方向:{direction} 方向不正确,允许的方向为:{routerDirection}");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,13 @@
|
||||||
using WcsMain.Business.Convey.HistoryDataHandler.HisGetData.I;
|
using WcsMain.Business.Convey.HistoryDataHandler.HisGetData.I;
|
||||||
|
using WcsMain.Common;
|
||||||
|
using WcsMain.DataBase.Dao;
|
||||||
using WcsMain.DataBase.TableEntity;
|
using WcsMain.DataBase.TableEntity;
|
||||||
|
using WcsMain.DataService;
|
||||||
|
using WcsMain.Enum.Convey;
|
||||||
|
using WcsMain.Enum.Stacker;
|
||||||
|
using WcsMain.EquipOperation.Convey;
|
||||||
|
using WcsMain.EquipOperation.Entity;
|
||||||
|
using WcsMain.ExtendMethod;
|
||||||
|
|
||||||
namespace WcsMain.Business.Convey.HistoryDataHandler.HisGetData;
|
namespace WcsMain.Business.Convey.HistoryDataHandler.HisGetData;
|
||||||
|
|
||||||
|
|
@ -9,15 +17,120 @@ namespace WcsMain.Business.Convey.HistoryDataHandler.HisGetData;
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// R2
|
/// R2
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
public class StackerInSpliter : IBaseGetData
|
public class StackerInSpliter(ConveyOperation conveyOperation, DataBaseData dataBaseData, AppWcsTaskDao wcsTaskDao) : IBaseGetData
|
||||||
{
|
{
|
||||||
|
private readonly ConveyOperation _conveyOperation = conveyOperation;
|
||||||
|
private readonly DataBaseData _dataBaseData = dataBaseData;
|
||||||
|
private readonly AppWcsTaskDao _wcsTaskDao = wcsTaskDao;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 读码失败
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disPlayName"></param>
|
||||||
|
/// <param name="msg"></param>
|
||||||
|
/// <param name="area"></param>
|
||||||
|
/// <param name="routerMethodData"></param>
|
||||||
public void ReadFail(string? disPlayName, string msg, string? area, AppRouterMethod routerMethodData)
|
public void ReadFail(string? disPlayName, string msg, string? area, AppRouterMethod routerMethodData)
|
||||||
{
|
{
|
||||||
|
int plcId = _dataBaseData.GetNewPlcTaskId() ?? StaticData.StaticInt.ErrPlcId;
|
||||||
|
ConveyPLCTask plcTask = new(plcId, (short)ConveyRouterEnum.NoRead);
|
||||||
|
string errText = _conveyOperation.WriteTask(area, plcTask);
|
||||||
|
if(string.IsNullOrEmpty(errText) )
|
||||||
|
{
|
||||||
|
ConsoleLog.Success($"入库分流:{area} 读码失败,写入PLC成功,{plcTask}");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ConsoleLog.Warning($"【警告】入库分流:{area} 读码失败,写入PLC失败,{plcTask},信息:{errText}");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 读码成功
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disPlayName"></param>
|
||||||
|
/// <param name="msg"></param>
|
||||||
|
/// <param name="area"></param>
|
||||||
|
/// <param name="routerMethodData"></param>
|
||||||
public void ReadSuccess(string? disPlayName, string msg, string? area, AppRouterMethod routerMethodData)
|
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.WcsErr);
|
||||||
|
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<AppWcsTask>? wcsTasks = _wcsTaskDao.Select(new AppWcsTask { VehicleNo = code, TaskStatus = (int)WcsTaskStatusEnum.create });
|
||||||
|
if(wcsTasks == default)
|
||||||
|
{
|
||||||
|
// 数据库服务器连接失败
|
||||||
|
ConsoleLog.Exception($"【异常】入库分流:{area} 箱码:{msg} 查询任务失败,请检查服务器网络");
|
||||||
|
ConveyPLCTask plcTask = new(plcId, (short)ConveyRouterEnum.WmsErr);
|
||||||
|
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(wcsTasks.Count < 1)
|
||||||
|
{
|
||||||
|
// 不存在任务
|
||||||
|
ConsoleLog.Exception($"【异常】入库分流:{area} 箱码:{msg} 不存在入库任务,请重试");
|
||||||
|
ConveyPLCTask plcTask = new(plcId, (short)ConveyRouterEnum.WcsErr);
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
AppWcsTask wcsTask = wcsTasks[0]; // 取得任务
|
||||||
|
var locationDetail = CommonData.AppLocations.DetailWithWcsLocation(wcsTask.Destination);
|
||||||
|
if(locationDetail == default)
|
||||||
|
{
|
||||||
|
// 点位不存在
|
||||||
|
ConsoleLog.Exception($"【异常】入库分流:{area} 箱码:{msg} 终点:{wcsTask.Destination} 不存在,请重试");
|
||||||
|
ConveyPLCTask plcTask = new(plcId, (short)ConveyRouterEnum.WcsErr);
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
ConveyRouterEnum router = (ConveyRouterEnum)(locationDetail.TunnelNo ?? 0);
|
||||||
|
// 点位不存在
|
||||||
|
ConsoleLog.Success($"入库分流:{area} 箱码:{msg} 终点:{wcsTask.Destination} 巷道:{locationDetail.TunnelNo}");
|
||||||
|
ConveyPLCTask plcTaskOk = new(plcId, (short)router);
|
||||||
|
string errTextOk = _conveyOperation.WriteTask(area, plcTaskOk);
|
||||||
|
if (string.IsNullOrEmpty(errTextOk))
|
||||||
|
{
|
||||||
|
ConsoleLog.Success($"入库分流:{area} 箱码:{msg},写入PLC成功,{plcTaskOk}");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ConsoleLog.Warning($"【警告】入库分流:{area} 箱码:{msg},写入PLC失败,{plcTaskOk},信息:{errTextOk}");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
69
WcsMain/Enum/Convey/ConveyRouterEnum.cs
Normal file
69
WcsMain/Enum/Convey/ConveyRouterEnum.cs
Normal file
|
|
@ -0,0 +1,69 @@
|
||||||
|
namespace WcsMain.Enum.Convey;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 输送线写路向的枚举
|
||||||
|
/// </summary>
|
||||||
|
public enum ConveyRouterEnum : short
|
||||||
|
{
|
||||||
|
LeftMove = 2001, // 左移栽
|
||||||
|
RightMove = 2002, // 右移栽
|
||||||
|
Go = 2003, // 直行,放行
|
||||||
|
Move = 2004, // 移栽
|
||||||
|
|
||||||
|
WmsErr = 9600, // Wms 异常
|
||||||
|
NoRead = 9700, // 读码失败
|
||||||
|
WcsErr = 9800, // Wcs 异常
|
||||||
|
Stop = 9900, // 停止
|
||||||
|
|
||||||
|
// 下面是固定路向
|
||||||
|
Router_1 = 1,
|
||||||
|
Router_2 = 2,
|
||||||
|
Router_3 = 3,
|
||||||
|
Router_4 = 4,
|
||||||
|
Router_5 = 5,
|
||||||
|
Router_6 = 6,
|
||||||
|
Router_7 = 7,
|
||||||
|
Router_8 = 8,
|
||||||
|
Router_9 = 9,
|
||||||
|
Router_10 = 10,
|
||||||
|
Router_11 = 11,
|
||||||
|
Router_12 = 12,
|
||||||
|
Router_13 = 13,
|
||||||
|
Router_14 = 14,
|
||||||
|
Router_15 = 15,
|
||||||
|
Router_16 = 16,
|
||||||
|
Router_17 = 17,
|
||||||
|
Router_18 = 18,
|
||||||
|
Router_19 = 19,
|
||||||
|
Router_20 = 20,
|
||||||
|
Router_21 = 21,
|
||||||
|
Router_22 = 22,
|
||||||
|
Router_23 = 23,
|
||||||
|
Router_24 = 24,
|
||||||
|
Router_25 = 25,
|
||||||
|
Router_26 = 26,
|
||||||
|
Router_27 = 27,
|
||||||
|
Router_28 = 28,
|
||||||
|
Router_29 = 29,
|
||||||
|
Router_30 = 30,
|
||||||
|
Router_31 = 31,
|
||||||
|
Router_32 = 32,
|
||||||
|
Router_33 = 33,
|
||||||
|
Router_34 = 34,
|
||||||
|
Router_35 = 35,
|
||||||
|
Router_36 = 36,
|
||||||
|
Router_37 = 37,
|
||||||
|
Router_38 = 38,
|
||||||
|
Router_39 = 39,
|
||||||
|
Router_40 = 40,
|
||||||
|
Router_41 = 41,
|
||||||
|
Router_42 = 42,
|
||||||
|
Router_43 = 43,
|
||||||
|
Router_44 = 44,
|
||||||
|
Router_45 = 45,
|
||||||
|
Router_46 = 46,
|
||||||
|
Router_47 = 47,
|
||||||
|
Router_48 = 48,
|
||||||
|
Router_49 = 49,
|
||||||
|
Router_50 = 50,
|
||||||
|
}
|
||||||
|
|
@ -99,16 +99,6 @@ public class ConveyOperation
|
||||||
return string.Empty;
|
return string.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 写入箱式线任务
|
/// 写入箱式线任务
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -117,21 +107,28 @@ public class ConveyOperation
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public string WriteTask(string? equipmentId, ConveyPLCTask task)
|
public string WriteTask(string? equipmentId, ConveyPLCTask task)
|
||||||
{
|
{
|
||||||
if (!CommonData.IsConnectPlc || CommonTool.Siemens == default)
|
if (!CommonData.IsConnectPlc || CommonTool.Siemens == default) return "PLC尚未连接。";
|
||||||
{
|
|
||||||
// 未连接PLC
|
|
||||||
return "PLC尚未连接。";
|
|
||||||
}
|
|
||||||
var (writeResult, _) = CommonTool.Siemens.WritePlcWhithName($"箱式线写任务{equipmentId}",
|
var (writeResult, _) = CommonTool.Siemens.WritePlcWhithName($"箱式线写任务{equipmentId}",
|
||||||
task.PlcId,
|
task.PlcId,
|
||||||
task.Router);
|
task.Router);
|
||||||
if (writeResult.Success)
|
return writeResult.Success ? string.Empty : writeResult.Message ?? "写入失败,未知原因";
|
||||||
{
|
|
||||||
return string.Empty;
|
|
||||||
}
|
|
||||||
return writeResult.Message ?? "写入失败,未知原因";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 箱式线写任务
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="equipmentId"></param>
|
||||||
|
/// <param name="plcId"></param>
|
||||||
|
/// <param name="router"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public string WriteTask(string? equipmentId, int plcId, short router) => WriteTask(equipmentId, new ConveyPLCTask(plcId, router));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,17 +3,17 @@
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 给输送机任务
|
/// 给输送机任务
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class ConveyPLCTask
|
public class ConveyPLCTask(int plcId, short router)
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Plc任务号
|
/// Plc任务号
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int PlcId { get; set; }
|
public int PlcId { get; set; } = plcId;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 路向
|
/// 路向
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public short Router { get; set; }
|
public short Router { get; set; } = router;
|
||||||
|
|
||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
|
|
|
||||||
9
WcsMain/StaticData/StaticInt.cs
Normal file
9
WcsMain/StaticData/StaticInt.cs
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
namespace WcsMain.StaticData;
|
||||||
|
|
||||||
|
public static class StaticInt
|
||||||
|
{
|
||||||
|
public const int ErrPlcId = 999999999;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user