From 1d044540ee1b7041c7e89bdfe6d1339c99e80a4e Mon Sep 17 00:00:00 2001
From: 刘磊 <1161824510@qq.com>
Date: 星期三, 08 一月 2025 14:41:16 +0800
Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/HuaYiZhongHeng/BaiBuLiKu

---
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs |  251 ++++++++++++++++++++++++++++++--------------------
 1 files changed, 151 insertions(+), 100 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 8113250..1864fd5 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
@@ -5,6 +5,8 @@
 using System.Threading.Tasks;
 using WIDESEA_Common;
 using WIDESEA_Common.CustomModels;
+
+//using WIDESEA_Common.CustomModels;
 using WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.Const;
 using WIDESEA_DTO.MOM;
@@ -161,105 +163,121 @@
 
     private async Task<Dt_Task> CreateInToOutTaskAsync(RequestTaskDto input, Dt_StationManager stationManager)
     {
-        //if (stationManager.stationType != 5) throw new Exception("閿欒鐨勮皟鍙�");
-
-        input.EquiCodeMOM = "24MEJQ11-1006-1";
-
-        // 鍒涘缓涓�涓猅rayCellsStatusDto瀵硅薄锛屽苟璧嬪��
-        TrayCellsStatusDto trayCells = new TrayCellsStatusDto()
+        try
         {
-            Software = "WMS",
-            TrayBarcode = input.PalletCode,
-            //EquipmentCode = "EQ_CWJZ01"
-            EquipmentCode = input.EquiCodeMOM
-        };
+            //if (stationManager.stationType != 5) throw new Exception("閿欒鐨勮皟鍙�");
 
-        // 璋冪敤GetTrayCellStatusAsync鏂规硶锛岃幏鍙栨暣鐩樼數鑺�
-        WebResponseContent content = await GetTrayCellStatusAsync(trayCells);
-        // 濡傛灉鐘舵�佷负false锛屽垯杩斿洖content
-        if (!content.Status) throw new Exception(content.Message);
+            input.EquiCodeMOM = "24MEJQ11-1006-1";
 
-        // 娣诲姞缁勭洏淇℃伅
-        // 灏哻ontent.Data杞崲涓篟esultTrayCellsStatus瀵硅薄
-        var result = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(content.Data.ToString());
-        if (result.SerialNos.Count <= 0)
-        {
-            ConsoleHelper.WriteErrorLine(result.MOMMessage);
-            if (stationManager.stationType != 3)
+            // 鍒涘缓涓�涓猅rayCellsStatusDto瀵硅薄锛屽苟璧嬪��
+            TrayCellsStatusDto trayCells = new TrayCellsStatusDto()
             {
-                var taskNG = new Dt_Task
+                Software = "WMS",
+                TrayBarcode = input.PalletCode,
+                //EquipmentCode = "EQ_CWJZ01"
+                EquipmentCode = input.EquiCodeMOM
+            };
+
+            // 璋冪敤GetTrayCellStatusAsync鏂规硶锛岃幏鍙栨暣鐩樼數鑺�
+            WebResponseContent content = await GetTrayCellStatusAsync(trayCells);
+            // 濡傛灉鐘舵�佷负false锛屽垯杩斿洖content
+            if (!content.Status) throw new Exception(content.Message);
+
+            // 缁勭洏淇℃伅
+            // 灏哻ontent.Data杞崲涓篟esultTrayCellsStatus瀵硅薄
+            var result = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(content.Data.ToString());
+            if (result.SerialNos.Count <= 0)
+            {
+                ConsoleHelper.WriteErrorLine(result.MOMMessage);
+                if (stationManager.stationType != 3)
                 {
-                    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;
-            }
-            else
-            {
-                return null;
-            }
-        }
-
-        // 澶勭悊寮傚父鐢佃姱鎯呭喌
-        var serialNosError = result.SerialNos.Where(x => x.SerialNoStatus != 1).ToList();
-        if (serialNosError.Count > 0)
-        {
-            if (stationManager.stationType != 3)
-            {
-                var taskNG = new Dt_Task
+                    var taskNG = new Dt_Task
+                    {
+                        CurrentAddress = input.Position,
+                        Grade = 3,
+                        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;
+                }
+                else
                 {
-                    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.OutNG,
-                    TaskNum = await BaseDal.GetTaskNo(),
-                    Creater = "Systeam"
-                };
-                return taskNG;
+                    //鏃犵數鑺� 鈫� 褰撶┖妗嗭紵 杩樻槸杩斿洖寮傚父锛�
+                    return null;
+                }
             }
+
+            // 澶勭悊寮傚父鐢佃姱鎯呭喌
+            var serialNosError = result.SerialNos.Where(x => x.SerialNoStatus != 1).ToList();
+            if (serialNosError.Count > 0)
+            {
+                if (stationManager.stationType != 3)
+                {
+                    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;
+                }
+                else
+                {
+                    Console.WriteLine($"绔欏彴{stationManager.stationChildCode}MOM杩斿洖鐢佃姱寮傚父:{result.MOMMessage}");
+                    return null;
+                }
+            }
+            //else
+            //{
+            //    throw new Exception($"绔欏彴{stationManager.stationChildCode}MOM杩斿洖鐢佃姱寮傚父:{result.MOMMessage}");
+            //}
+
+            var targetStation = _stationManagerRepository.QueryFirst(x => x.stationPLC == stationManager.stationPLC && x.Roadway == stationManager.Roadway && x.stationType == 2);
+
+            var task = new Dt_Task
+            {
+                CurrentAddress = input.Position,
+                Grade = 3,
+                Roadway = input.Roadways,
+                TargetAddress = targetStation.stationLocation,
+                Dispatchertime = DateTime.Now,
+                MaterialNo = "",
+                NextAddress = input.Roadways,
+                OrderNo = null,
+                PalletCode = input.PalletCode,
+                SourceAddress = stationManager.stationLocation,
+                TaskState = (int)TaskInStatusEnum.Line_InFinish,
+                TaskType = (int)TaskOutboundTypeEnum.InToOut,
+                TaskNum = await BaseDal.GetTaskNo(),
+                Creater = "Systeam"
+            };
+            return task;
         }
-
-        var targetStation = _stationManagerRepository.QueryFirst(x => x.stationPLC == stationManager.stationPLC && x.Roadway == stationManager.Roadway && x.stationType == 2);
-
-        var task = new Dt_Task
+        catch (Exception ex)
         {
-            CurrentAddress = input.Position,
-            Grade = 1,
-            Roadway = input.Roadways,
-            TargetAddress = targetStation.stationLocation,
-            Dispatchertime = DateTime.Now,
-            MaterialNo = "",
-            NextAddress = input.Roadways,
-            OrderNo = null,
-            PalletCode = input.PalletCode,
-            SourceAddress = stationManager.stationLocation,
-            TaskState = (int)TaskInStatusEnum.Line_InFinish,
-            TaskType = (int)TaskOutboundTypeEnum.InToOut,
-            TaskNum = await BaseDal.GetTaskNo(),
-            Creater = "Systeam"
-        };
-
-        return task;
+            throw new Exception(ex.Message);
+        }
     }
 
     #endregion 鐩存帴鍑哄簱浠诲姟
