2024-11-15 11:37:55 +08:00
|
|
|
|
using WcsMain.ApiServe.Dto.Container;
|
2024-11-14 12:06:40 +08:00
|
|
|
|
using WcsMain.Business.CommonAction;
|
2024-11-15 11:37:55 +08:00
|
|
|
|
using WcsMain.Constant.Enum.Stacker;
|
2024-11-14 12:06:40 +08:00
|
|
|
|
using WcsMain.DataBase.Dao;
|
|
|
|
|
|
using WcsMain.DataBase.TableEntity;
|
2024-11-15 11:37:55 +08:00
|
|
|
|
using WcsMain.Constant.WcsAttribute.AutoFacAttribute;
|
2024-11-14 12:06:40 +08:00
|
|
|
|
|
|
|
|
|
|
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.toMid, ModifyTime = DateTime.Now });
|
|
|
|
|
|
ConsoleLog.Success($"API更新任务状态结果:{(updateResult > 0 ? "成功" : "失败")},任务号:{wmsTask.TaskId}");
|
|
|
|
|
|
return new()
|
|
|
|
|
|
{
|
|
|
|
|
|
Code = "200",
|
|
|
|
|
|
Message = "操作成功",
|
|
|
|
|
|
WmsTaskId = wmsTask.TaskId,
|
|
|
|
|
|
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) || string.IsNullOrEmpty(request.WmsTaskId) || string.IsNullOrEmpty(request.FactendCell))
|
|
|
|
|
|
{
|
|
|
|
|
|
return new() { Code = "400", Message = "缺少必须的参数" };
|
|
|
|
|
|
}
|
|
|
|
|
|
List<AppWmsTask>? appWmsTasks = wmsTaskDao.Select(new() { TaskId = request.WmsTaskId });
|
|
|
|
|
|
if(appWmsTasks == null)
|
|
|
|
|
|
{
|
|
|
|
|
|
return new() { Code = "400", Message = "数据连接异常,请稍后再试" };
|
|
|
|
|
|
}
|
|
|
|
|
|
if (appWmsTasks.Count < 1)
|
|
|
|
|
|
{
|
|
|
|
|
|
return new() { Code = "400", Message = $"该任务号不存在:{request.WmsTaskId}" };
|
|
|
|
|
|
}
|
|
|
|
|
|
AppWmsTask wmsTask = appWmsTasks.First();
|
|
|
|
|
|
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 };
|
|
|
|
|
|
}
|
|
|
|
|
|
if(wmsTask.TaskType == (int)WmsTaskTypeEnum.outTask)
|
|
|
|
|
|
{
|
|
|
|
|
|
/* 更新任务状态为到达中间点 */
|
|
|
|
|
|
int updateResult = wmsTaskDao.Update(new() { TaskId = wmsTask.TaskId, TaskStatus = (int)WmsTaskStatusEnum.arriveMid, ModifyTime = DateTime.Now });
|
|
|
|
|
|
return new() { Code = updateResult > 0 ? "200" : "400", Message = updateResult > 0 ? "成功" : "数据异常", WmsTaskId = request.WmsTaskId };
|
|
|
|
|
|
}
|
|
|
|
|
|
return new() { Code = "400", Message = $"该任务不支持的类型:{request.WmsTaskId}" };
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|