From ccf5c6a4396e810b46676e545f7ad8970b3787f1 Mon Sep 17 00:00:00 2001
From: 肖洋 <cathay_xy@163.com>
Date: 星期日, 15 十二月 2024 09:23:25 +0800
Subject: [PATCH] 更新项目依赖,修复代码注释,调整开发环境配置

---
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs |   97 +++++++++++++++++++++++++-----------------------
 1 files changed, 50 insertions(+), 47 deletions(-)

diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
index 19379e7..0635fc9 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
@@ -1,20 +1,11 @@
-锘�
-using AngleSharp.Io;
-using log4net.Core;
-using Mapster;
+锘縰sing Mapster;
 using Masuit.Tools;
-using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
-using SixLabors.Fonts.Tables.AdvancedTypographic;
 using WIDESEA_Core.Const;
 using WIDESEA_DTO.MOM;
 using WIDESEA_DTO.WMS;
 using WIDESEA_IServices;
 using WIDESEA_IStoragIntegrationServices;
-using WIDESEA_Model.Models;
-using WIDESEA_Services;
-using WIDESEA_StorageBasicRepository;
 using WIDESEAWCS_BasicInfoRepository;
-using WIDESEAWCS_Model.Models;
 
 namespace WIDESEA_StorageTaskServices;
 
@@ -76,7 +67,6 @@
 
     #region 鍑哄簱浠诲姟瀹屾垚
 
-
     public async Task<WebResponseContent> CompleteStackTaskAsync(Dt_Task task, DtStockInfo stock)
     {
         WebResponseContent content = new WebResponseContent();
@@ -102,6 +92,7 @@
 
             // 鏇存柊搴撳瓨鐘舵�佸拰浠诲姟鐘舵��
             (var loc, var tas) = UpdateStockAndTaskStatus(stock, task);
+            var taskHty = task.Adapt<Dt_Task_Hty>();
 
             // 浜嬪姟澶勭悊
             await _unitOfWorkManage.UseTranAsync(async () =>
@@ -114,6 +105,7 @@
                 await UpdateLocationAsync(loc);
                 //if (task.Roadway.Contains("FR") || task.Roadway.Contains("GW") || task.TaskType == (int)TaskOutboundTypeEnum.OutTray)   //濡傛灉鏄垎瀹规垨楂樻俯鍑哄簱 灏嗕换鍔″垹闄�
                 await DeleteTaskAsync(task.TaskId);
+                await AddTaskHtyAsync(taskHty);
             });
 
             return content.OK("浠诲姟瀹屾垚鎴愬姛", task.Remark);
@@ -182,7 +174,6 @@
 
     private void ValidateResponse(WebResponseContent content)
     {
-
     }
 
     private (DtLocationInfo, Dt_Task) UpdateStockAndTaskStatus(DtStockInfo stock, Dt_Task task)
@@ -236,6 +227,15 @@
         }
     }
 
+    private async Task AddTaskHtyAsync(Dt_Task_Hty taskHty)
+    {
+        var isTaskAdd = await _task_HtyRepository.AddDataAsync(taskHty) > 0;
+        if (!isTaskAdd)
+        {
+            throw new Exception("鍘嗗彶浠诲姟淇℃伅娣诲姞澶辫触");
+        }
+    }
+
     #endregion 鍑哄簱浠诲姟瀹屾垚
 
     #region 绉诲簱浠诲姟瀹屾垚
@@ -251,12 +251,12 @@
         try
         {
             // 鏇存柊璐т綅鍜屽簱瀛樹俊鎭�
-            (DtStockInfo updateStock, DtLocationInfo locationInf) = UpdateStockLocation(stock, task.NextAddress);
+            (DtStockInfo updateStock, DtLocationInfo locationInForm, DtLocationInfo locationInfoTo) = UpdateStockLocation(stock, task);
             var taskHty = CreateHistoricalTask(task);
-            LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "绉诲簱浠诲姟瀹屾垚", $"璐т綅鍦板潃锛歿task.TargetAddress},淇敼鍚庡簱瀛樻暟鎹細{JsonConvert.SerializeObject(updateStock)}锛屽師鍏堣揣浣嶆暟鎹細{locationInf}");
+            LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "绉诲簱浠诲姟瀹屾垚", $"璐т綅鍦板潃锛歿task.TargetAddress},淇敼鍚庡簱瀛樻暟鎹細{JsonConvert.SerializeObject(updateStock)}锛屽師鍏堣揣浣嶆暟鎹細{locationInForm}");
 
             // 鎵ц鏁版嵁搴撲簨鍔�
