From 79a7c2707011902ec4df62ed8a285fa2029a1782 Mon Sep 17 00:00:00 2001
From: 刘磊 <1161824510@qq.com>
Date: 星期二, 24 十二月 2024 10:09:23 +0800
Subject: [PATCH] 1

---
 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs |  130 ++++++++++++++++++++++++++++---------------
 1 files changed, 84 insertions(+), 46 deletions(-)

diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
index bfa2c3b..f18b745 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -1,5 +1,4 @@
-锘�
-using AutoMapper;
+锘縰sing AutoMapper;
 using HslCommunication;
 using Mapster;
 using Microsoft.AspNetCore.Components.Routing;
@@ -76,76 +75,110 @@
         /// <returns>杩斿洖澶勭悊缁撴灉</returns>
         public WebResponseContent ReceiveWMSTask([NotNull] List<WMSTaskDTO> taskDTOs)
         {
+            // 鍒涘缓涓�涓猈ebResponseContent瀵硅薄鐢ㄤ簬瀛樺偍杩斿洖缁撴灉
             WebResponseContent content = new WebResponseContent();
             try
             {
+                // 鍒涘缓涓�涓狣t_Task绫诲瀷鐨勫垪琛ㄧ敤浜庡瓨鍌ㄨ浆鎹㈠悗鐨勪换鍔℃暟鎹�
                 List<Dt_Task> tasks = new List<Dt_Task>();
+                // 閬嶅巻浼犲叆鐨刉MSTaskDTO鍒楄〃
                 foreach (var item in taskDTOs)
                 {
+                    // 鏌ヨ鏁版嵁搴撲腑鏄惁瀛樺湪鐩稿悓浠诲姟缂栧彿鎴栨墭鐩樼爜鐨勪换鍔★紝濡傛灉瀛樺湪鍒欒烦杩囧綋鍓嶅惊鐜�
                     if (BaseDal.QueryFirst(x => x.TaskNum == item.TaskNum || x.PalletCode == item.PalletCode) != null)
                     {
                         continue;
                     }
+                    // 灏哤MSTaskDTO瀵硅薄鏄犲皠涓篋t_Task瀵硅薄
                     Dt_Task task = _mapper.Map<Dt_Task>(item);
+                    // 璁剧疆浠诲姟鐨勫垱寤鸿�呬负"WMS"
                     task.Creater = "WMS";
+                    // 鍒ゆ柇浠诲姟绫诲瀷鏄惁涓哄嚭搴撲换鍔�
                     if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
                     {
-                        if (task.TargetAddress == "002-021-001")
+                        // 鍒ゆ柇浠诲姟鐩爣鍦板潃鍜岃矾寰勬槸鍚︽弧瓒崇壒瀹氭潯浠�
+                        if (task.TargetAddress == "002-021-001" && task.Roadway.Contains("JZ") && task.TaskType == (int)TaskOutboundTypeEnum.OutTray)
                         {
+                            // 璁剧疆浠诲姟鐘舵�佷负鍑哄簱鏂板缓
                             task.TaskState = (int)TaskOutStatusEnum.OutNew;
+                            // 璁剧疆褰撳墠鍦板潃涓烘簮鍦板潃
                             task.CurrentAddress = item.SourceAddress;
+                            // 璁剧疆涓嬩竴涓湴鍧�涓虹洰鏍囧湴鍧�
+                            task.NextAddress = item.TargetAddress;
                         }
                         else
                         {
+                            // 鏌ヨ涓嬩竴涓矾鐢�
                             List<Dt_Router> routers = _routerService.QueryNextRoutes(item.RoadWay, item.TargetAddress);
                             if (routers.Count > 0)
                             {
+                                // 璁剧疆浠诲姟鐘舵�佷负鍑哄簱鏂板缓
                                 task.TaskState = (int)TaskOutStatusEnum.OutNew;
+                                // 璁剧疆褰撳墠鍦板潃涓烘簮鍦板潃
                                 task.CurrentAddress = item.SourceAddress;
+                                // 璁剧疆涓嬩竴涓湴鍧�涓虹涓�涓瓙浣嶇疆
                                 task.NextAddress = routers.FirstOrDefault().ChildPosi;
                             }
                             else
                             {
+                                // 鏌ヨ浠庢簮鍦板潃鍒扮洰鏍囧湴鍧�鐨勮矾鐢�
                                 routers = _routerService.QueryNextRoutes(item.SourceAddress, item.TargetAddress);
                                 if (routers.Count > 0)
                                 {
+                                    // 璁剧疆浠诲姟鐘舵�佷负鍑哄簱瀹屾垚
                                     task.TaskState = (int)TaskOutStatusEnum.SC_OutFinish;
+                                    // 璁剧疆褰撳墠鍦板潃涓烘簮鍦板潃
                                     task.CurrentAddress = item.SourceAddress;
+                                    // 璁剧疆涓嬩竴涓湴鍧�涓虹涓�涓瓙浣嶇疆
                                     task.NextAddress = routers.FirstOrDefault().ChildPosi;
                                 }
                             }
                         }
                     }
+                    // 鍒ゆ柇浠诲姟绫诲瀷鏄惁涓哄叆搴撲换鍔�
                     else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
                     {
-                        if (task.SourceAddress == "1359-4")
+                        // 鍒ゆ柇婧愬湴鍧�鏄惁涓嶇瓑浜�"1359-4"
+                        if (task.SourceAddress != "1359-4")
                         {
-                            task.TaskState = (int)TaskInStatusEnum.InNew;
-                            task.CurrentAddress = item.SourceAddress;
-                        }
-                        else
-                        {
+                            // 鏌ヨ浠庢簮鍦板潃鍒扮洰鏍囧湴鍧�鐨勮矾鐢�
                             List<Dt_Router> routers = _routerService.QueryNextRoutes(item.SourceAddress, item.TargetAddress);
                             if (routers.Count > 0)
                             {
+                                // 璁剧疆浠诲姟鐘舵�佷负鍏ュ簱鏂板缓
                                 task.TaskState = (int)TaskInStatusEnum.InNew;
+                                // 璁剧疆褰撳墠鍦板潃涓烘簮鍦板潃
                                 task.CurrentAddress = item.SourceAddress;
+                                // 璁剧疆涓嬩竴涓湴鍧�涓虹涓�涓瓙浣嶇疆
                                 task.NextAddress = routers.FirstOrDefault().ChildPosi;
                             }
                         }
+                        else
+                        {
+                            // 璁剧疆褰撳墠鍦板潃涓�"002-021-001"
+                            task.CurrentAddress = "002-021-001";
+                            // 璁剧疆涓嬩竴涓湴鍧�涓虹洰鏍囧湴鍧�
+                            task.NextAddress = item.TargetAddress;
+                        }
                     }
+                    // 灏嗚浆鎹㈠悗鐨勪换鍔℃坊鍔犲埌浠诲姟鍒楄〃涓�
                     tasks.Add(task);
                 }
+                // 灏嗕换鍔″垪琛ㄦ坊鍔犲埌鏁版嵁搴撲腑
                 BaseDal.AddData(tasks);
 
+                // 娣诲姞浠诲姟鎵ц璇︽儏
                 _taskExecuteDetailService.AddTaskExecuteDetail(tasks.Select(x => x.TaskNum).ToList(), "鎺ユ敹WMS浠诲姟");
 
+                // 璁剧疆杩斿洖缁撴灉涓烘垚鍔�
                 content = WebResponseContent.Instance.OK("鎴愬姛");
             }
             catch (Exception ex)
             {
+                // 鎹曡幏寮傚父骞惰缃繑鍥炵粨鏋滀负閿欒淇℃伅
                 content = WebResponseContent.Instance.Error($"浠诲姟鎺ユ敹閿欒,閿欒淇℃伅:{ex.Message}");
             }
+            // 杩斿洖缁撴灉
             return content;
         }
 
