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;
///
/// 用于发送WMS任务状态的类
///
[Component]
public class SendWmsTaskStatus(AppWmsTaskDao wmsTaskDao, WmsWebApiPost wmsWebApiPost)
{
private readonly WmsWebApiPost _wmsWebApiPost = wmsWebApiPost;
private readonly AppWmsTaskDao _wmsTaskDao = wmsTaskDao;
//YXQ
///
/// 发送 WMS 任务异常
///
///
///
///
public void SendTaskErr(string? taskId, string? errMsg, ushort count = 5)
{
Task.Factory.StartNew(() => {
AppWmsTask? wmsTask = default;
for (int i = 0; i < count; i++)
{
List? 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(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}");
}
});
}
///
/// 发送 WMS 取货位置无货
///
///
///
public void SendTaskEmptyOut(string? taskId, ushort count = 5)
{
Task.Factory.StartNew(() => {
AppWmsTask? wmsTask = default;
for (int i = 0; i < count; i++)
{
List? 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(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}");
}
});
}
///
/// 发送 WMS 卸货位置有货
///
///
///
public void SendTaskDoubleIn(string? taskId, ushort count = 5)
{
Task.Factory.StartNew(() => {
AppWmsTask? wmsTask = default;
for (int i = 0; i < count; i++)
{
List? 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(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}");
}
});
}
///
/// 向WMS发送任务开始执行
///
///
///
public void SendTaskStart(string? taskId, ushort count = 5)
{
Task.Factory.StartNew(() => {
AppWmsTask? wmsTask = default;
for (int i = 0; i < count; i++)
{
List? 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(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}");
}
});
}
///
/// 向WMS发送任务完成
///
///
///
public void SendTaskComplete(string? taskId, ushort count = 5)
{
Task.Factory.StartNew(() => {
AppWmsTask? wmsTask = default;
for (int i = 0; i < count; i++)
{
List? 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(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}");
}
});
}
}