From 2d9272bdcdbdbca81396a61493e4ef6a822dcf4a Mon Sep 17 00:00:00 2001 From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com> Date: 星期四, 24 七月 2025 14:21:33 +0800 Subject: [PATCH] 代码提交 --- 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs | 109 +++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 98 insertions(+), 11 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs" index d2ce91c..149b7f2 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs" @@ -17,12 +17,19 @@ using AutoMapper; using HslCommunication; +using Newtonsoft.Json; using Quartz; using System.Reflection; +using WIDESEAWCS_Common; +using WIDESEAWCS_Common.TaskEnum; +using WIDESEAWCS_Core; using WIDESEAWCS_Core.Caches; using WIDESEAWCS_Core.Helper; using WIDESEAWCS_Core.HttpContextUser; +using WIDESEAWCS_DTO.Enum; +using WIDESEAWCS_IBasicInfoRepository; using WIDESEAWCS_IBasicInfoService; +using WIDESEAWCS_ISystemServices; using WIDESEAWCS_ITaskInfoRepository; using WIDESEAWCS_ITaskInfoService; using WIDESEAWCS_Model.BasicInfo; @@ -30,27 +37,32 @@ using WIDESEAWCS_QuartzJob; using WIDESEAWCS_QuartzJob.DeviceBase; using WIDESEAWCS_QuartzJob.DTO; +using WIDESEAWCS_QuartzJob.Repository; using WIDESEAWCS_QuartzJob.Service; using WIDESEAWCS_SignalR; using WIDESEAWCS_Tasks.ConveyorLineJob; +using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database; namespace WIDESEAWCS_Tasks { [DisallowConcurrentExecution] - public class CommonConveyorLineJob : JobBase, IJob + public partial class CommonConveyorLineJob : JobBase, IJob { private readonly ITaskService _taskService; private readonly ITaskRepository _taskRepository; private readonly ITaskExecuteDetailService _taskExecuteDetailService; private readonly IRouterService _routerService; + private readonly ISys_ConfigService _sys_ConfigService; private readonly IDt_StationManagerService _stationManagerService; + private readonly IDt_StationManagerRepository _stationManagerRepository; private readonly IMapper _mapper; private readonly ICacheService _cacheService; + private readonly IDeviceInfoRepository _deviceInfoRepository; private readonly INoticeService _noticeService; private static List<string>? userTokenIds; private static List<int>? userIds; - public CommonConveyorLineJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IDt_StationManagerService stationManagerService, IMapper mapper, ICacheService cacheService, INoticeService noticeService, ITaskRepository taskRepository) + public CommonConveyorLineJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IDt_StationManagerService stationManagerService, IMapper mapper, ICacheService cacheService, INoticeService noticeService, ITaskRepository taskRepository, IDt_StationManagerRepository stationManagerRepository, IDeviceInfoRepository deviceInfoRepository) { _taskService = taskService; _taskExecuteDetailService = taskExecuteDetailService; @@ -60,6 +72,8 @@ _cacheService = cacheService; _noticeService = noticeService; _taskRepository = taskRepository; + _stationManagerRepository = stationManagerRepository; + _deviceInfoRepository = deviceInfoRepository; } public async Task Execute(IJobExecutionContext context) @@ -90,6 +104,7 @@ try { ConveyorLineTaskCommand command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(station.stationChildCode); + //var Barcode = conveyorLine.GetValue<ConveyorLineDBName, string>(ConveyorLineDBName.ConveyorLineBarcode, station.stationChildCode); if (command != null) { #region 璋冪敤浜嬩欢鎬荤嚎閫氱煡鍓嶇 @@ -105,7 +120,7 @@ #endregion 璋冪敤浜嬩欢鎬荤嚎閫氱煡鍓嶇 // 灏嗕氦浜掍俊鍙疯浆鎹负甯冨皵鏁扮粍 - var structs = BitConverter.GetBytes(command.InteractiveSignal).Reverse().ToArray().ToBoolArray(); + var structs = BitConverter.GetBytes(command.InteractiveSignal).ToArray().ToBoolArray(); // 鑾峰彇璁惧鍗忚璇︽儏 List<DeviceProtocolDetailDTO>? deviceProtocolDetails = conveyorLine.DeviceProtocolDetailDTOs.Where(x => x.DeviceProParamName == nameof(ConveyorLineTaskCommand.InteractiveSignal)).ToList(); @@ -116,12 +131,10 @@ int itemValue = Convert.ToInt32(item.ProtocalDetailValue); if (structs[itemValue] == true) { - // 鑾峰彇澶勭悊鏂规硶 - MethodInfo? method = GetType().GetMethod(item.ProtocolDetailType); if (method != null) { - method.Invoke(this, new object[] { conveyorLine, station }); + method.Invoke(this, new object[] { command, conveyorLine, station }); } } } @@ -140,7 +153,7 @@ /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>Request outbound /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> - public async Task RequestInbound(CommonConveyorLine conveyorLine, Dt_StationManager station) + public async Task RequestTask(ConveyorLineTaskCommand command, CommonConveyorLine conveyorLine, Dt_StationManager station) { try { @@ -148,6 +161,9 @@ var log = $"銆恵conveyorLine._deviceName}銆戠珯鍙般�恵station.stationChildCode}銆戣姹傚彇璐�"; await LogAndWarn(conveyorLine.DeviceName, log); + var task = _taskService.QueryConveyorLineTask(station.stationChildCode, command.TaskNum); + + await HandleNewTaskAsync(conveyorLine, command, station.stationChildCode, task); } catch (Exception ex) { @@ -155,26 +171,86 @@ } } + /// <summary> - /// RGV鎼繍瀹屾垚 + /// 杈撻�佺嚎鍑哄簱瀹屾垚 + /// </summary> + /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> + /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> + /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> + public async Task ConveyorLineFinish(ConveyorLineTaskCommand command, CommonConveyorLine conveyorLine, Dt_StationManager stationManager) + { + try + { + // 杈撳嚭淇℃伅锛岃〃绀虹珯鍙拌姹傚彇璐� + var log = $"銆恵conveyorLine._deviceName}銆戠珯鍙般�恵stationManager.stationChildCode}銆�,浠诲姟鍙�:銆恵command.TaskNum}銆戝畬鎴�"; + await LogAndWarn(conveyorLine.DeviceName, log); + + var task = _taskService.QueryConveyorLineFinishTask(stationManager.stationChildCode, command.TaskNum); + //鏀规煡璇㈡柟娉� + if(stationManager.stationType==5||stationManager.stationType==4) + { + // 濡傛灉浠诲姟瀛樺湪 + if (task != null) + { + Thread.Sleep(1000); + _taskService.UpdateTaskStatusToNext(task); + } + } + + } + catch (Exception ex) + { + WriteInfo(conveyorLine.DeviceName, ex.Message); + } + } + /// <summary> + /// 杈撻�佺嚎璇锋眰鍑轰俊鎭� /// </summary> /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> /// <param name="ProtocalDetailValue">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param> - public void RGVFinish(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue) + public void RequestNextAddress(ConveyorLineTaskCommand command, CommonConveyorLine conveyorLine, Dt_StationManager station, Dt_Task task) { + if (task != null) + { + ConveyorLineTaskCommandWrite taskCommand = new ConveyorLineTaskCommandWrite() + { + TaskNum = Convert.ToInt16(task.TaskNum), + TargetAddress = Convert.ToInt16(task.NextAddress), + WriteInteractiveSignal = task.TaskType == (int)TaskOutboundTypeEnum.Outbound ? (byte)Convert.ToSByte(2) : (byte)Convert.ToSByte(1) + }; + var log = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵task.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵task.PalletCode}銆戝凡鍒拌揪銆恵station.stationChildCode}銆戜笅涓�鐩爣鍦板潃銆恵taskCommand.TargetAddress}銆戣緭閫佺嚎,task{task.ToJsonString()}"; + + ConsoleHelper.WriteSuccessLine(log); + + _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" }); + WriteInfo(conveyorLine.DeviceName, log); + + var result = SendCommand(taskCommand, conveyorLine, station.stationChildCode); + if (result) + { + Thread.Sleep(1000); + _taskService.UpdateTaskStatusToNext(task); + } + } } + /// <summary> - /// 杈撻�佺嚎鍏ュ簱瀹屾垚 + /// 杈撻�佺嚎鎶ヨ /// </summary> /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> - public void ConveyorLineFinish(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue) + /// <param name="ProtocalDetailValue">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param> + public void ConveyorLineAlarm(ConveyorLineTaskCommand command, CommonConveyorLine conveyorLine, Dt_StationManager station) { + var task = _taskRepository.QueryFirst(x => x.TaskNum == command.TaskNum); + + //conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal,Convert.ToSByte(3), station.stationChildCode); } public async Task LogAndWarn(string deviceName, string log, string color = "red") @@ -183,5 +259,16 @@ await _noticeService.Logs(userTokenIds, new { deviceName, log = log, time = DateTime.Now.ToString("G"), color = color }); WriteInfo(deviceName, log); } + + public bool SendCommand(ConveyorLineTaskCommandWrite taskCommand, CommonConveyorLine conveyorLine, string childDeviceCode) + { + conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTargetAddress, Convert.ToInt16(taskCommand.TargetAddress), childDeviceCode); + Thread.Sleep(100); + conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTaskNum, Convert.ToInt16(taskCommand.TaskNum), childDeviceCode); + Thread.Sleep(100); + conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, Convert.ToSByte(taskCommand.WriteInteractiveSignal), childDeviceCode); + + return true; + } } } -- Gitblit v1.9.3