From 2a978847c0dfef510349b097ef8202afe5647997 Mon Sep 17 00:00:00 2001
From: yangpeixing <yangpeixing@hnkhzn.com>
Date: 星期四, 22 一月 2026 15:47:27 +0800
Subject: [PATCH] 1

---
 WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs |   54 ++++++++++++++++++++++++++----------------------------
 1 files changed, 26 insertions(+), 28 deletions(-)

diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs b/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
index 1e5a5e8..4a091c0 100644
--- a/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
@@ -108,6 +108,7 @@
         private readonly IOutboundOrderDetailRepository _outboundOrderDetailRepository;
         private readonly INewOutboundOrderDetailRepository _newOutboundOrderDetailRepository;
         private readonly IStockInfoDetailRepository _stockInfoDetailRepository;
+        private readonly IStockInfoDetailCPRepository _stockInfoDetailCPRepository;
         private readonly IReturnOrderRepository _returnOrderRepository;
         private readonly IProductionRepository _productionRepository;
         private readonly IInboundRepository _inboundRepository;
@@ -115,7 +116,7 @@
         private readonly ITakeStockOrderDetailCPRepository _takeStockOrderDetailCPRepository;
         public ITaskRepository Repository => BaseDal;
 
-        public TaskService(ITaskRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IMaterielInfoService materielInfoService, IInboundOrderDetail_HtyService inboundOrderDetail_HtyService, IOutboundOrder_HtyService outboundOrder_HtyService, IOutboundOrderDetail_HtyService outboundOrderDetail_HtyService, IInboundOrder_HtyService inboundOrder_HtyService, IStockRepository stockRepository, IInboundOrderDetailService inboundOrderDetailService, IBasicService basicService, IOutboundService outboundService, IInboundService inboundService, IRecordService recordService, IStockService stockService, ITask_HtyService taskHtyService, ILocationInfoService locationInfoService, IOutboundOrderDetailRepository outboundOrderDetailRepository, IBasicRepository basicRepository, IStockInfoDetailRepository stockInfoDetailRepository, IPalletTypeInfoRepository palletTypeInfoRepository, IReturnOrderRepository returnOrderRepository, IProductionRepository productionRepository, IInboundRepository inboundRepository, INewOutboundOrderDetailRepository newOutboundOrderDetailRepository, ITakeStockOrderCPRepository takeStockOrderCPRepository, ITakeStockOrderDetailCPRepository takeStockOrderDetailCPRepository) : base(BaseDal)
+        public TaskService(ITaskRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IMaterielInfoService materielInfoService, IInboundOrderDetail_HtyService inboundOrderDetail_HtyService, IOutboundOrder_HtyService outboundOrder_HtyService, IOutboundOrderDetail_HtyService outboundOrderDetail_HtyService, IInboundOrder_HtyService inboundOrder_HtyService, IStockRepository stockRepository, IInboundOrderDetailService inboundOrderDetailService, IBasicService basicService, IOutboundService outboundService, IInboundService inboundService, IRecordService recordService, IStockService stockService, ITask_HtyService taskHtyService, ILocationInfoService locationInfoService, IOutboundOrderDetailRepository outboundOrderDetailRepository, IBasicRepository basicRepository, IStockInfoDetailRepository stockInfoDetailRepository, IPalletTypeInfoRepository palletTypeInfoRepository, IReturnOrderRepository returnOrderRepository, IProductionRepository productionRepository, IInboundRepository inboundRepository, INewOutboundOrderDetailRepository newOutboundOrderDetailRepository, ITakeStockOrderCPRepository takeStockOrderCPRepository, ITakeStockOrderDetailCPRepository takeStockOrderDetailCPRepository, IStockInfoDetailCPRepository stockInfoDetailCPRepository) : base(BaseDal)
         {
             _mapper = mapper;
             _stockRepository = stockRepository;
@@ -143,6 +144,7 @@
             _newOutboundOrderDetailRepository = newOutboundOrderDetailRepository;
             _takeStockOrderCPRepository = takeStockOrderCPRepository;
             _takeStockOrderDetailCPRepository = takeStockOrderDetailCPRepository;
+            _stockInfoDetailCPRepository = stockInfoDetailCPRepository;
         }
 
         public string ReceiveWMSTaskin = WIDESEA_Core.Helper.AppSettings.Configuration["ReceiveWMSTaskin"];
