From c0d5e7c40f87c18fc7c53ffd810069d0b41cb849 Mon Sep 17 00:00:00 2001
From: 陈勇 <竞男@ASUNA>
Date: 星期五, 20 三月 2026 16:47:48 +0800
Subject: [PATCH] 同步

---
 项目代码/WCS/WCSServer/WIDESEAWCS_TaskInfoService/Partial/TaskService.cs |  272 +++++++++++++++++++++++++----------------------------
 1 files changed, 128 insertions(+), 144 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServer/WIDESEAWCS_TaskInfoService/Partial/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServer/WIDESEAWCS_TaskInfoService/Partial/TaskService.cs"
index eae964d..2d3686e 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServer/WIDESEAWCS_TaskInfoService/Partial/TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServer/WIDESEAWCS_TaskInfoService/Partial/TaskService.cs"
@@ -2,6 +2,7 @@
 using Mapster;
 using MoYu.Localization;
 using Newtonsoft.Json;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
 using System.Diagnostics.CodeAnalysis;
 using WIDESEAWCS_Common;
 using WIDESEAWCS_Common.TaskEnum;
@@ -43,67 +44,6 @@
                     throw new Exception();
                 }
 
-
-                //todo 浼樺寲 濡傛湭鏌ヨ鍒颁换鍔″垯澶勭悊
-                //if (content.Data != null)
-                //{
-                var task = JsonConvert.DeserializeObject<Dt_Task>(content.Data.ToString());
-
-                Dt_Task? Relocationtask = null;
-                if (task.TaskNum != taskNum)
-                {
-
-                    BaseDal.AddData(task);
-                    Relocationtask = BaseDal.QueryFirst(x => x.TaskNum == task.TaskNum);
-                }
-                //}
-
-                if (Relocationtask != null)
-                {
-                    return task;
-                }
-                else
-                {
-                    return null;
-                }
-
-            }
-            catch (Exception ex)
-            {
-                throw new Exception($"璇锋眰寮傚父锛歿ex.Message}");
-            }
-        }
-
-        /// <summary>
-        /// 鏍规嵁鎵樼洏鍙枫�佽捣濮嬪湴鍧�鍚慦MS璇锋眰浠诲姟锛堝叆搴撶増鏈�)
-        /// </summary>
-        /// <param name="palletCode">鎵樼洏鍙�</param>
-        /// <param name="sourceAddress">璧峰鍦板潃</param>
-        /// <returns></returns>
-        public Dt_Task? InBeforeCheck(int taskNum)
-        {
-            WebResponseContent content = new WebResponseContent();
-            try
-            {
-                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.InTransferCheck)?.ConfigValue;
-                if (wmsBase == null || requestTask == null)
-                {
-                    throw new InvalidOperationException("WMS IP 鏈厤缃�");
-                }
-                var wmsIpAddrss = wmsBase + requestTask;
-
-                var result = HttpHelper.Post(wmsIpAddrss, new { taskNum = taskNum }.ToJsonString());
-                content = JsonConvert.DeserializeObject<WebResponseContent>(result);
-
-                if (!content.Status)
-                {
-                    // wms澶辫触
-                    throw new Exception();
-                }
-
-
                 //todo 浼樺寲 濡傛湭鏌ヨ鍒颁换鍔″垯澶勭悊
                 //if (content.Data != null)
                 //{
@@ -141,7 +81,109 @@
         /// <param name="palletCode">鎵樼洏鍙�</param>
         /// <param name="stationManager">绔欏彴</param>
         /// <returns></returns>
-        public async Task<WebResponseContent> RequestTask(string palletCode, Dt_StationManager stationManager)
+        public async Task<WebResponseContent> RequestTask(string palletCode, string PVI, Dt_StationManager stationManager)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                StaticVariable.isLineRun = false;
+
+                // 妫�鏌ュ綋鍓嶆墭鐩樻槸鍚﹀瓨鍦ㄤ换鍔�
+                if (await HasTask(PVI))
+                {
+                    return content.Error("褰撳墠鎵樼洏瀛樺湪浠诲姟");
+                }
+
+                //palletCode = "QT101025"; // 妯℃嫙鎵樼洏璇锋眰浠诲姟
+
+                // 鍙戣捣璇锋眰鑾峰彇鍏ュ簱浠诲姟
+                if (stationManager.stationType == 1)
+                {
+                    content = await RequestInTask(palletCode, PVI, stationManager);
+                }
+                else if (stationManager.stationType == 6)
+                {
+                    content = await RequestInEmptyTask(palletCode, PVI, stationManager);
+                }
+
+                ConsoleHelper.WriteErrorLine($"{stationManager.stationChildCode}绔欏彴璇锋眰鍝嶅簲淇℃伅:{content.ToJsonString()}");
+
+                if (!content.Status)
+                {
+                    return content;
+                }
+
+                var task = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
+                ConsoleHelper.WriteSuccessLine(content.Data.ToString());
+                return ReceiveByWMSTask(task);
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+            finally
+            {
+                StaticVariable.isLineRun = true;
+            }
+        }
+
+
+        // 妫�鏌ュ綋鍓嶆墭鐩樻槸鍚﹀瓨鍦ㄤ换鍔�
+        private async Task<bool> HasTask(string PVI)
+        {
+            var hasTask = await BaseDal.QueryFirstAsync(x => x.PVI == PVI);
+            return hasTask != null;
+        }
+
+        // 鑾峰彇 WMS 璇锋眰鍦板潃
+        private string GetWmsIpAddress(string configKey)
+        {
+            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 == configKey)?.ConfigValue;
+
+            if (wmsBase == null || requestTask == null)
+            {
+                throw new InvalidOperationException("WMS IP 鏈厤缃�");
+            }
+            return wmsBase + requestTask;
+        }
+
+        // 鍙戣捣璇锋眰鑾峰彇鍏ュ簱浠诲姟
+        private async Task<WebResponseContent> RequestInTask(string palletCode, string PVI, Dt_StationManager stationManager)
+        {
+            var wmsIpAddrss = GetWmsIpAddress(SysConfigKeyConst.RequestInTask);
+            var result = await HttpHelper.PostAsync(wmsIpAddrss, new { palletCode = palletCode, Roadways = stationManager.Roadway, area = stationManager.stationArea, Position = stationManager.stationChildCode, PVI = PVI }.ToJsonString());
+            return JsonConvert.DeserializeObject<WebResponseContent>(result);
+        }
+
+        private async Task<WebResponseContent> RequestInEmptyTask(string palletCode, string PVI, Dt_StationManager stationManager)
+        {
+            var wmsIpAddrss = GetWmsIpAddress(SysConfigKeyConst.RequestInTask);
+            var result = await HttpHelper.PostAsync(wmsIpAddrss, new { palletCode = palletCode, Roadways = stationManager.Roadway, area = stationManager.stationArea, Position = stationManager.stationChildCode, PVI = PVI }.ToJsonString());
+            return JsonConvert.DeserializeObject<WebResponseContent>(result);
+        }
+
+
+        #endregion 鏍规嵁鎵樼洏鍙枫�佺珯鍙板悜WMS璇锋眰浠诲姟
+
+        public async Task<WebResponseContent> RequestWhiteBody(string palletCode, string PVI, Dt_StationManager stationManager)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                var wmsIpAddrss = GetWmsIpAddress(SysConfigKeyConst.RequestWhiteBody);
+                var result = await HttpHelper.PostAsync(wmsIpAddrss, new { palletCode = palletCode, Roadways = stationManager.Roadway, area = stationManager.stationArea, Position = stationManager.stationChildCode, PVI = PVI }.ToJsonString());
+                return JsonConvert.DeserializeObject<WebResponseContent>(result);
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+
+        }
+
+        public async Task<WebResponseContent> RequestRoadWayTask(string palletCode, string PVI, Dt_StationManager stationManager)
         {
             WebResponseContent content = new WebResponseContent();
             try
@@ -154,10 +196,11 @@
                     return content.Error("褰撳墠鎵樼洏瀛樺湪浠诲姟");
                 }
 
