From ec78ebdad429c6438f8965941aa912865c71a949 Mon Sep 17 00:00:00 2001
From: hutongqing <hutongqing@hnkhzn.com>
Date: 星期三, 15 一月 2025 17:34:16 +0800
Subject: [PATCH] 修改板材退库交互

---
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs |  194 ++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 187 insertions(+), 7 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
index 7effdeb..ebdb88a 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
@@ -146,21 +146,19 @@
             WebResponseContent content = new WebResponseContent();
             try
             {
-                List<Dt_WarehouseDevice> warehouseDevices = Db.Queryable<Dt_WarehouseDevice>().ToList();
-
+                bool flag = false;
                 List<Dt_Task> tasks = new List<Dt_Task>();
                 foreach (var item in taskDTOs)
                 {
                     if (BaseDal.QueryFirst(x => x.TaskNum == item.TaskNum || x.PalletCode == item.PalletCode) != null)
                     {
+                        flag = true;
                         continue;
                     }
                     Dt_Task task = _mapper.Map<Dt_Task>(item);
                     task.Creater = "WMS";
                     task.TaskState = (int)TaskStatusEnum.New;
                     task.CurrentAddress = item.SourceAddress;
-
-                    List<Dt_WarehouseDevice> wades = warehouseDevices.Where(x => x.WarehouseId == item.WarehouseId).ToList();
 
                     Dt_Router? router;
 
@@ -195,7 +193,12 @@
                                 task.NextAddress = router.NextPosi;
                                 task.DeviceCode = stationManger.StationDeviceCode;
                             }
-                            else if (item.TaskType == TaskTypeEnum.MesOutbound.ObjToInt())
+                            else if (item.TaskType == TaskTypeEnum.MesMatReturn.ObjToInt() && !router.IsEnd)
+                            {
+                                task.NextAddress = router.NextPosi;
+                                task.DeviceCode = router.ChildPosi;
+                            }
+                            else if (item.TaskType == TaskTypeEnum.MesOutbound.ObjToInt() || item.TaskType == TaskTypeEnum.MesHandOutbound.ObjToInt() || item.TaskType == TaskTypeEnum.MesHandPickOutbound.ObjToInt())
                             {
                                 task.NextAddress = router.NextPosi;
                                 task.DeviceCode = stationManger.StackerCraneCode;
@@ -221,7 +224,7 @@
                             if (dt_Routers != null && dt_Routers.Count > 0)
                             {
                                 task.NextAddress = dt_Routers.FirstOrDefault().NextPosi;
-                                task.DeviceCode = dt_Routers.FirstOrDefault().ChildPosiDeviceCode;
+                                task.DeviceCode = dt_Routers.FirstOrDefault().ChildPosi;
                             }
                             else
                             {
@@ -274,7 +277,7 @@
 
                 _taskExecuteDetailService.AddTaskExecuteDetail(tasks.Select(x => x.TaskNum).ToList(), "鎺ユ敹WMS浠诲姟");
 
-                content = tasks.Count > 0 ? WebResponseContent.Instance.OK("鎴愬姛") : WebResponseContent.Instance.Error("澶辫触");
+                content = (flag || tasks.Count > 0) ? WebResponseContent.Instance.OK("鎴愬姛") : WebResponseContent.Instance.Error("澶辫触");
             }
             catch (Exception ex)
             {
@@ -323,6 +326,48 @@
             return content;
         }
 
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="palletCode"></param>
+        /// <param name="sourceAddress"></param>
+        /// <returns></returns>
+        public WebResponseContent RequestWMSTaskSimple(string palletCode, string sourceAddress)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                string address = AppSettings.Get("WMSApiAddress");
+                if (string.IsNullOrEmpty(address))
+                {
+                    return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃");
+                }
+                string responseStr = HttpHelper.Get($"{address}/api/Task/DeviceRequestInboundTaskSimple?stationCode={sourceAddress}&palletCode={palletCode}");
+                WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
+                if (responseContent != null && responseContent.Status && responseContent.Data != null)
+                {
+                    WMSTaskDTO? taskDTO = JsonConvert.DeserializeObject<WMSTaskDTO>(responseContent.Data.ToString());
+                    if (taskDTO != null)
+                    {
+                        content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
+                    }
+                }
+
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error(ex.Message);
+            }
+            return content;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="palletCode"></param>
+        /// <param name="sourceAddress"></param>
+        /// <param name="roadway"></param>
+        /// <returns></returns>
         public WebResponseContent RequestWMSTask(string palletCode, string sourceAddress, string roadway)
         {
             WebResponseContent content = new WebResponseContent();
@@ -352,6 +397,49 @@
             return content;
         }
 
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="sourceAddress"></param>
+        /// <param name="palletCode"></param>
+        /// <param name="heightType"></param>
+        /// <param name="roadways"></param>
+        /// <returns></returns>
+        public WebResponseContent RequestWMSTask(string palletCode, string sourceAddress,  int heightType, List<string> roadways)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                string address = AppSettings.Get("WMSApiAddress");
+                if (string.IsNullOrEmpty(address))
+                {
+                    return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃");
+                }
+                string responseStr = HttpHelper.Post($"{address}/api/Task/DeviceRequestInboundTaskByRoadways?stationCode={sourceAddress}&palletCode={palletCode}&heightType={heightType}", roadways.Serialize());
+                WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
+                if (responseContent != null && responseContent.Status && responseContent.Data != null)
+                {
+                    WMSTaskDTO? taskDTO = JsonConvert.DeserializeObject<WMSTaskDTO>(responseContent.Data.ToString());
+                    if (taskDTO != null)
+                    {
+                        content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
+                    }
+                }
+
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error(ex.Message);
+            }
+            return content;
+        }
+
+        /// <summary>
+        /// 鍒嗛厤宸烽亾
+        /// </summary>
+        /// <param name="taskNum"></param>
+        /// <param name="roadwayNos"></param>
+        /// <returns></returns>
         public WebResponseContent RequestWMSAssignRoadway(int taskNum, List<string> roadwayNos)
         {
             WebResponseContent content = new WebResponseContent();
@@ -377,6 +465,75 @@
             return content;
         }
 
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="roadwayNos"></param>
+        /// <param name="palletCode"></param>
+        /// <param name="heightType"></param>
+        /// <returns></returns>
+        public WebResponseContent RequestWMSAssignRoadway(List<string> roadwayNos, string palletCode, int heightType)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                string address = AppSettings.Get("WMSApiAddress");
+                if (string.IsNullOrEmpty(address))
+                {
+                    return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃");
+                }
+                string responseStr = HttpHelper.Post($"{address}/api/Task/AssignRoadwayByHeightAndCode?palletCode={palletCode}&heightType={heightType}", roadwayNos.Serialize());
+                WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
+                if (responseContent != null && responseContent.Status && responseContent.Data != null)
+                {
+                    return responseContent;
+                }
+
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error(ex.Message);
+            }
+            return content;
+        }
+
+        /// <summary>
+        /// 鍒嗛厤宸烽亾
+        /// </summary>
+        /// <param name="roadwayNos"></param>
+        /// <param name="taskNum"></param>
+        /// <param name="heightType"></param>
+        /// <returns></returns>
+        public WebResponseContent RequestWMSAssignRoadway(List<string> roadwayNos, int taskNum, int heightType)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                string address = AppSettings.Get("WMSApiAddress");
+                if (string.IsNullOrEmpty(address))
+                {
+                    return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃");
+                }
+                string responseStr = HttpHelper.Post($"{address}/api/Task/AssignRoadway?taskNum={taskNum}&heightType={heightType}", roadwayNos.Serialize());
+                WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
+                if (responseContent != null && responseContent.Status && responseContent.Data != null)
+                {
+                    return responseContent;
+                }
+
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error(ex.Message);
+            }
+            return content;
+        }
+
+        /// <summary>
+        /// 鍒嗛厤宸烽亾
+        /// </summary>
+        /// <param name="roadwayNos"></param>
+        /// <returns></returns>
         public WebResponseContent RequestWMSAssignRoadway(List<string> roadwayNos)
         {
             WebResponseContent content = new WebResponseContent();
@@ -424,6 +581,29 @@
         }
 
         /// <summary>
