From b2feeabc23454a2c9e161aa3b26d0edf938e55bd Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期二, 22 七月 2025 15:03:17 +0800
Subject: [PATCH] 增加超时设置,更新依赖注入和查询逻辑

---
 CodeManagement/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs |   68 +++++++++++++++++++++++++++------
 1 files changed, 55 insertions(+), 13 deletions(-)

diff --git a/CodeManagement/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs b/CodeManagement/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
index 499baeb..01591d9 100644
--- a/CodeManagement/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
+++ b/CodeManagement/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
@@ -1,4 +1,5 @@
-锘縰sing Masuit.Tools;
+锘縰sing Mapster;
+using Masuit.Tools;
 using SqlSugar;
 using WIDESEA_Common.CustomModels;
 using WIDESEA_Core.Const;
@@ -581,17 +582,48 @@
 
     #region 鐩存帴鍑哄簱浠诲姟瀹屾垚
 
-    public async Task<WebResponseContent> CompleteInToOutTaskAsync(Dt_Task task)
+    public async Task<WebResponseContent> CompleteInToOutTaskAsync(Dt_Task task, DtStockInfo stock)
     {
         WebResponseContent content = new WebResponseContent();
         try
         {
-            //娣诲姞鍘嗗彶
-            var taskHty = CreateHistoricalTask(task);
-            // 娣诲姞鍘嗗彶浠诲姟
-            var isTaskHtyAdd = await _task_HtyRepository.AddDataAsync(taskHty) > 0;
-            //鍒犻櫎浠诲姟
-            BaseDal.DeleteData(task);
+            DtStockInfo_Hty stockInfo_Hty = null;
+            if (stock != null)
+            {
+                stockInfo_Hty = stock.Adapt<DtStockInfo_Hty>();
+                stockInfo_Hty.ModifyDate = DateTime.Now;
+            }
+            var taskHty = task.Adapt<Dt_Task_Hty>();
+            taskHty.FinishTime = DateTime.Now;
+            taskHty.OperateType = App.User.UserName != null ? (int)OperateTypeEnum.浜哄伐瀹屾垚 : (int)OperateTypeEnum.鑷姩瀹屾垚;
+            taskHty.Creater = App.User.UserName != null ? App.User.UserName : "System";
+
+            var location = _locationRepository.QueryFirst(x => x.LocationCode == task.SourceAddress && x.RoadwayNo == task.Roadway);
+            if (location != null)
+            {
+                int lastStatus = location.LocationStatus;
+                location.LocationStatus = (int)LocationEnum.Free;
+                _locationStatusChangeRecordRepository.AddLocationStatusChangeRecord(location, lastStatus, (int)StatusChangeTypeEnum.AutomaticDelivery, task.TaskNum);
+            }
+            task.TaskState = (int)TaskOutStatusEnum.OutFinish;
+
+            // 浜嬪姟澶勭悊
+            await _unitOfWorkManage.UseTranAsync(async () =>
+            {
+                if (stockInfo_Hty != null)
+                {
+                    await DeleteStockInfoAsync(stock.Id);
+                    await DeleteStockInfoDetailsAsync(stock.StockInfoDetails);
+                    await AddStockInfoHtyAsync(stockInfo_Hty);
+                }
+
+                if (location != null)
+                {
+                    await UpdateLocationAsync(location);
+                }
+                await DeleteTaskAsync(task.TaskId);
+                await AddTaskHtyAsync(taskHty);
+            });
 
             return content.OK();
         }
@@ -1019,6 +1051,13 @@
                 .Where(x => x.DeviceCode.Contains("CWSC")) // 杩囨护鏉′欢
                 .ToList().Select(x => x.DeviceCode).ToList();
 
+            var outBoundMateriel = _dt_ChangeoversRepository.QueryData(x => x.Status == "1").ToList();
+            List<string>? materielCodes = outBoundMateriel.Count != 0
+                ? outBoundMateriel.Where(x => x.ProductionLine == station.productLine && x.ProcessCode == "CWSC3")
+                                  .Select(x => x.MaterielCode)
+                                  .ToList()
+                : null;
+
             // 淇敼鍚庣殑鏌ヨ浠g爜
             var stockInfo = await _stockInfoRepository.Db.Queryable<DtStockInfo>()
                                 .Includes(x => x.LocationInfo)
@@ -1029,6 +1068,7 @@
                                 .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock)
                                 // 澧炲姞瀵� LocationInfo 鐨勭┖鍊兼鏌�
                                 .WhereIF(!deviceCode.IsNullOrEmpty(), x => deviceCode.Contains(x.LocationInfo.RoadwayNo))
+                                .WhereIF(!materielCodes.IsNullOrEmpty(), x => x.StockInfoDetails.Any(y => materielCodes.Contains(y.MaterielCode)))
                                 .OrderBy(x => x.OutboundTime)
                                 .FirstAsync();
 
@@ -1088,6 +1128,7 @@
         var emergencyTask = new DTSEmergencyTask();
         try
         {
+            Console.WriteLine($"鐏鍙傛暟:{obj.ToString()}");
             emergencyTask = JsonConvert.DeserializeObject<DTSEmergencyTask>(obj.ToString());
             if (emergencyTask == null) throw new Exception("鐏鍙傛暟涓虹┖");
             string[] strings = emergencyTask.LocationCode.Split("-");
@@ -1180,14 +1221,15 @@
 
                 var configs = _configService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
                 var ipAddress = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.WCSIPAddress)?.ConfigValue;
-                var ReceiveByWMSTask = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.ReceiveTask)?.ConfigValue;
-                if (ReceiveByWMSTask == null || ipAddress == null)
+                var ReceiveByWMSFireAlarmTask = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.ReceiveByWMSFireAlarmTask)?.ConfigValue;
+                if (ReceiveByWMSFireAlarmTask == null || ipAddress == null)
                 {
                     throw new Exception("WMS IP 鏈厤缃�");
                 }
-                var wmsIpAddrss = ipAddress + ReceiveByWMSTask;
-
-                var respon = HttpHelper.Post(wmsIpAddrss, JsonConvert.SerializeObject(taskDTO));
+                var wmsIpAddrss = ipAddress + ReceiveByWMSFireAlarmTask;
+                List<WMSTaskDTO> taskDTOs = new List<WMSTaskDTO>();
+                taskDTOs.Add(taskDTO);
+                var respon = HttpHelper.Post(wmsIpAddrss, JsonConvert.SerializeObject(taskDTOs));
                 if (respon != null)
                 {
                     WebResponseContent respone = JsonConvert.DeserializeObject<WebResponseContent>(respon.ToString());

--
Gitblit v1.9.3