@@ -166,14 +199,16 @@
                     return content.OK("褰撳墠鎵樼洏瀛樺湪浠诲姟");
                 }
 
-                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.RequestTask)?.ConfigValue;
-                if (wmsBase == null || requestTask == null)
+                var wmsIpAddrss = string.Empty;
+                var stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == sourceAddress);
+                if (stationManager.stationType == 5)
                 {
-                    throw new InvalidOperationException("WMS IP 鏈厤缃�");
+                    wmsIpAddrss = GetIpAddress(SysConfigKeyConst.WMSIP_BASE, SysConfigKeyConst.RequestInBoundTaskNG);
                 }
-                var wmsIpAddrss = wmsBase + requestTask;
+                else
+                {
+                    wmsIpAddrss = GetIpAddress(SysConfigKeyConst.WMSIP_BASE, SysConfigKeyConst.RequestTask);
+                }
 
                 var result = await HttpHelper.PostAsync(wmsIpAddrss, new { Position = sourceAddress, PalletCode = palletCode }.ToJsonString());
                 content = JsonConvert.DeserializeObject<WebResponseContent>(result);
@@ -192,8 +227,7 @@
                     _Task.TaskState = (int)TaskInStatusEnum.InNew;
                     _Task.CurrentAddress = task.SourceAddress;
                     _Task.NextAddress = station.stationNGChildCode;