@@ -988,7 +990,7 @@
                                 // 鍗曟嵁鏁伴噺鍏ㄩ儴涓婃灦瀹屾垚锛屽鐞哤MS鍥炰紶
                                 if (inboundOrderDetails.Any(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()) && inboundOrder.System.Equals("ERP"))
                                 {
-                                    if(inboundOrder.OrderStatus == InboundStatusEnum.鍏ュ簱瀹屾垚.ObjToInt())
+                                    if (inboundOrder.OrderStatus == InboundStatusEnum.鍏ュ簱瀹屾垚.ObjToInt())
                                     {
                                         bool allCompleted = inboundOrder.Details.All(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt());
                                         if (allCompleted)
@@ -1139,7 +1141,7 @@
             int lastStatus, Dt_InboundOrder inboundOrder, Dt_InboundOrderDetail inboundOrderDetail)
         {
             // 鏇存柊鍏ュ簱鍗曟槑缁嗙姸鎬�
-               UpdateInboundOrderDetails(stockInfo, inboundOrder, ref inboundOrderDetail);
+            UpdateInboundOrderDetails(stockInfo, inboundOrder, ref inboundOrderDetail);
             ///鏇存柊搴撳瓨鐘舵��
             stockInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
             // 鏇存柊搴撳瓨鏄庣粏鐘舵��
@@ -1162,21 +1164,21 @@
                 AddRecords(task, stockInfo, locationInfo, lastStatus);
 
                 // 鏇存柊鍏ュ簱鍗�
-                    UpdateInboundOrder(inboundOrder, inboundOrderDetail);
+                UpdateInboundOrder(inboundOrder, inboundOrderDetail);
 
-                    // 鍗曟嵁鏁伴噺鍏ㄩ儴涓婃灦瀹屾垚锛屽鐞哤MS鍥炰紶
-                    if (inboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt() && inboundOrder.System.Equals("ERP"))
-                    {
-                            FeedBackInboundERP(inboundOrder.UpperOrderNo, inboundOrderDetail.LinId);
-                        }
-                    if (inboundOrder.OrderStatus == InboundStatusEnum.鍏ュ簱瀹屾垚.ObjToInt() && inboundOrder.OrderType == 0 && inboundOrder.System.Equals("SMOM"))
-                    {
-                        //SendInboundInfoToWMS(task, inboundOrder, stockInfo);
+                // 鍗曟嵁鏁伴噺鍏ㄩ儴涓婃灦瀹屾垚锛屽鐞哤MS鍥炰紶
+                if (inboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt() && inboundOrder.System.Equals("ERP"))
+                {
+                    FeedBackInboundERP(inboundOrder.UpperOrderNo, inboundOrderDetail.LinId);
                 }
-                    else if (inboundOrder.OrderStatus == InboundStatusEnum.鍏ュ簱瀹屾垚.ObjToInt() && inboundOrder.OrderType == 2 && inboundOrder.System.Equals("SMOM"))
-                    {
-                        SendAllocateInfoToWMS(task, inboundOrder, stockInfo);
-                    }
+                if (inboundOrder.OrderStatus == InboundStatusEnum.鍏ュ簱瀹屾垚.ObjToInt() && inboundOrder.OrderType == 0 && inboundOrder.System.Equals("SMOM"))
+                {
+                    SendInboundInfoToWMS(task, inboundOrder, stockInfo);
+                }
+                else if (inboundOrder.OrderStatus == InboundStatusEnum.鍏ュ簱瀹屾垚.ObjToInt() && inboundOrder.OrderType == 2 && inboundOrder.System.Equals("SMOM"))
+                {
+                    SendAllocateInfoToWMS(task, inboundOrder, stockInfo);
+                }
 
                 _unitOfWorkManage.CommitTran();
                 return WebResponseContent.Instance.OK();
@@ -1938,7 +1940,7 @@
                             return WebResponseContent.Instance.Error($"澶勭悊澶辫触: {ex.Message}");
                         }
                     }
-                    else if(warehouse.WarehouseCode.Contains("DW") || warehouse.WarehouseCode.Contains("YS"))
+                    else if (warehouse.WarehouseCode.Contains("DW") || warehouse.WarehouseCode.Contains("YS"))
                     {
                         Dt_OutboundOrder inboundOrder = _outboundService.OutboundOrderService.Db.Queryable<Dt_OutboundOrder>()
                         .Where(x => x.OrderNo == task.OrderNo)
@@ -2605,7 +2607,7 @@
             List<Dt_StockInfoDetail> stockInfoDetails = _stockService.StockInfoDetailService.Db.Queryable<Dt_StockInfoDetail>()
            .Where(x => x.StockId == stockInfo.Id).ToList();
 
-            Dt_ReturnOrder? lastReturnOrder = null; 
+            Dt_ReturnOrder? lastReturnOrder = null;
             foreach (var stockInfoDetail in stockInfoDetails)
             {
                 if (stockInfoDetail == null)
@@ -2654,7 +2656,7 @@
                                 System = "WMS",
                                 Remark = stockInfoDetail.BatchNo
                             };
-                            if(lastReturnOrder != null)
+                            if (lastReturnOrder != null)
                             {
                                 lastReturnOrder.Remark = lastReturnOrder.Remark + $", {returnOrder.BatchNo}";
                                 _returnOrderRepository.UpdateData(lastReturnOrder);
@@ -2664,7 +2666,7 @@
                                 returnOrder.LocationCode = stockInfo.LocationCode;
                             }
                             _unitOfWorkManage.BeginTran();
-                            if(lastReturnOrder == null)
+                            if (lastReturnOrder == null)
                             {
                                 _returnOrderRepository.AddData(returnOrder);
                                 lastReturnOrder = returnOrder;
@@ -2757,7 +2759,7 @@
                         var matchedStockDetail = stockInfoDetails.FirstOrDefault(x => x.MaterielCode == outboundDetail.MaterielCode && x.BatchNo == outboundDetail.BatchNo);
                         if (matchedStockDetail == null)
                         {
-                            matchedStockDetail = stockInfoDetails.FirstOrDefault(x =>x.MaterielCode == outboundDetail.MaterielCode);
+                            matchedStockDetail = stockInfoDetails.FirstOrDefault(x => x.MaterielCode == outboundDetail.MaterielCode);
 
                             if (matchedStockDetail == null)
                             {
@@ -2795,7 +2797,7 @@
                             returnOrders.Add(returnOrder);
 
                             // 鏇存柊褰撳墠鎵规鏄庣粏锛氬彧淇濈暀鍑哄簱鏁伴噺锛屽叾浣欒繑搴�
-                            matchedStockDetail.StockQuantity = outboundDetail.OrderQuantity;
+                            matchedStockDetail.StockQuantity = remainingQuantity;
                             matchedStockDetail.OutboundQuantity = outboundDetail.OrderQuantity;
                             //matchedStockDetail.OrderNo = returnOrder.OrderNo;
                         }
@@ -3506,12 +3508,7 @@
             try
             {
                 //鑾峰彇瀵瑰簲鐩樼偣鍗�
-                Dt_TakeStockOrderDetailCP takeStockOrderDetailCP = _takeStockOrderDetailCPRepository.QueryFirst(x => x.TakePalletCode == task.PalletCode);
-                if (takeStockOrderDetailCP == null)
-                {
-                    return content.Error($"鐩樼偣鍗曪紝鎵樼洏鍙穥takeStockOrderDetailCP.TakePalletCode}涓嶅瓨鍦�");
-                }
-                Dt_TakeStockOrderCP takeStockOrder = _inboundRepository.TakeStockOrderRepository.Db.Queryable<Dt_TakeStockOrderCP>().Where(x => x.Id == takeStockOrderDetailCP.TakeStockId).Includes(x => x.Details).First();
+                Dt_TakeStockOrderCP takeStockOrder = _inboundRepository.TakeStockOrderRepository.Db.Queryable<Dt_TakeStockOrderCP>().Where(x => x.OrderNo == task.OrderNo).Includes(x => x.Details).First();
                 if (takeStockOrder == null)
                 {
                     return content.Error($"鐩樼偣鍗晎task.OrderNo}涓嶅瓨鍦�");
@@ -3574,6 +3571,7 @@
                 _returnOrderRepository.AddData(returnOrder);
                 _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, beforeStatus, LocationStatusEnum.Lock.ObjToInt(), LocationChangeType.OutboundCompleted.ObjToInt(), takeStockOrder?.OrderNo ?? "", task.TaskNum);
                 _takeStockOrderCPRepository.UpdateData(takeStockOrder);
+                _takeStockOrderDetailCPRepository.UpdateData(takeStockOrder.Details);
                 _stockRepository.StockInfoRepository.UpdateData(stockInfo);
                 _stockRepository.StockInfoDetailRepository.UpdateData(stockInfo.Details);
                 BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateType.鑷姩瀹屾垚 : OperateType.浜哄伐瀹屾垚);

--
Gitblit v1.9.3