dengjunjie
6 天以前 f40ba2a9fb9d3c2ece08e9a7cd987d4744dccab2
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/PartialTaskService_ShuttleCar.cs
@@ -24,7 +24,6 @@
            WebResponseContent content = new WebResponseContent().OK();
            try
            {
                //var task = GetTaskInfo(taskNum, (int)TaskCarStatusEnum.ShuttleCar_Executing);//只能根据任务号查询任务
                var task = GetTaskInfo(taskNum);
                if (task != null)
                {
@@ -34,12 +33,15 @@
                            {
                                if (TaskInboundTypes.Contains(task.TaskType) && task.TaskState == TaskInStatusEnum.Car_InExecuting.ObjToInt())
                                {
                                    //int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>();
                                    task.CurrentAddress = task.NextAddress;
                                    task.NextAddress = string.Empty;
                                    task.TaskState = (int)TaskInStatusEnum.InFinish;
                                    task.TaskState = TaskInStatusEnum.InFinish.ObjToInt();
                                    AddTask_Hty(task, TaskOperateTypeEnum.AutoComplete);
                                    _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"穿梭车入库完成");
                                }
                                else if (TaskRelocationTypes.Contains(task.TaskType) && task.TaskState == TaskRelocationStatusEnum.CarTarget_Executing.ObjToInt())
                                {
                                    task.TaskState = TaskRelocationStatusEnum.RelocationFinish.ObjToInt();
                                    AddTask_Hty(task, TaskOperateTypeEnum.AutoComplete);
                                    _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"穿梭车移库完成");
                                }
                            }
                            break;
@@ -47,19 +49,21 @@
                            {
                                if (TaskOutboundTypes.Contains(task.TaskType) && task.TaskState == TaskOutStatusEnum.Car_OutExecuting.ObjToInt())
                                {
                                    //int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskOutStatusEnum>();
                                    task.TaskState = (int)TaskOutStatusEnum.Car_OutFinish;
                                    task.ModifyDate = DateTime.Now;
                                    task.Modifier = "System";
                                    task.TaskState = TaskOutStatusEnum.Car_OutFinish.ObjToInt();
                                    UpdateData(task);
                                }
                                else if (TaskRelocationTypes.Contains(task.TaskType) && task.TaskState == TaskRelocationStatusEnum.CarSource_Executing.ObjToInt())
                                {
                                    task.TaskState = TaskRelocationStatusEnum.CarSource_Finish.ObjToInt();
                                    UpdateData(task);
                                }
                            }
                            break;
                        case 10://充电完成
                            {
                                if (task.TaskType == TaskOtherTypeEnum.RelocationCarCharging.ObjToInt() && task.TaskState == (int)CarChargingTask.ShuttleCar_Charging)//移车充电
                                if (task.TaskType == TaskOtherTypeEnum.RelocationCarCharging.ObjToInt() && task.TaskState == (int)CarChargingTaskEnum.CarCharging_Charging)//移车充电
                                {
                                    task.TaskState = (int)CarChargingTask.RelocationCarFinish;
                                    task.TaskState = CarChargingTaskEnum.CarChargingFinish.ObjToInt();
                                    AddTask_Hty(task, TaskOperateTypeEnum.AutoComplete);
                                    _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"穿梭车充电完成");
                                }