-                palletCode = "QT101025"; // 妯℃嫙鎵樼洏璇锋眰浠诲姟
+                //PVI = "J26000456TF12"; // 妯℃嫙PVI璇锋眰浠诲姟
 
                 // 鍙戣捣璇锋眰鑾峰彇鍏ュ簱浠诲姟
-                content = await RequestInTask(palletCode, stationManager);
+                content = await RequestInRoadWayTask(palletCode, PVI, stationManager);
+
                 ConsoleHelper.WriteErrorLine($"{stationManager.stationChildCode}绔欏彴璇锋眰鍝嶅簲淇℃伅:{content.ToJsonString()}");
 
                 if (!content.Status)
@@ -179,90 +222,24 @@
             }
         }
 
-        public async Task<WebResponseContent> UpdateCheckTask(string palletCode, Dt_StationManager stationManager)
+        private async Task<WebResponseContent> RequestInRoadWayTask(string palletCode, string PVI, Dt_StationManager stationManager)
         {
-            WebResponseContent content = new WebResponseContent();
-            try
+            var wmsIpAddrss = string.Empty;
+            if (stationManager.stationType == 5)
             {
-                var wmsIpAddrss = GetWmsIpAddress(SysConfigKeyConst.UpdateCheckTask);
-                var result = await HttpHelper.PostAsync(wmsIpAddrss, new { palletCode = palletCode, Roadways = stationManager.Roadway, Position = stationManager.stationChildCode }.ToJsonString());
-                return JsonConvert.DeserializeObject<WebResponseContent>(result);
+                wmsIpAddrss = GetWmsIpAddress(SysConfigKeyConst.RequestInboundRoadWayNo);
             }
-            catch (Exception ex)
+            else if (stationManager.stationType == 9)
             {
-                return content.Error($"{ex.Message}");
-            }
-        }
-
-        /// <summary>
-        /// 杞﹁疆娴佸悜鍒嗛厤
-        /// </summary>
-        /// <param name="czCode"></param>
-        /// <param name="stationManager"></param>
-        /// <returns></returns>
-        public async Task<WebResponseContent> RequestWheelsFlow(string czCode)
-        {
-            WebResponseContent content = new WebResponseContent();
-            try
-            {
-                var wmsIpAddrss = GetWmsIpAddress(SysConfigKeyConst.RequestWheelsFlow);
-                var result = await HttpHelper.PostAsync(wmsIpAddrss, new { palletCode = czCode }.ToJsonString());
-                return JsonConvert.DeserializeObject<WebResponseContent>(result);
-            }
-            catch (Exception ex)
-            {
-                return content.Error($"{ex.Message}");
-            }
-        }
-
-        /// <summary>
-        /// 杞﹁疆娴佸悜鍒嗛厤鏌ヨ鍘嗗彶璇锋眰
-        /// </summary>
-        /// <param name="czCode"></param>
-        /// <param name="stationManager"></param>
-        /// <returns></returns>
-        public string RequestWheletHty(string czCode)
-        {
-            WebResponseContent content = new WebResponseContent();
-            Dt_Task_Hty dt_Task_Hty = _taskHtyRepository.QueryFirst(x => x.task_CZInfo == czCode && x.CreateDate >= DateTime.Now.AddMinutes(-30));
-            if (dt_Task_Hty == null) return null;
-            if (dt_Task_Hty.Towhereabouts == null && dt_Task_Hty.Towhereabouts == "") return null;
-
-            return dt_Task_Hty.Towhereabouts;
-        }
-
-        // 妫�鏌ュ綋鍓嶆墭鐩樻槸鍚﹀瓨鍦ㄤ换鍔�
-        private async Task<bool> HasTask(string palletCode)
-        {
-            var hasTask = await BaseDal.QueryFirstAsync(x => x.PalletCode == palletCode);
-            return hasTask != null;
-        }
-
-        // 鑾峰彇 WMS 璇锋眰鍦板潃
-        private string GetWmsIpAddress(string configKey)
-        {
-            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 == configKey)?.ConfigValue;
-
-            if (wmsBase == null || requestTask == null)
-            {
-                throw new InvalidOperationException("WMS IP 鏈厤缃�");
+                wmsIpAddrss = GetWmsIpAddress(SysConfigKeyConst.RequestEmptyInboundRoadWayNo);
             }
 
