From 1dce8a2ad238624ea832e0418557b4a5b53dce23 Mon Sep 17 00:00:00 2001
From: yanjinhui <3306209981@qq.com>
Date: 星期一, 13 四月 2026 17:44:55 +0800
Subject: [PATCH] 添加仓库的启用禁用状态,优化修改分区接口,优化提升机job,添加海康仓位到仓位接口

---
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/WMS/UpLocationStatusDTO.cs          |   29 +++
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs        |    8 +
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs         |   11 +
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TSJJob.cs                         |    7 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/WMS/WMSController.cs |   13 +
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs       |   64 +++++++
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs          |  286 ++++++++++++++++++++++++++++++++++-
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs        |   38 ++++
 8 files changed, 434 insertions(+), 22 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs"
index b8f6aef..b30cced 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs"
@@ -102,11 +102,20 @@
         /// </summary>
         [Description("鎻愬崌鏈哄埌绾胯竟")]
         F03,
+
         /// <summary>
         /// 绾胯竟鍒板簱鍐�
         /// </summary>
         [Description("绾胯竟鍒板簱鍐�")]
-        STURR
+        STURR,
+
+        /// <summary>
+        /// 浠撲綅鍒颁粨浣�
+        /// </summary>
+        [Description("浠撲綅鍒颁粨浣�")]
+        STUPTBY
+
+
     }
 
     public enum TaskInboundTypeEnum
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/WMS/UpLocationStatusDTO.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/WMS/UpLocationStatusDTO.cs"
new file mode 100644
index 0000000..7093b05
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/WMS/UpLocationStatusDTO.cs"
@@ -0,0 +1,29 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_DTO.WMS
+{
+    public class UpLocationStatusDTO
+    {
+
+        /// <summary>
+        /// 浠撳簱id
+        /// </summary>
+        public int WarehouseId { get; set; }
+
+
+        /// <summary>
+        /// 绂佺敤鐘舵�侊紙0 鍚敤锛�3 绂佺敤锛�
+        /// </summary>
+        public int EnableStatus { get; set; }
+
+
+        /// <summary>
+        /// 璐т綅缂栧彿鍒楄〃
+        /// </summary>
+        public string[] LocationNubList { get; set; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs"
index 85254e7..807210b 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs"
@@ -318,5 +318,13 @@
         /// <param name="wMSUpOrDown"></param>
         /// <returns></returns>
         WebResponseContent UpOrDownContainer(WMSUpOrDownContainerDTO wMSUpOrDown);
+
+
+        /// <summary>
+        /// 鏇存柊浠撳簱搴撲綅鐘舵�侊紝鍚敤绂佺敤
+        /// </summary>
+        /// <param name="upLocationStatusDTO"></param>
+        /// <returns></returns>
+        WebResponseContent UpLocationStatus(UpLocationStatusDTO upLocationStatusDTO);
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/WMS/WMSController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/WMS/WMSController.cs"
index 2a8e5c3..4476a15 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/WMS/WMSController.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/WMS/WMSController.cs"
@@ -117,5 +117,18 @@
             WebResponseContent content = _taskService.LocationInquiry(getLocationInfo);
             return WMSReturnMethod.ReturnWMS(content);
         }
+
+
+        /// <summary>
+        /// 鏇存柊涓嶅悓浠撳簱鐨勫簱浣嶇姸鎬侊紝绂佺敤鍚敤
+        /// </summary>
+        /// <param name="upLocationStatusDTO"></param>
+        /// <returns></returns>
+        [HttpGet, HttpPost, Route("UpLocationStatus"), AllowAnonymous]
+        public WMSReturn UpLocationStatus([FromBody]UpLocationStatusDTO upLocationStatusDTO)
+        {
+            WebResponseContent content = _taskService.UpLocationStatus(upLocationStatusDTO);
+            return WMSReturnMethod.ReturnWMS(content);
+        }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs"
index cfce8e7..e978596 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs"
@@ -34,6 +34,10 @@
             try
             {
                 Dt_HKLocationInfo? hKLocationInfo = null;
+                if (taskType==(int)TaskTypeEnum.STURR)
+                {
+                    var reslut=_stationInfo.Repository.QueryFirst(x=>x.StationCode==taskDTO.fromLocationCode) ?? throw new Exception($"鏈壘鍒拌捣鐐硅揣浣嶃�恵taskDTO.fromLocationCode}銆�");
+                }
                 #region 鐐瑰埌鐐�
                 if (!string.IsNullOrEmpty(taskDTO.toLocationCode))
                 {
@@ -126,12 +130,20 @@
             WebResponseContent content = new WebResponseContent();
             try
             {
+                //4妤煎簱鍐呭埌鎻愬崌鏈�
                 Dt_HKLocationInfo? hKLocationInfo = _hKLocationInfoService.Repository.QueryFirst(x => x.LocationCode == taskDTO.fromLocationCode) ?? throw new Exception($"鏈壘鍒拌捣鐐瑰簱浣嶃�恵taskDTO.fromLocationCode}銆戯紒");
                 if (hKLocationInfo.LocationStatus != LocationStatusEnum.InStock.ObjToInt()) throw new Exception($"璧风偣搴撲綅銆恵taskDTO.fromLocationCode}銆戝綋鍓嶅簱浣嶇姸鎬佷笉鍙嚭搴擄紒");
                 if (hKLocationInfo.PalletCode != taskDTO.containerCode) throw new Exception($"璧风偣搴撲綅銆恵taskDTO.fromLocationCode}銆戠粦瀹氭枡绠卞彿銆恵hKLocationInfo.PalletCode}銆戜笌浠诲姟鏂欑鍙枫�恵taskDTO.containerCode}銆戜笉鍖归厤锛�");
-                //搴撳唴鍒板簱澶栫殑鐐瑰埌鐐逛换鍔★紝鏄惁闇�瑕佸垽鏂揣浣嶇姸鎬侊紵
-
-                Dt_Task dt_Task = new Dt_Task()
+                //搴撳唴鍒扮幇杈圭殑鐐瑰埌鐐逛换鍔★紝鏄惁闇�瑕佸垽鏂揣浣嶇姸鎬侊紵
+                if (taskType == (int)TaskTypeEnum.STU0003)
+                {
+                    var reslut = _stationInfo.Repository.QueryFirst(x => x.StationCode == taskDTO.toLocationCode) ?? throw new Exception($"鏈壘鍒扮粓鐐硅揣浣嶃�恵taskDTO.fromLocationCode}銆�");
+                    if (reslut.StationStatus != (int)LocationStatusEnum.Free)
+                    {
+                        throw new Exception($"缁堢偣绔欏彴銆恵taskDTO.toLocationCode}銆戠姸鎬佷笉涓虹┖闂诧紒");
+                    }
+                }
+                    Dt_Task dt_Task = new Dt_Task()
                 {
                     TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
                     WMSTaskNum = taskDTO.taskCode,
@@ -352,6 +364,26 @@
                             hIKROBOTTaskSubmit.targetRoute.Add(targetRoute);
                         }
                         break;
+                    case TaskTypeEnum.STUPTBY:
+                        {
+                            TargetRouteDto target = new TargetRouteDto()
+                            {
+                                code = task.CurrentAddress,
+                                operation = "DELIVERY",//鍙栬揣
+                                seq = 0,
+                                type = "STORAGE",
+                            };
+                            TargetRouteDto targetRoute = new TargetRouteDto()
+                            {
+                                code = task.NextAddress,
+                                operation = "DELIVERY",//閫佽揣
+                                seq = 1,
+                                type = "STORAGE",
+                            };
+                            hIKROBOTTaskSubmit.targetRoute.Add(target);
+                            hIKROBOTTaskSubmit.targetRoute.Add(targetRoute);
+                        }
+                        break;
                     case TaskTypeEnum.CPMoveInventory:
                         break;
                     default:
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs"
index 414b79d..79e5094 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs"
@@ -214,12 +214,12 @@
                 //鍏ュ簱 鍒颁竴妤间笁涓珯鍙扮殑浣嶇疆
                 if (taskType == (int)TaskTypeEnum.Q3RK)//6-1妤�
                 {
-                    var  ionInfo = _stationMangerService.Repository.QueryFirst(x => x.StationCode == taskDTO.toLocationCode) ?? throw new Exception($"鏈壘鍒扮粓鐐圭珯鍙般�恵taskDTO.toLocationCode}銆戯紒");
-                    var StationInfo = _stationInfo.Repository.QueryFirst(x => x.StationCode == taskDTO.fromLocationCode ) ?? throw new Exception($"鏈壘鍒皗taskDTO.fromLocationCode}璧风偣璐т綅");
+                    var ionInfo = _stationMangerService.Repository.QueryFirst(x => x.StationCode == taskDTO.toLocationCode) ?? throw new Exception($"鏈壘鍒扮粓鐐圭珯鍙般�恵taskDTO.toLocationCode}銆戯紒");
+                    var StationInfo = _stationInfo.Repository.QueryFirst(x => x.StationCode == taskDTO.fromLocationCode) ?? throw new Exception($"鏈壘鍒皗taskDTO.fromLocationCode}璧风偣璐т綅");
                     if (StationInfo.PalletCode != taskDTO.containerCode) throw new Exception($"璧风偣搴撲綅銆恵taskDTO.fromLocationCode}銆戠粦瀹氭枡绠卞彿銆恵StationInfo.PalletCode}銆戜笌浠诲姟鏂欑鍙枫�恵taskDTO.containerCode}銆戜笉鍖归厤锛�");
                     if (StationInfo.StationStatus != (int)LocationStatusEnum.InStock) throw new Exception($"璧风偣搴撲綅銆恵taskDTO.fromLocationCode}銆戝綋鍓嶇姸鎬佷笉鍙互鍑哄簱");
                     if (StationInfo.FloorNumber != "FF") throw new Exception($"銆恵taskDTO.fromLocationCode}銆戠殑妤煎眰鍜屼换鍔$被鍨嬫ゼ灞備笉鍖归厤");
-                   
+
                     dt_Task = new Dt_Task()
                     {
                         TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
@@ -245,7 +245,7 @@
 
                     var ionInfo = _stationMangerService.Repository.QueryFirst(x => x.StationCode == taskDTO.fromLocationCode) ?? throw new Exception($"鏈壘鍒拌捣鐐圭珯鍙般�恵taskDTO.fromLocationCode}銆戯紒");
                     if (ionInfo.Remark != taskDTO.containerCode) throw new Exception($"璧风偣绔欏彴銆恵taskDTO.fromLocationCode}銆戠粦瀹氭枡绠卞彿銆恵ionInfo.Remark}銆戜笌浠诲姟鏂欑鍙枫�恵taskDTO.containerCode}銆戜笉鍖归厤锛�");
-                    
+
                     dt_Task = new Dt_Task()
                     {
                         TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
@@ -297,14 +297,14 @@
             try
             {
                 #region 鏄惁闇�瑕佸垽鏂钩搴撳簱浣嶇姸鎬�
-               var reslut= ValidateLocationForTask(taskType,taskDTO);
+                var reslut = ValidateLocationForTask(taskType, taskDTO);
                 if (!reslut.Status)
                 {
                     throw new Exception(reslut.Message);
                 }
                 #endregion
 
-                 Dt_Task dt_Task = new Dt_Task()
+                Dt_Task dt_Task = new Dt_Task()
                 {
                     TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
                     WMSTaskNum = taskDTO.taskCode,
@@ -378,5 +378,57 @@
             return content;
         }
         #endregion
+
+
+
+        #region
+        /// <summary>
+        /// 娴峰悍浠撲綅鍒颁粨浣嶇殑杩愯緭浠诲姟
+        /// </summary>
+        /// <param name="taskDTO"></param>
+        /// <param name="taskType"></param>
+        /// <returns></returns>
+        public WebResponseContent HKSTUPTP(TaskDTO taskDTO, int taskType)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                var KLocationInfo = _hKLocationInfoService.Repository.QueryFirst(x => x.LocationCode == taskDTO.fromLocationCode) ?? throw new Exception($"鏈壘鍒拌捣鐐瑰簱浣嶃�恵taskDTO.fromLocationCode}銆戯紒");
+                if (KLocationInfo.LocationStatus != (int)LocationStatusEnum.InStock) throw new Exception($"璧风偣搴撲綅銆恵taskDTO.fromLocationCode}銆戝綋鍓嶅簱浣嶇姸鎬佷笉鏄湁璐э紒");
+                if (KLocationInfo.PalletCode != taskDTO.containerCode) throw new Exception($"褰撳墠搴撲綅銆恵taskDTO.fromLocationCode}銆戠粦瀹氭枡绠卞彿銆恵KLocationInfo.PalletCode}銆戜笌浠诲姟鐨勬枡绠卞彿銆恵taskDTO.containerCode}銆戜笉鍖归厤");
+
+
+                var KLocationInfo2 = _hKLocationInfoService.Repository.QueryFirst(x => x.LocationCode == taskDTO.toLocationCode) ?? throw new Exception($"鏈壘鍒扮粓鐐瑰簱浣嶃�恵taskDTO.toLocationCode}銆戯紒");
+                if (KLocationInfo2.LocationStatus != (int)LocationStatusEnum.Free) throw new Exception($"缁堢偣搴撲綅銆恵taskDTO.toLocationCode}銆戝綋鍓嶅簱浣嶇姸鎬佷笉鏄┖闂诧紒");
+
+                var dt_Task = new Dt_Task()
+                {
+                    TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
+                    WMSTaskNum = taskDTO.taskCode,
+                    //WMSId = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
+                    Grade = taskDTO.taskPriority,
+                    PalletCode = taskDTO.containerCode,
+                    Roadway = "1",
+                    TaskState = (int)TaskStatusEnum.New,
+                    TaskType = taskType,
+                    SourceAddress = taskDTO.fromLocationCode,
+                    CurrentAddress = taskDTO.fromLocationCode,
+                    NextAddress = taskDTO.toLocationCode,
+                    TargetAddress = taskDTO.toLocationCode,
+                    Creater = "WMS",
+                };
+                content = SendHIKROBOTTask(dt_Task);
+                if (!content.Status) throw new Exception(content.Message);
+                dt_Task.Dispatchertime = DateTime.Now;
+                BaseDal.AddData(dt_Task);
+            }
+            catch (Exception ex)
+            {
+
+                content.Error(ex.Message);
+            }
+            return content;
+        }
+        #endregion
     }
 }
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 505e820..a939d58 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"
@@ -198,6 +198,10 @@
                                 content = CJCarryTaske(task, item.taskType);
                                 objects.Add(content.Data);
                                 break;
+                            case (int)TaskTypeEnum.STUPTBY:
+                                content = HKSTUPTP(task, item.taskType);
+                                objects.Add(content.Data);
+                                break;
                             #endregion
                             default:
                                 objects.Add(new
@@ -388,7 +392,7 @@
                 bool isAGV = dt_Task.TaskType == (int)TaskTypeEnum.CPInbound || dt_Task.TaskType == (int)TaskTypeEnum.CPOutbound;
 
                 //娴峰悍
-                bool isHK = dt_Task.TaskType == (int)TaskTypeEnum.F01 || dt_Task.TaskType == (int)TaskTypeEnum.RK3F || dt_Task.TaskType == (int)TaskTypeEnum.CK3F || dt_Task.TaskType == (int)TaskTypeEnum.Q1TSJ4 || dt_Task.TaskType == (int)TaskTypeEnum.STU0003 || dt_Task.TaskType == (int)TaskTypeEnum.F02 || dt_Task.TaskType == (int)TaskTypeEnum.CHUKU1 || dt_Task.TaskType == (int)TaskTypeEnum.Q3RK || dt_Task.TaskType == (int)TaskTypeEnum.Q3CK;
+                bool isHK = dt_Task.TaskType == (int)TaskTypeEnum.F01 || dt_Task.TaskType == (int)TaskTypeEnum.RK3F || dt_Task.TaskType == (int)TaskTypeEnum.CK3F || dt_Task.TaskType == (int)TaskTypeEnum.Q1TSJ4 || dt_Task.TaskType == (int)TaskTypeEnum.STU0003 || dt_Task.TaskType == (int)TaskTypeEnum.F02 || dt_Task.TaskType == (int)TaskTypeEnum.CHUKU1 || dt_Task.TaskType == (int)TaskTypeEnum.Q3RK || dt_Task.TaskType == (int)TaskTypeEnum.Q3CK||dt_Task.TaskType == (int)TaskTypeEnum.STUPTBY;
                 //淇敼鍘熸湰浠诲姟浼樺厛绾�
                 dt_Task.Grade = updateTaskPriority.taskPriority;
                 #region 鍑箰澹�
@@ -452,11 +456,15 @@
                         initPriority = updateTaskPriority.taskPriority//浼樺厛绾�
                     };
                     Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(HIKROBOTTaskGrade));
-                    if (apiInfo == null) throw new Exception("鏈壘鍒板洓鍚戣溅AGV浠诲姟涓嬪彂鎺ュ彛閰嶇疆淇℃伅锛佽妫�鏌ユ帴鍙i厤缃�");
-                    string response = HttpHelper.Post(apiInfo.ApiAddress, Hkrequest.Serialize());
+                    if (apiInfo == null) throw new Exception("鏈壘鍒版捣搴稟GV浠诲姟涓嬪彂鎺ュ彛閰嶇疆淇℃伅锛佽妫�鏌ユ帴鍙i厤缃�");
+                    var headers = new Dictionary<string, string>
+                    {
+                        { "X-lr-request-id", DateTimeOffset.Now.ToUnixTimeSeconds().ToString() + dt_Task.WMSTaskNum }
+                    };
+                    string response = HttpHelper.Post(apiInfo.ApiAddress, Hkrequest.Serialize(), headers: headers);
                     HIKROBOTReturn hIKROBOTReturn = response.DeserializeObject<HIKROBOTReturn>();
                     content.OK(data: hIKROBOTReturn);
-                    if (hIKROBOTReturn.code == "SUCCESS0" && hIKROBOTReturn.message == "鎴愬姛")
+                    if (hIKROBOTReturn.code == "SUCCESS" && hIKROBOTReturn.message == "鎴愬姛")
                     {
                         BaseDal.UpdateData(dt_Task);
                         content.OK("淇敼{dt_Task.WMSTaskNum}浠诲姟浼樺厛绾ф垚鍔�", dt_Task);
@@ -514,7 +522,16 @@
                 var rgv = new List<Dt_RGVLocationInfo>();
                 var kls = new List<Dt_KLSLocationInfo>();
                 var hk = new List<Dt_HKLocationInfo>();
-                var pk = new List<Dt_StationInfo>();
+                List<Dt_StationInfo> pk = new List<Dt_StationInfo>();
+                if (wMSUpdateLocationArea==null)
+                {
+                    return content.Error("璇锋眰鍙傛暟涓嶈兘涓虹┖");
+                }
+                var validWarehouseIds = new[] { 1, 2, 3, 4 };
+                if (!validWarehouseIds.Contains(wMSUpdateLocationArea.WarehouseId))
+                {
+                    return content.Error($"鏃犳晥鐨勪粨搴揑D锛歿wMSUpdateLocationArea.WarehouseId}锛屾湁鏁堝�间负锛�1-鎴愬搧搴擄紝2-闈㈡枡搴擄紝3-璐у簱锛�4-瑁佸壀搴�");
+                }
                 if (wMSUpdateLocationArea.WarehouseId == 1)
                 {
                     var rgvList = _rGVLocationInfoService.Repository.QueryData(x => wMSUpdateLocationArea.LocationCodes.Contains(x.LocationCode)).ToList();
@@ -523,6 +540,7 @@
                         item.WarehouseId = wMSUpdateLocationArea.UpdateAreaCode.ObjToInt();
                     }
                     rgv.AddRange(rgvList);
+                    _rGVLocationInfoService.Repository.UpdateData(rgv);
                 }
                 if (wMSUpdateLocationArea.WarehouseId == 2)
                 {
@@ -533,6 +551,7 @@
                         item.WarehouseId = wMSUpdateLocationArea.UpdateAreaCode.ObjToInt();
                     }
                     kls.AddRange(KLSLocationInfoList);
+                    _kLSLocationInfoService.Repository.UpdateData(kls);
                 }
                 if (wMSUpdateLocationArea.WarehouseId == 3)
                 {
@@ -542,21 +561,18 @@
                         item.WarehouseId = wMSUpdateLocationArea.UpdateAreaCode.ObjToInt();
                     }
                     hk.AddRange(hkList);
+                    _hKLocationInfoService.Repository.UpdateData(hk);
                 }
                 if (wMSUpdateLocationArea.WarehouseId == 4)
                 {
                     var pkList = _stationInfo.Repository.QueryData(x => wMSUpdateLocationArea.LocationCodes.Contains(x.StationCode)).ToList();
-                    foreach (var item in pk)
+                    foreach (var item in pkList)
                     {
                         item.StationRegion = wMSUpdateLocationArea.UpdateAreaCode.ObjToInt();
                     }
                     pk.AddRange(pkList);
+                    _stationInfo.Repository.UpdateData(pk);
                 }
-                Db.Ado.BeginTran();
-                _rGVLocationInfoService.UpdateData(rgv);
-                _kLSLocationInfoService.UpdateData(kls);
-                _hKLocationInfoService.UpdateData(hk);
-                Db.Ado.CommitTran();
                 content.OK();
             }
             catch (Exception ex)
@@ -1596,5 +1612,253 @@
         }
 
 
