From f23e0326aa05a1c5b47d4aec4c06e73d0d86b8e7 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期二, 29 七月 2025 17:43:15 +0800
Subject: [PATCH] 代码提交

---
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs |  214 ++++++++++++-----------------------------------------
 1 files changed, 49 insertions(+), 165 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 8aacd38..1090389 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,9 +17,12 @@
 
 using AutoMapper;
 using HslCommunication;
+using HslCommunication.Profinet.OpenProtocol;
 using Newtonsoft.Json;
 using Quartz;
 using System.Reflection;
+using System.Text;
+using System.Web;
 using WIDESEAWCS_Common;
 using WIDESEAWCS_Common.TaskEnum;
 using WIDESEAWCS_Core;
@@ -37,6 +40,7 @@
 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;
@@ -48,8 +52,6 @@
     public partial class CommonConveyorLineJob : JobBase, IJob
     {
         private readonly ITaskService _taskService;
-        private readonly IRGVTaskService _rgvtaskService;
-        private readonly IRGVTask_HtyService _rgvtask_HtyService;
         private readonly ITaskRepository _taskRepository;
         private readonly ITaskExecuteDetailService _taskExecuteDetailService;
         private readonly IRouterService _routerService;
@@ -58,12 +60,12 @@
         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, IRGVTaskService rgvtaskService, IRGVTask_HtyService rgvtask_HtyService,
-        IDt_StationManagerRepository stationManagerRepository)
+        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;
@@ -73,9 +75,8 @@
             _cacheService = cacheService;
             _noticeService = noticeService;
             _taskRepository = taskRepository;
-            _rgvtaskService = rgvtaskService;
-            _rgvtask_HtyService = rgvtask_HtyService;
             _stationManagerRepository = stationManagerRepository;
+            _deviceInfoRepository = deviceInfoRepository;
         }
 
         public async Task Execute(IJobExecutionContext context)
