From 0939aa5f3cc12a8856456a51cf2b661b6cd780c7 Mon Sep 17 00:00:00 2001 From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com> Date: 星期四, 31 七月 2025 17:25:49 +0800 Subject: [PATCH] 1 --- 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs | 151 ++++++++++++++++++++++++++++++++++++------------- 1 files changed, 110 insertions(+), 41 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs" index a3b4d9c..11a1b0c 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs" @@ -2,6 +2,7 @@ using Mapster; using Newtonsoft.Json; using SqlSugar; +using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using WIDESEAWCS_Common; @@ -12,8 +13,11 @@ using WIDESEAWCS_Model.BasicInfo; using WIDESEAWCS_Model.Models; using WIDESEAWCS_QuartzJob; +using WIDESEAWCS_QuartzJob.DeviceBase; +using WIDESEAWCS_QuartzJob.DTO; using WIDESEAWCS_QuartzJob.Models; using WIDESEAWCS_Tasks.ConveyorLineJob; +using WIDESEAWCS_Tasks.StackerCraneJob; namespace WIDESEAWCS_Tasks { @@ -28,7 +32,9 @@ case 1: await RequestTask(conveyorLine, command, childDeviceCode, stationManager); break; - + case 9: + RequestWMSTask(conveyorLine, stationManager); + break; case 2: case 3: RequestNextAddress(command, conveyorLine, stationManager, task); @@ -48,64 +54,127 @@ private async Task RequestTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, Dt_StationManager stationManager) { - var hasTask = await _taskRepository.QueryFirstAsync(x => x.SourceAddress == childDeviceCode); + var hasTask = await _taskRepository.QueryFirstAsync(x => x.SourceAddress == childDeviceCode && x.TaskState < (int)TaskInStatusEnum.RGV_InExecutingFinish && x.TaskState >= (int)TaskInStatusEnum.InNew); if (hasTask != null) { var log = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵hasTask.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵hasTask.PalletCode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣緭閫佺嚎瀛樺湪浠诲姟"; ConsoleHelper.WriteWarningLine(log); - await _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" }); + await _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" }); WriteInfo(conveyorLine.DeviceName, log); return; } var RGVName = string.Empty; if (stationManager.stationFloor == "1F") { - var deviceCode = _deviceInfoRepository.Db.Queryable<Dt_DeviceInfo>().Where(x => x.DeviceStatus == "1" && x.DeviceRemark == "1F").Where(x => x.DeviceCode.Contains("RGV")).ToList().Select(x => x.DeviceCode).ToList(); - if (deviceCode != null && deviceCode.Count() > 0) - { - if (deviceCode.Contains("RGV01") && deviceCode.Contains("RGV02")) - { - var RGVOne = _taskRepository.QueryData(x => x.RGVName == "RGV01").ToList(); - var RGVTwo = _taskRepository.QueryData(x => x.RGVName == "RGV02").ToList(); - if (RGVOne.Count > RGVTwo.Count) - { - RGVName = "RGV01"; - } - else - { - RGVName = "RGV02"; - } - } - else - { - RGVName = deviceCode[0]; - } - } - else - { - RGVName = "RGV01"; - } + RGVName = stationManager.RGVName; } else { RGVName = "RGV03"; } + Dt_Task task = new Dt_Task() + { + TaskNum = _taskRepository.GetTaskNo().Result, + TaskType = (int)TaskInboundTypeEnum.Inbound, + TaskState = (int)TaskInStatusEnum.InNew, + SourceAddress = childDeviceCode, + Dispatchertime = DateTime.Now, + Grade = 1, + Creater = "System", + Floor = stationManager.stationFloor, + RGVName = RGVName, + SourceStation = stationManager.remark, + TargetStation = 0, + }; - - Dt_Task task = new Dt_Task() - { - TaskNum = _taskRepository.GetTaskNo().Result, - TaskType = (int)TaskInboundTypeEnum.Inbound, - TaskState = (int)TaskInStatusEnum.InNew, - SourceAddress = childDeviceCode, - Dispatchertime = DateTime.Now, - Grade = 1, // 璁剧疆榛樿浼樺厛绾т负1 - Creater = "System", - Floor = stationManager.stationFloor, - RGVName = stationManager.RGVName != null ? stationManager.RGVName : RGVName, - }; _taskRepository.AddData(task); } + private void RequestWMSTask(CommonConveyorLine conveyorLine, Dt_StationManager stationManager) + { + if (stationManager.stationChildCode == "3002") + { + DeviceProDTO? devicePro = conveyorLine.DeviceProDTOs.Where(x => x.DeviceChildCode == stationManager.stationChildCode && x.DeviceProParamName == "ConveyorLineBarcode").FirstOrDefault(); + var x = conveyorLine.Communicator.Read(devicePro.DeviceProAddress,10); + + string Barcode = Encoding.UTF8.GetString(x); + + if (Barcode == null) + { + conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, Convert.ToSByte(3), stationManager.stationChildCode); + } + var task = _taskRepository.QueryFirst(x => x.PalletCode == Barcode && x.TaskState == (int)TaskInStatusEnum.HoistNew); + + 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 result = SendCommand(taskCommand, conveyorLine, stationManager.stationChildCode); + if (result) + { + task.TaskState = (int)TaskInStatusEnum.HoistInExecuting; + _taskRepository.UpdateData(task); + } + } + else + { + 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.RequestTask)?.ConfigValue; + + WMSTaskDTO taskDTO = new WMSTaskDTO() + { + TPbarcode = Barcode, + WhCode = "1001", + BeginPoint = stationManager.stationChildCode + }; + if (wmsBase == null || requestTask == null) + { + throw new InvalidOperationException("WMS IP 鏈厤缃�"); + } + var wmsIpAddress = wmsBase + requestTask; + var result = WIDESEA_Comm.Http.HttpHelper.PostAsync(wmsIpAddress, taskDTO.ToJsonString()).Result; + } + } + else + { + DeviceProDTO? devicePro = conveyorLine.DeviceProDTOs.Where(x => x.DeviceChildCode == stationManager.stationNextChildCode && x.DeviceProParamName == "ConveyorLineBarcode").FirstOrDefault(); + var x = conveyorLine.Communicator.Read(devicePro.DeviceProAddress, 10); + + string Barcode = Encoding.UTF8.GetString(x); + if (Barcode == "") + { + conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, Convert.ToSByte(3), stationManager.stationChildCode); + } + var task = _taskRepository.QueryFirst(x => x.PalletCode == Barcode); + if (task != null) + { + + } + else + { + 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.RequestTask)?.ConfigValue; + + WMSTaskDTO taskDTO = new WMSTaskDTO() + { + TPbarcode = Barcode, + WhCode = "1001", + BeginPoint = stationManager.stationChildCode + }; + if (wmsBase == null || requestTask == null) + { + throw new InvalidOperationException("WMS IP 鏈厤缃�"); + } + var wmsIpAddress = wmsBase + requestTask; + var result = WIDESEA_Comm.Http.HttpHelper.PostAsync(wmsIpAddress, taskDTO.ToJsonString()).Result; + } + } + } } } -- Gitblit v1.9.3