-            bool isResult = await ExecuteTransaction(updateStock, taskHty, locationInf, task.TaskId);
+            bool isResult = await ExecuteTransaction(updateStock, taskHty, locationInForm, locationInfoTo, task.TaskId);
             if (isResult)
                 content.OK("绉诲簱浠诲姟瀹屾垚鎴愬姛");
             else
@@ -293,7 +293,6 @@
                 // 鎵ц鏁版嵁搴撲簨鍔�
                 await _unitOfWorkManage.UseTranAsync(async () =>
                 {
-
                     // 娣诲姞鍘嗗彶浠诲姟
                     var isTaskHtyAdd = await _task_HtyRepository.AddDataAsync(taskHtyNG) > 0;
 
@@ -317,7 +316,6 @@
 
             // 鏍规嵁鏄惁鏈夌粍鐩樹俊鎭垱寤哄簱瀛樺疄渚嬫ā鍨�
             DtStockInfo stock = boxing == null ? CreateEmptyPalletStock(task, locationInf) : CreateFullPalletStock(task, locationInf, boxing);
-
 
             // 鎵ц鏁版嵁搴撲簨鍔�
             bool isResult = await ExecuteTransaction(stock, taskHty, locationInf, task.TaskId, boxing);
@@ -421,7 +419,6 @@
                 throw new Exception("鏈壘鍒板搴斿尯鍩熶俊鎭�");
         }
 
-
         var boxDetail = boxing.BoxingInfoDetails.Adapt<List<DtStockInfoDetail>>();
         boxDetail.ForEach(x => { x.Status = (int)StockStateEmun.宸插叆搴�; });
         var stock = new DtStockInfo()
@@ -450,6 +447,10 @@
 
         var result = _agingInOrOutInputService.GetOCVInputAsync(agingInputDto).Result;
         var respone = JsonConvert.DeserializeObject<ResponeAgingInputDto>(result.Data.ToString());
+        if (respone.ProductionLine == null || respone.ParameterInfos == null || respone.SpecialParameterDuration.IsNullOrEmpty())
+        {
+            throw new Exception("MOM鏁版嵁杩斿洖閿欒");
+        }
         stock.LinedProcessFeedbackTime = respone.LinedProcessFeedbackTime;
         stock.SpecialParameterDuration = respone.SpecialParameterDuration;
         //2024骞�11鏈�16鏃ワ細鏂板瀛楁璁$畻搴斿嚭搴撴椂闂�
@@ -511,6 +512,9 @@
                 LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍑哄簱浠诲姟", "");
                 return await CompleteStackTaskAsync(task, stock);
 
+            case (int)TaskRelocationTypeEnum.Relocation:
+                return await CompleteTransferTaskAsync(task, stock);
+
             default:
                 return content.Error("浠诲姟绫诲瀷涓嶅瓨鍦�");
         }
@@ -521,6 +525,7 @@
     #region 璇锋眰浠诲姟鍏ュ簱
 
     #region
+
     /// <summary>
     /// 璇锋眰浠诲姟宸烽亾
     /// </summary>
@@ -555,7 +560,6 @@
                     return content.OK(data: taskDTO);
                 }
             }
-
 
             var stock = await _stockInfoRepository.QueryFirstNavAsync(x => x.PalletCode == input.PalletCode && x.IsFull);
             if (stock != null)
@@ -708,18 +712,23 @@
                     case "CH01":
                         areaIn = "CH001";
                         break;
+
                     case "JZ01":
                         areaIn = "JZ001";
                         break;
+
                     case "GW01":
                         areaIn = "GWSC1";
                         break;
+
                     case "CW01":
                         areaIn = "CWSC1";
                         break;
+
                     case "CW02":
                         areaIn = "CWSC2";
                         break;
+
                     default:
                         break;
                 }
@@ -751,7 +760,7 @@
         return content;
     }
 
-    #endregion
+    #endregion 璇锋眰浠诲姟鍏ュ簱
 
     public async Task<WebResponseContent> RequestTaskAsync(RequestTaskDto input)
     {
@@ -825,7 +834,6 @@
                 return await HandleErrorCells(input, area, serialNosError);
             }
 
