<add>[important]添加入库分流逻辑

This commit is contained in:
葛林强 2024-06-12 09:23:20 +08:00
parent 3a245faa2c
commit d16b29ed6b
6 changed files with 215 additions and 27 deletions

View File

@ -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;
} }
} }

View File

@ -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;
} }
} }

View 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,
}

View File

@ -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));

View File

@ -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()

View File

@ -0,0 +1,9 @@
namespace WcsMain.StaticData;
public static class StaticInt
{
public const int ErrPlcId = 999999999;
}