From 2190be42c0d77be84fed82d387f2a34da7fe4acc Mon Sep 17 00:00:00 2001 From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com> Date: 星期四, 07 八月 2025 16:17:07 +0800 Subject: [PATCH] 1 --- 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RGVJob/CommonRGVJob.cs | 121 +++++++++++++++++++++++++--------------- 1 files changed, 75 insertions(+), 46 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RGVJob/CommonRGVJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RGVJob/CommonRGVJob.cs" index 60de693..be996c1 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RGVJob/CommonRGVJob.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RGVJob/CommonRGVJob.cs" @@ -28,6 +28,7 @@ using WIDESEAWCS_Core.Caches; using WIDESEAWCS_Core.Helper; using WIDESEAWCS_Core.HttpContextUser; +using WIDESEAWCS_DTO.Enum; using WIDESEAWCS_IBasicInfoRepository; using WIDESEAWCS_IBasicInfoService; using WIDESEAWCS_ITaskInfoRepository; @@ -40,6 +41,7 @@ using WIDESEAWCS_QuartzJob.Models; using WIDESEAWCS_QuartzJob.Service; using WIDESEAWCS_SignalR; +using WIDESEAWCS_TaskInfoRepository; using WIDESEAWCS_Tasks.ConveyorLineJob; using WIDESEAWCS_Tasks.RGVJob; using WIDESEAWCS_Tasks.StackerCraneJob; @@ -48,10 +50,11 @@ namespace WIDESEAWCS_Tasks { [DisallowConcurrentExecution] - public class CommonRGVJob :JobBase, IJob + public class CommonRGVJob : JobBase, IJob { private readonly ITaskService _taskService; private readonly ITaskRepository _taskRepository; + private readonly ITask_HtyRepository _task_HtyRepository; private readonly ITaskExecuteDetailService _taskExecuteDetailService; private readonly IRouterService _routerService; private readonly IDt_StationManagerService _stationManagerService; @@ -62,7 +65,7 @@ private static List<string>? userTokenIds; private static List<int>? userIds; - public CommonRGVJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IDt_StationManagerService stationManagerService, IMapper mapper, ICacheService cacheService, INoticeService noticeService, ITaskRepository taskRepository,IDt_StationManagerRepository stationManagerRepository) + public CommonRGVJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IDt_StationManagerService stationManagerService, IMapper mapper, ICacheService cacheService, INoticeService noticeService, ITaskRepository taskRepository,IDt_StationManagerRepository stationManagerRepository, ITask_HtyRepository task_HtyRepository) { _taskService = taskService; _taskExecuteDetailService = taskExecuteDetailService; @@ -73,6 +76,7 @@ _noticeService = noticeService; _taskRepository = taskRepository; _stationManagerRepository = stationManagerRepository; + _task_HtyRepository = task_HtyRepository; } public Task Execute(IJobExecutionContext context) @@ -82,15 +86,8 @@ CommonRGV commonRGV = (CommonRGV)context.JobDetail.JobDataMap.Get("JobParams"); if (commonRGV != null) { - //if (!commonRGV.IsEventSubscribed) - //{ - // commonRGV.StackerCraneTaskCompletedEventHandler += CommonStackerCrane_StackerCraneTaskCompletedEventHandler;//璁㈤槄浠诲姟瀹屾垚浜嬩欢 - //} - - //commonRGV.CheckStackerCraneTaskCompleted();//闃叉浠诲姟瀹屾垚浜嬩欢鐩戞祴瓒呮椂锛屽啀鎵嬪姩瑙﹀彂涓�娆� if (commonRGV.GetValue<StackerCraneDBName, bool>(StackerCraneDBName.WorkCompleted)) { - var x = commonRGV.GetValue<RGVDBName, short>(RGVDBName.RGVTaskNum); RGVTaskFinish(commonRGV, commonRGV.GetValue<RGVDBName, short>(RGVDBName.RGVTaskNum)); } @@ -122,20 +119,32 @@ } var userTokenIds = tokenInfos?.Select(x => x.Token_ID).ToList(); var userIds = tokenInfos?.Select(x => x.UserId).ToList(); - + string RGVAutoStatus(bool AutoStatus) => AutoStatus switch + { + true => "鑱旀満妯″紡", + false => "鍗曟満妯″紡", + }; + string RGVWorkStatus(bool WorkStatus) => WorkStatus switch + { + true => "杩愯涓�", + false => "寰呮満", + }; + string RGVStatus(bool Status) => Status switch + { + true => "鏁呴殰", + false => "姝e父", + }; object obj = new { - Automatic = commonRGV.GetValue<StackerCraneDBName, bool>(StackerCraneDBName.Automatic), - Fault = commonRGV.GetValue<StackerCraneDBName, bool>(StackerCraneDBName.Fault), - Running = commonRGV.GetValue<StackerCraneDBName, bool>(StackerCraneDBName.Running), - //commonRGV.StackerCraneAutoStatusDes, - //commonRGV.StackerCraneWorkStatusDes, - //commonRGV.DeviceCode, - //commonRGV.DeviceName, - //commonRGV.CurrentTaskNum, - //commonRGV.LastTaskNum, + Automatic = RGVAutoStatus(commonRGV.GetValue<RGVDBName, bool>(RGVDBName.Automatic)), + Fault = RGVStatus(commonRGV.GetValue<RGVDBName, bool>(RGVDBName.Fault)), + Running = RGVWorkStatus(commonRGV.GetValue<RGVDBName, bool>(RGVDBName.Running)), + LevelPoint = commonRGV.GetValue<RGVDBName, int>(RGVDBName.LevelPoint), + CurrentTaskNum = commonRGV.GetValue<RGVDBName, short>(RGVDBName.RGVTaskNum), + commonRGV.DeviceCode, + commonRGV.DeviceName, }; - _noticeService.StackerData(userIds?.FirstOrDefault(), userTokenIds, new { commonRGV.DeviceName, data = obj }); + _noticeService.RGVData(userIds?.FirstOrDefault(), userTokenIds, new { commonRGV.DeviceName, data = obj }); #endregion 璋冪敤浜嬩欢鎬荤嚎閫氱煡鍓嶇 } @@ -146,35 +155,24 @@ } return Task.CompletedTask; } - /// <summary> - /// 浠诲姟瀹屾垚浜嬩欢璁㈤槄鐨勬柟娉� - /// </summary> - /// <param name="sender"></param> - /// <param name="e"></param> - private void CommonStackerCrane_StackerCraneTaskCompletedEventHandler(object? sender, WIDESEAWCS_QuartzJob.StackerCrane.StackerCraneTaskCompletedEventArgs e) - { - CommonRGV? commonRGV = sender as CommonRGV; - - } + public void RGVTaskFinish(CommonRGV commonRGV, int TaskNum) { if (commonRGV != null) { - #region 鏃ュ織璁板綍 - ConsoleHelper.WriteColorLine($"銆恵commonRGV.DeviceName}銆戝爢鍨涙満浣滀笟鐘舵�侊細銆愩�戞椂闂淬�恵DateTime.Now}銆�", ConsoleColor.Magenta); - - string str = $"銆恵commonRGV.DeviceName}銆戜换鍔″畬鎴�,浠诲姟鍙凤細銆恵TaskNum}銆戞椂闂淬�恵DateTime.Now}銆�"; - WriteInfo(commonRGV.DeviceName, str); - ConsoleHelper.WriteColorLine(str, ConsoleColor.Blue); - - #endregion - + WriteInfo("RGV浠诲姟瀹屾垚", $"{commonRGV.DeviceName}瀹屾垚浠诲姟鍙穥TaskNum}"); var task = _taskRepository.QueryFirst(x => x.TaskNum == TaskNum); if (task != null) { if (task.TaskState == (int)TaskInStatusEnum.RGV_Indispatch) { + if (task.SourceAddress == "3002") + { + task.TaskState = (int)TaskInStatusEnum.RGV_IndispatchFinish; + _taskRepository.UpdateData(task); + return; + } Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.SourceAddress); if (stationManager != null) { @@ -183,10 +181,26 @@ { CommonConveyorLine conveyorLine = (CommonConveyorLine)device; Thread.Sleep(100); - var Barcode = conveyorLine.GetValue<ConveyorLineDBName, string>(ConveyorLineDBName.ConveyorLineBarcode, stationManager.stationChildCode); - if (Barcode == null) + DeviceProDTO? devicePro = conveyorLine.DeviceProDTOs.Where(x => x.DeviceChildCode == stationManager.stationChildCode && x.DeviceProParamName == "ConveyorLineBarcode").FirstOrDefault(); + var x = conveyorLine.Communicator.Read(devicePro.DeviceProAddress, 5); + string Barcode = Encoding.UTF8.GetString(x); + + if (Barcode == null || Barcode == "" || Barcode.Trim().Contains("\0")) { + commonRGV.SetValue(StackerCraneDBName.PutcargoLocation, Convert.ToSByte(stationManager.stationRemark)); + commonRGV.SetValue(StackerCraneDBName.TaskNum, Convert.ToInt16(task.TaskNum)); + commonRGV.SetValue(StackerCraneDBName.TaskType, Convert.ToSByte(4)); + + task.ModifyDate = DateTime.Now; + task.Modifier = "System"; + + Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task); + task_Hty.TaskId = 0; + task_Hty.OperateType = (int)OperateTypeEnum.寮傚父閫�鍥�; + + _taskRepository.DeleteData(task); + _task_HtyRepository.AddData(task_Hty); return; } var content = _taskService.RGVTaskCompleted(TaskNum, Barcode); @@ -195,6 +209,24 @@ } else { + if (task.TaskState == (int)TaskOutStatusEnum.RGV_OutExecuting) + { + Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.TargetAddress && x.stationType == 7); + if (stationManager != null) + { + IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManager.stationPLC); + if (device != null) + { + CommonConveyorLine conveyorLine = (CommonConveyorLine)device; + Thread.Sleep(100); + conveyorLine.SetValue(ConveyorLineDBName.ConveyorLineTargetAddress, Convert.ToInt16(stationManager.stationNextChildCode), stationManager.stationChildCode); + Thread.Sleep(100); + conveyorLine.SetValue(ConveyorLineDBName.ConveyorLineTaskNum, Convert.ToInt16(1000), stationManager.stationChildCode); + Thread.Sleep(100); + conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, Convert.ToSByte(2), stationManager.stationChildCode); + } + } + } var content = _taskService.RGVTaskCompleted(TaskNum); } } @@ -211,7 +243,7 @@ Dt_Task task; if (InStock) { - task = _taskService.QueryRGVExecutingTask(commonRGV.DeviceCode); + task = _taskService.QueryRGVExecutingTask(commonRGV.DeviceCode, commonRGV.GetValue<RGVDBName, short>(RGVDBName.RGVTaskNum)); if (task != null) { return task; @@ -269,11 +301,9 @@ rgvTaskCommand.TaskNum = Convert.ToInt16(task.TaskNum); if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)//鍒ゆ柇鏄惁鏄叆搴撲换鍔� { - //rgvTaskCommand.TaskType = (byte)Convert.ToSByte(16); - //rgvTaskCommand.TaskType = (byte)Convert.ToSByte(64); 閫�鍥� if (task.TaskState == (int)TaskInStatusEnum.InNew) { - Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.SourceAddress); + Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.CurrentAddress); rgvTaskCommand.TaskType = (byte)Convert.ToSByte(3); rgvTaskCommand.PickupLocation = (byte)Convert.ToSByte(stationManager.stationRemark); } @@ -291,7 +321,6 @@ } else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) { - if (task.TaskState == (int)TaskOutStatusEnum.Line_OutFinish) { Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.CurrentAddress); -- Gitblit v1.9.3