-                    _Task.TargetAddress = station.stationNGLocation;
-                    _Task.Roadway = station.Roadway;
+                    _Task.TargetAddress = task.TargetAddress;
 
                     BaseDal.AddData(_Task);
                     _taskExecuteDetailService.AddTaskExecuteDetail(_Task.TaskNum, "鎺ユ敹WMS浠诲姟");
@@ -218,7 +252,7 @@
         /// <returns></returns>
         public Dt_Task QueryConveyorLineTask(string deviceNo, 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);
+            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>
@@ -229,7 +263,7 @@
         /// <returns></returns>
         public Dt_Task QueryNextConveyorLineTask(string deviceNo, 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.NextAddress == currentAddress, TaskOrderBy);
+            return BaseDal.QueryFirst(x => ((TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew) || (TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish)) && x.NextAddress == currentAddress, TaskOrderBy);
         }
 
         /// <summary>
@@ -240,7 +274,7 @@
         /// <returns></returns>
         public Dt_Task QueryBarCodeConveyorLineTask(string Barcode, 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 && x.PalletCode == Barcode, TaskOrderBy);
+            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 && x.PalletCode == Barcode, TaskOrderBy);
         }
 
         /// <summary>
@@ -265,11 +299,16 @@
             return BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.CurrentAddress == currentAddress && (x.TaskState == (int)TaskInStatusEnum.Line_InFinish || x.TaskState == (int)TaskOutStatusEnum.Line_OutFinish), TaskOrderBy);
         }
 
+        /// <summary>
+        /// 鏍规嵁鎵樼洏鍙枫�佸綋鍓嶅湴鍧�鏌ヨ浠诲姟
+        /// </summary>
+        /// <param name="taskNum">浠诲姟鍙�</param>
+        /// <param name="currentAddress">褰撳墠鍦板潃</param>
+        /// <returns></returns>
         public Dt_Task QueryBarcodeTask(string barcode, string currentAddress)
         {
             return BaseDal.QueryFirst(x => x.PalletCode == barcode && x.CurrentAddress == currentAddress, TaskOrderBy);
         }
-
 
         /// <summary>
         /// 鏍规嵁浠诲姟鍙枫�佸綋鍓嶅湴鍧�鏌ヨ杈撻�佺嚎鏂板缓鐨勪换鍔�
