From d8db1698c125618c1b5f62b009204ddc5d4eed5a Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期三, 19 三月 2025 20:34:08 +0800
Subject: [PATCH] 成品代码更新....

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs |  121 ++++++++++++++++++++++++++++++++++++++-
 1 files changed, 116 insertions(+), 5 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 3e6d678..80bd640 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"
@@ -50,6 +50,7 @@
 using WIDESEA_ITaskInfoRepository;
 using WIDESEA_ITaskInfoService;
 using WIDESEA_Model.Models;
+using WIDESEA_OutboundRepository;
 using WIDESEA_TaskInfoRepository;
 
 namespace WIDESEA_TaskInfoService
@@ -69,7 +70,8 @@
         private readonly IInboundRepository _inboundRepository;
         private readonly IInboundOrderService _inboundOrderService;
         private readonly IPalletTypeInfoRepository _palletTypeInfoRepository;
-
+        private readonly IOutProStockInfoRepository _outProStockInfoRepository;
+        private readonly IOutboundRepository _outboundRepository;
         public ITaskRepository Repository => BaseDal;
 
         private Dictionary<string, OrderByType> _taskOrderBy = new()
@@ -82,7 +84,7 @@
 
         public List<int> TaskOutboundTypes => typeof(TaskTypeEnum).GetEnumIndexList();
 
-        public TaskService(ITaskRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IStockRepository stockRepository, IBasicService basicService, IRecordService recordService, IOutboundService outboundService, IStockService stockService, IBasicRepository basicRepository, IApiInfoRepository apiInfoRepository, IInvokeERPService invokeERPService, IInboundRepository inboundRepository, IInboundOrderService inboundOrderService, IPalletTypeInfoRepository palletTypeInfoRepository) : base(BaseDal)
+        public TaskService(ITaskRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IStockRepository stockRepository, IBasicService basicService, IRecordService recordService, IOutboundService outboundService, IStockService stockService, IBasicRepository basicRepository, IApiInfoRepository apiInfoRepository, IInvokeERPService invokeERPService, IInboundRepository inboundRepository, IInboundOrderService inboundOrderService, IPalletTypeInfoRepository palletTypeInfoRepository, IOutProStockInfoRepository outProStockInfoRepository, IOutboundRepository outboundRepository) : base(BaseDal)
         {
             _mapper = mapper;
             _unitOfWorkManage = unitOfWorkManage;
@@ -97,6 +99,8 @@
             _inboundRepository = inboundRepository;
             _inboundOrderService = inboundOrderService;
             _palletTypeInfoRepository = palletTypeInfoRepository;
+            _outProStockInfoRepository = outProStockInfoRepository;
+            _outboundRepository = outboundRepository;
         }
 
         /// <summary>
@@ -403,7 +407,7 @@
             }
         }
         /// <summary>
-        /// 鎴愬搧浠撲换鍔″畬鎴�
+        /// 鎴愬搧浠撳叆搴撲换鍔″畬鎴�
         /// </summary>
         public WebResponseContent InProductCompleted(Dt_Task task)
         {
@@ -480,7 +484,12 @@
                 {
                     return WebResponseContent.Instance.Error($"鏈壘鍒颁换鍔′俊鎭�");
                 }
-
+                Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == task.WarehouseId);
+                //鎴愬搧鍑哄簱浠诲姟瀹屾垚
+                if (warehouse.WarehouseCode==WarehouseEnum.HA71.ToString())
+                {
+                    return OutProCompleted(task);
+                }
                 Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.GetStockInfo(task.PalletCode);
 
                 Dt_LocationInfo locationInfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.SourceAddress);
@@ -492,7 +501,6 @@
                 {
                     return WebResponseContent.Instance.Error($"鏈壘鍒拌揣浣嶄俊鎭�");
                 }
-                Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == task.WarehouseId);
                 List<Dt_OutStockLockInfo> outStockLockInfos = _outboundService.OutboundStockLockInfoService.Repository.QueryData(x => x.TaskNum == taskNum);
                 List<Dt_OutboundOrderDetail> outboundOrderDetails = new List<Dt_OutboundOrderDetail>();
                 List<Dt_MesOutboundOrder> mesOutboundOrders = new List<Dt_MesOutboundOrder>();
@@ -611,6 +619,109 @@
                 return WebResponseContent.Instance.Error(ex.Message);
             }
         }