@@ -106,7 +107,8 @@
             try
             {
                 ConveyorLineTaskCommand command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(station.stationChildCode);
-                //var Barcode = conveyorLine.GetValue<ConveyorLineDBName, string>(ConveyorLineDBName.ConveyorLineBarcode, station.stationChildCode);
+                var Barcodea = conveyorLine.Communicator.Read("DB1103.2",5);
+                string x=Encoding.UTF8.GetString(Barcodea);
                 if (command != null)
                 {
                     #region 璋冪敤浜嬩欢鎬荤嚎閫氱煡鍓嶇
@@ -118,7 +120,6 @@
                         userTokenIds = tokenInfos.Select(x => x.Token_ID).ToList();
                         userIds = tokenInfos.Select(x => x.UserId).ToList();
                     }
-
                     #endregion 璋冪敤浜嬩欢鎬荤嚎閫氱煡鍓嶇
 
                     // 灏嗕氦浜掍俊鍙疯浆鎹负甯冨皵鏁扮粍
@@ -131,6 +132,7 @@
                         foreach (var item in deviceProtocolDetails)
                         {
                             int itemValue = Convert.ToInt32(item.ProtocalDetailValue);
+                            _noticeService.LineData(userIds?.FirstOrDefault(), userTokenIds, new { station.stationChildCode,InStock= structs[itemValue] , Roadway =station.Roadway});
                             if (structs[itemValue] == true)
                             {
                                 MethodInfo? method = GetType().GetMethod(item.ProtocolDetailType);
@@ -163,15 +165,22 @@
                 var log = $"銆恵conveyorLine._deviceName}銆戠珯鍙般�恵station.stationChildCode}銆戣姹傚彇璐�";
                 await LogAndWarn(conveyorLine.DeviceName, log);
 
-                var task = _taskService.QueryConveyorLineTask(station.stationChildCode);
-                //if (task != null)
-                //{
-                //    RequestInOrOutbound(command, conveyorLine, station, task);
-                //}
-                //else
-                //{
-                    await HandleNewTaskAsync(conveyorLine, command, station.stationChildCode, task);
-                //}
+                if (station.stationChildCode == "3004")
+                {
+                    var taskIn = _taskRepository.QueryFirst(x => x.TaskNum == command.TaskNum && x.NextAddress == station.stationChildCode && x.TaskType == (int)TaskInboundTypeEnum.Inbound&&x.TaskState==(int)TaskInStatusEnum.HoistInExecuting);
+                    if(taskIn != null)
+                    {
+                        Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.Roadway == taskIn.Roadway && x.stationType == 3 && x.stationFloor == taskIn.Floor);
+                        taskIn.CurrentAddress = station.stationChildCode;
+                        taskIn.NextAddress = stationManager.stationChildCode;
+                        taskIn.TaskState = (int)TaskInStatusEnum.InNew;
+                        _taskRepository.UpdateData(taskIn);
+                    }
+                }
+
+                var task = _taskService.QueryConveyorLineTask(station.stationChildCode, command.TaskNum);
+                
+                await HandleNewTaskAsync(conveyorLine, command, station.stationChildCode, task);
             }
             catch (Exception ex)
             {
@@ -186,18 +195,25 @@
         /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
         /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
         /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
-        public async Task ConveyorLineFinish(ConveyorLineTaskCommand command, CommonConveyorLine conveyorLine, Dt_StationManager station)
+        public async Task ConveyorLineFinish(ConveyorLineTaskCommand command, CommonConveyorLine conveyorLine, Dt_StationManager stationManager)
         {
             try
             {
                 // 杈撳嚭淇℃伅锛岃〃绀虹珯鍙拌姹傚彇璐�
-                var log = $"銆恵conveyorLine._deviceName}銆戠珯鍙般�恵station.stationChildCode}銆�,浠诲姟鍙�:銆恵command.TaskNum}銆戝畬鎴�";
+                var log = $"銆恵conveyorLine._deviceName}銆戠珯鍙般�恵stationManager.stationChildCode}銆�,浠诲姟鍙�:銆恵command.TaskNum}銆戝畬鎴�";
                 await LogAndWarn(conveyorLine.DeviceName, log);
 
-                var task = _taskService.QueryConveyorLineFinishTask(station.stationChildCode);
+                var task = _taskService.QueryConveyorLineFinishTask(stationManager.stationChildCode, command.TaskNum);
                 //鏀规煡璇㈡柟娉�
-
-                HandleFinishTaskAsync(conveyorLine, command, station.stationChildCode, task);
+                if(stationManager.stationType==5||stationManager.stationType==4)
+                {
+                    // 濡傛灉浠诲姟瀛樺湪
+                    if (task != null)
+                    {
+                        Thread.Sleep(1000);
+                        _taskService.UpdateTaskStatusToNext(task);
+                    }
+                }
 
             }
             catch (Exception ex)
@@ -212,88 +228,8 @@
         /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
         /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
         /// <param name="ProtocalDetailValue">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param>
-        public void RequestInOrOutbound(ConveyorLineTaskCommand command, CommonConveyorLine conveyorLine, Dt_StationManager station,Dt_Task task)
+        public void RequestNextAddress(ConveyorLineTaskCommand command, CommonConveyorLine conveyorLine, Dt_StationManager station, Dt_Task task)
         {
-            try
-            {
-                // 杈撳嚭鎴愬姛淇℃伅锛屽寘鎷緭閫佺嚎鍚嶇О銆佷换鍔″彿銆佹墭鐩樻潯鐮佸拰瀛愯澶囦唬鐮侊紝浠ュ強浠诲姟淇℃伅
-                var logs = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵task.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵task.PalletCode}銆戝凡鍒拌揪銆恵station.stationChildCode}銆戣緭閫佺嚎,task{task.ToJsonString()}";
-                ConsoleHelper.WriteSuccessLine(logs);
-
-                _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = logs, time = DateTime.Now.ToString("G"), color = "red" });
-                WriteInfo(conveyorLine.DeviceName, logs);
-
-                // 濡傛灉浠诲姟涓嶄负绌猴紝鍒欐墽琛屼互涓嬫搷浣�
-                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)
-                    };
-
-                    // 杈撳嚭鎴愬姛淇℃伅锛屽寘鎷緭閫佺嚎鍚嶇О銆佷换鍔″彿銆佹墭鐩樻潯鐮併�佸瓙璁惧浠g爜鍜屼笅涓�鐩爣鍦板潃
-                    var log = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵station.stationChildCode}銆戣緭閫佺嚎璇锋眰鍑哄簱,涓嬩竴鐩爣鍦板潃銆恵taskCommand.TargetAddress}銆�";
-                    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)
-                    {
-                        _taskService.UpdateTaskStatusToNext(task);
-                    }
-
-                }
-            }
-            catch (Exception ex)
-            {
-            }
-        }
-
-        /// <summary>
-        /// 杈撻�佺嚎璇锋眰鍑哄簱涓嬩竴鍦板潃
-        /// </summary>
-        /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
-        /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
-        /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
-        public void ConveyorLineInOrOutFinish(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, Dt_StationManager station, Dt_Task task)
-        {
-            // 鎵撳嵃鎴愬姛鏃ュ織锛屾樉绀哄綋鍓嶈澶囧悕绉般�佷换鍔″彿銆佹墭鐩樻潯鐮佷互鍙婅姹傚嚭搴撲笅涓�鍦板潃鐨勫瓙璁惧浠g爜
-            var log = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵station.stationChildCode}銆戣緭閫佺嚎璇锋眰鍑哄簱瀹屾垚";
-            ConsoleHelper.WriteSuccessLine(log);
-
-            _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" });
-            WriteInfo(conveyorLine.DeviceName, log);
-
-            // 濡傛灉浠诲姟瀛樺湪
-            if (task != null)
-            {
-                _taskService.UpdateTaskStatusToNext(task);
-
-            }
-        }
-
-
-
-        /// <summary>
-        /// 杈撻�佺嚎璇锋眰鍑哄簱涓嬩竴鍦板潃
-        /// </summary>
-        /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
-        /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
-        /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
-        public void RequestNextAddress(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, Dt_StationManager station, Dt_Task task)
-        {
-            // 鎵撳嵃鎴愬姛鏃ュ織锛屾樉绀哄綋鍓嶈澶囧悕绉般�佷换鍔″彿銆佹墭鐩樻潯鐮佷互鍙婅姹傚嚭搴撲笅涓�鍦板潃鐨勫瓙璁惧浠g爜
-            var log = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵station.stationChildCode}銆戣緭閫佺嚎璇锋眰鍑哄簱涓嬩竴鍦板潃";
-            ConsoleHelper.WriteSuccessLine(log);
-
-            _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" });
-            WriteInfo(conveyorLine.DeviceName, log);
-
-            // 濡傛灉浠诲姟瀛樺湪
             if (task != null)
             {
                 ConveyorLineTaskCommandWrite taskCommand = new ConveyorLineTaskCommandWrite()
@@ -303,53 +239,23 @@
                     WriteInteractiveSignal = task.TaskType == (int)TaskOutboundTypeEnum.Outbound ? (byte)Convert.ToSByte(2) : (byte)Convert.ToSByte(1)
                 };
 