-            return wmsBase + requestTask;
-        }
+            if (string.IsNullOrEmpty(wmsIpAddrss)) throw new Exception("鏈厤缃甒MS璇锋眰鍦板潃");
 
-        // 鍙戣捣璇锋眰鑾峰彇鍏ュ簱浠诲姟
-        private async Task<WebResponseContent> RequestInTask(string palletCode, Dt_StationManager stationManager)
-        {
-            var wmsIpAddrss = GetWmsIpAddress(SysConfigKeyConst.RequestInTask);
-            var result = await HttpHelper.PostAsync(wmsIpAddrss, new { palletCode = palletCode, Roadways = stationManager.Roadway, area = stationManager.stationArea, Position = stationManager.stationChildCode }.ToJsonString());
+            //var wmsIpAddrss = GetWmsIpAddress(SysConfigKeyConst.RequestInboundRoadWayNo);
+            var result = await HttpHelper.PostAsync(wmsIpAddrss, new { palletCode = palletCode, Roadways = stationManager.Roadway, area = stationManager.stationArea, Position = stationManager.stationChildCode, PVI = PVI }.ToJsonString());
             return JsonConvert.DeserializeObject<WebResponseContent>(result);
         }
-
-        #endregion 鏍规嵁鎵樼洏鍙枫�佺珯鍙板悜WMS璇锋眰浠诲姟
-
 
 
         /// <summary>
