From 17e5dbd7bd0364e27a33f1a7dab91cf33d5dcabc Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期三, 04 三月 2026 11:52:12 +0800
Subject: [PATCH] 增强Redis缓存服务与设备通信优化

---
 Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/CommonConveyorLineNewJob.cs |   76 +++++++++++++++++++++++++++++--------
 1 files changed, 59 insertions(+), 17 deletions(-)

diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/CommonConveyorLineNewJob.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/CommonConveyorLineNewJob.cs
index cb5bda3..729e360 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/CommonConveyorLineNewJob.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/CommonConveyorLineNewJob.cs
@@ -18,10 +18,15 @@
 #endregion << 鐗� 鏈� 娉� 閲� >>
 
 using AutoMapper;
+using Microsoft.Extensions.Configuration;
 using Quartz;
+using SqlSugar;
+using System.Text.Json;
+using WIDESEA_Core;
 using WIDESEAWCS_Common.TaskEnum;
 using WIDESEAWCS_Core;
 using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_DTO.TaskInfo;
 using WIDESEAWCS_ITaskInfoService;
 using WIDESEAWCS_Model.Models;
 using WIDESEAWCS_QuartzJob;
@@ -36,15 +41,17 @@
         private readonly ITaskExecuteDetailService _taskExecuteDetailService;
         private readonly IRouterService _routerService;
         private readonly IMapper _mapper;
-        ConveyorLineDispatchHandler _conveyorLineDispatch;
+        private ConveyorLineDispatchHandler _conveyorLineDispatch;
+        private readonly HttpClientHelper _httpClientHelper;
 
-        public CommonConveyorLineNewJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper)
+        public CommonConveyorLineNewJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper, HttpClientHelper httpClientHelper)
         {
             _taskService = taskService;
             _taskExecuteDetailService = taskExecuteDetailService;
             _routerService = routerService;
             _mapper = mapper;
             _conveyorLineDispatch = new ConveyorLineDispatchHandler(_taskService, _taskExecuteDetailService, _routerService, _mapper);
+            _httpClientHelper = httpClientHelper;
         }
 
         public Task Execute(IJobExecutionContext context)
@@ -73,10 +80,45 @@
                         try
                         {
                             ConveyorLineTaskCommandNew command = conveyorLine.ReadCustomer<ConveyorLineTaskCommandNew>(childDeviceCode);
-                            if (command == null || command.PLC_STB == 0)
+
+
+                            if (command == null)
                             {
                                 return;
                             }
+
+                            #region 妫�鏌ョ壒瀹氫綅缃槸鍚︽湁鎵樼洏
+
+                            var checkPalletPositions = App.Configuration.GetSection("CheckPalletPositions")
+                                .Get<List<CheckPalletPosition>>() ?? new List<CheckPalletPosition>();
+
+                            if (checkPalletPositions.Any(x => x.Code == childDeviceCode))
+                            {
+                                if (command.CV_State.ObjToBool())
+                                {
+                                    var existingTask = _taskService.Repository.QueryFirst(x => x.TargetAddress == childDeviceCode);
+                                    if (existingTask.IsNullOrEmpty())
+                                    {
+                                        var position = checkPalletPositions.FirstOrDefault(x => x.Code == childDeviceCode);
+                                        var responseResult = _httpClientHelper.Post<WebResponseContent>("GetOutBoundTrayTaskAsync", new CreateTaskDto()
+                                        {
+                                            WarehouseId = position.WarehouseId,
+                                            TargetAddress = childDeviceCode
+                                        }.Serialize());
+
+                                        if (responseResult.IsSuccess && responseResult.Data.Status)
+                                        {
+                                            var wmsTask = JsonSerializer.Deserialize<List<WMSTaskDTO>>(responseResult.Data.Data.Serialize());
+                                            if (wmsTask != null)
+                                                _taskService.ReceiveWMSTask(wmsTask);
+                                        }
+                                    }
+                                }
+                            }
+
+                            #endregion
+
+                            if (command.PLC_STB != 1) return;//PLC_STB=1鏃舵墠澶勭悊浠诲姟
 
                             if (command.Barcode.IsNullOrEmpty())
                             {
@@ -85,15 +127,18 @@
                                 return;
                             }
 
-                            Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNo, childDeviceCode);
-                            if (task.IsNullOrEmpty())
+                            if (command.TaskNo > 0)
                             {
-                                _conveyorLineDispatch.RequestInbound(conveyorLine, command, childDeviceCode);
-                                return;
-                            }
+                                Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNo, childDeviceCode);
+                                if (task.IsNullOrEmpty())
+                                {
+                                    _conveyorLineDispatch.RequestInbound(conveyorLine, command, childDeviceCode);
+                                    return;
+                                }
 
-                            // 澶勭悊浠诲姟鐘舵��
-                            ProcessTaskState(conveyorLine, command, task, childDeviceCode);
+                                // 澶勭悊浠诲姟鐘舵��
+                                ProcessTaskState(conveyorLine, command, task, childDeviceCode);
+                            }
                         }
                         catch (Exception innerEx)
                         {
@@ -108,7 +153,6 @@
             }
             return Task.CompletedTask;
         }
-
 
         /// <summary>
         /// 澶勭悊浠诲姟鐘舵��
@@ -132,10 +176,10 @@
             switch (state)
             {
                 case InExecuting:
-                    if (isTargetAddress)
-                        _conveyorLineDispatch.ConveyorLineInFinish(conveyorLine, command, childDeviceCode);
-                    else
-                        _conveyorLineDispatch.RequestInNextAddress(conveyorLine, command, childDeviceCode);
+                    //if (isTargetAddress)
+                    //    _conveyorLineDispatch.ConveyorLineInFinish(conveyorLine, command, childDeviceCode);
+                    //else
+                    _conveyorLineDispatch.RequestInNextAddress(conveyorLine, command, childDeviceCode);
                     break;
 
                 case OutExecuting:
@@ -154,7 +198,5 @@
                     break;
             }
         }
-
-        
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3