@@ -285,6 +303,7 @@
 
         if (stationManager.stationType == 1)
         {
+            #region
             // 鍒涘缓涓�涓猅rayCellsStatusDto瀵硅薄锛屽苟璧嬪��
             TrayCellsStatusDto trayCells = new TrayCellsStatusDto()
             {
@@ -350,6 +369,7 @@
             ////// 璋冪敤GetProcessResponseAsync鏂规硶锛岃幏鍙栧伐鑹哄搷搴�
             ////var processResponse = await GetProcessResponseAsync(process, input.Position);
             var isBox = await _boxingInfoRepository.AddDataNavAsync(boxing);
+            #endregion
         }
 
         var task = new Dt_Task
@@ -369,10 +389,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;
     }
@@ -519,7 +542,8 @@
         {
             //娣诲姞鍘嗗彶
             var taskHty = CreateHistoricalTask(task);
-
+            // 娣诲姞鍘嗗彶浠诲姟
+            var isTaskHtyAdd = await _task_HtyRepository.AddDataAsync(taskHty) > 0;
             //鍒犻櫎浠诲姟
             BaseDal.DeleteData(task);
 
@@ -576,7 +600,7 @@
                 var Epmtytask = new Dt_Task
                 {
                     CurrentAddress = input.Position,
-                    Grade = 3,  //浼樺厛澶勭悊寮傚父鎺掑嚭鍙g殑浠诲姟 闃叉姝e父闇�鎺掑嚭寮傚父鍙g殑浠诲姟鍫电嚎
+                    Grade = 4,  //浼樺厛澶勭悊寮傚父鎺掑嚭鍙g殑浠诲姟 闃叉姝e父闇�鎺掑嚭寮傚父鍙g殑浠诲姟鍫电嚎
                     Roadway = input.Roadways,
                     TargetAddress = EmptylocationInfo.LocationCode,
                     Dispatchertime = DateTime.Now,
@@ -653,10 +677,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)
@@ -765,10 +794,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);
                             }
                         }
                     }
