<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(',');
|
||||
if(!dirs.Contains(direction))
|
||||
{
|
||||
ConsoleLog.Warning($"【警告】注册口:{area} 箱码:{code} 方向:{direction} 方向不正确,允许的方向为:{routerDirection}");
|
||||
ConsoleLog.Warning($"【警告】注册口:{area} 箱码:{msg} 方向:{direction} 方向不正确,允许的方向为:{routerDirection}");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,13 @@
|
|||
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.Enum.Stacker;
|
||||
using WcsMain.EquipOperation.Convey;
|
||||
using WcsMain.EquipOperation.Entity;
|
||||
using WcsMain.ExtendMethod;
|
||||
|
||||
namespace WcsMain.Business.Convey.HistoryDataHandler.HisGetData;
|
||||
|
||||
|
|
@ -9,15 +17,120 @@ namespace WcsMain.Business.Convey.HistoryDataHandler.HisGetData;
|
|||
/// <remarks>
|
||||
/// R2
|
||||
/// </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)
|
||||
{
|
||||
|
||||
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)
|
||||
{
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 写入箱式线任务
|
||||
/// </summary>
|
||||
|
|
@ -117,21 +107,28 @@ public class ConveyOperation
|
|||
/// <returns></returns>
|
||||
public string WriteTask(string? equipmentId, ConveyPLCTask task)
|
||||
{
|
||||
if (!CommonData.IsConnectPlc || CommonTool.Siemens == default)
|
||||
{
|
||||
// 未连接PLC
|
||||
return "PLC尚未连接。";
|
||||
}
|
||||
if (!CommonData.IsConnectPlc || CommonTool.Siemens == default) return "PLC尚未连接。";
|
||||
var (writeResult, _) = CommonTool.Siemens.WritePlcWhithName($"箱式线写任务{equipmentId}",
|
||||
task.PlcId,
|
||||
task.Router);
|
||||
if (writeResult.Success)
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
return writeResult.Message ?? "写入失败,未知原因";
|
||||
return writeResult.Success ? string.Empty : 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>
|
||||
public class ConveyPLCTask
|
||||
public class ConveyPLCTask(int plcId, short router)
|
||||
{
|
||||
/// <summary>
|
||||
/// Plc任务号
|
||||
/// </summary>
|
||||
public int PlcId { get; set; }
|
||||
public int PlcId { get; set; } = plcId;
|
||||
|
||||
/// <summary>
|
||||
/// 路向
|
||||
/// </summary>
|
||||
public short Router { get; set; }
|
||||
public short Router { get; set; } = router;
|
||||
|
||||
|
||||
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