From a0a0df2e824b6fe7e5a3c0afce78127fecf84fc9 Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期一, 03 十一月 2025 08:23:05 +0800
Subject: [PATCH] ERP接口代码更新,WCS代码优化,出入库分配优化

---
 项目代码/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs |  175 +++++++++++++++++++++++++++++++++------------------------
 1 files changed, 101 insertions(+), 74 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
index 4e8aac9..d6d2312 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
@@ -27,6 +27,7 @@
 using WIDESEAWCS_Core.Enums;
 using WIDESEAWCS_Core.Helper;
 using WIDESEAWCS_Core.LogHelper;
+using WIDESEAWCS_DTO;
 using WIDESEAWCS_DTO.TaskInfo;
 using WIDESEAWCS_IBasicInfoRepository;
 using WIDESEAWCS_ITaskInfoRepository;
@@ -100,7 +101,9 @@
                 }
             }
         }
-
+        /// <summary>
+        /// 浠诲姟瀹屾垚
+        /// </summary>
         public WebResponseContent TaskCompleted(int taskNum)
         {
             try
@@ -320,6 +323,10 @@
                         content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
                     }
                 }
+                else
+                {
+                    content = responseContent ?? content.Error("缁撴灉閿欒");
+                }
 
             }
             catch (Exception ex)
@@ -331,7 +338,7 @@
         // <summary>
         /// 鍏ュ簱鐢宠
         /// </summary>
-        public WebResponseContent YLPurchaseBoxing(string palletCode)
+        public WebResponseContent YLPurchaseBoxing(string palletCode, decimal weight = 0, decimal thickness = 0, decimal wide = 0,string stationCode="")
         {
             WebResponseContent? content = new WebResponseContent();
             try
@@ -341,7 +348,7 @@
                 {
                     return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃");
                 }
-                string responseStr = HttpHelper.Get($"{address}/api/Task/YLPurchaseBoxing?palletCode={palletCode}");
+                string responseStr = HttpHelper.Get($"{address}/api/Task/YLPurchaseBoxing?palletCode={palletCode}&weight={weight}&thickness={thickness}&wide={wide}&stationCode={stationCode}");
                 WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
 
                 content = responseContent;
@@ -458,42 +465,64 @@
             }
             return content;
         }
+        public WebResponseContent MESBoxCodeNotice(string boxCode)
+        {
+            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/Mes/MESBoxCodeNotice?boxCode={boxCode}");
+                return content.OK(responseStr);
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error(ex.Message);
+            }
+            return content;
+        }
+        public WebResponseContent MESAvgArriveNotice(RequestAGVArriveDTO requestAGVArriveDTO)
+        {
+            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/Mes/MESAvgArriveNotice", requestAGVArriveDTO.Serialize());
+                return content.OK(responseStr);
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error(ex.Message);
+            }
+            return content;
+        }
+        public WebResponseContent CPEmptyInbound(string palletCode,string SourceAddress)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                string address = AppSettings.Get("WMSApiAddress");
+                if (string.IsNullOrEmpty(address))
+                {
+                    return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃");
+                }
+                var result = HttpHelper.Get($"{address}/api/Task/EmptyBackTask?barCode={palletCode}&startPoint={SourceAddress}");
 
-        /// <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();
-        //    try
-        //    {
-        //        string address = AppSettings.Get("WMSApiAddress");
-        //        if (string.IsNullOrEmpty(address))
-        //        {
-        //            return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃");
-        //        }
-        //        string responseStr = HttpHelper.Get($"{address}/api/Task/DeviceRequestInboundTask?stationCode={sourceAddress}&roadwayNo={roadway}&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;
-        //}
+                content = JsonConvert.DeserializeObject<WebResponseContent>(result);
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error(ex.Message);
+            }
+            return content;
+        }
 
         /// <summary>
         /// 鍚慦MS鐢宠鍒嗛厤璐т綅
@@ -506,6 +535,26 @@
             string address = AppSettings.Get("WMSApiAddress");
             if (string.IsNullOrEmpty(address)) throw new Exception("鏈壘鍒癢MSApi鍦板潃");
             string responseStr = HttpHelper.Get($"{address}/api/Task/AssignInboundTaskLocation?taskNum={taskNum}&roadwayNo={roadwayNo}");
+
+            WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
+            if (responseContent != null && responseContent.Status && responseContent.Data != null)
+            {
+                return responseContent.Data.ToString();
+            }
+
+            return "";
+        }
+        /// <summary>
+        /// 鍚慦MS鐢宠鍑哄簱AGV缁堢偣
+        /// </summary>
+        /// <param name="taskNum">浠诲姟鍙�</param>
+        /// <returns></returns>
+        /// <exception cref="Exception"></exception>
+        public string? RequestTargetAddress(int taskNum)
+        {
+            string address = AppSettings.Get("WMSApiAddress");
+            if (string.IsNullOrEmpty(address)) throw new Exception("鏈壘鍒癢MSApi鍦板潃");
+            string responseStr = HttpHelper.Get($"{address}/api/Task/AssignOutTargetAddress?taskNum={taskNum}");
 
             WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
             if (responseContent != null && responseContent.Status && responseContent.Data != null)
@@ -606,7 +655,7 @@
                 task.ModifyDate = DateTime.Now;
                 BaseDal.UpdateData(task);
 
-                _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, task.ExceptionMessage);
+                _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskNum, task.ExceptionMessage);
 
                 content = WebResponseContent.Instance.OK();
             }