-
             var boxing = CreateBoxingInfo(result, input.PalletCode);
             if (boxing == null) return content.Error("缁勭洏澶辫触");
 
@@ -840,6 +848,7 @@
 
         return content;
     }
+
     /// <summary>
     /// 鏇存柊浠诲姟璐т綅
     /// </summary>
@@ -855,11 +864,9 @@
                 return content.Error($"鏆傛湭鎵惧埌銆恵input.PalletCode}銆戠殑浠诲姟");
 
             return content = await UpdateExistingTask(input, task);
-
         }
         catch (Exception err)
         {
-
             throw;
         }
     }
@@ -874,7 +881,6 @@
         WebResponseContent content = new WebResponseContent();
         try
         {
-
             // 璋冪敤BaseDal.QueryFirstAsync鏂规硶锛屾煡璇换鍔�
             var task = await BaseDal.QueryFirstAsync(x => x.PalletCode == input.PalletCode);
             if (task != null && task.TaskState == (int)TaskInStatusEnum.InNew)
@@ -895,7 +901,6 @@
                 return content.OK(data: task);
             }
 
-
             var stationManagers = _stationManagerRepository.QueryData(x => x.stationType == 6 && x.stationChildCode == input.Position).FirstOrDefault();
             if (stationManagers == null)
             {
@@ -910,7 +915,6 @@
         }
         catch (Exception)
         {
-
             throw;
         }
     }
@@ -955,7 +959,7 @@
         };
     }
 
-    #endregion 璇锋眰浠诲姟鍏ュ簱
+    #endregion 澶栭儴鎺ュ彛鏂规硶
 
     #region 璇锋眰鍑哄簱锛堝疄鐩�&绌虹洏锛�
 
@@ -967,15 +971,15 @@
     /// <param name="areaCode">鍖哄煙缂栫爜</param>
     /// <param name="roadways">宸烽亾缂栫爜闆嗗悎</param>
     /// <returns>杩斿洖缁撴灉闆�</returns>
-    public async Task<WebResponseContent> RequestTrayOutTaskAsync(string position, int tag, string areaCode, List<string> roadways)
+    public async Task<WebResponseContent> RequestTrayOutTaskAsync(string position, int tag, string areaCode, string productionLine)
     {
         WebResponseContent content = new WebResponseContent();
         try
         {
             // 鏍规嵁鎵樼洏绫诲瀷鏌ヨ搴撳瓨淇℃伅
             DtStockInfo stockInfo = tag == (int)TaskOutboundTypeEnum.Outbound
-                ? QueryStockInfoForRealTrayAsync(areaCode, roadways).Result
-                : QueryStockInfoForEmptyTrayAsync(areaCode, roadways).Result;
+                ? QueryStockInfoForRealTrayAsync(areaCode, productionLine).Result
+                : QueryStockInfoForEmptyTrayAsync(areaCode).Result;
 
             if (stockInfo == null)
             {
@@ -1022,7 +1026,7 @@
     /// <summary>
     /// 鏌ヨ瀹炵洏搴撳瓨淇℃伅
     /// </summary>
-    private async Task<DtStockInfo> QueryStockInfoForRealTrayAsync(string areaCode, List<string> roadways)
+    private async Task<DtStockInfo> QueryStockInfoForRealTrayAsync(string areaCode, string productionLine)
     {
         var area = await _areaInfoRepository.QueryFirstAsync(x => x.AreaCode == areaCode);
 
@@ -1030,6 +1034,7 @@
             .Includes(x => x.LocationInfo) // 棰勫姞杞絃ocationInfo
             .Includes(x => x.StockInfoDetails) // 棰勫姞杞絊tockInfoDetails
             .Where(x => x.AreaCode == areaCode && x.OutboundTime < DateTime.Now && x.IsFull == true) // 杩囨护鏉′欢
+            .WhereIF(!productionLine.IsNullOrEmpty(), x => x.ProductionLine == productionLine)
             .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && x.LocationInfo.AreaId == area.AreaID) // 杩囨护鏉′欢
             .OrderBy(x => x.OutboundTime) // 鎺掑簭
             .FirstAsync(); // 鑾峰彇绗竴涓厓绱�
@@ -1043,7 +1048,7 @@
     /// <summary>
     /// 鏌ヨ绌虹洏搴撳瓨淇℃伅
     /// </summary>
-    private async Task<DtStockInfo> QueryStockInfoForEmptyTrayAsync(string areaCode, List<string> roadways)
+    private async Task<DtStockInfo> QueryStockInfoForEmptyTrayAsync(string areaCode)
     {
         var area = await _areaInfoRepository.QueryFirstAsync(x => x.AreaCode == areaCode);
 
@@ -1106,7 +1111,7 @@
         };
     }
 
-    #endregion 璇锋眰鍑哄簱
+    #endregion 璇锋眰鍑哄簱锛堝疄鐩�&绌虹洏锛�
 
     #region 浠诲姟鐘舵�佹洿鏀�
 
@@ -1156,7 +1161,7 @@
         return content;
     }
 
-    #endregion
+    #endregion 浠诲姟鐘舵�佹洿鏀�
 
     #region 鍑哄簱瑙g洏
 
@@ -1183,7 +1188,7 @@
         return content;
     }
 
