From 679893ee68e2f7d422431bb22b665e9217f23410 Mon Sep 17 00:00:00 2001
From: Admin <Admin@ADMIN>
Date: 星期四, 16 四月 2026 16:41:11 +0800
Subject: [PATCH] 深库位与浅库位出库时,进行浅货位移库不可直接出库

---
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Location/LocationInfoService.cs |  139 ++++++++++++++++++++++++++++------------------
 1 files changed, 85 insertions(+), 54 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Location/LocationInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Location/LocationInfoService.cs"
index 27fb0fd..0225954 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Location/LocationInfoService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Location/LocationInfoService.cs"
@@ -84,18 +84,21 @@
                 // 鑾峰彇鏂扮殑搴撲綅鐨勪换鍔�
                 var internalTransferTask = await _taskRepository.QueryFirstAsync(x => x.SourceAddress == newLocationID && x.Roadway == outboundTask.Roadway && x.TaskState == (int)TaskOutStatusEnum.OutNew);
 
-
-
                 LogFactory.GetLog("妫�鏌ユ槸鍚﹂渶瑕佺Щ搴�").InfoFormat(true, "闇�瑕佺Щ搴�,鑾峰彇鏂板簱浣嶇殑浠诲姟", $"鏂板簱浣嶄换鍔★細{internalTransferTask}");
+
+
+                LogFactory.GetLog("妫�鏌ユ槸鍚﹂渶瑕佺Щ搴�").InfoFormat(true, "闇�瑕佺Щ搴�,鏈幏鍙栧埌鏂板簱浣嶄换鍔�", $"");
+                return await HandleNoTaskAtLocation(outboundTask.SourceAddress, newLocationID, outboundTask);
                 // 濡傛灉鏂扮殑搴撲綅娌℃湁鎵惧埌瀵瑰簲鐨勪换鍔�
-                if (internalTransferTask == null)
+                /*if (internalTransferTask == null)
                 {
                     LogFactory.GetLog("妫�鏌ユ槸鍚﹂渶瑕佺Щ搴�").InfoFormat(true, "闇�瑕佺Щ搴�,鏈幏鍙栧埌鏂板簱浣嶄换鍔�", $"");
                     return await HandleNoTaskAtLocation(outboundTask.SourceAddress, newLocationID, outboundTask);
                 }
+
                 LogFactory.GetLog("妫�鏌ユ槸鍚﹂渶瑕佺Щ搴�").InfoFormat(true, "闇�瑕佺Щ搴�,鑾峰彇鍒版柊搴撲綅浠诲姟鐩存帴杩斿洖", $"鏂板簱浣嶄换鍔★細{internalTransferTask}");
                 // 鐩存帴杩斿洖涓�娣变綅鍑哄簱浠诲姟
-                return internalTransferTask;
+                return internalTransferTask;*/
             }
 
             // 杩斿洖褰撳墠搴撲綅鐨勫嚭搴撲换鍔�
@@ -315,21 +318,32 @@
     #endregion 鍚敤绂佺敤璐т綅
 
     #region 澶у睆搴撲綅鐘舵�佽幏鍙�
-    public WebResponseContent LocationStatus()
+    public WebResponseContent LocationStatuskt()
     {
         WebResponseContent content = new WebResponseContent();
         
         // 鑾峰彇鎵�鏈夊簱浣嶆暟鎹�
         List<DtLocationInfo> locations = BaseDal.QueryData();
 
+        // 瀹氫箟鎵�鏈夊彲鑳界殑鐘舵�佸強鍏跺搴旂殑鏄剧ず鏂囨湰
+        var allStatuses = new Dictionary<int, string>
+{
+    { 0, "绌鸿揣浣�" },
+    { 1, "閿佸畾" },
+    { 2, "鏈夎揣" },
+    { 3, "鏈夎揣绂佺敤" }
+};
+
         // 鎸塋ocationStatus鍒嗙粍缁熻
-        var statusGroups = locations
-            .GroupBy(l => l.LocationStatus)
-            .Select(g => new
-            {
-                Status = g.Key==0?"绌鸿揣浣�": g.Key == 1 ? "閿佸畾": g.Key == 2 ? "鏈夎揣": "鏈夎揣绂佺敤",
-                Count = g.Count(),
-            })
+        var statusGroups = allStatuses
+            .GroupJoin(locations.GroupBy(l => l.LocationStatus),
+                status => status.Key,
+                group => group.Key,
+                (status, groups) => new
+                {
+                    Status = status.Value,
+                    Count = groups.SelectMany(g => g).Any() ? groups.First().Count() : 0
+                })
             .ToList();
 
         // 灏嗙粺璁$粨鏋滄斁鍏ュ搷搴斿唴瀹�
@@ -371,53 +385,70 @@
     /// <returns>鐢熸垚鐨勭Щ搴撲换鍔℃垨鍘熷鍑哄簱浠诲姟</returns>
     private async Task<Dt_Task> HandleNoTaskAtLocation(string originalLocationID, string newLocationID, Dt_Task outboundTask)
     {
-        // 鍒ゆ柇璇ヤ綅缃槸鍚︽湁搴撳瓨
-        var stockInfo = await _WheelsStockRepository.QueryFirstAsync(x => x.Wheels_Location == newLocationID);
-
-        // 鍒ゆ柇璇ヤ綅缃槸鍚︽湁搴撳瓨
-        var zdpInfo = await _zdpStockRepository.QueryFirstAsync(x => x.Zdp_Location == newLocationID);
-
-
-        LogFactory.GetLog("妫�鏌ユ槸鍚﹂渶瑕佺Щ搴�").InfoFormat(true, "闇�瑕佺Щ搴�,鏈幏鍙栧埌鏂板簱浣嶄换鍔�", $"璇ヤ綅缃槸鍚︽湁搴撳瓨锛歿stockInfo}");
-        if (stockInfo == null && zdpInfo==null)
+        try
         {
-            LogFactory.GetLog("妫�鏌ユ槸鍚﹂渶瑕佺Щ搴�").InfoFormat(true, "闇�瑕佺Щ搴�,鏈幏鍙栧埌搴撳瓨鏁版嵁", $"鐩存帴杩斿洖鍘熷厛鍑哄簱浠诲姟锛歿outboundTask}");
-            // 濡傛灉娌℃湁搴撳瓨锛岀洿鎺ヨ繑鍥炲綋鍓嶅嚭搴撲换鍔�
-            return outboundTask;
-        }
-        else
-        {
-            // 濡傛灉鏈夊簱瀛橈紝鐢熸垚绉诲簱浠诲姟
-            var emptyLocation = RequestLocation("SC1");
-            if (emptyLocation == null) throw new Exception("鏆傛棤绌哄簱");
+            // 鍒ゆ柇璇ヤ綅缃槸鍚︽湁搴撳瓨
+            var stockInfo = await _WheelsStockRepository.QueryFirstAsync(x => x.Wheels_Location == newLocationID);
 
-            LogFactory.GetLog("妫�鏌ユ槸鍚﹂渶瑕佺Щ搴�").InfoFormat(true, "闇�瑕佺Щ搴�,鏌ユ壘鑳界Щ搴撹揣浣�", $"璐т綅鏁版嵁锛歿emptyLocation}");
-            var taskNo = await _taskRepository.GetTaskNo();
-            Dt_Task newTransferTask = new Dt_Task()
+            // 鍒ゆ柇璇ヤ綅缃槸鍚︽湁搴撳瓨
+            var zdpInfo = await _zdpStockRepository.QueryFirstAsync(x => x.Zdp_Location == newLocationID);
+
+
+            LogFactory.GetLog("妫�鏌ユ槸鍚﹂渶瑕佺Щ搴�").InfoFormat(true, "鑾峰彇鐨勫簱瀛樹俊鎭�", $"鏍规嵁璐т綅缂栧彿锛歿newLocationID}锛岃浣嶇疆鏄惁鏈夊簱瀛橈細{stockInfo.ToJson()}");
+            if (stockInfo == null && zdpInfo == null)
             {
-                CreateDate = DateTime.Now,
-                Creater = App.User.UserName == null ? "admin" : App.User.UserName,
-                CurrentAddress = stockInfo != null ?stockInfo.Wheels_Location: zdpInfo.Zdp_Location,
-                Grade = 99,
-                MaterialNo = stockInfo != null ? stockInfo.Wheels_Type: "2",
-                NextAddress = emptyLocation.LocationCode,
-                PalletCode = stockInfo != null ? stockInfo.Wheels_Num : zdpInfo.Zdp_code,
-                Remark = "绉诲簱",
-                Roadway = "SC1",
-                SourceAddress = stockInfo != null ? stockInfo.Wheels_Location : zdpInfo.Zdp_Location,
-                TaskNum = taskNo,
-                TargetAddress = emptyLocation.LocationCode,
-                TaskState = (int)TaskStatus.Created,
-                TaskType = (int)TaskTypeEnum.Relocation,
-                Dispatchertime = DateTime.Now,
-            };
-            LogFactory.GetLog("妫�鏌ユ槸鍚﹂渶瑕佺Щ搴�").InfoFormat(true, "闇�瑕佺Щ搴�,鏂板缓绉诲簱浠诲姟", $"绉诲簱浠诲姟鏁版嵁锛歿newTransferTask}");
+                LogFactory.GetLog("妫�鏌ユ槸鍚﹂渶瑕佺Щ搴�").InfoFormat(true, "闇�瑕佺Щ搴�,鏈幏鍙栧埌搴撳瓨鏁版嵁", $"鐩存帴杩斿洖鍘熷厛鍑哄簱浠诲姟锛歿outboundTask}");
+                // 濡傛灉娌℃湁搴撳瓨锛岀洿鎺ヨ繑鍥炲綋鍓嶅嚭搴撲换鍔�
+                return outboundTask;
+            }
+            else
+            {
+                // 濡傛灉鏈夊簱瀛橈紝鐢熸垚绉诲簱浠诲姟
+                var emptyLocation = RequestLocation("SC1");
+                if (emptyLocation == null) throw new Exception("鏆傛棤绌哄簱");
 
-            //淇敼搴撲綅鐘舵��
-            emptyLocation.LocationStatus = (int)LocationEnum.FreeDisable;
-            BaseDal.UpdateData(emptyLocation);
+                LogFactory.GetLog("妫�鏌ユ槸鍚﹂渶瑕佺Щ搴�").InfoFormat(true, "闇�瑕佺Щ搴�,鏌ユ壘鑳界Щ搴撹揣浣�", $"璐т綅鏁版嵁锛歿emptyLocation}");
+                var taskNo = await _taskRepository.GetTaskNo();
+                Dt_Task newTransferTask = new Dt_Task()
+                {
+                    CreateDate = DateTime.Now,
+                    Creater = App.User.UserName == null ? "admin" : App.User.UserName,
+                    CurrentAddress = stockInfo != null ? stockInfo.Wheels_Location : zdpInfo.Zdp_Location,
+                    Grade = 99,
+                    MaterialNo = stockInfo != null ? stockInfo.Wheels_Type : "2",
+                    NextAddress = emptyLocation.LocationCode,
+                    PalletCode = stockInfo != null ? stockInfo.Wheels_Num : zdpInfo.Zdp_code,
+                    Remark = "绉诲簱",
+                    Roadway = "SC1",
+                    SourceAddress = stockInfo != null ? stockInfo.Wheels_Location : zdpInfo.Zdp_Location,
+                    TaskNum = taskNo,
+                    TargetAddress = emptyLocation.LocationCode,
+                    TaskState = (int)TaskStatus.Created,
+                    TaskType = (int)TaskTypeEnum.Relocation,
+                    Dispatchertime = DateTime.Now,
+                };
+                LogFactory.GetLog("妫�鏌ユ槸鍚﹂渶瑕佺Щ搴�").InfoFormat(true, "闇�瑕佺Щ搴�,鏂板缓绉诲簱浠诲姟", $"绉诲簱浠诲姟鏁版嵁锛歿newTransferTask.ToJson()}");
 
-            return await _taskRepository.Create(newTransferTask);
+                // 鑾峰彇鏂扮殑搴撲綅鐨勪换鍔�
+                var internalTransferTask = await _taskRepository.QueryFirstAsync(x => x.SourceAddress == newLocationID && x.Roadway == outboundTask.Roadway && x.TaskState == (int)TaskOutStatusEnum.OutNew);
+                if (internalTransferTask != null)
+                {
+                    internalTransferTask.SourceAddress = emptyLocation.LocationCode;
+                    internalTransferTask.CurrentAddress = emptyLocation.LocationCode;
+                    await _taskRepository.Update(internalTransferTask);
+                }
+
+                //淇敼搴撲綅鐘舵��
+                emptyLocation.LocationStatus = (int)LocationEnum.FreeDisable;
+                BaseDal.UpdateData(emptyLocation);
+
+                return await _taskRepository.Create(newTransferTask);
+            }
+        }
+        catch (Exception ex)
+        {
+            LogFactory.GetLog("妫�鏌ユ槸鍚﹂渶瑕佺Щ搴�").InfoFormat(true, "鏂规硶锛欻andleNoTaskAtLocation", $"鍑洪敊锛屽師鍥狅細{ex.ToJson()}");
+            throw;
         }
     }
 

--
Gitblit v1.9.3