@@ -282,17 +259,13 @@
                 Dt_Task task = _mapper.Map<Dt_Task>(taskDTO);
                 task.Creater = "WMS";
                 task.CarType = taskDTO.CarType;
+                task.PVI = taskDTO.PVI;
 
                 if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
                 {
                     var stationinfo = _stationManagerRepository.QueryFirst(x => x.stationLocation == taskDTO.TargetAddress && x.Roadway == taskDTO.RoadWay);
 
                     task.TaskState = (int)TaskOutStatusEnum.OutNew;
-                    if (task.SourceAddress == "2009")
-                    {
-                        task.TaskState = (int)TaskOutStatusEnum.SC_OutFinish;
-                    }
-                    
                     task.CurrentAddress = taskDTO.RoadWay;
                     task.NextAddress = stationinfo.stationChildCode;
                     task.SourceAddress = taskDTO.SourceAddress;
@@ -387,6 +360,17 @@
             return BaseDal.QueryFirst(x => (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish) && x.CurrentAddress == currentAddress, TaskOrderBy);
         }
 
+        /// <summary>
+        /// 鏍规嵁璁惧缂栧彿銆佸綋鍓嶅湴鍧�鏌ヨ杈撻�佺嚎鏈墽琛岀殑浠诲姟
+        /// </summary>
+        /// <param name="deviceNo">璁惧缂栧彿</param>
+        /// <param name="currentAddress">褰撳墠鍦板潃</param>
+        /// <returns></returns>
+        public Dt_Task QueryConveyorLineTask(int palletCode, string currentAddress)
+        {
+            return BaseDal.QueryFirst(x => (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish) && x.CurrentAddress == currentAddress, TaskOrderBy);
+        }
+
         /// 浠诲姟瀹屾垚
         /// </summary>
         /// <param name="taskNum">浠诲姟缂栧彿</param>

--
Gitblit v1.9.3