From dfb67ae65d678da26d0fa880efa185591d6ff970 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期五, 28 十一月 2025 14:46:31 +0800
Subject: [PATCH] """ 支持任务状态分组及路径与配置更新

---
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs |   45 ++++++++++++++++++++++++++++++++++-----------
 1 files changed, 34 insertions(+), 11 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs"
index 971962b..e9f8f4b 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs"
@@ -105,6 +105,13 @@
         WebResponseContent content = new WebResponseContent();
         try
         {
+            if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.CarryGroup)
+            {
+                var result1 = UpdateLocationStatus(task.SourceAddress, LocationEnum.Free, task.TaskNum.Value, StatusChangeTypeEnum.AutomaticOutbound);
+                await _locationStatusChangeRecordRepository.AddDataAsync(result1.Item1);
+                await _locationRepository.UpdateDataAsync(result1.Item2);
+            }
+
             task.TaskState = (int)TaskOutStatusEnum.OutFinish;
             var taskHty = task.Adapt<Dt_Task_Hty>();
             taskHty.FinishTime = DateTime.Now;
@@ -113,14 +120,15 @@
             stock.ModifyDate = DateTime.Now;
             stock.LocationCode = task.TargetAddress;
             var result2 = UpdateLocationStatus(task.TargetAddress, LocationEnum.InStock, task.TaskNum.Value, StatusChangeTypeEnum.AutomaticOutbound);
+
             DtStockInfo_Hty stockInfo_Hty = stock.Adapt<DtStockInfo_Hty>();
             var orderDetails = _orderOutDetailsRepository.QueryData(x => x.PalletCode == task.PalletCode);
             List<Dt_OrderOutDetails_Hty> orderdetailshtys = new List<Dt_OrderOutDetails_Hty>();
 
             orderDetails.ForEach(item =>
-            {
-                orderdetailshtys.Add(item.Adapt<Dt_OrderOutDetails_Hty>());
-            });
+        {
+            orderdetailshtys.Add(item.Adapt<Dt_OrderOutDetails_Hty>());
+        });
 
             await ERPAllocateOut(stock);
 
@@ -172,8 +180,9 @@
                 boxingInfo.BoxingInfoDetails = mergedDetails;
             }
 
-            await _unitOfWorkManage.UseTranAsync(async () =>
-            {
+            //await _unitOfWorkManage.UseTranAsync(async () =>
+            //{
+            _unitOfWorkManage.BeginTran();
                 await DeleteStockInfoAsync(stock.Id);
                 _boxingInfoRepository.UpdateDataNav(boxingInfo);
                 await DeleteStockInfoDetailsAsync(stock.StockInfoDetails);
@@ -185,12 +194,14 @@
 
                 await DeleteTaskAsync(task.TaskId);
                 await AddTaskHtyAsync(taskHty);
-            });
+            _unitOfWorkManage.CommitTran();
+            //});
             content.OK("鍑哄簱瀹屾垚");
 
         }
         catch (Exception ex)
         {
+            _unitOfWorkManage.RollbackTran();
             task.ErrorMessage = ex.Message;
             await BaseDal.UpdateDataAsync(task);
             return content.Error(ex.Message);
@@ -268,7 +279,15 @@
             {
                 return content.Error("鏈壘鍒扮粍鐩樻暟鎹�");
             }
-            await ERPAllocate(boxinfo);
+
+            if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.CarryGroup)
+            {
+                var result1 = UpdateLocationStatus(task.SourceAddress, LocationEnum.Free, task.TaskNum.Value, StatusChangeTypeEnum.AutomaticInbound);
+                await _locationStatusChangeRecordRepository.AddDataAsync(result1.Item1);
+                await _locationRepository.UpdateDataAsync(result1.Item2);
+            }
+
+            
 
             var stock = CreateStock(boxinfo, task);
 
@@ -280,18 +299,22 @@
 
             var result2 = UpdateLocationStatus(task.TargetAddress, LocationEnum.InStock, task.TaskNum.Value, StatusChangeTypeEnum.AutomaticInbound);
 
-            await _unitOfWorkManage.UseTranAsync(async () =>
-            {
-                await _stockInfoRepository.AddDataNavAsync(stock);
+            //await _unitOfWorkManage.UseTranAsync(async () =>
+            //{
+            _unitOfWorkManage.BeginTran();
+            await _stockInfoRepository.AddDataNavAsync(stock);
                 await DeleteTaskAsync(task.TaskId);
                 await AddTaskHtyAsync(taskHty);
                 await _locationStatusChangeRecordRepository.AddDataAsync(result2.Item1);
                 await _locationRepository.UpdateDataAsync(result2.Item2);
-            });
+            _unitOfWorkManage.CommitTran();
+            //});
+            await ERPAllocate(boxinfo);
             content.OK("鍏ュ簱瀹屾垚");
         }
         catch (Exception ex)
         {
+            _unitOfWorkManage.RollbackTran();
             task.ErrorMessage = ex.Message;
             await BaseDal.UpdateDataAsync(task);
             return content.Error(ex.Message);

--
Gitblit v1.9.3