using WcsMain.ApiClient.DataEntity.WmsEntity; using WcsMain.ApiServe.Controllers.Dto.Container; using WcsMain.Business.CommonAction; using WcsMain.Common; using WcsMain.DataBase.Dao; using WcsMain.DataBase.TableEntity; using WcsMain.Enum; using WcsMain.Enum.Stacker; using WcsMain.Plugins; using WcsMain.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}" }; } }