-    #endregion
+    #endregion 鍑哄簱瑙g洏
 
     #region 鎸囧畾浠诲姟鍑哄簱
 
@@ -1249,6 +1254,7 @@
 
         return content;
     }
+
     private string GetWCSIpReceiveTask()
     {
         var configs = _configService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
@@ -1261,7 +1267,7 @@
         return wmsBase + ipAddress;
     }
 
-    #endregion
+    #endregion 鎸囧畾浠诲姟鍑哄簱
 
     #endregion 澶栭儴鎺ュ彛鏂规硶
 
@@ -1438,20 +1444,19 @@
     /// <param name="stock">搴撳瓨瀵硅薄</param>
     /// <param name="toLocation">鐩爣浣嶇疆</param>
     // 鏇存柊搴撳瓨鍜屼綅缃俊鎭�
-    private (DtStockInfo, DtLocationInfo) UpdateStockLocation(DtStockInfo stock, string toLocation)
+    private (DtStockInfo, DtLocationInfo, DtLocationInfo) UpdateStockLocation(DtStockInfo stock, Dt_Task task)
     {
-        // 鑾峰彇搴撳瓨淇℃伅
-        var locationInfo = _locationRepository.QueryFirst(x => x.LocationCode == stock.LocationCode);
-        // 灏嗗簱瀛樼姸鎬佽缃负鍦ㄥ簱
-        locationInfo.LocationStatus = LocationEnum.InStock.ObjToInt();
+        //淇敼鏉ユ簮搴撲綅鍜� 鐩爣搴撲綅鐘舵��
+        var fromLocation = _locationRepository.QueryFirst(x => x.LocationCode == task.SourceAddress && x.RoadwayNo == task.Roadway);
+        fromLocation.LocationStatus = LocationEnum.Free.ObjToInt();
+        var toLocation = _locationRepository.QueryFirst(x => x.LocationCode == task.SourceAddress && x.RoadwayNo == task.Roadway);
+        toLocation.LocationStatus = LocationEnum.InStock.ObjToInt();
 
         // 灏嗗簱瀛樹綅缃缃负鐩爣浣嶇疆
-        stock.LocationCode = toLocation;
-        // 灏嗗簱瀛樼姸鎬佽缃负鍦ㄥ簱
-        stock.LocationInfo.LocationStatus = LocationEnum.InStock.ObjToInt();
+        stock.LocationCode = task.TargetAddress;
 
         // 杩斿洖鏇存柊鍚庣殑搴撳瓨鍜屼綅缃俊鎭�
-        return (stock, locationInfo);
+        return (stock, fromLocation, toLocation);
     }
 
     /// <summary>
@@ -1483,7 +1488,6 @@
                                             .Include(x => x.BoxingInfoDetails)
                                             .ExecuteCommandAsync();
                 }
-
             }
 
             var stocks = _stockInfoRepository.QueryData(x => x.AreaCode == stock.AreaCode && x.ProductionLine == stock.ProductionLine && x.SpecialParameterDuration != stock.SpecialParameterDuration);
@@ -1595,7 +1599,6 @@
                 _unitOfWorkManage.CommitTran();
                 return content.OK(data: task);
             }
-
         }
         catch (Exception ex)
         {

--
Gitblit v1.9.3