+        /// 鍚慦MS鐢宠鍒嗛厤璐т綅
+        /// </summary>
+        /// <param name="taskNum"></param>
+        /// <param name="roadwayNo"></param>
+        /// <param name="heightType"></param>
+        /// <returns></returns>
+        /// <exception cref="Exception"></exception>
+        public string? RequestAssignLocationByHeight(int taskNum, string roadwayNo, int heightType)
+        {
+            string address = AppSettings.Get("WMSApiAddress");
+            if (string.IsNullOrEmpty(address)) throw new Exception("鏈壘鍒癢MSApi鍦板潃");
+            string responseStr = HttpHelper.Get($"{address}/api/Task/AssignInboundTaskLocationByHeight?taskNum={taskNum}&roadwayNo={roadwayNo}&heightType={heightType}");
+
+            WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
+            if (responseContent != null && responseContent.Status && responseContent.Data != null)
+            {
+                return responseContent.Data.ToString();
+            }
+
+            return "";
+        }
+
+        /// <summary>
         /// 鏍规嵁璁惧缂栧彿銆佷换鍔$被鍨嬪垎缁�(鍙��)鎸夌収浼樺厛绾т互鍙婂垱寤烘椂闂存帓搴忔煡璇换鍔℃睜鏂板鐨勪换鍔�
         /// </summary>
         /// <param name="deviceNo">璁惧缂栧彿</param>

--
Gitblit v1.9.3