From 4bc0e18b94a2bf17c1b7277910d63ef82fbe616a Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期五, 10 一月 2025 09:39:51 +0800
Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/MeiRuiAn/HuaiAn

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs |   65 +++++++++++++++++++++++++++++---
 1 files changed, 59 insertions(+), 6 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs"
index ec9afa0..67f133f 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs"
@@ -13,18 +13,71 @@
 using WIDESEA_Common.TaskEnum;
 using WIDESEA_Common.OrderEnum;
 using WIDESEA_Common.StockEnum;
+using WIDESEA_Common.CommonEnum;
+using WIDESEA_Common.LocationEnum;
 
 namespace WIDESEA_TaskInfoService
 {
     public partial class TaskService
     {
-
+        /// <summary>
+        /// 閫夋嫨搴撳瓨鐢熸垚鍑哄簱浠诲姟
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        public WebResponseContent Outbound(int id)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x=>x.Id==id).Includes(x=>x.Details).First();
+                if (stockInfo == null)
+                {
+                    return content.Error($"鏈壘鍒板簱瀛�");
+                }
+                Dt_LocationInfo locationInfo = _basicRepository.LocationInfoRepository.QueryFirst(x => x.LocationCode == stockInfo.LocationCode);
+                if (locationInfo!=null && (locationInfo.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt() || locationInfo.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && locationInfo.LocationStatus==LocationStatusEnum.InStock.ObjToInt() && stockInfo.StockStatus==StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt())
+                {
+                    List<Dt_Task> tasks = GetTasks(new List<Dt_StockInfo>() { stockInfo }, TaskTypeEnum.Outbound);
+                    if (tasks == null || tasks.Count <= 0)
+                    {
+                        return content.Error($"鐢熸垚浠诲姟澶辫触");
+                    }
+                    //澶勭悊搴撳瓨鏁版嵁
+                    stockInfo.StockStatus = (int)StockStatusEmun.鍑哄簱閿佸畾;
+                    LocationStatusEnum locationStatus = (LocationStatusEnum)locationInfo.LocationStatus;
+                    locationInfo.LocationStatus = (int)LocationStatusEnum.Lock;
+                    //鍒ゆ柇鏄惁鏈夊嚭搴撳崟淇℃伅
+                    _unitOfWorkManage.BeginTran();
+                    //鏇存柊搴撳瓨鐘舵��
+                    _stockRepository.StockInfoRepository.UpdateData(stockInfo);
+                    //鏇存柊璐т綅鐘舵��
+                    _basicService.LocationInfoService.UpdateLocationStatus(locationInfo, stockInfo.PalletType, LocationStatusEnum.Lock, stockInfo.WarehouseId);
+                    //鏂板缓浠诲姟
+                    BaseDal.AddData(tasks);
+                    //鍔犲叆璐т綅鍙樺姩璁板綍
+                    _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, locationStatus, LocationStatusEnum.Lock, LocationChangeType.OutboundAssignLocation, stockInfo.Details.FirstOrDefault()?.OrderNo ?? "", tasks[0].TaskNum);
+                    _unitOfWorkManage.CommitTran();
+                    PushTasksToWCS(tasks);
+                    content.OK();
+                }
+                else
+                {
+                    content.Error($"璐т綅鍑哄簱鏉′欢涓嶆弧瓒�");
+                }
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+            return content;
+        }
         /// <summary>
         /// 搴撳瓨鏁版嵁杞嚭搴撲换鍔�
         /// </summary>
         /// <param name="stockInfos"></param>
         /// <returns></returns>
-        public List<Dt_Task> GetTasks(List<Dt_StockInfo> stockInfos)
+        public List<Dt_Task> GetTasks(List<Dt_StockInfo> stockInfos, TaskTypeEnum taskType)
         {
             List<Dt_Task> tasks = new List<Dt_Task>();
             for (int i = 0; i < stockInfos.Count; i++)
@@ -46,7 +99,7 @@
                             SourceAddress = stockInfo.LocationCode,
                             TargetAddress = "",
                             TaskStatus = TaskStatusEnum.New.ObjToInt(),
-                            TaskType = TaskTypeEnum.Outbound.ObjToInt(),
+                            TaskType = taskType.ObjToInt(),
                             TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
                             PalletType = stockInfo.PalletType,
                             WarehouseId = stockInfo.WarehouseId,
@@ -88,7 +141,7 @@
                 (List<Dt_StockInfo>, Dt_OutboundOrderDetail, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.OutboundOrderDetailService.AssignStockOutbound(outboundOrderDetail, stockSelectViews);
                 if (result.Item1 != null && result.Item1.Count > 0)
                 {
-                    tasks = GetTasks(result.Item1);
+                    tasks = GetTasks(result.Item1, TaskTypeEnum.Outbound);
                     result.Item2.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt();
                     result.Item3.ForEach(x =>
                     {
@@ -111,7 +164,7 @@
                 if (stockLockInfos != null && stockLockInfos.Count > 0)
                 {
                     List<Dt_StockInfo> stocks = _stockService.StockInfoService.Repository.GetStockInfosByPalletCodes(stockLockInfos.Select(x => x.PalletCode).Distinct().ToList());
-                    tasks = GetTasks(stocks);
+                    tasks = GetTasks(stocks, TaskTypeEnum.Outbound);
                 }
             }
 
@@ -144,7 +197,7 @@
                 (List<Dt_StockInfo>, List<Dt_OutboundOrderDetail>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.OutboundOrderDetailService.AssignStockOutbound(outboundOrderDetails);
                 if (result.Item1 != null && result.Item1.Count > 0)
                 {
-                    tasks = GetTasks(result.Item1);
+                    tasks = GetTasks(result.Item1, TaskTypeEnum.Outbound);
                     result.Item2.ForEach(x =>
                     {
                         x.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt();

--
Gitblit v1.9.3