From db3a7d2fd7276fc952a24965060accaf3a76861f Mon Sep 17 00:00:00 2001
From: Huangxiaoqiang-03 <1247017146@qq.com>
Date: 星期五, 25 十月 2024 16:30:30 +0800
Subject: [PATCH] 添加出库移库

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs |   76 +++++++++++++++++++++++++++++--------
 1 files changed, 59 insertions(+), 17 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
index d4104dd..a308c97 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
@@ -123,11 +123,13 @@
             stockInfo.LocationCode = locationInfo.LocationCode;
             stockInfo.StockStatus = StockStatusEmun.宸插叆搴�.ObjToInt();
             _stockService.StockInfoService.Repository.UpdateData(stockInfo);
+            
             beforeQuantity = stockInfo.Details.Where(x => x.Id != 0).Sum(x => x.StockQuantity);
 
             int beforeStatus = locationInfo.LocationStatus;
             locationInfo.LocationStatus = LocationStatusEnum.InStock.ObjToInt();
-            _basicService.LocationInfoService.UpdateLocationFree(locationInfo, task.TaskNum);
+            _basicService.LocationInfoService.UpdateLocationFree(locationInfo, task.TaskNum, StockChangeType.Inbound.ObjToInt(),false);
+
             _basicService.LocationInfoService.Repository.UpdateData(locationInfo);
             task.TaskStatus = InTaskStatusEnum.InFinish.ObjToInt();
 
@@ -156,17 +158,19 @@
 
             CheckCompleted(stockInfo, locationInfo);
 
+           
             _stockService.StockInfoService.Repository.AddData(stockInfo);
 
             int beforeStatus = locationInfo.LocationStatus;
             locationInfo.LocationStatus = LocationStatusEnum.Pallet.ObjToInt();
-            _basicService.LocationInfoService.UpdateLocationFree(locationInfo, task.TaskNum);
+            _basicService.LocationInfoService.UpdateLocationFree(locationInfo, task.TaskNum, StockChangeType.Inbound.ObjToInt(), false);
             _basicService.LocationInfoService.Repository.UpdateData(locationInfo);
 
             task.TaskStatus = InTaskStatusEnum.InFinish.ObjToInt();
             BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateType.鑷姩瀹屾垚 : OperateType.浜哄伐瀹屾垚);
 
             _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, beforeStatus, StockChangeType.Inbound.ObjToInt(), "", task.TaskNum);
+            
 
             return WebResponseContent.Instance.OK();
         }
@@ -199,6 +203,7 @@
 
         public WebResponseContent OutboundTaskCompleted(Dt_Task task)
         {
+            decimal beforeQuantity = 0;
             Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.GetStockInfo(task.PalletCode);
 
             Dt_LocationInfo locationInfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.SourceAddress);
@@ -208,16 +213,34 @@
             stockInfo.LocationCode = locationInfo.LocationCode;
             stockInfo.StockStatus = StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt();
             _stockService.StockInfoService.Repository.UpdateData(stockInfo);
-
             int beforeStatus = locationInfo.LocationStatus;
-            locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
-            _basicService.LocationInfoService.UpdateLocationFree(locationInfo, task.TaskNum);
-            _basicService.LocationInfoService.Repository.UpdateData(locationInfo);
+            if (task.Depth == 1)
+            {
+                if (DepthTask(task)) { }
+                else
+                {
+                    locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
+                    _basicService.LocationInfoService.UpdateLocationFree(locationInfo, task.TaskNum, StockChangeType.Outbound.ObjToInt(), false);
+                    _basicService.LocationInfoService.Repository.UpdateData(locationInfo);
+                }
+            }
+            else
+            {
+                locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
+                _basicService.LocationInfoService.UpdateLocationFree(locationInfo, task.TaskNum, StockChangeType.Outbound.ObjToInt(), false);
+                _basicService.LocationInfoService.Repository.UpdateData(locationInfo);
+            }
 
             task.TaskStatus = OutTaskStatusEnum.OutFinish.ObjToInt();
             BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateType.鑷姩瀹屾垚 : OperateType.浜哄伐瀹屾垚);
+            _stockService.StockInfoService.Repository.DeleteAndMoveIntoHty(stockInfo, App.User.UserId == 0 ? OperateType.鑷姩瀹屾垚 : OperateType.浜哄伐瀹屾垚);
+            _stockService.StockInfoDetailService.Repository.DeleteAndMoveIntoHty(stockInfo.Details, App.User.UserId == 0 ? OperateType.鑷姩瀹屾垚 : OperateType.浜哄伐瀹屾垚);
 
