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)
{
///
/// 请求四向车任务
///
///
///
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? 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,
};
}
///
/// 四向车任务反馈
///
///
///
public TaskStateNoticeResponse TaskStateNotice(TaskStateNoticeRequest request)
{
if(string.IsNullOrEmpty(request.TaskState) || string.IsNullOrEmpty(request.WmsTaskId) || string.IsNullOrEmpty(request.FactendCell))
{
return new() { Code = "400", Message = "缺少必须的参数" };
}
List? 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}" };
}
}