Product_Wms/WcsMain/ApiServe/Service/ContainerService/ContainerService.cs

96 lines
4.8 KiB
C#
Raw Normal View History

using WcsMain.ApiServe.Dto.Container;
using WcsMain.Business.CommonAction;
using WcsMain.Constant.Enum.Stacker;
using WcsMain.DataBase.Dao;
using WcsMain.DataBase.TableEntity;
using WcsMain.Constant.WcsAttribute.AutoFacAttribute;
namespace WcsMain.ApiServe.Service.ContainerService;
[Service]
public class ContainerService(AppWmsTaskDao wmsTaskDao, WCSTaskExecuteEvent taskExecuteEvent)
{
/// <summary>
/// 请求四向车任务
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public CreateInstoreTaskResoponse CreateInstoreTask(CreateInstoreTaskRequest request)
{
ConsoleLog.Info($"四向车请求载具入库:{request.PalleetNo},入库点位:{request.FormCellNo}");
if (string.IsNullOrEmpty(request.FormCellNo) || string.IsNullOrEmpty(request.PalleetNo))
{
return new() { Code = "400", Message = "缺少必须参数" };
}
List<AppWmsTask>? wmsTasks = wmsTaskDao.Select(new() { VehicleNo = request.PalleetNo, TaskStatus = (int)WmsTaskStatusEnum.arriveMid })?.OrderByDescending(o => o.CreateTime).ToList();
if(wmsTasks == null)
{
return new() { Code = "400", Message = "数据连接失败,请重试" };
}
if(wmsTasks.Count == 0)
{
return new() { Code = "400", Message = "该载具暂无待执行的任务" };
}
AppWmsTask wmsTask = wmsTasks.First();
/* 更新状态为前往终点 */
var updateResult = wmsTaskDao.Update(new() { TaskId = wmsTask.TaskId, TaskStatus = (int)WmsTaskStatusEnum.toDestination, ModifyTime = DateTime.Now });
ConsoleLog.Success($"API更新任务状态结果{(updateResult > 0 ? "" : "")},任务号:{wmsTask.TaskId}");
return new()
{
Code = "200",
Message = "操作成功",
WmsTaskId = wmsTask.WcsId,
PalletNo = wmsTask.VehicleNo,
FromCellNo = request.FormCellNo,
ToCellNo = wmsTask.Destination,
};
}
/// <summary>
/// 四向车任务反馈
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public TaskStateNoticeResponse TaskStateNotice(TaskStateNoticeRequest request)
{
if(string.IsNullOrEmpty(request.TaskState?.ToString()) || string.IsNullOrEmpty(request.WmsTaskId?.ToString()) || string.IsNullOrEmpty(request.FactendCell))
{
return new() { Code = "400", Message = "缺少必须的参数" };
}
List<AppWmsTask>? appWmsTasks = wmsTaskDao.Select(new() { WcsId = request.WmsTaskId?.ToString() });
if(appWmsTasks == null)
{
return new() { Code = "400", Message = "数据连接异常,请稍后再试" };
}
if (appWmsTasks.Count < 1)
{
return new() { Code = "400", Message = $"该任务号不存在:{request.WmsTaskId}" };
}
AppWmsTask wmsTask = appWmsTasks.First();
if(request.TaskState?.ToString() == "20")
{
if (wmsTask.TaskType == (int)WmsTaskTypeEnum.inTask || wmsTask.TaskType == (int)WmsTaskTypeEnum.moveTask)
{
/* 入库/移库 完成需要反馈WMS任务完成更新任务状态为完成 */
string? errText = taskExecuteEvent.CompleteTaskEvent(wmsTask, "四向车上报完成", request.FactendCell);
return new() { Code = string.IsNullOrEmpty(errText) ? "200" : "400", Message = string.IsNullOrEmpty(errText) ? "成功" : errText, WmsTaskId = request.WmsTaskId?.ToString() };
}
if (wmsTask.TaskType == (int)WmsTaskTypeEnum.outTask)
{
/* 更新任务状态为到达中间点 */
int updateResult = wmsTaskDao.Update(new() { TaskId = wmsTask.TaskId, TaskStatus = (int)WmsTaskStatusEnum.arriveMid, ModifyTime = DateTime.Now, TaskMsg = "四向车上报到达中间点" });
return new() { Code = updateResult > 0 ? "200" : "400", Message = updateResult > 0 ? "成功" : "数据异常", WmsTaskId = request.WmsTaskId?.ToString() };
}
return new() { Code = "400", Message = $"该任务不支持的类型:{request.WmsTaskId}" };
}
if (request.TaskState?.ToString() == "21")
{
/* 更新任务状态为取消 */
int updateResult = wmsTaskDao.Update(new() { TaskId = wmsTask.TaskId, TaskStatus = (int)WmsTaskStatusEnum.err, TaskMsg = "四向车取消", ModifyTime = DateTime.Now });
return new() { Code = updateResult > 0 ? "200" : "400", Message = updateResult > 0 ? "成功" : "数据异常", WmsTaskId = request.WmsTaskId?.ToString() };
}
return new() { Code = "400", Message = $"不支持的状态类型:{request.TaskState}" };
}
}