-                // 鎵撳嵃鎴愬姛鏃ュ織锛屾樉绀哄綋鍓嶈澶囧悕绉般�佷换鍔″彿銆佹墭鐩樻潯鐮併�佸瓙璁惧浠g爜浠ュ強涓嬩竴鐩爣鍦板潃
-                var logs = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵station.stationChildCode}銆戣緭閫佺嚎璇锋眰鍑哄簱涓嬩竴鍦板潃,涓嬩竴鐩爣鍦板潃銆恵taskCommand.TargetAddress}銆�";
-                ConsoleHelper.WriteSuccessLine(logs);
+                var log = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵task.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵task.PalletCode}銆戝凡鍒拌揪銆恵station.stationChildCode}銆戜笅涓�鐩爣鍦板潃銆恵taskCommand.TargetAddress}銆戣緭閫佺嚎,task{task.ToJsonString()}";
 
-                _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = logs, time = DateTime.Now.ToString("G"), color = "red" });
-                WriteInfo(conveyorLine.DeviceName, logs);
+                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 ConveyorLineOutFinish(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, Dt_StationManager station,Dt_Task task)
-        {
-            try
-            {
-                // 鎵撳嵃鎴愬姛淇℃伅锛岃〃绀烘墭鐩樺凡鍒拌揪鎸囧畾杈撻�佺嚎骞跺畬鎴愬嚭搴�
-                var logs = $"銆恵conveyorLine.DeviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵station.stationChildCode}銆戣緭閫佺嚎鍑哄簱瀹屾垚";
-                ConsoleHelper.WriteSuccessLine(logs);
-
-                _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = logs, time = DateTime.Now.ToString("G"), color = "red" });
-                WriteInfo(conveyorLine.DeviceName, logs);
-                ConveyorLineTaskCommandWrite taskCommand = new ConveyorLineTaskCommandWrite()
-                {
-                    TaskNum = 100,
-                    TargetAddress = Convert.ToInt16(station.stationNextChildCode),
-                    WriteInteractiveSignal = (byte)Convert.ToSByte(3)
-                };
-                var result = SendCommand(taskCommand, conveyorLine, station.stationChildCode);
-
-            }
-            catch (Exception ex)
-            {
-            }
-        }
         /// <summary>
         /// 杈撻�佺嚎鎶ヨ
         /// </summary>