@@ -814,6 +846,7 @@
                     WMSTaskDTO wmsTask = CreateTaskDTO(task);
 
                     // 鏇存柊搴撳瓨浣嶇疆鐘舵�佷负涓嶅彲鐢�
+                    int lastStatus = location.LocationStatus;
                     stockInfo.LocationInfo.LocationStatus = (int)LocationEnum.InStockDisable;
                     location.LocationStatus = (int)LocationEnum.Distribute;
                     await _unitOfWorkManage.UseTranAsync(async () =>
@@ -822,6 +855,8 @@
                         await _locationRepository.UpdateDataAsync(stockInfo.LocationInfo);
                         await _locationRepository.UpdateDataAsync(location);
                     });
+
+                    _locationStatusChangeRecordRepository.AddLocationStatusChangeRecord(location, lastStatus, (int)StatusChangeTypeEnum.AutomaticDelivery, task.TaskNum);
 
                     // 杩斿洖鎴愬姛鍝嶅簲
                     return content.OK(data: wmsTask);
@@ -844,20 +879,28 @@
         WebResponseContent content = new WebResponseContent();
         try
         {
-            Dt_StationManager station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == json.Position);
+            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("搴撳唴鏃犳弧瓒虫潯浠剁殑搴撳瓨鍙嚭搴�");
 
-            Dt_StationManager OutStation = _stationManagerRepository.QueryFirst(x => x.stationPLC == "1016" && x.stationType == 10);
+            DtLocationInfo locationInfo = _locationRepository.QueryFirst(x => x.AreaId == 5 && x.LocationCode == stockInfo.LocationCode);
 
+            Dt_StationManager OutStation = _stationManagerRepository.QueryFirst(x => x.stationPLC == "1016" && x.stationType == 10 && x.Roadway == locationInfo.RoadwayNo && x.stationStatus == "1");
 
             // 鍒涘缓鏂颁换鍔″疄渚�
             var task = new Dt_Task
             {
-                CurrentAddress = stockInfo.LocationInfo.RoadwayNo,
+                CurrentAddress = stockInfo.LocationCode,
                 Grade = 1,
-                Roadway = stockInfo.LocationInfo.RoadwayNo,
+                Roadway = locationInfo.RoadwayNo,
                 TargetAddress = json.Position,
                 Dispatchertime = DateTime.Now,
                 MaterialNo = "",
@@ -873,11 +916,19 @@
 
             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);
         }
         catch (Exception ex)
         {
+            Console.WriteLine($"CW3鑷冲寘瑁呭嚭搴撳紓甯�:{ex.ToString()}");
             return content.Error($"澶辫触锛歿ex.Message}");
         }
     }
@@ -895,7 +946,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