360 lines
16 KiB
C#
360 lines
16 KiB
C#
using WcsMain.ApiClient.WMS.Dto;
|
||
using WcsMain.Common;
|
||
using WcsMain.Constant.Enum;
|
||
using WcsMain.DataBase.Dao;
|
||
using WcsMain.DataBase.TableEntity;
|
||
using WcsMain.Constant.WcsAttribute.AutoFacAttribute;
|
||
using WcsMain.Constant.ExtendMethod;
|
||
|
||
namespace WcsMain.ApiClient.WMS;
|
||
|
||
/// <summary>
|
||
/// 用于发送WMS任务状态的类
|
||
/// </summary>
|
||
[Component]
|
||
public class SendWmsTaskStatus(AppWmsTaskDao wmsTaskDao, WmsBaseWebApi wmsWebApiPost)
|
||
{
|
||
|
||
/// <summary>
|
||
/// 发送 WMS 任务异常
|
||
/// </summary>
|
||
/// <param name="taskId"></param>
|
||
/// <param name="errMsg"></param>
|
||
/// <param name="count"></param>
|
||
public void SendTaskErr(string? taskId, string? errMsg, ushort count = 5)
|
||
{
|
||
Task.Factory.StartNew(() =>
|
||
{
|
||
AppWmsTask? wmsTask = default;
|
||
for (int i = 0; i < count; i++)
|
||
{
|
||
List<AppWmsTask>? tasks = wmsTaskDao.Select(new AppWmsTask { TaskId = taskId });
|
||
if (tasks == default)
|
||
{
|
||
ConsoleLog.Error($"【异常】发送WMS任务状态时查询数据库失败,和数据库连接中断,任务号:{taskId}");
|
||
Thread.Sleep(100);
|
||
continue;
|
||
}
|
||
if (tasks.Count == 0)
|
||
{
|
||
ConsoleLog.Warning($"【警告】发送WMS任务状态时查询数据库异常,找不到任务,任务号:{taskId}");
|
||
return;
|
||
}
|
||
wmsTask = tasks[0];
|
||
}
|
||
if (wmsTask == default) { return; }
|
||
SendWmsTaskStatusRequest request = new()
|
||
{
|
||
TaskId = wmsTask.TaskId,
|
||
TaskStatus = (int)SendWmsTaskStatusEnum.err,
|
||
Destination = wmsTask.Destination,
|
||
VehicleNo = wmsTask.VehicleNo,
|
||
Message = errMsg
|
||
};
|
||
for (int i = 1; i <= count; i++)
|
||
{
|
||
var response = wmsWebApiPost.HttpPost<SendWmsTaskStatusRequest, WmsResponse>(request, CommonData.AppApiBaseInfos.GetAddress("SendWmsTaskStatusApiAddress") ?? "");
|
||
if (!response.IsSend)
|
||
{
|
||
ConsoleLog.Error($"【异常】发送WMS[任务异常]失败,发送次数:{i},任务号:{wmsTask.TaskId},参考信息:{response.RequestException?.Message}");
|
||
continue;
|
||
}
|
||
var responseObj = response.ResponseEntity;
|
||
if (responseObj == default)
|
||
{
|
||
ConsoleLog.Error($"【异常】发送WMS[任务异常]失败,解析WMS返回数据失败,发送次数:{i},任务号:{wmsTask.TaskId}");
|
||
return;
|
||
}
|
||
if (responseObj.Code == 0)
|
||
{
|
||
ConsoleLog.Tip($"发送WMS[任务异常]成功任务号:{wmsTask.TaskId},载具号:{wmsTask.VehicleNo},{wmsTask.Origin} => {wmsTask.Destination}");
|
||
return;
|
||
}
|
||
ConsoleLog.Error($"【异常】发送WMS[任务异常]失败,WMS返回异常,任务号:{wmsTask.TaskId},载具号:{wmsTask.VehicleNo},参考信息:{responseObj.Message}");
|
||
return;
|
||
}
|
||
});
|
||
}
|
||
|
||
/// <summary>
|
||
/// 发送 WMS 取货位置无货
|
||
/// </summary>
|
||
/// <param name="taskId"></param>
|
||
/// <param name="count"></param>
|
||
public void SendTaskEmptyOut(string? taskId, ushort count = 5)
|
||
{
|
||
Task.Factory.StartNew(() =>
|
||
{
|
||
AppWmsTask? wmsTask = default;
|
||
for (int i = 0; i < count; i++)
|
||
{
|
||
List<AppWmsTask>? tasks = wmsTaskDao.Select(new AppWmsTask { TaskId = taskId });
|
||
if (tasks == default)
|
||
{
|
||
ConsoleLog.Error($"【异常】发送WMS任务状态时查询数据库失败,和数据库连接中断,任务号:{taskId}");
|
||
Thread.Sleep(100);
|
||
continue;
|
||
}
|
||
if (tasks.Count == 0)
|
||
{
|
||
ConsoleLog.Warning($"【警告】发送WMS任务状态时查询数据库异常,找不到任务,任务号:{taskId}");
|
||
return;
|
||
}
|
||
wmsTask = tasks[0];
|
||
}
|
||
if (wmsTask == default) { return; }
|
||
SendWmsTaskStatusRequest request = new()
|
||
{
|
||
TaskId = wmsTask.TaskId,
|
||
TaskStatus = (int)SendWmsTaskStatusEnum.emptyOut,
|
||
Destination = wmsTask.Destination,
|
||
VehicleNo = wmsTask.VehicleNo,
|
||
Message = "取货位置无货"
|
||
};
|
||
for (int i = 1; i <= count; i++)
|
||
{
|
||
var response = wmsWebApiPost.HttpPost<SendWmsTaskStatusRequest, WmsResponse>(request, CommonData.AppApiBaseInfos.GetAddress("SendWmsTaskStatusApiAddress") ?? "");
|
||
if (!response.IsSend)
|
||
{
|
||
ConsoleLog.Error($"【异常】发送WMS[取货位置无货]失败,发送次数:{i},任务号:{wmsTask.TaskId},参考信息:{response.RequestException?.Message}");
|
||
continue;
|
||
}
|
||
var responseObj = response.ResponseEntity;
|
||
if (responseObj == default)
|
||
{
|
||
ConsoleLog.Error($"【异常】发送WMS[取货位置无货]失败,解析WMS返回数据失败,发送次数:{i},任务号:{wmsTask.TaskId}");
|
||
return;
|
||
}
|
||
if (responseObj.Code == 0)
|
||
{
|
||
ConsoleLog.Tip($"发送WMS[取货位置无货]成功任务号:{wmsTask.TaskId},载具号:{wmsTask.VehicleNo},{wmsTask.Origin} => {wmsTask.Destination}");
|
||
return;
|
||
}
|
||
ConsoleLog.Error($"【异常】发送WMS[取货位置无货]失败,WMS返回异常,任务号:{wmsTask.TaskId},载具号:{wmsTask.VehicleNo},参考信息:{responseObj.Message}");
|
||
}
|
||
});
|
||
}
|
||
|
||
/// <summary>
|
||
/// 发送 WMS 卸货位置有货
|
||
/// </summary>
|
||
/// <param name="taskId"></param>
|
||
/// <param name="count"></param>
|
||
public void SendTaskDoubleIn(string? taskId, ushort count = 5)
|
||
{
|
||
Task.Factory.StartNew(() =>
|
||
{
|
||
AppWmsTask? wmsTask = default;
|
||
for (int i = 0; i < count; i++)
|
||
{
|
||
List<AppWmsTask>? tasks = wmsTaskDao.Select(new AppWmsTask { TaskId = taskId });
|
||
if (tasks == default)
|
||
{
|
||
ConsoleLog.Error($"【异常】发送WMS任务状态时查询数据库失败,和数据库连接中断,任务号:{taskId}");
|
||
Thread.Sleep(100);
|
||
continue;
|
||
}
|
||
if (tasks.Count == 0)
|
||
{
|
||
ConsoleLog.Warning($"【警告】发送WMS任务状态时查询数据库异常,找不到任务,任务号:{taskId}");
|
||
return;
|
||
}
|
||
wmsTask = tasks[0];
|
||
}
|
||
if (wmsTask == default) { return; }
|
||
SendWmsTaskStatusRequest request = new()
|
||
{
|
||
TaskId = wmsTask.TaskId,
|
||
TaskStatus = (int)SendWmsTaskStatusEnum.doubleIn,
|
||
Destination = wmsTask.Destination,
|
||
VehicleNo = wmsTask.VehicleNo,
|
||
Message = "卸货位置有货"
|
||
};
|
||
for (int i = 1; i <= count; i++)
|
||
{
|
||
var response = wmsWebApiPost.HttpPost<SendWmsTaskStatusRequest, WmsResponse>(request, CommonData.AppApiBaseInfos.GetAddress("SendWmsTaskStatusApiAddress") ?? "");
|
||
if (!response.IsSend)
|
||
{
|
||
ConsoleLog.Error($"【异常】发送WMS[卸货位置有货]失败,发送次数:{i},任务号:{wmsTask.TaskId},参考信息:{response.RequestException?.Message}");
|
||
continue;
|
||
}
|
||
var responseObj = response.ResponseEntity;
|
||
if (responseObj == default)
|
||
{
|
||
ConsoleLog.Error($"【异常】发送WMS[卸货位置有货]失败,解析WMS返回数据失败,发送次数:{i},任务号:{wmsTask.TaskId}");
|
||
return;
|
||
}
|
||
if (responseObj.Code == 0)
|
||
{
|
||
ConsoleLog.Tip($"发送WMS[卸货位置有货]成功任务号:{wmsTask.TaskId},载具号:{wmsTask.VehicleNo},{wmsTask.Origin} => {wmsTask.Destination}");
|
||
return;
|
||
}
|
||
ConsoleLog.Error($"【异常】发送WMS[卸货位置有货]失败,WMS返回异常,任务号:{wmsTask.TaskId},载具号:{wmsTask.VehicleNo},参考信息:{responseObj.Message}");
|
||
}
|
||
});
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 向WMS发送任务开始执行
|
||
/// </summary>
|
||
/// <param name="taskId"></param>
|
||
/// <param name="count"></param>
|
||
public void SendTaskStart(string? taskId, ushort count = 5)
|
||
{
|
||
Task.Factory.StartNew(() =>
|
||
{
|
||
AppWmsTask? wmsTask = default;
|
||
for (int i = 0; i < count; i++)
|
||
{
|
||
List<AppWmsTask>? tasks = wmsTaskDao.Select(new AppWmsTask { TaskId = taskId });
|
||
if (tasks == default)
|
||
{
|
||
ConsoleLog.Error($"【异常】发送WMS任务状态时查询数据库失败,和数据库连接中断,任务号:{taskId}");
|
||
Thread.Sleep(100);
|
||
continue;
|
||
}
|
||
if (tasks.Count == 0)
|
||
{
|
||
ConsoleLog.Warning($"【警告】发送WMS任务状态时查询数据库异常,找不到任务,任务号:{taskId}");
|
||
return;
|
||
}
|
||
wmsTask = tasks[0];
|
||
}
|
||
if (wmsTask == default) { return; }
|
||
SendWmsTaskStatusRequest request = new()
|
||
{
|
||
TaskId = wmsTask.TaskId,
|
||
TaskStatus = (int)SendWmsTaskStatusEnum.start,
|
||
Destination = wmsTask.Destination,
|
||
VehicleNo = wmsTask.VehicleNo,
|
||
Message = "开始执行"
|
||
};
|
||
for (int i = 1; i <= count; i++)
|
||
{
|
||
var response = wmsWebApiPost.HttpPost<SendWmsTaskStatusRequest, WmsResponse>(request, CommonData.AppApiBaseInfos.GetAddress("SendWmsTaskStatusApiAddress") ?? "");
|
||
if (!response.IsSend)
|
||
{
|
||
ConsoleLog.Error($"【异常】发送WMS[开始执行]失败,发送次数:{i},任务号:{wmsTask.TaskId},参考信息:{response.RequestException?.Message}");
|
||
continue;
|
||
}
|
||
var responseObj = response.ResponseEntity;
|
||
if (responseObj == default)
|
||
{
|
||
ConsoleLog.Error($"【异常】发送WMS[开始执行]失败,解析WMS返回数据失败,发送次数:{i},任务号:{wmsTask.TaskId}");
|
||
return;
|
||
}
|
||
if (responseObj.Code == 0)
|
||
{
|
||
ConsoleLog.Tip($"发送WMS[开始执行]成功任务号:{wmsTask.TaskId},载具号:{wmsTask.VehicleNo},{wmsTask.Origin} => {wmsTask.Destination}");
|
||
return;
|
||
}
|
||
ConsoleLog.Error($"【异常】发送WMS[开始执行]失败,WMS返回异常,任务号:{wmsTask.TaskId},载具号:{wmsTask.VehicleNo},参考信息:{responseObj.Message}");
|
||
return;
|
||
}
|
||
});
|
||
}
|
||
|
||
/// <summary>
|
||
/// 向WMS发送任务完成
|
||
/// </summary>
|
||
/// <param name="taskId"></param>
|
||
/// <param name="count"></param>
|
||
/// <param name="destination"></param>
|
||
public void SendTaskComplete(string? taskId, ushort count = 5, string? destination = default)
|
||
{
|
||
Task.Factory.StartNew(() =>
|
||
{
|
||
AppWmsTask? wmsTask = default;
|
||
for (int i = 0; i < count; i++)
|
||
{
|
||
List<AppWmsTask>? tasks = wmsTaskDao.Select(new AppWmsTask { TaskId = taskId });
|
||
if (tasks == default)
|
||
{
|
||
ConsoleLog.Error($"【异常】发送WMS任务状态时查询数据库失败,和数据库连接中断,任务号:{taskId}");
|
||
Thread.Sleep(100);
|
||
continue;
|
||
}
|
||
if (tasks.Count == 0)
|
||
{
|
||
ConsoleLog.Warning($"【警告】发送WMS任务状态时查询数据库异常,找不到任务,任务号:{taskId}");
|
||
return;
|
||
}
|
||
wmsTask = tasks[0];
|
||
}
|
||
if (wmsTask == default) { return; }
|
||
SendWmsTaskStatusRequest request = new()
|
||
{
|
||
TaskId = wmsTask.TaskId,
|
||
TaskStatus = (int)SendWmsTaskStatusEnum.complete,
|
||
Destination = destination ?? wmsTask.Destination,
|
||
VehicleNo = wmsTask.VehicleNo,
|
||
Message = "任务完成"
|
||
};
|
||
for (int i = 1; i <= count; i++)
|
||
{
|
||
var response = wmsWebApiPost.HttpPost<SendWmsTaskStatusRequest, WmsResponse>(request, CommonData.AppApiBaseInfos.GetAddress("SendWmsTaskStatusApiAddress") ?? "");
|
||
if (!response.IsSend)
|
||
{
|
||
ConsoleLog.Error($"【异常】发送WMS[任务完成]失败,发送次数:{i},任务号:{wmsTask.TaskId},参考信息:{response.RequestException?.Message}");
|
||
continue;
|
||
}
|
||
var responseObj = response.ResponseEntity;
|
||
if (responseObj == default)
|
||
{
|
||
ConsoleLog.Error($"【异常】发送WMS[任务完成]失败,解析WMS返回数据失败,发送次数:{i},任务号:{wmsTask.TaskId}");
|
||
return;
|
||
}
|
||
if (responseObj.Code == 0)
|
||
{
|
||
ConsoleLog.Tip($"发送WMS[任务完成]成功任务号:{wmsTask.TaskId},载具号:{wmsTask.VehicleNo},{wmsTask.Origin} => {wmsTask.Destination}");
|
||
return;
|
||
}
|
||
ConsoleLog.Error($"【异常】发送WMS[任务完成]失败,WMS返回异常,任务号:{wmsTask.TaskId},载具号:{wmsTask.VehicleNo},参考信息:{responseObj.Message}");
|
||
return;
|
||
}
|
||
});
|
||
}
|
||
|
||
/// <summary>
|
||
/// 发送任务离开起始位置
|
||
/// </summary>
|
||
/// <param name="wmsTask"></param>
|
||
/// <param name="count"></param>
|
||
public void SendTaskLeaveStart(AppWmsTask wmsTask, int count = 5)
|
||
{
|
||
Task.Factory.StartNew(() =>
|
||
{
|
||
if (wmsTask == default) { return; }
|
||
SendWmsTaskStatusRequest request = new()
|
||
{
|
||
TaskId = wmsTask.TaskId,
|
||
TaskStatus = (int)SendWmsTaskStatusEnum.leaveOrigin,
|
||
VehicleNo = wmsTask.VehicleNo,
|
||
Message = "任务离开起始位置"
|
||
};
|
||
for (int i = 1; i <= count; i++)
|
||
{
|
||
var response = wmsWebApiPost.HttpPost<SendWmsTaskStatusRequest, WmsResponse>(request, CommonData.AppApiBaseInfos.GetAddress("SendWmsTaskStatusApiAddress") ?? "");
|
||
if (!response.IsSend)
|
||
{
|
||
ConsoleLog.Error($"【异常】发送WMS[任务离开起始位置]失败,发送次数:{i},任务号:{wmsTask.TaskId},参考信息:{response.RequestException?.Message}");
|
||
continue;
|
||
}
|
||
var responseObj = response.ResponseEntity;
|
||
if (responseObj == default)
|
||
{
|
||
ConsoleLog.Error($"【异常】发送WMS[任务离开起始位置]失败,解析WMS返回数据失败,发送次数:{i},任务号:{wmsTask.TaskId}");
|
||
return;
|
||
}
|
||
if (responseObj.Code == 0)
|
||
{
|
||
ConsoleLog.Tip($"发送WMS[任务离开起始位置]成功任务号:{wmsTask.TaskId},载具号:{wmsTask.VehicleNo},{wmsTask.Origin} => {wmsTask.Destination}");
|
||
return;
|
||
}
|
||
ConsoleLog.Error($"【异常】发送WMS[任务离开起始位置]失败,WMS返回异常,任务号:{wmsTask.TaskId},载具号:{wmsTask.VehicleNo},参考信息:{responseObj.Message}");
|
||
return;
|
||
}
|
||
});
|
||
}
|
||
} |