using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEAWCS_Common.TaskEnum; using WIDESEAWCS_Core; using WIDESEAWCS_Core.Helper; using WIDESEAWCS_ITaskInfoService; using WIDESEAWCS_Model.Models; namespace WIDESEAWCS_TaskInfoService { public partial class TaskService { /// /// 穿梭车任务完成 /// /// 任务号 /// 完成类型 /// public WebResponseContent ShuttleCarTaskCompleted(int taskNum, short TaskTypeComplete) { WebResponseContent content = new WebResponseContent(); try { var task = GetTaskInfo(taskNum,(int)TaskCarStatusEnum.ShuttleCar_Executing); if (task == null) throw new Exception($"未找到任务,任务号【{taskNum}】"); switch (TaskTypeComplete) { case 1://入库完成 { if (task.TaskType != (int)TaskInboundTypeEnum.Inbound) throw new Exception($"任务类型不匹配,任务号【{taskNum}】"); int nextStatus = task.TaskState.GetNextNotCompletedStatus(); task.TaskState = nextStatus; task.ModifyDate = DateTime.Now; task.Modifier = "System"; content = AddTask_Hty(task, TaskOperateTypeEnum.AutoComplete); _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"穿梭车入库完成"); } break; case 2://出库完成 { int nextStatus = task.TaskState.GetNextNotCompletedStatus(); task.TaskState = nextStatus; task.ModifyDate = DateTime.Now; task.Modifier = "System"; content = UpdateData(task); } break; case 10://充电完成 content.OK(); break; case 13://A侧回零完成 case 14://B侧回零完成 { if (task.TaskType != (int)TaskOtherTypeEnum.RelocationCar) throw new Exception($"任务类型不匹配,任务号【{taskNum}】"); task.TaskState = (int)TaskCarStatusEnum.ShuttleCar_Finish; content = UpdateData(task); } break; default: break; } } catch (Exception ex) { content.Error(ex.Message); } return content; } /// /// 添加历史任务 /// /// /// /// public WebResponseContent AddTask_Hty(Dt_Task task, TaskOperateTypeEnum operateType) { WebResponseContent content = new WebResponseContent(); try { Db.Ado.BeginTran(); content = _taskHtyService.AddTask_Hty(task, operateType);//添加历史任务删除任务 if (!content.Status) throw new Exception(content.Message); content = DeleteData(task); if (!content.Status) throw new Exception(content.Message); Db.Ado.CommitTran(); } catch (Exception ex) { Db.Ado.RollbackTran(); content.Error(ex.Message); } return content; } /// /// 查询穿梭车出入库任务 /// /// 穿梭车编号 /// 当前位置 /// public Dt_Task QueryShuttleCarTask(string deviceNo, string currentAddress = "") { if (string.IsNullOrEmpty(currentAddress)) return BaseDal.QueryFirst(x => x.ShuttleCarCode == deviceNo && (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.SC_InFinish || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew), TaskOrderBy); else return BaseDal.QueryFirst(x => x.ShuttleCarCode == deviceNo && x.CurrentAddress == currentAddress && (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.SC_InFinish || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew), TaskOrderBy); } } }