From d59b540dd78d49ddf1f2e1c6dfb7b19a7d3e3d7c Mon Sep 17 00:00:00 2001
From: 肖洋 <cathay_xy@163.com>
Date: 星期日, 19 一月 2025 11:19:24 +0800
Subject: [PATCH] 优化代码结构和错误处理

---
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs |   71 +++++++++++++++++++++++++++++++----
 1 files changed, 62 insertions(+), 9 deletions(-)

diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
index af55b8a..40ef704 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
@@ -100,7 +100,7 @@
                 WMSTaskDTO taskDTO = new WMSTaskDTO()
                 {
                     TaskNum = task.TaskNum.Value,
-                    Grade = 1,
+                    Grade = task.Grade.Value,
                     PalletCode = task.PalletCode,
                     RoadWay = task.Roadway,
                     SourceAddress = task.SourceAddress,
@@ -186,6 +186,29 @@
             // 缁勭洏淇℃伅
             // 灏哻ontent.Data杞崲涓篟esultTrayCellsStatus瀵硅薄
             var result = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(content.Data.ToString());
+
+            if (!result.Success)
+            {
+                var taskNG = new Dt_Task
+                {
+                    CurrentAddress = input.Position,
+                    Grade = 1,
+                    Roadway = input.Roadways,
+                    TargetAddress = stationManager.stationNGLocation,
+                    Dispatchertime = DateTime.Now,
+                    MaterialNo = "",
+                    NextAddress = stationManager.stationNGChildCode,
+                    OrderNo = null,
+                    PalletCode = input.PalletCode,
+                    SourceAddress = stationManager.stationLocation,
+                    TaskState = (int)TaskInStatusEnum.Line_InFinish,
+                    TaskType = (int)TaskOutboundTypeEnum.InToOut,
+                    TaskNum = await BaseDal.GetTaskNo(),
+                    Creater = "Systeam"
+                };
+                return taskNG;
+            }
+
             if (result.SerialNos.Count <= 0)
             {
                 ConsoleHelper.WriteErrorLine(result.MOMMessage);
@@ -218,7 +241,7 @@
             }
 
             // 澶勭悊寮傚父鐢佃姱鎯呭喌
-            var serialNosError = result.SerialNos.Where(x => x.SerialNoStatus != 1).ToList();
+            var serialNosError = result.SerialNos.Where(x => x.SerialNoStatus != 1 && x.SerialNoStatus != 4).ToList();
             if (serialNosError.Count > 0)
             {
                 if (stationManager.stationType != 3)
@@ -303,6 +326,7 @@
 
         if (stationManager.stationType == 1)
         {
+            #region
             // 鍒涘缓涓�涓猅rayCellsStatusDto瀵硅薄锛屽苟璧嬪��
             TrayCellsStatusDto trayCells = new TrayCellsStatusDto()
             {
@@ -368,6 +392,7 @@
             ////// 璋冪敤GetProcessResponseAsync鏂规硶锛岃幏鍙栧伐鑹哄搷搴�
             ////var processResponse = await GetProcessResponseAsync(process, input.Position);
             var isBox = await _boxingInfoRepository.AddDataNavAsync(boxing);
+            #endregion
         }
 
         var task = new Dt_Task
@@ -387,10 +412,13 @@
             TaskNum = await BaseDal.GetTaskNo(),
             Creater = "Systeam"
         };
-        ConsoleHelper.WriteSuccessLine($"淇敼鍓嶏細" + locationInfo.LocationStatus.ToString());
+        int lastStatus = locationInfo.LocationStatus;
+        ConsoleHelper.WriteSuccessLine($"淇敼鍓嶏細" + lastStatus.ToString());
         locationInfo.LocationStatus = (int)LocationEnum.FreeDisable;
         ConsoleHelper.WriteSuccessLine($"淇敼鍚庯細" + locationInfo.LocationStatus.ToString());
         await UpdateLocationAsync(locationInfo);
+
+        _locationStatusChangeRecordRepository.AddLocationStatusChangeRecord(locationInfo, lastStatus, (int)StatusChangeTypeEnum.AutomaticStorage, task.TaskNum);
 
         return task;
     }
@@ -504,7 +532,7 @@
             var task = new Dt_Task
             {
                 CurrentAddress = input.Position,
-                Grade = 1,
+                Grade = 2,
                 Roadway = input.Roadways,
                 TargetAddress = stationManager.stationLocation,
                 Dispatchertime = DateTime.Now,
@@ -672,10 +700,15 @@
 
             var isBox = await _boxingInfoRepository.AddDataNavAsync(boxing);
 
-            ConsoleHelper.WriteSuccessLine($"淇敼鍓嶏細" + locationInfo.LocationStatus.ToString());
+            int lastStatus = locationInfo.LocationStatus;
+
+            ConsoleHelper.WriteSuccessLine($"淇敼鍓嶏細" + lastStatus.ToString());
             locationInfo.LocationStatus = (int)LocationEnum.FreeDisable;
             ConsoleHelper.WriteSuccessLine($"淇敼鍚庯細" + locationInfo.LocationStatus.ToString());
             await UpdateLocationAsync(locationInfo);
+
+            _locationStatusChangeRecordRepository.AddLocationStatusChangeRecord(locationInfo, lastStatus, (int)StatusChangeTypeEnum.AutomaticStorage, task.TaskNum);
+
             return task;
         }
         catch (Exception ex)
@@ -784,10 +817,13 @@
                             var content = JsonConvert.DeserializeObject<WebResponseContent>(result);
                             if (content.Status)
                             {
+                                int lastStatus = item.LocationInfo.LocationStatus;
                                 await BaseDal.AddDataAsync(task);
                                 // 鏇存柊搴撳瓨浣嶇疆鐘舵�佷负涓嶅彲鐢�
                                 item.LocationInfo.LocationStatus = (int)LocationEnum.InStockDisable;
                                 await _locationRepository.UpdateDataAsync(item.LocationInfo);
+
+                                _locationStatusChangeRecordRepository.AddLocationStatusChangeRecord(item.LocationInfo, lastStatus, (int)StatusChangeTypeEnum.AutomaticDelivery, task.TaskNum);
                             }
                         }
                     }