@@ -648,7 +697,7 @@
 
                 BaseDal.UpdateData(task);
 
-                _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"浜哄伐鎭㈠鎸傝捣浠诲姟,鎭㈠鎸傝捣鏃朵换鍔$姸鎬併�恵task.TaskState}銆�");
+                _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskNum, $"浜哄伐鎭㈠鎸傝捣浠诲姟,鎭㈠鎸傝捣鏃朵换鍔$姸鎬併�恵task.TaskState}銆�");
 
                 content = WebResponseContent.Instance.OK();
             }
@@ -689,7 +738,7 @@
 
                 BaseDal.UpdateData(task);
 
-                _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"浜哄伐灏嗕换鍔$姸鎬佷粠銆恵oldState}銆戝洖婊氬埌銆恵task.TaskState}銆�");
+                _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskNum, $"浜哄伐灏嗕换鍔$姸鎬佷粠銆恵oldState}銆戝洖婊氬埌銆恵task.TaskState}銆�");
 
                 content = WebResponseContent.Instance.OK();
             }
@@ -700,35 +749,7 @@
             return content;
         }
 
-        public WebResponseContent SendSecureReplyToAgv(int taskNum)
-        {
-            try
-            {
-                Dt_Task WaitToTask = BaseDal.QueryFirst(x => x.TaskState == TaskStatusEnum.AGV_WaitToExecute.ObjToInt() && x.TaskNum == taskNum);
-                AgvSecureReplyDTO replyDTO = new AgvSecureReplyDTO()
-                {
-                    ReqCode = Guid.NewGuid().ToString().Replace("-", ""), //WaitToTask.TaskNum.ToString(),
-                    taskCode = WaitToTask.AgvTaskNum,
-                };
-                WebResponseContent content = AgvSecureReply(replyDTO);
-                if (content.Status)
-                {
-                    WaitToTask.TaskState = TaskStatusEnum.AGV_Executing.ObjToInt();
-                }
-                else
-                {
-                    WaitToTask.TaskState = TaskStatusEnum.Exception.ObjToInt();
-                    WaitToTask.ExceptionMessage = content.Message;
-                }
-                UpdateData(WaitToTask);
-
-                return WebResponseContent.Instance.OK();
-            }
-            catch (Exception ex)
-            {
-                return WebResponseContent.Instance.Error(ex.Message);
-            }
-        }
+        
         /// <summary>
         /// //鍒ゆ柇绉诲簱璐т綅浠诲姟鏄惁宸插瓨鍦紝濡傚瓨鍦ㄥ厛鎵ц
         /// </summary>
@@ -761,7 +782,7 @@
 
         public Dt_Task QueryBarCodeAGVFinishTask(int TaskNum, string currentAddress)
         {
-            return BaseDal.QueryFirst(x => TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskStatusEnum.AGV_Finish && x.NextAddress == currentAddress && x.TaskNum == TaskNum, TaskOrderBy);
+            return BaseDal.QueryFirst(x => TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskStatusEnum.AGV_Finish && x.CurrentAddress == currentAddress && x.TaskNum == TaskNum, TaskOrderBy);
         }
 
         public Dt_Task QueryExecutingTaskByBarcode(int TaskNum, string nextAddress)
@@ -784,8 +805,14 @@
                 {
                     if (task.TaskState == (int)TaskStatusEnum.SC_Executing)
                     {
+                        Dt_Router router = _routerRepository.QueryFirst(x => x.InOutType == task.TaskType && x.StartPosi == stationManger.StationCode && x.ChildPosi == stationManger.StationDeviceCode);
+                        if (router == null)
+                        {
+                            UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒拌矾鐢变俊鎭�,{task.NextAddress}");
+                            return WebResponseContent.Instance.Error($"鏈壘鍒拌矾鐢变俊鎭�,{task.NextAddress}");
+                        }
                         task.CurrentAddress = task.NextAddress;
-                        task.NextAddress = task.TargetAddress;
+                        task.NextAddress = router.NextPosi;
                         task.TaskState = (int)TaskStatusEnum.Line_Executing;
                         nextStatus = TaskStatusEnum.Line_Executing;
                     }
@@ -801,7 +828,7 @@
                     {
                         #region 鍏ュ簱璋冪敤鎺ュ彛鑾峰彇璐т綅鍦板潃
                         string? local = RequestAssignLocation(task.TaskNum, task.Roadway);
-                        //string? local = "SC05_YLDual-002-090-009-01";
+                        //string? local = "SC03_YLDual-002-090-001-01";
                         if (!string.IsNullOrEmpty(local))
                         {
                             task.CurrentAddress = stationManger.StackerCraneStationCode;
@@ -821,11 +848,11 @@
                     else if (task.TaskState == (int)TaskStatusEnum.AGV_Finish)
                     {
                         content = AssignYLRoadwayNo(task.PalletCode);
-                        //content.OK(data: "SC05_YLDual");
                         if (!content.Status)
                         {
                             return content.Error($"璇锋眰鍏ュ簱澶辫触锛歿content.Message}");
                         }
+                        //string roadWay = "SC03_YLDual";
                         string roadWay = content.Data.ToString();
 
                         List<Dt_Router> routers = _routerRepository.QueryData(x => x.InOutType == task.TaskType && task.CurrentAddress == x.StartPosi && x.ChildPosiDeviceCode == roadWay);

--
Gitblit v1.9.3