From a07e4702be045efa9b04b49a561463875dd28e0a Mon Sep 17 00:00:00 2001
From: 肖洋 <cathay_xy@163.com>
Date: 星期六, 04 一月 2025 16:18:33 +0800
Subject: [PATCH] 更新配置文件和事件总线逻辑,修复任务处理逻辑

---
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs |   61 +++++++++++++++++++++++-------
 1 files changed, 47 insertions(+), 14 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 29f3ad9..3b6a326 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,4 +1,5 @@
 锘縰sing AngleSharp.Dom;
+using log4net.Core;
 using Mapster;
 using Masuit.Tools;
 using SixLabors.Fonts.Tables.AdvancedTypographic;
@@ -10,6 +11,7 @@
 using WIDESEA_DTO.WMS;
 using WIDESEA_IServices;
 using WIDESEA_IStoragIntegrationServices;
+using WIDESEA_StorageBasicRepository;
 using WIDESEA_StoragIntegrationServices;
 using WIDESEAWCS_BasicInfoRepository;
 
@@ -167,12 +169,19 @@
                         var agingOutputDto = MapToAgingOutputDto(stock);
                         content = await _agingInOrOutInputService.GetOCVOutputAsync(agingOutputDto);
 
-                        var result = JsonConvert.DeserializeObject<BasicResult>(content.Data.ToString());
-                        task.Remark = result.Success ? null : "NG";
-
-                        if (!result.Success && result.MessageCode == "E10001")
+                        if (content.Status)
                         {
-                            await HandleOutBoundError(stock, task);
+                            var result = JsonConvert.DeserializeObject<BasicResult>(content.Data.ToString());
+                            task.Remark = result.Success ? null : "NG";
+
+                            if (!result.Success && result.MessageCode == "E10001")
+                            {
+                                await HandleOutBoundError(stock, task);
+                            }
+                        }
+                        else
+                        {
+                            task.Remark = "NG";
                         }
                     }
                 }
@@ -268,11 +277,13 @@
     {
         var location = _locationRepository.QueryFirst(x => x.LocationCode == task.SourceAddress && x.RoadwayNo == task.Roadway);
         //var details = _stockInfoDetailRepository.QueryData(x => x.StockId == stock.Id);
-
+        int lastStatus = location.LocationStatus;
         location.LocationStatus = (int)LocationEnum.Free;
         task.TaskState = (int)TaskOutStatusEnum.OutFinish;
         //task.CurrentAddress = task.NextAddress;
         //task.NextAddress = task.TargetAddress;
+
+        _locationStatusChangeRecordRepository.AddLocationStatusChangeRecord(location, lastStatus, (int)StatusChangeTypeEnum.AutomaticDelivery, task.TaskNum);
 
         LogFactory.GetLog("浠诲姟瀹屾垚").Info(true, "鏇存柊搴撳瓨鐘舵�佷笌浠诲姟鐘舵��");
         return (location, task);
@@ -405,6 +416,7 @@
             var boxing = await _boxingInfoRepository.QueryFirstNavAsync(x => x.PalletCode == task.PalletCode);
             var locationInf = await _locationRepository.QueryFirstAsync(x => x.LocationCode == task.TargetAddress && x.RoadwayNo == task.Roadway);
 
+            int lastStatus = locationInf.LocationStatus;
             // 鏇存柊鐩爣浣嶇疆鐘舵�佷负搴撳瓨涓�
             locationInf.LocationStatus = (int)LocationEnum.InStock;
 
@@ -416,6 +428,10 @@
                 await _locationRepository.UpdateDataAsync(locationInf);
                 await _task_HtyRepository.AddDataAsync(taskHty);
                 await BaseDal.DeleteDataAsync(task);
+
+                //璁板綍璐т綅鍙樺姩淇℃伅
+                _locationStatusChangeRecordRepository.AddLocationStatusChangeRecord(locationInf, lastStatus, (int)StatusChangeTypeEnum.AutomaticStorage, task.TaskNum);
+
                 return content.OK("鍏ュ簱浠诲姟瀹屾垚鎴愬姛");
             }
             // 鏍规嵁鏄惁鏈夌粍鐩樹俊鎭垱寤哄簱瀛樺疄渚嬫ā鍨�
@@ -425,6 +441,7 @@
             bool isResult = await ExecuteTransaction(stock, taskHty, locationInf, task.TaskId, boxing);
             if (isResult)
             {
+                _locationStatusChangeRecordRepository.AddLocationStatusChangeRecord(locationInf, lastStatus, (int)StatusChangeTypeEnum.AutomaticStorage, task.TaskNum);
                 content.OK("鍏ュ簱浠诲姟瀹屾垚鎴愬姛");
             }
             else
@@ -949,11 +966,17 @@
             // 鍒涘缓骞惰幏鍙栨暣鐩樼數鑺姸鎬�
             TrayCellsStatusDto trayCells = CreateTrayCellsStatusDto(area, input.PalletCode);
             content = await GetTrayCellStatusAsync(trayCells);
-            if (!content.Status) return content;
+            if (!content.Status)
+            {
+                ConsoleHelper.WriteErrorLine($"鑾峰彇鐢佃姱鐘舵�佸け璐�:{content.Message}");
+                return content;
+            }
 
             var result = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(content.Data.ToString());
+
             if (!result.Success)
             {
+                ConsoleHelper.WriteErrorLine($"鑾峰彇鐢佃姱鐘舵�佸け璐�:{result.MOMMessage}");
                 if (result.SerialNos.Count <= 0)
                 {
                     // 绌烘墭鐩樺叆搴撻�昏緫
@@ -971,17 +994,27 @@
                     return content.Error(result.MOMMessage);
             }
 
-            // 澶勭悊寮傚父鐢佃姱鎯呭喌
-            var serialNosError = result.SerialNos.Where(x => x.SerialNoStatus != 1).ToList();
-            if (serialNosError.Count > 0)
+
+            if (result.SerialNos.Count <= 0)
             {
-                return await HandleErrorCells(input, area, serialNosError);
+                return await RequestTrayInTaskAsync(input);
             }
+            else
+            {
 
-            var boxing = CreateBoxingInfo(result, input.PalletCode);
-            if (boxing == null) return content.Error("缁勭洏澶辫触");
 
-            return await ProcessBasedOnProcessCode(boxing, area, input, result);
+                // 澶勭悊寮傚父鐢佃姱鎯呭喌
+                var serialNosError = result.SerialNos.Where(x => x.SerialNoStatus != 1 && x.SerialNoStatus != 4).ToList();
+                if (serialNosError.Count > 0)
+                {
+                    return await HandleErrorCells(input, area, serialNosError);
+                }
+
+                var boxing = CreateBoxingInfo(result, input.PalletCode);
+                if (boxing == null) return content.Error("缁勭洏澶辫触");
+
+                return await ProcessBasedOnProcessCode(boxing, area, input, result);
+            }
         }
         catch (Exception err)
         {

--
Gitblit v1.9.3