Product_Wms/WcsMain/Business/CommonAction/SendWmsTaskStatus.cs
icewint 2010caa685 1、添加四向车接口
2、添加下发任务逻辑
2024-11-14 12:06:40 +08:00

311 lines
14 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using WcsMain.ApiClient.DataEntity.WmsEntity;
using WcsMain.Common;
using WcsMain.DataBase.Dao;
using WcsMain.DataBase.TableEntity;
using WcsMain.Enum;
using WcsMain.ExtendMethod;
using WcsMain.Plugins;
using WcsMain.WcsAttribute.AutoFacAttribute;
namespace WcsMain.Business.CommonAction;
/// <summary>
/// 用于发送WMS任务状态的类
/// </summary>
[Component]
public class SendWmsTaskStatus(AppWmsTaskDao wmsTaskDao, WmsWebApiPost 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}");
}
});
}
/// <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}");
}
});
}
/// <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}");
}
});
}
}