From 95e39ae7aecd6e1016c71cf5ae70a680d8f569bb Mon Sep 17 00:00:00 2001 From: wangxinhui <wangxinhui@hnkhzn.com> Date: 星期二, 29 四月 2025 10:48:30 +0800 Subject: [PATCH] 上传最新代码 --- 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/成品仓/AGV_CPExtend.cs | 176 +++++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 119 insertions(+), 57 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/AGV_CPExtend.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/AGV_CPExtend.cs" index 3a3dbc3..2a6d1fb 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/AGV_CPExtend.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/AGV_CPExtend.cs" @@ -21,51 +21,115 @@ { try { - var newTasks = _taskService.Db.Queryable<Dt_Task>().Where(x => (x.TaskState == TaskStatusEnum.AGV_Execute.ObjToInt()|| x.TaskState == TaskStatusEnum.New.ObjToInt()) && nameof(AGV_CPJob).Contains(x.DeviceCode) && !string.IsNullOrEmpty(x.DeviceCode)).ToList().OrderBy(x => x.Grade).ThenBy(x => x.CreateDate).ToList(); - foreach (var task in newTasks) - { - try - { - if (task.TaskType == TaskTypeEnum.OutProduct.ObjToInt()) - task.CurrentAddress = GetAGVAddress(task.CurrentAddress); - else - task.NextAddress = GetAGVAddress(task.NextAddress); - AgvTaskDTO taskDTO = new AgvTaskDTO() - { - TaskCode = task.AgvTaskNum, - ReqCode = DateTime.Now.ToString("yyyyMMdd") + task.AgvTaskNum, - TaskTyp = task.TaskType < TaskTypeEnum.Inbound.ObjToInt() ? "CPC" : "CPR", - ctnrCode = task.PalletCode, - PositionCodePath = new List<CodePath>() - { - new CodePath() - { - type="05", - positionCode=task.CurrentAddress - }, - new CodePath() - { - type="05", - positionCode=task.NextAddress - } - }, - }; - //鍙戦�丄GV浠诲姟 - WebResponseContent content = _taskService.AgvSendTask(taskDTO, APIEnum.Agv_CPSendTask); - if (!content.Status) - throw new Exception(content.Message); - task.TaskState = TaskStatusEnum.AGV_Takeing.ObjToInt(); - _taskService.UpdateTask(task, TaskStatusEnum.AGV_Executing); - } - catch (Exception ex) - { - task.TaskState = TaskStatusEnum.Exception.ObjToInt(); - task.ExceptionMessage = ex.Message; - } - } + var newTasks = _taskService.Db.Queryable<Dt_Task>().Where(x => (x.TaskState == TaskStatusEnum.AGV_Execute.ObjToInt()|| x.TaskState == TaskStatusEnum.New.ObjToInt()) && nameof(AGV_CPJob).Contains(x.DeviceCode) && !string.IsNullOrEmpty(x.DeviceCode) && x.TaskType!=999).ToList().OrderBy(x => x.Grade).ThenBy(x => x.CreateDate).ToList(); + if (newTasks.Count>0) { - _taskService.UpdateData(newTasks); + foreach (var task in newTasks) + { + try + { + if (task.TaskType == TaskTypeEnum.OutProduct.ObjToInt()) + task.CurrentAddress = GetAGVAddress(task.CurrentAddress); + else + task.NextAddress = GetAGVAddress(task.NextAddress); + AgvTaskDTO taskDTO = new AgvTaskDTO() + { + TaskCode = task.AgvTaskNum, + ReqCode = DateTime.Now.ToString("yyyyMMdd") + task.AgvTaskNum, + TaskTyp = task.TaskType < TaskTypeEnum.Inbound.ObjToInt() ? "CPC" : "CPR", + ctnrCode = task.PalletCode, + PositionCodePath = new List<CodePath>() + { + new CodePath() + { + type = "05", + positionCode = task.CurrentAddress + }, + new CodePath() + { + type = "05", + positionCode = task.NextAddress + } + } + }; + if (taskDTO.TaskTyp== "CPC") + { + taskDTO.Priority = (24 - DateTime.Now.Hour).ToString(); + } + if (task.GroupId.IsNotEmptyOrNull()) + { + taskDTO.GroupId=task.GroupId; + } + //鍙戦�丄GV浠诲姟 + WebResponseContent content = _taskService.AgvSendTask(taskDTO, APIEnum.Agv_CPSendTask); + if (!content.Status) + throw new Exception(content.Message); + if (taskDTO.TaskTyp == "CPC") + { + _taskService.UpdateTask(task, TaskStatusEnum.AGV_Executing); + } + else + { + _taskService.UpdateTask(task, TaskStatusEnum.AGV_Takeing); + } + Thread.Sleep(500); + } + catch (Exception ex) + { + task.TaskState = TaskStatusEnum.Exception.ObjToInt(); + task.ExceptionMessage = ex.Message; + } + } + if (newTasks.Count > 0) + { + _taskService.UpdateData(newTasks); + } + } + var newTasksLocations = _taskService.Db.Queryable<Dt_Task>().Where(x => x.TaskState == TaskStatusEnum.New.ObjToInt() && nameof(AGV_CPJob).Contains(x.DeviceCode) && !string.IsNullOrEmpty(x.DeviceCode) && x.Remark == "娴嬭瘯绌烘").ToList().OrderBy(x => x.Grade).ThenBy(x => x.CreateDate).ToList(); + if (newTasksLocations.Count>0) + { + foreach (var task in newTasksLocations) + { + try + { + string CurrentAddress = GetAGVAddress(task.CurrentAddress); + string NextAddress = GetAGVAddress(task.NextAddress); + AgvTaskDTO taskDTO = new AgvTaskDTO() + { + TaskCode = task.AgvTaskNum, + ReqCode = DateTime.Now.ToString("yyyyMMdd") + task.AgvTaskNum, + TaskTyp = "CP", + ctnrCode = task.PalletCode, + PositionCodePath = new List<CodePath>() + { + new CodePath() + { + type="05", + positionCode=CurrentAddress + }, + new CodePath() + { + type="05", + positionCode=NextAddress + } + }, + }; + //鍙戦�丄GV浠诲姟 + WebResponseContent content = _taskService.AgvSendTask(taskDTO, APIEnum.Agv_CPSendTask); + if (!content.Status) + throw new Exception(content.Message); + task.TaskState = TaskStatusEnum.AGV_Takeing.ObjToInt(); + task.CurrentAddress = CurrentAddress; + task.NextAddress = NextAddress; + _taskService.UpdateTask(task, TaskStatusEnum.AGV_Executing); + } + catch (Exception ex) + { + task.TaskState = TaskStatusEnum.Exception.ObjToInt(); + task.ExceptionMessage = ex.Message; + } + } } } catch (Exception ex) @@ -81,27 +145,27 @@ try { //鑾峰彇鏄惁鏈夊畨鍏ㄧ敵璇蜂腑鐨勪换鍔� - var continueTask = _taskService.Db.Queryable<Dt_Task>().Where(x => (x.TaskState == TaskStatusEnum.AGV_WaitToExecute.ObjToInt()) && nameof(AGV_CPJob).Contains(x.DeviceCode) && !string.IsNullOrEmpty(x.DeviceCode)).ToList().OrderBy(x => x.Grade).ThenBy(x => x.CreateDate).FirstOrDefault(); - if (continueTask!=null) + var continueTasks = _taskService.Db.Queryable<Dt_Task>().Where(x => (x.TaskState == TaskStatusEnum.AGV_WaitToExecute.ObjToInt()) && nameof(AGV_CPJob).Contains(x.DeviceCode) && !string.IsNullOrEmpty(x.DeviceCode)).ToList().OrderBy(x => x.Grade).ThenBy(x => x.CreateDate).ToList(); + foreach (var continueTask in continueTasks) { //鍙栬揣鍥炶皟 if (continueTask.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup) { - Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.AGVStationCode == continueTask.CurrentAddress || x.StationCode== continueTask.CurrentAddress); + Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.AGVStationCode == continueTask.CurrentAddress || x.StationCode == continueTask.CurrentAddress); if (stationManger == null) { - throw new Exception($"鏈壘鍒扮珯鍙皗continueTask.CurrentAddress}淇℃伅"); + continue; } IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManger.StationDeviceCode); if (device == null) { - throw new Exception($"鏈壘鍒拌澶噞stationManger.StationDeviceCode}淇℃伅"); + continue; } OtherDevice otherDevice = (OtherDevice)device; short canTake = otherDevice.GetValue<GroundStationDBName, short>(GroundStationDBName.R_IsCanTake, stationManger.StationCode); if (canTake != 1) { - return; + continue; } } else//鏀捐揣鍥炶皟 @@ -109,18 +173,18 @@ Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.AGVStationCode == continueTask.NextAddress); if (stationManger == null) { - throw new Exception($"鏈壘鍒扮珯鍙皗continueTask.NextAddress}淇℃伅"); + continue; } IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManger.StationDeviceCode); if (device == null) { - throw new Exception($"鏈壘鍒拌澶噞stationManger.StationDeviceCode}淇℃伅"); + continue; } OtherDevice otherDevice = (OtherDevice)device; short canPut = otherDevice.GetValue<GroundStationDBName, short>(GroundStationDBName.R_IsCanPut, stationManger.StationCode); if (canPut != 1) { - return; + continue; } } //鑾峰彇璋冨叆鍙傛暟 @@ -140,23 +204,21 @@ } //璇锋眰鏂欑鍥炶皟鎺ュ彛 WebResponseContent content = _taskService.AgvBoxApplyPass(boxApplyPassDTO); - if (content.Status && continueTask.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup) + if (content.Status && continueTask.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup && boxApplyPassDTO.TaskCode == continueTask.AgvTaskNum) { - continueTask.TaskState = TaskStatusEnum.AGV_Executing.ObjToInt(); _taskService.UpdateTask(continueTask, TaskStatusEnum.AGV_Executing); } - else if (content.Status && continueTask.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) + else if (content.Status && continueTask.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup && boxApplyPassDTO.TaskCode== continueTask.AgvTaskNum) { - continueTask.TaskState = TaskStatusEnum.AGV_Puting.ObjToInt(); _taskService.UpdateTask(continueTask, TaskStatusEnum.AGV_Puting); } else { - continueTask.TaskState = TaskStatusEnum.Exception.ObjToInt(); continueTask.ExceptionMessage = content.Message; _taskService.UpdateTask(continueTask, TaskStatusEnum.Exception); } } + } catch (Exception ex) { -- Gitblit v1.9.3