-            _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, beforeStatus, StockChangeType.Inbound.ObjToInt(), stockInfo.Details.FirstOrDefault()?.OrderNo ?? "", task.TaskNum);
+            beforeQuantity = stockInfo.Details.Where(x => x.Id != 0).Sum(x => x.StockQuantity);
+
+            _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, beforeStatus, StockChangeType.Outbound.ObjToInt(), stockInfo.Details.FirstOrDefault()?.OrderNo ?? "", task.TaskNum);
+            _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(stockInfo, stockInfo.Details, beforeQuantity, stockInfo.Details.Sum(x => x.StockQuantity) - beforeQuantity, StockChangeType.Outbound);
+
 
             return OnOutboundTaskCompleted?.Invoke(task) ?? WebResponseContent.Instance.OK();
         }
@@ -233,14 +256,17 @@
             _stockService.StockInfoService.Repository.DeleteData(stockInfo);
 
             int beforeStatus = locationInfo.LocationStatus;
+
             locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
-            _basicService.LocationInfoService.UpdateLocationFree(locationInfo, task.TaskNum);
+            _basicService.LocationInfoService.UpdateLocationFree(locationInfo, task.TaskNum, StockChangeType.Outbound.ObjToInt(), false);
             _basicService.LocationInfoService.Repository.UpdateData(locationInfo);
+
 
             task.TaskStatus = OutTaskStatusEnum.OutFinish.ObjToInt();
             BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateType.鑷姩瀹屾垚 : OperateType.浜哄伐瀹屾垚);
-
-            _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, beforeStatus, StockChangeType.Inbound.ObjToInt(), stockInfo.Details.FirstOrDefault()?.OrderNo ?? "", task.TaskNum);
+            _stockService.StockInfoService.Repository.DeleteAndMoveIntoHty(stockInfo, App.User.UserId == 0 ? OperateType.鑷姩瀹屾垚 : OperateType.浜哄伐瀹屾垚);
+            
+            _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, beforeStatus, StockChangeType.Outbound.ObjToInt(), stockInfo.Details.FirstOrDefault()?.OrderNo ?? "", task.TaskNum);
 
             return WebResponseContent.Instance.OK();
         }
@@ -249,19 +275,15 @@
         {
             Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.GetStockInfo(task.PalletCode);
 
-            Dt_LocationInfo locationStart = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.SourceAddress);
             Dt_LocationInfo locationEnd = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress);
 
-            CheckCompleted(stockInfo, locationStart);
+            CheckCompleted(stockInfo, locationEnd);
 
             stockInfo.LocationCode = locationEnd.LocationCode;
             stockInfo.StockStatus = StockStatusEmun.宸插叆搴�.ObjToInt();
             _stockService.StockInfoService.Repository.UpdateData(stockInfo);
-
-            
-            //locationStart.LocationStatus = LocationStatusEnum.Free.ObjToInt();
-            _basicService.LocationInfoService.RelocationFree(locationStart, locationEnd, task.TaskNum);
-            //_basicService.LocationInfoService.Repository.UpdateData(locationStart);
+          
+            _basicService.LocationInfoService.RelocationFree(locationEnd, task.TaskNum);
 
             task.TaskStatus = InTaskStatusEnum.RelocationFinish.ObjToInt();
             BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateType.鑷姩瀹屾垚 : OperateType.浜哄伐瀹屾垚);
@@ -269,5 +291,25 @@
             
             return WebResponseContent.Instance.OK();
         }
+        public bool DepthTask(Dt_Task task)
+        {
+            Dt_LocationInfo location=_locationInfoService.Repository.QueryFirst(x=>x.LocationCode == task.SourceAddress);
+            if(location != null)
+            {
+                if(location.Row%2==0)
+                {
+                    Dt_LocationInfo locations = _locationInfoService.Repository.QueryFirst(x => x.Row == location.Row + 1 && x.Layer == location.Layer && x.Column == location.Column && x.RoadwayNo == location.RoadwayNo);
+                    Dt_Task tasks=BaseDal.QueryFirst(x=>x.SourceAddress == locations.LocationCode);
+                    return tasks != null ? true : false;
+                }
+                else
+                {
+                    Dt_LocationInfo locations = _locationInfoService.Repository.QueryFirst(x => x.Row == location.Row - 1 && x.Layer == location.Layer && x.Column == location.Column && x.RoadwayNo == location.RoadwayNo);
+                    Dt_Task tasks = BaseDal.QueryFirst(x => x.SourceAddress == locations.LocationCode);
+                    return tasks != null ? true : false;
+                }
+            }
+            return false;
+        }
     }
 }

--
Gitblit v1.9.3