@@ -68,22 +72,14 @@
                        case 13://A侧回零完成
                        case 14://B侧回零完成
                            {
                                if (TaskRelocationTypes.Contains(task.TaskType))//移库任务
                                if (task.TaskType == TaskOtherTypeEnum.RelocationCar.ObjToInt() && task.TaskState == TaskCarStatusEnum.ShuttleCar_Executing.ObjToInt())//移车任务
                                {
                                    if (task.TaskState == TaskRelocationStatusEnum.CarSource_Executing.ObjToInt())
                                        task.TaskState = TaskRelocationStatusEnum.CarSource_Finish.ObjToInt();
                                    else if (task.TaskState == TaskRelocationStatusEnum.CarTarget_Executing.ObjToInt())
                                        task.TaskState = TaskRelocationStatusEnum.RelocationFinish.ObjToInt();
                                    task.TaskState = TaskCarStatusEnum.ShuttleCar_Finish.ObjToInt();
                                    UpdateData(task);
                                }
                                else if (task.TaskType == TaskOtherTypeEnum.RelocationCar.ObjToInt() && task.TaskState == TaskCarStatusEnum.ShuttleCar_Executing.ObjToInt())//移车任务
                                else if (task.TaskType == TaskOtherTypeEnum.RelocationCarCharging.ObjToInt() && task.TaskState == CarChargingTaskEnum.CarCharging_Executing.ObjToInt())//移车充电
                                {
                                    task.TaskState = (int)TaskCarStatusEnum.ShuttleCar_Finish;
                                    UpdateData(task);
                                }
                                else if (task.TaskType == TaskOtherTypeEnum.RelocationCarCharging.ObjToInt() && task.TaskState == CarChargingTask.ShuttleCar_Executing.ObjToInt())//移车充电
                                {
                                    task.TaskState = (int)CarChargingTask.ShuttleCar_Finish;
                                    task.TaskState = CarChargingTaskEnum.CarCharging_Finish.ObjToInt();
                                    UpdateData(task);
                                }
                            }
@@ -125,7 +121,7 @@
            }
            return content;
        }
        public static int tasktype = 0;
        /// <summary>
        /// æŸ¥è¯¢ç©¿æ¢­è½¦å‡ºå…¥åº“任务
        /// </summary>
@@ -134,10 +130,27 @@
        /// <returns></returns>
        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);
            Dt_Task? _Task = null;
            if (tasktype == 0)
            {
                if (string.IsNullOrEmpty(currentAddress))
                    _Task = 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
                    _Task = 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);
            }
            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);
            {
                if (TaskInboundTypes.Contains(tasktype))
                {
                    _Task = BaseDal.QueryFirst(x => TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew, TaskOrderBy) ?? BaseDal.QueryFirst(x => x.ShuttleCarCode == deviceNo && TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.SC_InFinish, TaskOrderBy);
                }
                else if (TaskOutboundTypes.Contains(tasktype))
                {
                    _Task = BaseDal.QueryFirst(x => x.ShuttleCarCode == deviceNo && TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.SC_InFinish, TaskOrderBy) ?? BaseDal.QueryFirst(x => TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew, TaskOrderBy);
                }
            }
            if (_Task != null) tasktype = _Task.TaskType;
            return _Task;
        }
        /// <summary>
        /// èŽ·å–ç§»åº“ä»»åŠ¡
@@ -148,11 +161,16 @@
        public Dt_Task ShuttleCarRelocationTask(string deviceNo, string currentAddress = "")
        {
            List<Dt_Task> tasks = null;
            Dt_Task? task = null;
            if (string.IsNullOrEmpty(currentAddress))
                tasks = BaseDal.QueryData(x => x.ShuttleCarCode == deviceNo && (TaskRelocationTypes.Contains(x.TaskType) && (x.TaskState == (int)TaskRelocationStatusEnum.SC_RelocationFinish || x.TaskState == (int)TaskRelocationStatusEnum.RelocationNew)));
                tasks = BaseDal.QueryData(x => /*x.ShuttleCarCode == deviceNo &&*/ TaskRelocationTypes.Contains(x.TaskType) && x.TaskState == (int)TaskRelocationStatusEnum.RelocationNew).OrderBy(x => x.TaskNum).ToList();
            else
                tasks = BaseDal.QueryData(x => x.ShuttleCarCode == deviceNo && x.CurrentAddress == currentAddress && (TaskRelocationTypes.Contains(x.TaskType) && (x.TaskState == (int)TaskRelocationStatusEnum.SC_RelocationFinish || x.TaskState == (int)TaskRelocationStatusEnum.RelocationNew)));
            return tasks.OrderBy(x=>x.TaskNum).First();
                tasks = BaseDal.QueryData(x => /*x.ShuttleCarCode == deviceNo &&*/ x.CurrentAddress == currentAddress && TaskRelocationTypes.Contains(x.TaskType) && x.TaskState == (int)TaskRelocationStatusEnum.RelocationNew).OrderBy(x => x.TaskNum).ToList();
            if (tasks != null && tasks.Count > 0)
            {
                task = tasks[0];
            }
            return task;
        }
    }
}