From 01ba2e2affa33320ef8aca6e033248388bb8f60e Mon Sep 17 00:00:00 2001 From: 肖洋 <cathay_xy@163.com> Date: 星期二, 10 十二月 2024 11:04:41 +0800 Subject: [PATCH] 高温出库修改 --- Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_After/CommonConveyorLine_AfterJob.cs | 714 ++++++++++++----------------------------------------------- 1 files changed, 148 insertions(+), 566 deletions(-) diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_After/CommonConveyorLine_AfterJob.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_After/CommonConveyorLine_AfterJob.cs index 46bad34..368e323 100644 --- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_After/CommonConveyorLine_AfterJob.cs +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_After/CommonConveyorLine_AfterJob.cs @@ -27,10 +27,16 @@ using System.Diagnostics.CodeAnalysis; using System.Reflection; using System.Threading.Tasks; +using WIDESEAWCS_BasicInfoRepository; +using WIDESEAWCS_BasicInfoService; +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.TaskInfo; +using WIDESEAWCS_ISystemServices; using WIDESEAWCS_ITaskInfoRepository; using WIDESEAWCS_ITaskInfoService; using WIDESEAWCS_Model.Models; @@ -38,7 +44,9 @@ using WIDESEAWCS_QuartzJob.DeviceBase; using WIDESEAWCS_QuartzJob.DTO; using WIDESEAWCS_QuartzJob.Service; +using WIDESEAWCS_SignalR; using WIDESEAWCS_Tasks.ConveyorLineJob; +using ICacheService = WIDESEAWCS_Core.Caches.ICacheService; namespace WIDESEAWCS_Tasks { @@ -50,30 +58,35 @@ private readonly ITaskExecuteDetailService _taskExecuteDetailService; private readonly IRouterService _routerService; private readonly IMapper _mapper; + private readonly IDt_StationManagerService _stationManagerService; + private readonly ISys_ConfigService _sys_ConfigService; + private readonly ICacheService _cacheService; + private readonly INoticeService _noticeService; - public CommonConveyorLine_AfterJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper, ITaskRepository taskRepository) + public CommonConveyorLine_AfterJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper, ITaskRepository taskRepository, IDt_StationManagerService stationManagerService, ISys_ConfigService sys_ConfigService, ICacheService cacheService, INoticeService noticeService) { _taskService = taskService; _taskExecuteDetailService = taskExecuteDetailService; _routerService = routerService; _mapper = mapper; _taskRepository = taskRepository; + _stationManagerService = stationManagerService; + _sys_ConfigService = sys_ConfigService; + _cacheService = cacheService; + _noticeService = noticeService; } - public Task Execute(IJobExecutionContext context) + public async Task Execute(IJobExecutionContext context) { try { CommonConveyorLine_After conveyorLine = (CommonConveyorLine_After)context.JobDetail.JobDataMap.Get("JobParams"); if (conveyorLine != null) { - List<string> childDeviceCodes = _routerService.QueryAllPositions(conveyorLine.DeviceCode); - //List<Task> tasks = new List<Task>(); - foreach (string childDeviceCode in childDeviceCodes) + List<Dt_StationManager> stationManagers = _stationManagerService.GetAllStationByDeviceCode(conveyorLine.DeviceCode); + foreach (var station in stationManagers) { - ConveyorLineTaskCommand_After command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand_After>(childDeviceCode); - - if (command.ConveyorLineBarcode.Trim().Contains("\0")) command.ConveyorLineBarcode = ""; + ConveyorLineTaskCommand_After command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand_After>(station.stationChildCode); DeviceProtocolDetailDTO? deviceProtocolDetails = conveyorLine.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.DeviceProParamName == nameof(ConveyorLineTaskCommand_After.InteractiveSignal) && x.ProtocalDetailValue == command.InteractiveSignal.ToString()); if (deviceProtocolDetails != null) @@ -81,23 +94,65 @@ MethodInfo? method = GetType().GetMethod(deviceProtocolDetails.ProtocolDetailType); if (method != null) { - method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode }); + method.Invoke(this, new object[] { conveyorLine, command, station }); } } + if (station.stationType == 6 && station.stationArea == "3") + { + await GetEmptyTrayAsync(station); + } + + #region 璋冪敤浜嬩欢鎬荤嚎閫氱煡鍓嶇 + + var tokenInfos = _cacheService.Get<List<UserInfo>>("Cache_UserToken"); + if (tokenInfos == null || !tokenInfos.Any()) + { + //throw new Exception(conveyorLine.DeviceName + "缂撳瓨涓湭鎵惧埌Token缂撳瓨"); + continue; + } + var userTokenIds = tokenInfos?.Select(x => x.Token_ID).ToList(); + var userIds = tokenInfos?.Select(x => x.UserId).ToList(); + + object obj = new + { + commandAfter = command, + }; + _noticeService.StackerData(userIds?.FirstOrDefault(), userTokenIds, new { conveyorLine.DeviceName, data = obj }); + + #endregion 璋冪敤浜嬩欢鎬荤嚎閫氱煡鍓嶇 } - //Task.WaitAll(tasks.ToArray()); + + #region 璺敱鏂瑰紡 + //List<string> childDeviceCodes = _routerService.QueryAllPositions(conveyorLine.DeviceCode); + //foreach (string childDeviceCode in childDeviceCodes) + //{ + // ConveyorLineTaskCommand_After command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand_After>(childDeviceCode); + + // if (command.ConveyorLineBarcode.Trim().Contains("\0")) command.ConveyorLineBarcode = ""; + + // DeviceProtocolDetailDTO? deviceProtocolDetails = conveyorLine.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.DeviceProParamName == nameof(ConveyorLineTaskCommand_After.InteractiveSignal) && x.ProtocalDetailValue == command.InteractiveSignal.ToString()); + // if (deviceProtocolDetails != null) + // { + // MethodInfo? method = GetType().GetMethod(deviceProtocolDetails.ProtocolDetailType); + // if (method != null) + // { + // method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode }); + // } + // } + //} + #endregion } } catch (Exception ex) { - Console.Out.WriteLine(nameof(CommonConveyorLineJob) + ":" + ex.ToString()); + Console.Out.WriteLine(nameof(CommonConveyorLine_AfterJob) + ":" + ex.ToString()); } finally { //WriteDebug("CommonConveyorLineJob", "test"); //Console.Out.WriteLine(DateTime.Now); } - return Task.CompletedTask; + return; } /// <summary> @@ -106,595 +161,122 @@ /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> - /// <param name="ProtocalDetailValue">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param> - public void RequestInbound(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode) + public void RequestInbound(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, Dt_StationManager stationInfo) { - var taskNew = _taskService.QueryCraneConveyorLineTask(command.ConveyorLineTaskNum.ObjToInt(), childDeviceCode); + ConsoleHelper.WriteSuccessLine($"銆恵conveyorLine.DeviceName}銆�,鎵樼洏鍙凤細銆恵command.ConveyorLineBarcode}銆�,绔欏彴锛氥�恵stationInfo.remark}銆戣姹備换鍔�"); + var taskNew = _taskService.QueryTaskByPalletCode(command.ConveyorLineBarcode, stationInfo.Roadway); if (taskNew == null) { - string barcode = command.ConveyorLineBarcode.TrimEnd(); - if (_taskService.RequestWMSTask(command.ConveyorLineBarcode, childDeviceCode).Result.Status) + if (_taskService.RequestTask(command.ConveyorLineBarcode, stationInfo).Result.Status) { - Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode); + Dt_Task task = _taskService.QueryTaskByPalletCode(command.ConveyorLineBarcode, stationInfo.Roadway); if (task != null) { - ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(task); + //ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(task); //taskCommand.InteractiveSignal = command.InteractiveSignal; - taskCommand.ResponState = 1; - taskCommand.ConveyorLineTaskNum = task.TaskNum; - taskCommand.ConveyorLineTargetAddress = Convert.ToInt16(task.NextAddress); - conveyorLine.SendCommand(taskCommand, childDeviceCode); - + //taskCommand.ResponState = 1; + //taskCommand.ConveyorLineTaskNum = task.TaskNum; + //taskCommand.ConveyorLineTargetAddress = Convert.ToInt16(task.NextAddress); + conveyorLine.SetValue(ConveyorLineDBName_After.ResponState, 1, stationInfo.stationChildCode); + //conveyorLine.SetValue(ConveyorLineDBName_After.ConveyorLineTargetAddress, 1, task.NextAddress); //ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); - - _taskService.UpdateTaskStatusToNext(task); } } } - - var inTask = _taskService.QueryExecutingConveyorLineTask(command.ConveyorLineTaskNum.ObjToInt(), childDeviceCode); - if (inTask != null) - { - ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(inTask); - //taskCommand.InteractiveSignal = command.InteractiveSignal; - taskCommand.ResponState = 1; - conveyorLine.SendCommand(taskCommand, childDeviceCode); - - _taskService.UpdateTaskStatusToNext(inTask); - } } /// <summary> - /// 杈撻�佺嚎璇锋眰鍏ュ簱涓嬩竴鍦板潃 + /// 杈撻�佺嚎璇锋眰绌烘 /// </summary> - /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> - /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> - /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> - public void RequestInNextAddress(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode) + /// <param name="conveyorLine"></param> + /// <param name="command"></param> + /// <param name="stationInfo"></param> + public void RequestEmptyOutbound(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, Dt_StationManager stationInfo) { - //if(command) - Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.ConveyorLineTaskNum, childDeviceCode); - if (task != null) + if (stationInfo.stationType != 7) return; + var taskNew = _taskRepository.QueryFirst(x => x.Roadway == stationInfo.Roadway && x.TaskType == (int)TaskOutboundTypeEnum.OutTray); + if (taskNew == null) //涓嶅瓨鍦ㄧ┖妗嗗嚭搴撲换鍔� 鍒欒姹俉MS鍑虹┖搴� { - Dt_Task? newTask = _taskService.UpdatePosition(task.TaskNum, task.CurrentAddress); - if (newTask != null) + ConsoleHelper.WriteWarningLine("璇锋眰绌烘墭鐩�"); + if (_taskService.RequestTask(command.ConveyorLineBarcode, stationInfo).Result.Status) { - ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(newTask); - //taskCommand.InteractiveSignal = command.InteractiveSignal; - conveyorLine.SendCommand(taskCommand, childDeviceCode); + Dt_Task task = _taskService.QueryTaskByPalletCode(command.ConveyorLineBarcode, stationInfo.Roadway); + if (task != null) + { + //ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(task); + //taskCommand.InteractiveSignal = command.InteractiveSignal; + //taskCommand.ResponState = 1; + //taskCommand.ConveyorLineTaskNum = task.TaskNum; + //taskCommand.ConveyorLineTargetAddress = Convert.ToInt16(task.NextAddress); + //conveyorLine.SetValue(ConveyorLineDBName_After.ResponState, 1, stationInfo.stationChildCode); + //conveyorLine.SetValue(ConveyorLineDBName_After.ConveyorLineTargetAddress, 1, task.NextAddress); + //ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); + } } } } /// <summary> - /// 杈撻�佺嚎鍏ュ簱瀹屾垚 + /// 杈撻�佺嚎璇锋眰鍏ュ簱 /// </summary> /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> - /// <param name="ProtocalDetailValue">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param> - public void ConveyorLineInFinish(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode) + //public void RequestInbound(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode) + //{ + // var stationInfo = _stationManagerService.GetStationInfoByChildCode(childDeviceCode); + // if (stationInfo != null) + // { + // //_taskService.r + // } + // var taskNew = _taskService.QueryCraneConveyorLineTask(command.ConveyorLineTaskNum.ObjToInt(), childDeviceCode); + // if (taskNew == null) + // { + // string barcode = command.ConveyorLineBarcode.TrimEnd(); + // if (_taskService.RequestWMSTask(command.ConveyorLineBarcode, childDeviceCode).Result.Status) + // { + // Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode); + // if (task != null) + // { + // ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(task); + // //taskCommand.InteractiveSignal = command.InteractiveSignal; + // taskCommand.ResponState = 1; + // taskCommand.ConveyorLineTaskNum = task.TaskNum; + // taskCommand.ConveyorLineTargetAddress = Convert.ToInt16(task.NextAddress); + // conveyorLine.SendCommand(taskCommand, childDeviceCode); + + // //ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); + + // _taskService.UpdateTaskStatusToNext(task); + // } + // } + // } + //} + + private async Task GetEmptyTrayAsync(Dt_StationManager stationManager) { - Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.ConveyorLineTaskNum, childDeviceCode); - if (task != null && task.TaskState != (int)TaskInStatusEnum.Line_InFinish) + var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress); + var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue; + var requestTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.GetFROutTrayToCW)?.ConfigValue; + if (wmsBase == null || requestTask == null) { - //ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); - - //conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, 0, childDeviceCode); - WebResponseContent content = _taskService.UpdateTaskStatusToNext(task); - Console.Out.WriteLine(content.Serialize()); + throw new InvalidOperationException("WMS IP 鏈厤缃�"); } - } + var wmsIpAddrss = wmsBase + requestTask; - /// <summary> - /// 杈撻�佺嚎璇锋眰鍑轰俊鎭� - /// </summary> - /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> - /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> - /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> - public void RequestOutbound(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode) - { - Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode); - if (task != null) + var result = await HttpHelper.PostAsync(wmsIpAddrss, new { palletCode = "", EquiCodeMOM = stationManager.stationEquipMOM, Roadways = stationManager.Roadway, area = stationManager.stationArea, Position = stationManager.stationChildCode }.ToJsonString()); + WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result); + if(!content.Status) { - // ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(task); - //taskCommand.InteractiveSignal = command.InteractiveSignal; - // conveyorLine.SendCommand(taskCommand, childDeviceCode); - - _taskService.UpdateTaskStatusToNext(task); + //ConsoleHelper.WriteErrorLine($"鍒嗗鍛煎彨绌烘墭鐩樺け璐content.Message}"); + return; } - } + WMSTaskDTO wMSTaskDTO = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString()); - /// <summary> - /// 杈撻�佺嚎璇锋眰鍑哄簱涓嬩竴鍦板潃 - /// </summary> - /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> - /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> - /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> - public void RequestOutNextAddress(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode) - { - Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.ConveyorLineTaskNum, childDeviceCode); - if (task != null) - { - Dt_Task? newTask = _taskService.UpdatePosition(task.TaskNum, task.CurrentAddress); - if (newTask != null) - { - ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(newTask); - //taskCommand.InteractiveSignal = command.InteractiveSignal; - conveyorLine.SendCommand(taskCommand, childDeviceCode); - } - } - } - - /// <summary> - /// 杈撻�佺嚎鍑哄簱瀹屾垚 - /// </summary> - /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> - /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> - /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> - public void ConveyorLineOutFinish(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode) - { - Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.ConveyorLineTaskNum, childDeviceCode); - if (task != null) - { - conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, 0, childDeviceCode); - WebResponseContent content = _taskService.UpdateTaskStatusToNext(task); - Console.Out.WriteLine(content.Serialize()); - } - } - - /// <summary> - /// 杈撻�佺嚎浜や簰瀹屾垚 - /// </summary> - /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> - /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> - /// <param name="ProtocalDetailValue">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param> - /// <param name="value">鍊�</param> - public void ConveyorLineSendFinish(CommonConveyorLine_After conveyorLine, string childDeviceCode, int ProtocalDetailValue, bool value) - { - DeviceProDTO? devicePro = conveyorLine.DeviceProDTOs.Where(x => x.DeviceProParamType == nameof(DeviceCommand) && x.DeviceChildCode == childDeviceCode).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); - string[] x = devicePro.DeviceProAddress.Split('.'); - x[x.Length - 1] = (ProtocalDetailValue + 1).ToString(); - string DeviceProAddress = string.Join(".", x); - conveyorLine.Communicator.Write(DeviceProAddress, value); + ConsoleHelper.WriteSuccessLine(content.Data.ToString()); + List<WMSTaskDTO> wMSTaskDTOs = new List<WMSTaskDTO>() { wMSTaskDTO }; + _taskService.ReceiveWMSTask(wMSTaskDTOs); } } } -#endregion - - - -#region MyRegion -//using AutoMapper; -//using HslCommunication; -//using Newtonsoft.Json; -//using Quartz; -//using SqlSugar; -//using System.Reflection; -//using WIDESEAWCS_Common.TaskEnum; -//using WIDESEAWCS_Core; -//using WIDESEAWCS_Core.Helper; -//using WIDESEAWCS_DTO.TaskInfo; -//using WIDESEAWCS_ITaskInfoRepository; -//using WIDESEAWCS_ITaskInfoService; -//using WIDESEAWCS_Model.Models; -//using WIDESEAWCS_QuartzJob; -//using WIDESEAWCS_QuartzJob.DeviceBase; -//using WIDESEAWCS_QuartzJob.DTO; -//using WIDESEAWCS_QuartzJob.Service; -//using WIDESEAWCS_Tasks.ConveyorLineJob; - -//namespace WIDESEAWCS_Tasks -//{ -// [DisallowConcurrentExecution] -// public class CommonConveyorLine_AfterJob : JobBase, IJob -// { -// private readonly List<string> _deviceCodes1 = new List<string>() { "1063", "1061", "1060" }; -// private readonly List<string> _deviceCodes2 = new List<string>() { "1067", "1069", "1068" }; -// private readonly string[] HCTrayCode = { "1012", "1013" }; -// private readonly ITaskService _taskService; -// private readonly ITaskRepository _taskRepository; -// private readonly ITaskExecuteDetailService _taskExecuteDetailService; -// private readonly IRouterService _routerService; -// private readonly IMapper _mapper; - -// public CommonConveyorLine_AfterJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper, ITaskRepository taskRepository) -// { -// _taskService = taskService; -// _taskExecuteDetailService = taskExecuteDetailService; -// _routerService = routerService; -// _mapper = mapper; -// _taskRepository = taskRepository; -// } - -// public Task Execute(IJobExecutionContext context) -// { -// try -// { -// CommonConveyorLine_After conveyorLine = (CommonConveyorLine_After)context.JobDetail.JobDataMap.Get("JobParams"); -// if (conveyorLine != null) -// { -// List<string> childDeviceCodes = _routerService.QueryAllPositions(conveyorLine.DeviceCode); -// List<Task> tasks = new List<Task>(); -// foreach (string childDeviceCode in childDeviceCodes) -// { -// //Task task = Task.Run(() => -// //{ -// ConveyorLineTaskCommand_After command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand_After>(childDeviceCode); -// if (command != null) -// { -// var structs = BitConverter.GetBytes(command.InteractiveSignal).Reverse().ToArray().ToBoolArray(); - -// List<DeviceProtocolDetailDTO>? deviceProtocolDetails = conveyorLine.DeviceProtocolDetailDTOs.Where(x => x.DeviceProParamName == nameof(ConveyorLineTaskCommand_After.InteractiveSignal)).ToList(); - -// if (deviceProtocolDetails != null) -// { -// foreach (var item in deviceProtocolDetails) -// { -// var outDeviceCodes = _routerService.QueryOutDeviceCodes(conveyorLine.DeviceCode); -// if (structs[item.ProtocalDetailValue.ObjToInt()] == true) -// { -// MethodInfo? method = GetType().GetMethod(item.ProtocolDetailType); -// if (method != null) -// { -// method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, item.ProtocalDetailValue.ObjToInt() }); -// } -// } -// else -// { -// //DeviceProDTO? devicePro = conveyorLine.DeviceProDTOs.Where(x => x.DeviceProParamType == nameof(DeviceCommand) && x.DeviceChildCode == childDeviceCode).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); -// //string[] x = devicePro.DeviceProAddress.Split('.'); -// //x[x.Length - 1] = (item.ProtocalDetailValue.ObjToInt() + 1).ToString(); -// //string DeviceProAddress = string.Join(".", x); -// //var writeRead = conveyorLine.Communicator.Read<bool>(DeviceProAddress); -// //if (writeRead) -// //{ -// // ConveyorLineSendFinish(conveyorLine, childDeviceCode, item.ProtocalDetailValue.ObjToInt(), false); -// //} -// } -// } -// } -// } -// //}); -// //tasks.Add(task); -// } -// Task.WaitAll(tasks.ToArray()); -// } -// } -// catch (Exception ex) -// { -// Console.Out.WriteLine(nameof(CommonConveyorLineJob) + ":" + ex.ToString()); -// } -// finally -// { -// //WriteDebug("CommonConveyorLineJob", "test"); -// //Console.Out.WriteLine(DateTime.Now); -// } -// return Task.CompletedTask; -// } - -// /// <summary> -// /// 杈撻�佺嚎璇锋眰鍏ュ簱 -// /// </summary> -// /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> -// /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> -// /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> -// /// <param name="ProtocalDetailValue">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param> -// public void RequestInbound(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode, int ProtocalDetailValue) -// { -// var taskNew = _taskService.QueryCraneConveyorLineTask(command.Barcode.ObjToInt(), childDeviceCode); -// var Taskout = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode); -// if (Taskout != null) -// { -// // 绌烘墭鐩樹换鍔� -// if (Taskout.TaskType == (int)TaskOutboundTypeEnum.OutTray) -// { -// if (Taskout.TaskState == (int)TaskOutStatusEnum.SC_OutFinish) -// { -// ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(Taskout); -// taskCommand.InteractiveSignal = command.InteractiveSignal; -// if (command.Barcode == "") -// { -// taskCommand.TargetAddress = 1092; -// } -// conveyorLine.SendCommand(taskCommand, childDeviceCode); - -// ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); - -// _taskService.UpdateTaskStatusToNext(Taskout); -// } -// else if (Taskout.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting) -// { -// if (command.Barcode == "") -// { -// ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(Taskout); -// taskCommand.InteractiveSignal = command.InteractiveSignal; -// taskCommand.TargetAddress = 1092; -// conveyorLine.SendCommand(taskCommand, childDeviceCode); - -// ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); -// _taskService.UpdateTaskStatusToNext(Taskout); -// } -// } -// } -// else if (Taskout.TaskType == (int)TaskOutboundTypeEnum.Outbound) -// { -// if (Taskout.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting) -// { -// ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(Taskout); -// taskCommand.InteractiveSignal = command.InteractiveSignal; -// if (command.Barcode == "") -// { -// //todo 娌℃湁鏄庣‘寮傚父鍙o紝閫佸埌鐩爣宸烽亾鐨凬G鍙� -// //taskCommand.TargetAddress = 1092; -// } -// conveyorLine.SendCommand(taskCommand, childDeviceCode); - -// ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); - -// _taskService.UpdateTaskStatusToNext(Taskout); -// } -// else if (Taskout.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting) -// { -// if (command.Barcode == "") -// { -// ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(Taskout); -// taskCommand.InteractiveSignal = command.InteractiveSignal; -// // todo 閫佸埌鐩爣宸烽亾鐨凬G鍙� -// taskCommand.TargetAddress = 1092; -// conveyorLine.SendCommand(taskCommand, childDeviceCode); - -// ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); -// _taskService.UpdateTaskStatusToNext(Taskout); -// } -// else -// { -// // todo 璋冪敤WMS浠诲姟瀹屾垚鎺ュ彛 -// var x = new { taskNum = Taskout.TaskNum }; -// var result = HttpHelper.GetAsync("http:127.0.0.1:8098/api/Task/CompleteTaskAsync", x.ToJsonString()).Result; -// WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result); -// if (content.Status) -// { -// ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); -// _taskService.UpdateTaskStatusToNext(Taskout); -// } -// } -// } -// } -// } -// if (taskNew == null) -// { -// if (_taskService.RequestWMSTask(command.Barcode, childDeviceCode).Status) -// { -// Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode); -// if (task != null) -// { -// ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(task); -// taskCommand.InteractiveSignal = command.InteractiveSignal; -// conveyorLine.SendCommand(taskCommand, childDeviceCode); - -// ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); - -// _taskService.UpdateTaskStatusToNext(task); -// } -// } -// } -// } - -// // -// /// <summary> -// /// 绌烘墭鐩樺洖娴� -// /// </summary> -// /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> -// /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> -// /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> -// /// <param name="index">璇诲彇鐨勭涓�涓綅缃�</param> -// public void EmptyTrayReturn(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode, int index) -// { -// var tasks = _taskRepository.QueryData(x => (x.TaskState == (int)TaskOutStatusEnum.OutNew || x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting) && x.TaskType == (int)TaskOutboundTypeEnum.OutTray); -// if (tasks.Count <= index) -// { -// WMSTaskDTO taskDTO = new WMSTaskDTO() -// { -// TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")), -// Grade = 1, -// PalletCode = DateTime.Now.ToString("yyyyMMddHHmmss"), -// RoadWay = "CHSC01", -// SourceAddress = "001-001-001", -// TargetAddress = childDeviceCode, -// TaskState = (int)TaskOutStatusEnum.OutNew, -// Id = 0, -// TaskType = (int)TaskOutboundTypeEnum.OutTray -// }; - -// #region 鐪熷疄鏁版嵁 - -// // TODO: 璋冪敤鎺ュ彛鑾峰彇涓嬩竴涓湴鍧� -// //RequestTaskDto request = new RequestTaskDto() -// //{ -// // Position = sourceAddress, -// // PalletCode = palletCode, -// //}; - -// //// 鍙戦�佽姹傚苟绛夊緟鍝嶅簲 -// //var result = HttpHelper.PostAsync("http:127.0.0.1:8098/api/Task/RequestTaskAsync", request.ToJsonString()).Result; - -// //// 鍙嶅簭鍒楀寲鍝嶅簲鍐呭 -// //WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result); - -// //// 妫�鏌ョ姸鎬佸苟杩斿洖 -// ////if (!content.Status) -// //// return content; - -// //// 鍙嶅簭鍒楀寲浠诲姟鏁版嵁 -// //WMSTaskDTO task = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString()); - -// #endregion - -// var content = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO }); -// if (content.Status) -// { -// Console.WriteLine("绌烘墭鐩樺懠鍙垚鍔�"); -// } -// } -// } - -// ///// <summary> -// ///// 闄堝寲鍑哄簱 -// ///// </summary> -// ///// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> -// ///// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> -// ///// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> -// ///// <param name="index">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param> -// //public void ChuanhuaOutbound(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode, int index) -// //{ -// // var tasks = _taskRepository.QueryData(x => (x.TaskState == (int)TaskOutStatusEnum.OutNew || x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting) && x.TaskType == (int)TaskOutboundTypeEnum.Outbound); -// // if (tasks.Count <= index) -// // { -// // WMSTaskDTO taskDTO = new WMSTaskDTO() -// // { -// // TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")), -// // Grade = 1, -// // PalletCode = DateTime.Now.ToString("MMddHHmmss"), -// // RoadWay = "CHSC01", -// // SourceAddress = "001-001-001", -// // TargetAddress = childDeviceCode, -// // TaskState = (int)TaskOutStatusEnum.OutNew, -// // Id = 0, -// // TaskType = (int)TaskOutboundTypeEnum.Outbound, -// // }; - -// // var content = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO }); -// // if (content.Status) -// // { -// // Console.WriteLine("鍑哄簱鍛煎彨鎴愬姛"); -// // } -// // } -// // else -// // { -// // Dt_Task task = tasks[index]; -// // if (task != null) -// // { -// // ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(task); -// // taskCommand.InteractiveSignal = command.InteractiveSignal; -// // conveyorLine.SendCommand(taskCommand, childDeviceCode); -// // } -// // } -// //} - -// /// <summary> -// /// 杈撻�佺嚎璇锋眰鍏ュ簱涓嬩竴鍦板潃 -// /// </summary> -// /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> -// /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> -// /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> -// public void RequestInNextAddress(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode) -// { -// Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode); -// if (task != null) -// { -// Dt_Task? newTask = _taskService.UpdatePosition(task.TaskNum, task.CurrentAddress); -// if (newTask != null) -// { -// ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(newTask); -// taskCommand.InteractiveSignal = command.InteractiveSignal; -// conveyorLine.SendCommand(taskCommand, childDeviceCode); -// } -// } -// } - -// /// <summary> -// /// 杈撻�佺嚎鍏ュ簱瀹屾垚 -// /// </summary> -// /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> -// /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> -// /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> -// /// <param name="ProtocalDetailValue">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param> -// public void ConveyorLineInFinish(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode, int ProtocalDetailValue) -// { -// Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode); -// if (task != null && task.TaskState != (int)TaskInStatusEnum.Line_InFinish) -// { -// ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); - -// //conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, 0, childDeviceCode); -// WebResponseContent content = _taskService.UpdateTaskStatusToNext(task); -// Console.Out.WriteLine(content.Serialize()); -// } -// } - -// /// <summary> -// /// 杈撻�佺嚎璇锋眰鍑轰俊鎭� -// /// </summary> -// /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> -// /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> -// /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> -// public void RequestOutbound(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode) -// { -// Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode); -// if (task != null) -// { -// ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(task); -// taskCommand.InteractiveSignal = command.InteractiveSignal; -// conveyorLine.SendCommand(taskCommand, childDeviceCode); - -// _taskService.UpdateTaskStatusToNext(task); -// } -// } - -// /// <summary> -// /// 杈撻�佺嚎璇锋眰鍑哄簱涓嬩竴鍦板潃 -// /// </summary> -// /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> -// /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> -// /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> -// public void RequestOutNextAddress(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode) -// { -// Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode); -// if (task != null) -// { -// Dt_Task? newTask = _taskService.UpdatePosition(task.TaskNum, task.CurrentAddress); -// if (newTask != null) -// { -// ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(newTask); -// taskCommand.InteractiveSignal = command.InteractiveSignal; -// conveyorLine.SendCommand(taskCommand, childDeviceCode); -// } -// } -// } - -// /// <summary> -// /// 杈撻�佺嚎鍑哄簱瀹屾垚 -// /// </summary> -// /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> -// /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> -// /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> -// public void ConveyorLineOutFinish(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode) -// { -// Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode); -// if (task != null) -// { -// conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, 0, childDeviceCode); -// WebResponseContent content = _taskService.UpdateTaskStatusToNext(task); -// Console.Out.WriteLine(content.Serialize()); -// } -// } - -// /// <summary> -// /// 杈撻�佺嚎浜や簰瀹屾垚 -// /// </summary> -// /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> -// /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> -// /// <param name="ProtocalDetailValue">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param> -// /// <param name="value">鍊�</param> -// public void ConveyorLineSendFinish(CommonConveyorLine_After conveyorLine, string childDeviceCode, int ProtocalDetailValue, bool value) -// { -// DeviceProDTO? devicePro = conveyorLine.DeviceProDTOs.Where(x => x.DeviceProParamType == nameof(DeviceCommand) && x.DeviceChildCode == childDeviceCode).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); -// string[] x = devicePro.DeviceProAddress.Split('.'); -// x[x.Length - 1] = (ProtocalDetailValue + 1).ToString(); -// string DeviceProAddress = string.Join(".", x); -// conveyorLine.Communicator.Write(DeviceProAddress, value); -// } -// } -//} #endregion \ No newline at end of file -- Gitblit v1.9.3