@@ -291,7 +330,7 @@
         public Dt_Task? QuertStackerCraneTask(string deviceNo, TaskTypeGroup? taskTypeGroup = null)
         {
             if (taskTypeGroup == null)
-                return BaseDal.QueryFirst(x => x.Roadway == deviceNo && (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew), TaskOrderBy);
+                return BaseDal.QueryFirst(x => x.Roadway == deviceNo && ((TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish) || (TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew)), TaskOrderBy);
             if (taskTypeGroup.Value == TaskTypeGroup.InboundGroup)
                 return BaseDal.QueryFirst(x => x.Roadway == deviceNo && TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish, TaskOrderBy);
             if (taskTypeGroup.Value == TaskTypeGroup.OutbondGroup)
@@ -308,9 +347,9 @@
         public Dt_Task QueryStackerCraneTask(string deviceNo, string currentAddress = "")
         {
             if (string.IsNullOrEmpty(currentAddress))
-                return BaseDal.QueryFirst(x => x.Roadway == deviceNo && (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew), TaskOrderBy);
+                return BaseDal.QueryFirst(x => x.Roadway == deviceNo && ((TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish) || (TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew)), TaskOrderBy);
             else
-                return BaseDal.QueryFirst(x => x.Roadway == deviceNo && x.CurrentAddress == currentAddress && (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew), TaskOrderBy);
+                return BaseDal.QueryFirst(x => x.Roadway == deviceNo && x.CurrentAddress == currentAddress && ((TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish) || (TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew)), TaskOrderBy);
         }
 
         /// <summary>
@@ -472,8 +511,8 @@
 
                     if (task.TaskState == (int)TaskInStatusEnum.Line_InFinish)
                     {
-
                         #region 鍏ュ簱璋冪敤鎺ュ彛鑾峰彇璐т綅鍦板潃
+
                         // TODO: 璋冪敤鎺ュ彛鑾峰彇璐т綅鍦板潃
                         // 鍒涘缓璇锋眰瀵硅薄
                         var taskDto = new RequestTaskDto()
@@ -509,12 +548,11 @@
                         task.CurrentAddress = task.NextAddress;
                         task.NextAddress = taskResult.TargetAddress;
                         task.TargetAddress = task.NextAddress;
-                        #endregion
 
+                        #endregion 鍏ュ簱璋冪敤鎺ュ彛鑾峰彇璐т綅鍦板潃
                     }
                     else if (task.TaskState == (int)TaskInStatusEnum.SC_InFinish)
                     {
-
                         task.ModifyDate = DateTime.Now;
                         task.Modifier = "System";
 
@@ -541,7 +579,8 @@
 
                 _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, App.User.UserId > 0 ? $"浜哄伐鎵嬪姩灏嗕换鍔$姸鎬佷粠銆恵oldState}銆戣烦杞埌銆恵task.TaskState}銆�" : $"绯荤粺鑷姩娴佺▼锛屼换鍔$姸鎬佷粠銆恵oldState}銆戣浆鍒般�恵task.TaskState}銆�");
 
-                #region  鏇存柊浠诲姟鐘舵��
+                #region 鏇存柊浠诲姟鐘舵��
+
                 // 鑾峰彇WMSip鍦板潃
                 var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
                 var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
@@ -554,7 +593,8 @@
 
                 var result = HttpHelper.PostAsync(wmsIpAddress, new { TaskNum = task.TaskNum, TaskState = task.TaskState }.ToJsonString()).Result;
                 content = JsonConvert.DeserializeObject<WebResponseContent>(result);
-                #endregion
+
+                #endregion 鏇存柊浠诲姟鐘舵��
 
                 content = WebResponseContent.Instance.OK();
             }
@@ -614,6 +654,7 @@
                 if (task == null) return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�");
 
                 #region WMS鍚屾浠诲姟瀹屾垚
+
                 var keys = new Dictionary<string, object>()
                 {
                     {"taskNum", taskNum}
@@ -640,7 +681,8 @@
                     }
                 }
                 task.ExceptionMessage += "   " + content.Message;
-                #endregion
+
+                #endregion WMS鍚屾浠诲姟瀹屾垚
 
                 if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup && task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting)
                 {
@@ -678,7 +720,6 @@
                         _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴�");
                     }
 
-
                     //鏆備笉鑰冭檻澶氫釜鍑哄簱鍙�
                 }
                 else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup && task.TaskState == (int)TaskInStatusEnum.SC_InExecuting)
@@ -707,21 +748,6 @@
                 {
                     throw new Exception($"浠诲姟绫诲瀷閿欒,鏈壘鍒拌浠诲姟绫诲瀷,浠诲姟鍙�:銆恵taskNum}銆�,浠诲姟绫诲瀷:銆恵task.TaskType}銆�");
                 }
-
-
-                #region  鏇存柊浠诲姟鐘舵��
-
-                //var updateTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.UpdateTask)?.ConfigValue;
-                //if (wmsBase == null || updateTask == null)
-                //{
-                //    throw new InvalidOperationException("WMS IP 鏈厤缃�");
-                //}
-                //wmsIpAddress = wmsBase + updateTask;
-
-                //result = HttpHelper.PostAsync(wmsIpAddress, new { TaskNum = task.TaskNum, TaskState = task.TaskState }.ToJsonString()).Result;
-                //content = JsonConvert.DeserializeObject<WebResponseContent>(result);
-                #endregion
-                //content = WebResponseContent.Instance.OK();
             }
             catch (Exception ex)
             {
@@ -829,5 +855,17 @@
         {
             return BaseDal.QueryFirst(x => x.PalletCode == barcode && x.NextAddress == nextAddress && (x.TaskState == (int)TaskInStatusEnum.Line_InExecuting || x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting), TaskOrderBy);
         }
+
+        private string GetIpAddress(string baseIp, string name)
+        {
+            var configz = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
+            var wcsBasez = configz.Where(x => x.ConfigKey == baseIp).FirstOrDefault()?.ConfigValue;
+            var address = configz.Where(x => x.ConfigKey == name).FirstOrDefault()?.ConfigValue;
+            if (wcsBasez == null || address == null)
+            {
+                throw new InvalidOperationException("WMS IP 鏈厤缃�");
+            }
+            return wcsBasez + address;
+        }
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3