wcs_server_s7_baoying/WcsMain/Business/CommonAction/SendWmsTaskStatus.cs

311 lines
14 KiB
C#
Raw Normal View History

2024-06-20 09:23:01 +08:00
using WcsMain.ApiClient.DataEntity.WmsEntity;
using WcsMain.Common;
using WcsMain.DataBase.Dao;
using WcsMain.DataBase.TableEntity;
using WcsMain.Enum;
using WcsMain.Plugins;
using WcsMain.WcsAttribute.AutoFacAttribute;
namespace WcsMain.Business.CommonAction;
/// <summary>
/// 用于发送WMS任务状态的类
/// </summary>
[Component]
public class SendWmsTaskStatus(AppWmsTaskDao wmsTaskDao, WmsWebApiPost wmsWebApiPost)
{
private readonly WmsWebApiPost _wmsWebApiPost = wmsWebApiPost;
private readonly AppWmsTaskDao _wmsTaskDao = wmsTaskDao;
/// <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.AppConfig.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.AppConfig.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.AppConfig.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.AppConfig.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 SendTaskComplete(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.complete,
Destination = wmsTask.Destination,
VehicleNo = wmsTask.VehicleNo,
Message = "任务完成"
};
for (int i = 1; i <= count; i++)
{
var response = _wmsWebApiPost.HttpPost<SendWmsTaskStatusRequest, WmsResponse>(request, CommonData.AppConfig.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}");
}
});
}
}