+        //鎴愬搧鍑哄簱浠诲姟瀹屾垚
+        public WebResponseContent OutProCompleted(Dt_Task task)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                //鑾峰彇璐т綅
+                Dt_LocationInfo locationInfo = _basicRepository.LocationInfoRepository.QueryFirst(x => x.LocationCode == task.SourceAddress);
+                if (locationInfo==null)
+                {
+                    return content.Error("鏈壘鍒拌揣浣嶄俊鎭�");
+                }
+                //鏍规嵁浠诲姟鑾峰彇鎴愬搧鍑哄簱璇︽儏浠诲姟鍙婄墿鏂欎俊鎭�
+                Dt_OutProStockInfo outProStockInfo = _outProStockInfoRepository.QueryFirst(x=>x.TaskNum==task.TaskNum);
+                if (outProStockInfo == null)
+                {
+                    return content.Error("鏈壘鍒版垚鍝佸嚭搴撹鎯�");
+                }
+                //鑾峰彇鎴愬搧鍑哄簱璁㈠崟
+                Dt_ProOutOrder proOutOrder = _outboundService.ProOutOrderService.Repository.Db.Queryable<Dt_ProOutOrder>().Where(x => x.ProOutOrderNo == outProStockInfo.OrderNo).Includes(x => x.Details).First();
+                if (proOutOrder==null)
+                {
+                    return content.Error("鏈壘鍒版垚鍝佸嚭搴撹鍗�");
+                }
+                //鑾峰彇鎴愬搧搴撳瓨
+                Dt_ProStockInfo proStockInfo = _stockRepository.ProStockInfoRepository.Db.Queryable<Dt_ProStockInfo>().Where(x=>x.PalletCode==task.PalletCode).Includes(x=>x.proStockInfoDetails).First();
+                if (proStockInfo==null)
+                {
+                    return content.Error("鏈壘鍒版垚鍝佸簱瀛樹俊鎭�");
+                }
+                List<Dt_ProStockInfoDetail> proStockInfoDetails = proStockInfo.proStockInfoDetails;
+                if (proStockInfoDetails.Count<=0)
+                {
+                    return content.Error("鎴愬搧搴撳瓨鏄庣粏");
+                }
+                proStockInfoDetails.ForEach(x =>
+                {
+                    x.OutboundQuantity = 0;
+                    x.ProOutDetailStatus = StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt();
+                });
+                //澶勭悊搴撳瓨鏁版嵁
+                //List<Dt_ProStockInfoDetail>? deleteStockDetails = null;
+                //List<Dt_ProStockInfoDetail>? updateStockDetails = null;
+                //(List<Dt_ProStockInfoDetail>?, List<Dt_ProStockInfoDetail>?) result = _stockService.ProStockInfoService.HandleOutProStock(proStockInfo);
+                //if (result.Item1!=null && result.Item1.Count>0)
+                //{
+                //    deleteStockDetails.AddRange(result.Item1);
+                //}
+                //if (result.Item1 != null && result.Item1.Count > 0)
+                //{
+                //    updateStockDetails.AddRange(updateStockDetails);
+                //}
+                //鑾峰彇鎴愬搧鍑哄簱鍗曟槑缁�
+                Dt_ProOutOrderDetail? proOutOrderDetail = proOutOrder.Details.FirstOrDefault(x=>x.Id== outProStockInfo.OrderDetailId);
+                if (proOutOrderDetail==null)
+                {
+                    return content.Error("鏈壘鍒板搴斾换鍔℃垚鍝佽鍗曟槑缁�");
+                }
+                //if (deleteStockDetails?.Sum(x=>x.StockPcsQty)== proStockInfo.proStockInfoDetails.Sum(x=>x.StockPcsQty))
+                //{
+                proStockInfo.StockStatus = StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt();
+                proStockInfo.LocationCode = "鍑鸿嚦鎴愬搧寰呭彂璐у尯";
+                //}
+                task.TaskStatus = TaskStatusEnum.Finish.ObjToInt();
+                outProStockInfo.Status = OutLockStockStatusEnum.鍑哄簱瀹屾垚.ObjToInt();
+                _unitOfWorkManage.BeginTran();
+                //璐т綅鍙樺姩璁板綍
+                int beforeStatus = locationInfo.LocationStatus;
+                locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
+                _basicService.LocationInfoService.UpdateLocationStatus(locationInfo, proStockInfo.PalletType, LocationStatusEnum.Free, proStockInfo.WarehouseId);
+                _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, (LocationStatusEnum)beforeStatus, LocationStatusEnum.Free, LocationChangeType.OutboundCompleted, proOutOrder?.ProOutOrderNo ?? "", task.TaskNum);
+                if (proOutOrder.ProOrderStatus == OutOrderStatusEnum.鏈紑濮�.ObjToInt())
+                {
+                    proOutOrder.ProOrderStatus = OutOrderStatusEnum.鍑哄簱涓�.ObjToInt();
+                    _outboundService.ProOutOrderService.UpdateData(proOutOrder);
+                }
 
+                //if (deleteStockDetails!=null && deleteStockDetails.Count>0)
+                //{
+                //    _stockRepository.ProStockInfoDetailRepository.DeleteAndMoveIntoHty(deleteStockDetails, OperateTypeEnum.鑷姩瀹屾垚);
+                //}
+                //if (updateStockDetails!=null && updateStockDetails.Count>0)
+                //{
+                _stockRepository.ProStockInfoRepository.UpdateData(proStockInfo);
+                _stockRepository.ProStockInfoDetailRepository.UpdateData(proStockInfoDetails);
+                _outProStockInfoRepository.UpdateData(outProStockInfo);
+                //}
+                //else
+                //{
+                //_stockRepository.ProStockInfoRepository.DeleteAndMoveIntoHty(proStockInfo, OperateTypeEnum.鑷姩瀹屾垚);
+                //}
+                BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
+                _unitOfWorkManage.CommitTran();
+                //MES鎴愬搧鍑哄簱鍚屾
+                ShipmentOrderSync(MesOutSync(outProStockInfo, proOutOrderDetail));
+                content.OK();
+            }
+            catch (Exception ex)
+            {
+                _unitOfWorkManage.RollbackTran();
+                content.Error(ex.Message);
+            }
+            return content;
+        }
     }
 }

--
Gitblit v1.9.3