+
+        /// <summary>
+        /// 鏇存柊搴撲綅鍚敤绂佺敤鐘舵��
+        /// </summary>
+        /// <param name="upLocationStatusDTO"></param>
+        /// <returns></returns>
+        public WebResponseContent UpLocationStatus(UpLocationStatusDTO upLocationStatusDTO)
+        {
+            WebResponseContent content = new WebResponseContent();
+            List<object> resultList = new List<object>();
+
+            try
+            {
+                // 鍙傛暟楠岃瘉
+                if (upLocationStatusDTO == null)
+                {
+                    return content.Error("璇锋眰鍙傛暟涓嶈兘涓虹┖");
+                }
+
+                if (upLocationStatusDTO.LocationNubList == null || upLocationStatusDTO.LocationNubList.Length == 0)
+                {
+                    return content.Error("璐т綅缂栧彿鍒楄〃涓嶈兘涓虹┖");
+                }
+
+                // 鏍规嵁 EnableStatus 鐨勫�煎垽鏂槸鍚敤杩樻槸绂佺敤
+                // 0=鍚敤锛�3=绂佺敤
+                bool isEnable = (upLocationStatusDTO.EnableStatus == 0);
+                int targetStatus = isEnable ? (int)EnableStatusEnum.Normal : (int)EnableStatusEnum.Disable;
+
+                var updatedList = new List<object>();  // 鐢ㄤ簬鎵归噺鏇存柊
+                var notFoundLocations = new List<string>();
+
+                // 鎴愬搧搴� (WarehouseId = 1)
+                if (upLocationStatusDTO.WarehouseId == 1)
+                {
+                    var locationsToUpdate = new List<Dt_RGVLocationInfo>();
+
+                    foreach (var locationCode in upLocationStatusDTO.LocationNubList)
+                    {
+                        var agv = _rGVLocationInfoService.Repository.QueryFirst(x => x.LocationCode == locationCode);
+                        if (agv != null)
+                        {
+                            agv.EnableStatus = targetStatus;
+                            locationsToUpdate.Add(agv);
+
+                            resultList.Add(new
+                            {
+                                LoctionCode = agv.LocationCode,
+                                EnableStatus = agv.EnableStatus,
+                            });
+                        }
+                        else
+                        {
+                            notFoundLocations.Add(locationCode);
+                        }
+                    }
+
+                    if (locationsToUpdate.Any())
+                    {
+                        _rGVLocationInfoService.UpdateData(locationsToUpdate);
+
+                        string message = $"鎴愬姛鏇存柊 {locationsToUpdate.Count} 涓揣浣嶇殑鐘舵��";
+                        if (notFoundLocations.Any())
+                        {
+                            message += $"锛屾湭鎵惧埌璐т綅锛歿string.Join(",", notFoundLocations)}";
+                        }
+                        content.OK(data: resultList, message: message);
+                    }
+                    else
+                    {
+                        return content.Error($"鏈壘鍒颁换浣曞彲鏇存柊鐨勮揣浣嶃�傛湭鎵惧埌鐨勮揣浣嶏細{string.Join(",", notFoundLocations)}");
+                    }
+                }
+                // 闈㈡枡搴� (WarehouseId = 2)
+                else if (upLocationStatusDTO.WarehouseId == 2)
+                {
+                    var locationsToUpdate = new List<Dt_KLSLocationInfo>();
+
+                    foreach (var locationCode in upLocationStatusDTO.LocationNubList)
+                    {
+                        var kls = _kLSLocationInfoService.Repository.QueryFirst(x => x.LocationCode == locationCode);
+                        if (kls != null)
+                        {
+                            kls.EnableStatus = targetStatus;
+                            locationsToUpdate.Add(kls);
+
+                            resultList.Add(new
+                            {
+                                LoctionCode = kls.LocationCode,
+                                EnableStatus = kls.EnableStatus,
+                            });
+                        }
+                        else
+                        {
+                            notFoundLocations.Add(locationCode);
+                        }
+                    }
+
+                    if (locationsToUpdate.Any())
+                    {
+                        _kLSLocationInfoService.UpdateData(locationsToUpdate);
+
+                        string message = $"鎴愬姛鏇存柊 {locationsToUpdate.Count} 涓揣浣嶇殑鐘舵��";
+                        if (notFoundLocations.Any())
+                        {
+                            message += $"锛屾湭鎵惧埌璐т綅锛歿string.Join(",", notFoundLocations)}";
+                        }
+                        content.OK(data: resultList, message: message);
+                    }
+                    else
+                    {
+                        return content.Error($"鏈壘鍒颁换浣曞彲鏇存柊鐨勮揣浣嶃�傛湭鎵惧埌鐨勮揣浣嶏細{string.Join(",", notFoundLocations)}");
+                    }
+                }
+                // 瑁佸壀搴� (WarehouseId = 3)
+                else if (upLocationStatusDTO.WarehouseId == 3)
+                {
+                    var locationsToUpdate = new List<Dt_HKLocationInfo>();
+
+                    foreach (var locationCode in upLocationStatusDTO.LocationNubList)
+                    {
+                        var hk = _hKLocationInfoService.Repository.QueryFirst(x => x.LocationCode == locationCode);
+                        if (hk != null)
+                        {
+                            hk.EnableStatus = targetStatus;
+                            locationsToUpdate.Add(hk);
+
+                            resultList.Add(new
+                            {
+                                LoctionCode = hk.LocationCode,
+                                EnableStatus = hk.EnableStatus,
+                            });
+                        }
+                        else
+                        {
+                            notFoundLocations.Add(locationCode);
+                        }
+                    }
+
+                    if (locationsToUpdate.Any())
+                    {
+                        _hKLocationInfoService.UpdateData(locationsToUpdate);
+
+                        string message = $"鎴愬姛鏇存柊 {locationsToUpdate.Count} 涓揣浣嶇殑鐘舵��";
+                        if (notFoundLocations.Any())
+                        {
+                            message += $"锛屾湭鎵惧埌璐т綅锛歿string.Join(",", notFoundLocations)}";
+                        }
+                        content.OK(data: resultList, message: message);
+                    }
+                    else
+                    {
+                        return content.Error($"鏈壘鍒颁换浣曞彲鏇存柊鐨勮揣浣嶃�傛湭鎵惧埌鐨勮揣浣嶏細{string.Join(",", notFoundLocations)}");
+                    }
+                }
+                // 3-4骞冲簱
+                else if (upLocationStatusDTO.WarehouseId == 4)
+                {
+                    var locationsToUpdate = new List<Dt_StationInfo>();
+
+                    foreach (var locationCode in upLocationStatusDTO.LocationNubList)
+                    {
+                        var station = _stationInfo.Repository.QueryFirst(x => x.StationCode == locationCode);
+                        if (station != null)
+                        {
+                            station.IsOccupied = upLocationStatusDTO.EnableStatus==0?0:1;
+                            locationsToUpdate.Add(station);
+
+                            resultList.Add(new
+                            {
+                                LoctionCode = station.StationCode,
+                                EnableStatus = station.IsOccupied,
+                            });
+                        }
+                        else
+                        {
+                            notFoundLocations.Add(locationCode);
+                        }
+                    }
+
+                    if (locationsToUpdate.Any())
+                    {
+                        _stationInfo.UpdateData(locationsToUpdate);
+
+                        string message = $"鎴愬姛鏇存柊 {locationsToUpdate.Count} 涓揣浣嶇殑鐘舵��";
+                        if (notFoundLocations.Any())
+                        {
+                            message += $"锛屾湭鎵惧埌璐т綅锛歿string.Join(",", notFoundLocations)}";
+                        }
+                        content.OK(data: resultList, message: message);
+                    }
+                    else
+                    {
+                        return content.Error($"鏈壘鍒颁换浣曞彲鏇存柊鐨勮揣浣嶃�傛湭鎵惧埌鐨勮揣浣嶏細{string.Join(",", notFoundLocations)}");
+                    }
+                }
+                else if (upLocationStatusDTO.WarehouseId == 5)
+                {
+                    var locationsToUpdate = new List<Dt_StationManger>();
+
+                    foreach (var locationCode in upLocationStatusDTO.LocationNubList)
+                    {
+                        var station = _stationMangerService.Repository.QueryFirst(x => x.StationCode == locationCode);
+                        if (station != null)
+                        {
+                            station.IsOccupied = upLocationStatusDTO.EnableStatus == 0 ? 0 : 1;
+                            locationsToUpdate.Add(station);
+
+                            resultList.Add(new
+                            {
+                                LoctionCode = station.StationCode,
+                                EnableStatus = station.IsOccupied,
+                            });
+                        }
+                        else
+                        {
+                            notFoundLocations.Add(locationCode);
+                        }
+                    }
+
+                    if (locationsToUpdate.Any())
+                    {
+                        _stationMangerService.UpdateData(locationsToUpdate);
+
+                        string message = $"鎴愬姛鏇存柊 {locationsToUpdate.Count} 涓揣浣嶇殑鐘舵��";
+                        if (notFoundLocations.Any())
+                        {
+                            message += $"锛屾湭鎵惧埌绔欏彴锛歿string.Join(",", notFoundLocations)}";
+                        }
+                        content.OK(data: resultList, message: message);
+                    }
+                    else
+                    {
+                        return content.Error($"鏈壘鍒颁换浣曞彲鏇存柊鐨勭珯鍙般�傛湭鎵惧埌鐨勭珯鍙帮細{string.Join(",", notFoundLocations)}");
+                    }
+                }
+                else
+                {
+                    return content.Error($"涓嶆敮鎸佺殑浠撳簱绫诲瀷锛歿upLocationStatusDTO.WarehouseId}");
+                }
+
+                return content;
+            }
+            catch (Exception ex)
+            {
+                return content.Error($"鏇存柊绔欏彴鐘舵�佸け璐ワ細{ex.Message}");
+            }
+        }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TSJJob.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TSJJob.cs"
index dcd6ffd..2e3f397 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TSJJob.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TSJJob.cs"
@@ -217,9 +217,14 @@
                                     {
                                         //瀵绘壘骞冲簱璐т綅
                                         var Location = _stationInfoService.Repository.QueryFirst(x=>x.StationRegion==Verification.Message.ObjToInt()&&x.StationStatus==(int)LocationStatusEnum.Free&&x.FloorNumber=="CC"&&x.IsOccupied==(int)LocationStatusEnum.Free);
+                                        //杩欓噷瑕佸垽鏂�
+                                        if (Location==null)
+                                        {
+                                            RK3FTask.ExceptionMessage = "$鏈壘鍒皗Verification.Message}鍖哄煙鐨勮揣浣峽Location}";
+                                        }
+                                        RK3FTask.CurrentAddress = RK3FTask.TargetAddress;
                                         RK3FTask.NextAddress = Location.StationCode;
                                         RK3FTask.TargetAddress = Location.StationCode;
-                                        RK3FTask.CurrentAddress = RK3FTask.TargetAddress;
                                         _taskService.UpdateData(RK3FTask);
                                     }
                                         //璋冪敤娴峰悍杩涜鎵ц瀹屾垚鎺ュ彛

--
Gitblit v1.9.3