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; /// /// 用于发送WMS任务状态的类 /// [Component] public class SendWmsTaskStatus(AppWmsTaskDao wmsTaskDao, WmsWebApiPost wmsWebApiPost) { /// /// 发送 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.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}"); } }); } /// /// 发送 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.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}"); } }); } /// /// 发送 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.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}"); } }); } /// /// 向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.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}"); } }); } /// /// 向WMS发送任务完成 /// /// /// /// 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? 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(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}"); } }); } }