@@ -823,7 +859,7 @@
 
                 var location = locations.OrderBy(x => x.Layer).ThenBy(x => x.Column).ThenBy(x => x.Row).FirstOrDefault();
 
-                var stockInfo = await QueryStockInfoForEmptyTrayAsync("CWSC1");
+                var stockInfo = await QueryStockInfoForEmptyTrayAsync("CWSC1","10086");
 
                 if (stockInfo != null)
                 {
@@ -833,6 +869,7 @@
                     WMSTaskDTO wmsTask = CreateTaskDTO(task);
 
                     // 鏇存柊搴撳瓨浣嶇疆鐘舵�佷负涓嶅彲鐢�
+                    int lastStatus = location.LocationStatus;
                     stockInfo.LocationInfo.LocationStatus = (int)LocationEnum.InStockDisable;
                     location.LocationStatus = (int)LocationEnum.Distribute;
                     await _unitOfWorkManage.UseTranAsync(async () =>
@@ -841,6 +878,8 @@
                         await _locationRepository.UpdateDataAsync(stockInfo.LocationInfo);
                         await _locationRepository.UpdateDataAsync(location);
                     });
+
+                    _locationStatusChangeRecordRepository.AddLocationStatusChangeRecord(location, lastStatus, (int)StatusChangeTypeEnum.AutomaticDelivery, task.TaskNum);
 
                     // 杩斿洖鎴愬姛鍝嶅簲
                     return content.OK(data: wmsTask);
@@ -865,7 +904,14 @@
         {
             Dt_StationManager station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == json.Position && x.stationType == 12 && x.stationArea == "Call");
 
-            DtStockInfo stockInfo = _stockInfoRepository.QueryFirst(X => X.IsFull && X.AreaCode == "CWSC3" && X.ProductionLine == station.productLine);
+            var stockInfo = _stockInfoRepository.Db.Queryable<DtStockInfo>()
+                    .Includes(x => x.LocationInfo) // 棰勫姞杞絃ocationInfo
+                    .Where(x => x.AreaCode == "CWSC3" && x.IsFull == true) // 杩囨护鏉′欢
+                    .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock) // 杩囨护鏉′欢
+                    .OrderBy(x => x.OutboundTime) // 鎺掑簭
+                    .First(); // 鑾峰彇绗竴涓厓绱�
+
+            //DtStockInfo stockInfo = _stockInfoRepository.QueryFirst(X => X.IsFull && X.AreaCode == "CWSC3" && X.ProductionLine == station.productLine);
             if (stockInfo == null) throw new Exception("搴撳唴鏃犳弧瓒虫潯浠剁殑搴撳瓨鍙嚭搴�");
 
             DtLocationInfo locationInfo = _locationRepository.QueryFirst(x => x.AreaId == 5 && x.LocationCode == stockInfo.LocationCode);
@@ -875,7 +921,7 @@
             // 鍒涘缓鏂颁换鍔″疄渚�
             var task = new Dt_Task
             {
-                CurrentAddress = locationInfo.RoadwayNo,
+                CurrentAddress = stockInfo.LocationCode,
                 Grade = 1,
                 Roadway = locationInfo.RoadwayNo,
                 TargetAddress = json.Position,
@@ -893,6 +939,13 @@
 
             WMSTaskDTO taskDTO = CreateTaskDTO(task);
 
+            int lastStatus = locationInfo.LocationStatus;
+
+            BaseDal.AddData(task);
+            stockInfo.LocationInfo.LocationStatus = (int)LocationEnum.InStockDisable;
+            _locationRepository.UpdateData(stockInfo.LocationInfo);
+
+            _locationStatusChangeRecordRepository.AddLocationStatusChangeRecord(stockInfo.LocationInfo, lastStatus, (int)StatusChangeTypeEnum.AutomaticDelivery, task.TaskNum);
 
             return content.OK(data: taskDTO);
         }
@@ -916,7 +969,7 @@
 
             if (emergencyTask == null) throw new Exception("鐏鍙傛暟涓虹┖");
 
-            DtLocationInfo locationInfo = _locationRepository.QueryFirst(x => x.Row == emergencyTask.row && x.Column == emergencyTask.column && x.Layer == emergencyTask.layer && x.RoadwayNo == emergencyTask.Roadway);
+            DtLocationInfo locationInfo = _locationRepository.QueryFirst(x => x.Row == emergencyTask.row && x.Column == emergencyTask.column && x.Layer == emergencyTask.layer && x.AreaId == emergencyTask.zone);
             if (locationInfo == null)
             {
                 throw new Exception("鏈煡搴撲綅");

--
Gitblit v1.9.3