From 5d55a31d8ce95e511ffb408f38ed06e81742b67e Mon Sep 17 00:00:00 2001
From: xiazhengtongxue <133085197+xiazhengtongxue@users.noreply.github.com>
Date: 星期五, 27 三月 2026 16:17:30 +0800
Subject: [PATCH] 1

---
 项目代码/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs |  332 ++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 228 insertions(+), 104 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
index deda58a..6c99934 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
@@ -208,7 +208,7 @@
                 Dt_Task taskOld = BaseDal.QueryFirst(x => x.PalletCode == containerFlowDTO.ContainerCode);
                 if (taskOld != null && taskOld.PalletCode == containerFlowDTO.ContainerCode && taskOld.TaskType == TaskTypeEnum.Inbound.ObjToInt() && taskOld.TaskState == TaskStatusEnum.CL_Executing.ObjToInt() && taskOld.DeviceCode == deviceCode)
                 {
-                    Thread.Sleep(500);
+                    //Thread.Sleep(500);
                     return content.OK();
                 }
                 if (taskOld != null && taskOld.PalletCode == containerFlowDTO.ContainerCode && taskOld.TaskType == TaskTypeEnum.Inbound.ObjToInt() && taskOld.TaskState == TaskStatusEnum.CL_Executing.ObjToInt() && taskOld.DeviceCode != deviceCode)
@@ -723,6 +723,9 @@
             }
             return content;
         }
+        // 鍦ㄧ被涓坊鍔犻潤鎬侀攣瀵硅薄
+        private static readonly object _taskCompleteLock = new object();
+
         /// <summary>
         /// 浠诲姟瀹屾垚
         /// </summary>