@@ -362,7 +268,7 @@
             var task = _taskRepository.QueryFirst(x => x.TaskNum == command.TaskNum);
 
 
-            conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal,Convert.ToSByte(3), station.stationChildCode);
+            //conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal,Convert.ToSByte(3), station.stationChildCode);
         }
 
         public async Task LogAndWarn(string deviceName, string log, string color = "red")
@@ -374,35 +280,13 @@
 
         public bool SendCommand(ConveyorLineTaskCommandWrite taskCommand, CommonConveyorLine conveyorLine, string childDeviceCode)
         {
-            conveyorLine.SetValue(ConveyorLineDBName.ConveyorLineTargetAddress, Convert.ToInt16(taskCommand.TargetAddress), childDeviceCode);
+            conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTargetAddress, Convert.ToInt16(taskCommand.TargetAddress), childDeviceCode);
             Thread.Sleep(100);
-            conveyorLine.SetValue(ConveyorLineDBName.ConveyorLineTaskNum, Convert.ToInt16(taskCommand.TaskNum), childDeviceCode);
+            conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTaskNum, Convert.ToInt16(taskCommand.TaskNum), childDeviceCode);
             Thread.Sleep(100);
             conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, Convert.ToSByte(taskCommand.WriteInteractiveSignal), childDeviceCode);
-            for (int i = 0; i < 6; i++)
-            {
-                ConveyorLineTaskCommand command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(childDeviceCode);
-                if (command != null)
-                {
-                    if (command.TaskNum == taskCommand.TaskNum && command.TargetAddress == taskCommand.TargetAddress)
-                    {
-                        WriteInfo(conveyorLine.DeviceName, $"鍐欏叆浠诲姟鎴愬姛鍐欏叆娆℃暟{i}鍐欏叆浠诲姟銆恵JsonConvert.SerializeObject(taskCommand)}銆�");
-                        return true;
-                    }
-                    if (command.TargetAddress != taskCommand.TargetAddress)
-                    {
-                        conveyorLine.SetValue(ConveyorLineDBName.ConveyorLineTargetAddress, Convert.ToInt16(taskCommand.TargetAddress), childDeviceCode);
-                        Thread.Sleep(100);
-                    }
-                    if (command.TaskNum != taskCommand.TaskNum)
-                    {
-                        conveyorLine.SetValue(ConveyorLineDBName.ConveyorLineTaskNum, taskCommand.TaskNum, childDeviceCode); Thread.Sleep(100);
-                    }
 
-                }
-            }
-            WriteInfo(conveyorLine.DeviceName, $"鍐欏叆浠诲姟澶辫触浠诲姟鍙枫�恵taskCommand.TaskNum}銆戞墭鐩樺彿銆恵taskCommand.Barcode}銆戠洰鏍囧湴鍧�銆恵taskCommand.TargetAddress}銆戝綋鍓嶈妭鐐广�恵childDeviceCode}銆�");
-            return false;
+            return true;
         }
     }
 }

--
Gitblit v1.9.3