From d325cca91328031262c0e6134c37cac441192ee4 Mon Sep 17 00:00:00 2001 From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com> Date: 星期六, 16 八月 2025 11:27:38 +0800 Subject: [PATCH] 代码提交 --- 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs | 198 ++++++++++++++++++++++++++++++++----------------- 1 files changed, 130 insertions(+), 68 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 478a196..6bd64f6 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,18 +2,24 @@ using Mapster; using Newtonsoft.Json; using SqlSugar; +using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; +using WIDESEA_Common.Log; using WIDESEAWCS_Common; using WIDESEAWCS_Common.TaskEnum; using WIDESEAWCS_Core; using WIDESEAWCS_Core.Helper; +using WIDESEAWCS_DTO.StackerHandTask; using WIDESEAWCS_DTO.TaskInfo; 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 { @@ -50,94 +56,150 @@ private async Task RequestTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, Dt_StationManager stationManager) { - var hasTask = await _taskRepository.QueryFirstAsync(x => x.SourceAddress == childDeviceCode && x.TaskState < (int)TaskInStatusEnum.RGV_InExecutingFinish && x.TaskState >= (int)TaskInStatusEnum.InNew); - if (hasTask != null) + try { - var log = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵hasTask.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵hasTask.PalletCode}銆戝凡鍒拌揪銆恵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" }); + WriteInfo(conveyorLine.DeviceName, log); + return; + } + var RGVName = string.Empty; + if (stationManager.stationFloor == "1F") + { + 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, + }; + + _taskRepository.AddData(task); + } + catch (Exception ex) + { + var log = $"銆恵conveyorLine._deviceName}銆戣緭閫佺嚎銆恵childDeviceCode}銆戙�恵ex.Message}銆�"; ConsoleHelper.WriteWarningLine(log); 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") + + } + private void RequestWMSTask(CommonConveyorLine conveyorLine, Dt_StationManager stationManager) + { + if (stationManager.stationChildCode == "3002") { - 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) + + var newTask = _taskRepository.QueryFirst(x => x.TargetAddress == "3004"); + if (newTask != null) { - if (deviceCode.Contains("RGV01") && deviceCode.Contains("RGV02")) + return; + } + + 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 || Barcode==""|| Barcode.Trim().Contains("\0")) + { + 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() { - 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 + 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) { - RGVName = deviceCode[0]; + task.TaskState = (int)TaskInStatusEnum.HoistInExecuting; + _taskRepository.UpdateData(task); } } else { - RGVName = "RGV01"; + 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; + WriteLog.GetLog("WMS鎺ュ彛杩斿洖淇℃伅").Write(JsonConvert.SerializeObject(result), "WMS鎺ュ彛杩斿洖淇℃伅"); } } 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, // 璁剧疆榛樿浼樺厛绾т负1 - Creater = "System", - Floor = stationManager.stationFloor, - RGVName = stationManager.RGVName != null ? stationManager.RGVName : RGVName, - }; - _taskRepository.AddData(task); - } - private void RequestWMSTask(CommonConveyorLine conveyorLine, Dt_StationManager stationManager) - { - var Barcode = conveyorLine.GetValue<ConveyorLineDBName, string>(ConveyorLineDBName.ConveyorLineBarcode, stationManager.stationNextChildCode); + DeviceProDTO? devicePro = conveyorLine.DeviceProDTOs.Where(x => x.DeviceChildCode == stationManager.stationNextChildCode && x.DeviceProParamName == "ConveyorLineBarcode").FirstOrDefault(); + var x = conveyorLine.Communicator.Read(devicePro.DeviceProAddress, 10); - if (Barcode == "") - { - conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal,Convert.ToSByte(3), stationManager.stationChildCode); - } - var task = _taskRepository.QueryFirst(x => x.PalletCode == Barcode); - if (task != null) - { + string Barcode = Encoding.UTF8.GetString(x); - } - 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; - //var keys = new Dictionary<string, object>() - //{ - // {"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, keys.ToString()).Result; - } + if (Barcode == null || Barcode == "" || Barcode.Trim().Contains("\0")) + { + conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, Convert.ToSByte(3), stationManager.stationChildCode); + } + var task = _taskRepository.QueryFirst(x => x.PalletCode == Barcode); + if (task != null) + { + var log = $"銆恵conveyorLine._deviceName}銆戠珯鍙般�恵stationManager.stationChildCode}銆戣姹傚彇璐с�佸凡瀛樺湪浠诲姟浠诲姟鍙穥task.TaskNum}"; + LogAndWarn(conveyorLine.DeviceName, log); + } + 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; + WriteLog.GetLog("WMS鎺ュ彛杩斿洖淇℃伅").Write(JsonConvert.SerializeObject(result), "WMS鎺ュ彛杩斿洖淇℃伅"); + } + } } } } -- Gitblit v1.9.3