@@ -731,96 +734,212 @@
         public WebResponseContent TaskCompleted(int taskNum)
         {
             WebResponseContent content = new WebResponseContent();
-            try
-            {
-                WriteLog.Write_Log("浠诲姟瀹屾垚", "浠诲姟瀹屾垚鎺ュ彛", "浠诲姟鍙�", $"浠诲姟锛歿taskNum}");
-                Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
-                if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)//鍑哄簱浠诲姟瀹屾垚閫昏緫
-                {
-                    Dt_LocationInfo locationInfo = _locationInfoRepository.QueryFirst(x => x.PalletCode == task.PalletCode);
-                    if (locationInfo.LocationStatus != LocationStatusEnum.Lock.ObjToInt())
-                    {
-                        return content.Error($"{locationInfo.LocationCode}璐т綅鐘舵�佷笉姝g‘");
-                    }
-                    task.TaskState = TaskStatusEnum.Finish.ObjToInt();
-                    locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
-                    locationInfo.PalletCode = "";
-                    //鏂欑鍑哄簱瀹屾垚涓婃姤缁橶MS
-                    string? url = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.WMSInOutBoundBack.ToString())?.ApiAddress;
-                    if (string.IsNullOrEmpty(url))
-                    {
-                        _taskExecuteDetailService.AddTaskExecuteDetail(task, $"鏈壘鍒癢MS鍑哄簱涓婃姤鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
-                        UpdateTaskExceptionMessage(taskNum, $"鏈壘鍒癢MS鍑哄簱涓婃姤鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
-                        return content.Error($"{taskNum},鏈壘鍒癢MS鍑哄簱涓婃姤鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
-                    }
-                    ContainerInFinishDTO containerInFinishDTO = new ContainerInFinishDTO()
-                    {
-                        TaskCode = task.TaskNum.ToString(),
-                        ContainerCode = task.PalletCode,
-                        StationCode = task.TargetAddress,
-                        LocationCode = task.SourceAddress,
-                        CompleteType = 1
-                    };
-                    string request = JsonConvert.SerializeObject(containerInFinishDTO, settings);
 
-                    _unitOfWorkManage.BeginTran();
-                    _locationInfoRepository.UpdateData(locationInfo);
-                    BaseDal.DeleteAndMoveIntoHty(task, App.User?.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
-                    _unitOfWorkManage.CommitTran();
-                    _locationStatusChangeRecordService.AddLocationStatusChangeRecord(locationInfo, LocationStatusEnum.Lock, LocationStatusEnum.Free, LocationChangeType.OutboundCompleted, task.TaskNum);
-                    //璋冪敤鎺ュ彛
-                    string response = HttpHelper.Post(url, request);
-                    WriteLog.Write_Log("WMS鍑哄簱浠诲姟瀹屾垚鍥炰紶", "浠诲姟瀹屾垚鎺ュ彛", "浠诲姟淇℃伅", $"璇锋眰锛歿request}锛屽洖浼狅細{response}");
-                    WMSResponseContent wMSResponse = JsonConvert.DeserializeObject<WMSResponseContent>(response) ?? throw new Exception($"{taskNum},鏈帴鏀跺埌WMS鍑哄簱涓婃姤杩斿洖鍊�");
-                    if (wMSResponse.Code != "0") content.Message = $"鍑哄簱浠诲姟{task.TaskNum}WMS鍑哄簱涓婃姤閿欒,淇℃伅:{wMSResponse.Msg}";
-                }
-                else if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)//鍏ュ簱浠诲姟瀹屾垚閫昏緫
-                {
-                    string? url = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.WMSInOutBoundBack.ToString())?.ApiAddress;
-                    if (string.IsNullOrEmpty(url))
-                    {
-                        _taskExecuteDetailService.AddTaskExecuteDetail(task, $"鏈壘鍒癢MS鍏ュ簱涓婃姤鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
-                        UpdateTaskExceptionMessage(taskNum, $"鏈壘鍒癢MS鍏ュ簱涓婃姤鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
-                        return content.Error($"{taskNum},鏈壘鍒癢MS鍏ュ簱涓婃姤鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
-                    }
-                    ContainerInFinishDTO containerInFinishDTO = new ContainerInFinishDTO()
-                    {
-                        TaskCode = task.TaskNum.ToString(),
-                        ContainerCode = task.PalletCode,
-                        StationCode = task.SourceAddress,
-                        LocationCode = task.TargetAddress,
-                        CompleteType = 2
-                    };
-                    string request = JsonConvert.SerializeObject(containerInFinishDTO, settings);
-
-                    Dt_LocationInfo locationInfo = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.TargetAddress);
-                    if (locationInfo.LocationStatus != LocationStatusEnum.Lock.ObjToInt())
-                    {
-                        return content.Error($"{locationInfo.LocationCode}璐т綅鐘舵�佷笉姝g‘");
-                    }
-                    task.TaskState = TaskStatusEnum.Finish.ObjToInt();
-                    locationInfo.LocationStatus = LocationStatusEnum.InStock.ObjToInt();
-                    locationInfo.PalletCode = task.PalletCode;
-                    _unitOfWorkManage.BeginTran();
-                    _locationInfoRepository.UpdateData(locationInfo);
-                    BaseDal.DeleteAndMoveIntoHty(task, App.User?.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
-                    _unitOfWorkManage.CommitTran();
-                    _locationStatusChangeRecordService.AddLocationStatusChangeRecord(locationInfo, LocationStatusEnum.Lock, LocationStatusEnum.InStock, LocationChangeType.InboundCompleted, task.TaskNum);
-                    //璋冪敤鎺ュ彛
-                    string response = HttpHelper.Post(url, request);
-                    WriteLog.Write_Log("WMS鍏ュ簱浠诲姟瀹屾垚鍥炰紶", "浠诲姟瀹屾垚鎺ュ彛", "浠诲姟淇℃伅", $"璇锋眰锛歿request}锛屽洖浼狅細{response}");
-                    WMSResponseContent wMSResponse = JsonConvert.DeserializeObject<WMSResponseContent>(response) ?? throw new Exception($"{taskNum},鏈帴鏀跺埌WMS鍏ュ簱涓婃姤杩斿洖鍊�");
-                    if (wMSResponse.Code != "0") content.Message = $"鍏ュ簱浠诲姟{task.TaskNum}WMS鍏ュ簱涓婃姤閿欒,淇℃伅:{wMSResponse.Msg}";
-                }
-                content.OK("浠诲姟瀹屾垚");
-            }
-            catch (Exception ex)
+            // 浣跨敤閿佺‘淇濆悓涓�浠诲姟涓嶄細骞跺彂澶勭悊
+            lock (_taskCompleteLock)
             {
-                _unitOfWorkManage.RollbackTran();
-                content.Error(ex.Message);
+                try
+                {
+                    WriteLog.Write_Log("浠诲姟瀹屾垚", "浠诲姟瀹屾垚鎺ュ彛", "浠诲姟鍙�", $"浠诲姟锛歿taskNum}");
+
+                    // 鍐嶆鏌ヨ浠诲姟鐘舵�侊紝闃叉鍦ㄩ攣绛夊緟鏈熼棿浠诲姟鐘舵�佸凡鏀瑰彉
+                    Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
+                    if (task == null)
+                    {
+                        return content.Error($"浠诲姟{taskNum}涓嶅瓨鍦�");
+                    }
+
+                    // 妫�鏌ヤ换鍔$姸鎬侊紝閬垮厤閲嶅瀹屾垚
+                    if (task.TaskState == TaskStatusEnum.Finish.ObjToInt())
+                    {
+                        return content.Error($"浠诲姟{taskNum}宸插畬鎴愶紝璇峰嬁閲嶅鎿嶄綔");
+                    }
+
+                    if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)//鍑哄簱浠诲姟瀹屾垚閫昏緫
+                    {
+                        Dt_LocationInfo locationInfo = _locationInfoRepository.QueryFirst(x => x.PalletCode == task.PalletCode);
+                        if (locationInfo.LocationStatus != LocationStatusEnum.Lock.ObjToInt())
+                        {
+                            return content.Error($"{locationInfo.LocationCode}璐т綅鐘舵�佷笉姝g‘");
+                        }
+                        task.TaskState = TaskStatusEnum.Finish.ObjToInt();
+                        locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
+                        locationInfo.PalletCode = "";
+                        //鏂欑鍑哄簱瀹屾垚涓婃姤缁橶MS
+                        string? url = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.WMSInOutBoundBack.ToString())?.ApiAddress;
+                        if (string.IsNullOrEmpty(url))
+                        {
+                            _taskExecuteDetailService.AddTaskExecuteDetail(task, $"鏈壘鍒癢MS鍑哄簱涓婃姤鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
+                            UpdateTaskExceptionMessage(taskNum, $"鏈壘鍒癢MS鍑哄簱涓婃姤鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
+                            return content.Error($"{taskNum},鏈壘鍒癢MS鍑哄簱涓婃姤鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
+                        }
+                        ContainerInFinishDTO containerInFinishDTO = new ContainerInFinishDTO()
+                        {
+                            TaskCode = task.TaskNum.ToString(),
+                            ContainerCode = task.PalletCode,
+                            StationCode = task.TargetAddress,
+                            LocationCode = task.SourceAddress,
+                            CompleteType = 1
+                        };
+                        string request = JsonConvert.SerializeObject(containerInFinishDTO, settings);
+
+                        _unitOfWorkManage.BeginTran();
+                        _locationInfoRepository.UpdateData(locationInfo);
+                        BaseDal.DeleteAndMoveIntoHty(task, App.User?.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
+                        _unitOfWorkManage.CommitTran();
+                        _locationStatusChangeRecordService.AddLocationStatusChangeRecord(locationInfo, LocationStatusEnum.Lock, LocationStatusEnum.Free, LocationChangeType.OutboundCompleted, task.TaskNum);
+                        //璋冪敤鎺ュ彛
+                        string response = HttpHelper.Post(url, request);
+                        WriteLog.Write_Log("WMS鍑哄簱浠诲姟瀹屾垚鍥炰紶", "浠诲姟瀹屾垚鎺ュ彛", "浠诲姟淇℃伅", $"璇锋眰锛歿request}锛屽洖浼狅細{response}");
+                        WMSResponseContent wMSResponse = JsonConvert.DeserializeObject<WMSResponseContent>(response) ?? throw new Exception($"{taskNum},鏈帴鏀跺埌WMS鍑哄簱涓婃姤杩斿洖鍊�");
+                        if (wMSResponse.Code != "0") content.Message = $"鍑哄簱浠诲姟{task.TaskNum}WMS鍑哄簱涓婃姤閿欒,淇℃伅:{wMSResponse.Msg}";
+                    }
+                    else if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)//鍏ュ簱浠诲姟瀹屾垚閫昏緫
+                    {
+                        string? url = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.WMSInOutBoundBack.ToString())?.ApiAddress;
+                        if (string.IsNullOrEmpty(url))
+                        {
+                            _taskExecuteDetailService.AddTaskExecuteDetail(task, $"鏈壘鍒癢MS鍏ュ簱涓婃姤鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
+                            UpdateTaskExceptionMessage(taskNum, $"鏈壘鍒癢MS鍏ュ簱涓婃姤鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
+                            return content.Error($"{taskNum},鏈壘鍒癢MS鍏ュ簱涓婃姤鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
+                        }
+                        ContainerInFinishDTO containerInFinishDTO = new ContainerInFinishDTO()
+                        {
+                            TaskCode = task.TaskNum.ToString(),
+                            ContainerCode = task.PalletCode,
+                            StationCode = task.SourceAddress,
+                            LocationCode = task.TargetAddress,
+                            CompleteType = 2
+                        };
+                        string request = JsonConvert.SerializeObject(containerInFinishDTO, settings);
+
+                        Dt_LocationInfo locationInfo = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.TargetAddress);
+                        if (locationInfo.LocationStatus != LocationStatusEnum.Lock.ObjToInt())
+                        {
+                            return content.Error($"{locationInfo.LocationCode}璐т綅鐘舵�佷笉姝g‘");
+                        }
+                        task.TaskState = TaskStatusEnum.Finish.ObjToInt();
+                        locationInfo.LocationStatus = LocationStatusEnum.InStock.ObjToInt();
+                        locationInfo.PalletCode = task.PalletCode;
+                        _unitOfWorkManage.BeginTran();
+                        _locationInfoRepository.UpdateData(locationInfo);
+                        BaseDal.DeleteAndMoveIntoHty(task, App.User?.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
+                        _unitOfWorkManage.CommitTran();
+                        _locationStatusChangeRecordService.AddLocationStatusChangeRecord(locationInfo, LocationStatusEnum.Lock, LocationStatusEnum.InStock, LocationChangeType.InboundCompleted, task.TaskNum);
+                        //璋冪敤鎺ュ彛
+                        string response = HttpHelper.Post(url, request);
+                        WriteLog.Write_Log("WMS鍏ュ簱浠诲姟瀹屾垚鍥炰紶", "浠诲姟瀹屾垚鎺ュ彛", "浠诲姟淇℃伅", $"璇锋眰锛歿request}锛屽洖浼狅細{response}");
+                        WMSResponseContent wMSResponse = JsonConvert.DeserializeObject<WMSResponseContent>(response) ?? throw new Exception($"{taskNum},鏈帴鏀跺埌WMS鍏ュ簱涓婃姤杩斿洖鍊�");
+                        if (wMSResponse.Code != "0") content.Message = $"鍏ュ簱浠诲姟{task.TaskNum}WMS鍏ュ簱涓婃姤閿欒,淇℃伅:{wMSResponse.Msg}";
+                    }
+                    content.OK("浠诲姟瀹屾垚");
+                }
+                catch (Exception ex)
+                {
+                    _unitOfWorkManage.RollbackTran();
+                    content.Error(ex.Message);
+                }
+                return content;
             }
-            return content;
         }
+        ///// <summary>
+        ///// 浠诲姟瀹屾垚
+        ///// </summary>
+        ///// <param name="taskNum"></param>
+        ///// <returns></returns>
+        //public WebResponseContent TaskCompleted(int taskNum)
+        //{
+        //    WebResponseContent content = new WebResponseContent();
+        //    try
+        //    {
+        //        WriteLog.Write_Log("浠诲姟瀹屾垚", "浠诲姟瀹屾垚鎺ュ彛", "浠诲姟鍙�", $"浠诲姟锛歿taskNum}");
+        //        Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
+        //        if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)//鍑哄簱浠诲姟瀹屾垚閫昏緫
+        //        {
+        //            Dt_LocationInfo locationInfo = _locationInfoRepository.QueryFirst(x => x.PalletCode == task.PalletCode);
+        //            if (locationInfo.LocationStatus != LocationStatusEnum.Lock.ObjToInt())
+        //            {
+        //                return content.Error($"{locationInfo.LocationCode}璐т綅鐘舵�佷笉姝g‘");
+        //            }
+        //            task.TaskState = TaskStatusEnum.Finish.ObjToInt();
+        //            locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
+        //            locationInfo.PalletCode = "";
+        //            //鏂欑鍑哄簱瀹屾垚涓婃姤缁橶MS
+        //            string? url = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.WMSInOutBoundBack.ToString())?.ApiAddress;
+        //            if (string.IsNullOrEmpty(url))
+        //            {
+        //                _taskExecuteDetailService.AddTaskExecuteDetail(task, $"鏈壘鍒癢MS鍑哄簱涓婃姤鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
+        //                UpdateTaskExceptionMessage(taskNum, $"鏈壘鍒癢MS鍑哄簱涓婃姤鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
+        //                return content.Error($"{taskNum},鏈壘鍒癢MS鍑哄簱涓婃姤鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
+        //            }
+        //            ContainerInFinishDTO containerInFinishDTO = new ContainerInFinishDTO()
+        //            {
+        //                TaskCode = task.TaskNum.ToString(),
+        //                ContainerCode = task.PalletCode,
+        //                StationCode = task.TargetAddress,
+        //                LocationCode = task.SourceAddress,
+        //                CompleteType = 1
+        //            };
+        //            string request = JsonConvert.SerializeObject(containerInFinishDTO, settings);
+
+        //            _unitOfWorkManage.BeginTran();
+        //            _locationInfoRepository.UpdateData(locationInfo);
+        //            BaseDal.DeleteAndMoveIntoHty(task, App.User?.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
+        //            _unitOfWorkManage.CommitTran();
+        //            _locationStatusChangeRecordService.AddLocationStatusChangeRecord(locationInfo, LocationStatusEnum.Lock, LocationStatusEnum.Free, LocationChangeType.OutboundCompleted, task.TaskNum);
+        //            //璋冪敤鎺ュ彛
+        //            string response = HttpHelper.Post(url, request);
+        //            WriteLog.Write_Log("WMS鍑哄簱浠诲姟瀹屾垚鍥炰紶", "浠诲姟瀹屾垚鎺ュ彛", "浠诲姟淇℃伅", $"璇锋眰锛歿request}锛屽洖浼狅細{response}");
+        //            WMSResponseContent wMSResponse = JsonConvert.DeserializeObject<WMSResponseContent>(response) ?? throw new Exception($"{taskNum},鏈帴鏀跺埌WMS鍑哄簱涓婃姤杩斿洖鍊�");
+        //            if (wMSResponse.Code != "0") content.Message = $"鍑哄簱浠诲姟{task.TaskNum}WMS鍑哄簱涓婃姤閿欒,淇℃伅:{wMSResponse.Msg}";
+        //        }
+        //        else if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)//鍏ュ簱浠诲姟瀹屾垚閫昏緫
+        //        {
+        //            string? url = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.WMSInOutBoundBack.ToString())?.ApiAddress;
+        //            if (string.IsNullOrEmpty(url))
+        //            {
+        //                _taskExecuteDetailService.AddTaskExecuteDetail(task, $"鏈壘鍒癢MS鍏ュ簱涓婃姤鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
+        //                UpdateTaskExceptionMessage(taskNum, $"鏈壘鍒癢MS鍏ュ簱涓婃姤鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
+        //                return content.Error($"{taskNum},鏈壘鍒癢MS鍏ュ簱涓婃姤鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
+        //            }
+        //            ContainerInFinishDTO containerInFinishDTO = new ContainerInFinishDTO()
+        //            {
+        //                TaskCode = task.TaskNum.ToString(),
+        //                ContainerCode = task.PalletCode,
+        //                StationCode = task.SourceAddress,
+        //                LocationCode = task.TargetAddress,
+        //                CompleteType = 2
+        //            };
+        //            string request = JsonConvert.SerializeObject(containerInFinishDTO, settings);
+
+        //            Dt_LocationInfo locationInfo = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.TargetAddress);
+        //            if (locationInfo.LocationStatus != LocationStatusEnum.Lock.ObjToInt())
+        //            {
+        //                return content.Error($"{locationInfo.LocationCode}璐т綅鐘舵�佷笉姝g‘");
+        //            }
+        //            task.TaskState = TaskStatusEnum.Finish.ObjToInt();
+        //            locationInfo.LocationStatus = LocationStatusEnum.InStock.ObjToInt();
+        //            locationInfo.PalletCode = task.PalletCode;
+        //            _unitOfWorkManage.BeginTran();
+        //            _locationInfoRepository.UpdateData(locationInfo);
+        //            BaseDal.DeleteAndMoveIntoHty(task, App.User?.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
+        //            _unitOfWorkManage.CommitTran();
+        //            _locationStatusChangeRecordService.AddLocationStatusChangeRecord(locationInfo, LocationStatusEnum.Lock, LocationStatusEnum.InStock, LocationChangeType.InboundCompleted, task.TaskNum);
+        //            //璋冪敤鎺ュ彛
+        //            string response = HttpHelper.Post(url, request);
+        //            WriteLog.Write_Log("WMS鍏ュ簱浠诲姟瀹屾垚鍥炰紶", "浠诲姟瀹屾垚鎺ュ彛", "浠诲姟淇℃伅", $"璇锋眰锛歿request}锛屽洖浼狅細{response}");
+        //            WMSResponseContent wMSResponse = JsonConvert.DeserializeObject<WMSResponseContent>(response) ?? throw new Exception($"{taskNum},鏈帴鏀跺埌WMS鍏ュ簱涓婃姤杩斿洖鍊�");
+        //            if (wMSResponse.Code != "0") content.Message = $"鍏ュ簱浠诲姟{task.TaskNum}WMS鍏ュ簱涓婃姤閿欒,淇℃伅:{wMSResponse.Msg}";
+        //        }
+        //        content.OK("浠诲姟瀹屾垚");
+        //    }
+        //    catch (Exception ex)
+        //    {
+        //        _unitOfWorkManage.RollbackTran();
+        //        content.Error(ex.Message);
+        //    }
+        //    return content;
+        //}
         /// <summary>
         /// 浜哄伐鎵嬪姩鍙栨秷鎸囧畾浠诲姟
         /// </summary>
@@ -841,27 +960,32 @@
                 {
                     // 鑾峰彇鐩爣璐т綅
                     Dt_LocationInfo locationInfo = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.TargetAddress);
-                    if (locationInfo == null) return content.Error($"鐩爣璐т綅{task.TargetAddress}涓嶅瓨鍦�");
-                    // 楠岃瘉璐т綅鐘舵��
-                    if (locationInfo.LocationStatus != LocationStatusEnum.Lock.ObjToInt())
-                        return content.Error($"{task.TargetAddress}璐т綅鐘舵�佸紓甯革紝鏃犳硶鍙栨秷");
-
-                    // 鎭㈠璐т綅鐘舵��
-                    locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt(); // 鎭㈠涓虹┖闂茬姸鎬�
-                    locationInfo.PalletCode = ""; // 娓呯┖鎵樼洏鍙�
-                    // 鏇存柊鏁版嵁搴�
+                    if (locationInfo != null)
+                    {
+                        locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt(); // 鎭㈠涓虹┖闂茬姸鎬�
+                        locationInfo.PalletCode = ""; // 娓呯┖鎵樼洏鍙�
+                        _unitOfWorkManage.BeginTran();
+                        _locationInfoRepository.UpdateData(locationInfo);
+                        _unitOfWorkManage.CommitTran();
+                        content.OK("浠诲姟鍙栨秷鎴愬姛");
+                    }
                     _unitOfWorkManage.BeginTran();
-                    _locationInfoRepository.UpdateData(locationInfo);
                     BaseDal.DeleteAndMoveIntoHty(task, OperateTypeEnum.浜哄伐鍒犻櫎);
                     _unitOfWorkManage.CommitTran();
+                    //return content.Error($"鐩爣璐т綅{task.TargetAddress}涓嶅瓨鍦�");
+                    // 楠岃瘉璐т綅鐘舵��
+                    //if (locationInfo.LocationStatus != LocationStatusEnum.Lock.ObjToInt())
+                    //    return content.Error($"{task.TargetAddress}璐т綅鐘舵�佸紓甯革紝鏃犳硶鍙栨秷");
+
+                    // 鎭㈠璐т綅鐘舵��
+
+                    // 鏇存柊鏁版嵁搴�
+                    //_unitOfWorkManage.BeginTran();
+                    //_locationInfoRepository.UpdateData(locationInfo);
+                    //BaseDal.DeleteAndMoveIntoHty(task, OperateTypeEnum.浜哄伐鍒犻櫎);
+                    //_unitOfWorkManage.CommitTran();
                     // 璁板綍鐘舵�佸彉鏇�
-                    _locationStatusChangeRecordService.AddLocationStatusChangeRecord(
-                        locationInfo,
-                        LocationStatusEnum.Lock,
-                        LocationStatusEnum.Free,
-                        LocationChangeType.InboundCancelled,
-                        task.TaskNum
-                    );
+
                     content.OK("浠诲姟鍙栨秷鎴愬姛");
                 }
                 else

--
Gitblit v1.9.3