From 452132d37fd32cc7f39ed5f70328cd3de1fd4732 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期四, 16 一月 2025 10:30:11 +0800
Subject: [PATCH] 优化入库完成上报ERP

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs   |  139 ++++++----------------------------
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs |    9 --
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs          |   40 ++++------
 3 files changed, 43 insertions(+), 145 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs"
index 5939418..bc3971c 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs"
@@ -27,17 +27,10 @@
 
         WebResponseContent MaterielGroup(SaveModel saveModel);
         /// <summary>
-        /// 鍏ュ簱瀹屾垚涓婃姤 寮冪敤
-        /// </summary>
-        /// <returns></returns>
-        #region 寮冪敤
-        WebResponseContent FeedbackInboundOrder(Dt_StockInfo stockInfo,Dt_InboundOrder inboundOrder, List<ERPInboundDetailModel> detailModels);
-        #endregion
-        /// <summary>
         /// 鍏ュ簱瀹屾垚涓婃姤
         /// </summary>
         /// <returns></returns>
-        WebResponseContent FeedbackInboundOrder(Dt_InboundOrder inboundOrder,List<Dt_StockInfoDetail> stockInfoDetails);
+        WebResponseContent FeedbackInboundOrder(Dt_InboundOrder inboundOrder);
         /// <summary>
         /// 
         /// </summary>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs"
index bcf23c8..b7ab61d 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs"
@@ -342,7 +342,6 @@
 
                 List<Dt_StockInfoDetail> stockInfoDetails = new List<Dt_StockInfoDetail>();
                 List<int> detailKeys = new List<int>();
-                int newCount = 0;
                 foreach (var model in models)
                 {
                     if (purchaseOrderNos.FirstOrDefault(x => x == model.PurchaseOrderNo) == null)
@@ -373,7 +372,7 @@
                         EffectiveDate = model.EffectiveDate,
                         InboundOrderRowNo = notGroupDetail.RowNo,
                     };
-                    newCount++;
+                    oldCount++;
 
                     if (stockInfo.Id > 0)
                     {
@@ -389,8 +388,7 @@
                 }
 
                 //鍏ュ簱鏄庣粏鏂板瀹屾垚鏁伴噺
-                //int newCount = inboundOrderDetails.Where(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()).ToList().Count;
-                if (inboundOrder.Details.Count == (newCount + oldCount))
+                if (inboundOrder.Details.Count == oldCount)
                 {
                     inboundOrder.OrderStatus = InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt();
                 }
@@ -412,39 +410,9 @@
                 _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(stockInfo, stockInfoDetails, beforeQuantity, totalQuantity, StockChangeTypeEnum.Inbound);
                 _unitOfWorkManage.CommitTran();
 
-                #region 涓婃姤ERP鍏ュ簱瀹屾垚
-                List<ERPInboundDetailModel> detailModels = new List<ERPInboundDetailModel>();
-                foreach (var item in stockInfo.Details)
-                {
-                    ERPInboundDetailModel detailModel = new ERPInboundDetailModel()
-                    {
-                        ExpiryDate = item.EffectiveDate ?? "",
-                        LocationCode = warehouse.WarehouseCode,
-                        MaterialsCode = item.MaterielCode,
-                        MfgDate = item.ProductionDate ?? "",
-                        QtyCustoms = "0",
-                        Quantity = item.StockQuantity.ToString(),
-                        Rack = stockInfo.LocationCode,
-                        ReceiptCode = inboundOrder.UpperOrderNo,
-                        ReceiptSerNo = item.InboundOrderRowNo.ToString()
-                    };
-                    detailModels.Add(detailModel);
-                }
-                ERPInboundModel eRPInboundModel = new ERPInboundModel()
-                {
-                    Code = CreateCodeByRule(nameof(RuleCodeEnum.RLCodeRule)),
-                    CreatorCode = inboundOrder.Creater,
-                    EntDate = inboundOrder.CreateDate.ToString("yyyy-MM-dd HH:mm:ss"),
-                    StockDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
-                    SuppliersId = inboundOrder.SupplierId,
-                    Type = "S",
-                    UniqueTag = inboundOrder.Id.ToString(),
-                    WarehouseCode = warehouse.WarehouseCode,
-                    Way = 1,
-                    Details = detailModels
-                };
-                //鎺ㄩ�丒RP 娴嬭瘯娉ㄩ噴
-                _invokeERPService.InvokeInboundOrderApi(eRPInboundModel);
+                #region 鍏ュ簱瀹屾垚涓婃姤ERP
+                if (inboundOrder.OrderStatus == InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt())
+                    FeedbackInboundOrder(inboundOrder);
                 #endregion
                 content.OK();
             }
@@ -513,7 +481,7 @@
                     return WebResponseContent.Instance.Error($"鏈壘鍒拌鐗╂枡鐨勪俊鎭�");
                 }
 
-                List<Dt_InboundOrderDetail> inboundOrderDetails = inboundOrder.Details.Where(x => x.MaterielCode == materielCode && x.BatchNo==(models.FirstOrDefault()?.LotNo ?? "")).ToList();
+                List<Dt_InboundOrderDetail> inboundOrderDetails = inboundOrder.Details.Where(x => x.MaterielCode == materielCode && x.BatchNo == (models.FirstOrDefault()?.LotNo ?? "")).ToList();
 
                 if (inboundOrderDetails == null || inboundOrderDetails.Count <= 0)
                 {
@@ -766,59 +734,10 @@
             return content;
         }
         /// <summary>
-        /// 鍏ュ簱瀹屾垚涓婃姤ERP 寮冪敤
-        /// </summary>
-        /// <returns></returns>
-        #region 寮冪敤
-        public WebResponseContent FeedbackInboundOrder(Dt_StockInfo stockInfo, Dt_InboundOrder inboundOrder, List<ERPInboundDetailModel> detailModels)
-        {
-            WebResponseContent content = new WebResponseContent();
-            try
-            {
-                if (inboundOrder.Details.Count == 0)
-                {
-                    return WebResponseContent.Instance.Error($"鏈壘鍒板叆搴撳崟鏄庣粏淇℃伅");
-                }
-                if (inboundOrder.OrderStatus == InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt())
-                {
-                    return WebResponseContent.Instance.Error($"鍏ュ簱鍗曟嵁宸插畬鎴�");
-                }
-                Dt_Warehouse warehouse = _warehouseService.Repository.QueryFirst(x => x.WarehouseId == stockInfo.WarehouseId);
-                if (warehouse == null)
-                {
-                    return WebResponseContent.Instance.Error($"鏈壘鍒颁粨搴撲俊鎭�");
-                }
-
-                ERPInboundModel model = new ERPInboundModel()
-                {
-                    Code = CreateCodeByRule(nameof(RuleCodeEnum.RLCodeRule)),
-                    CreatorCode = inboundOrder.Creater,//娴嬭瘯
-                    EntDate = inboundOrder.CreateDate.ToString("yyyy-MM-dd HH:mm:ss"),
-                    StockDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
-                    SuppliersId = inboundOrder.SupplierId,
-                    Type = "S",
-                    UniqueTag = inboundOrder.Id.ToString(),
-                    WarehouseCode = warehouse.WarehouseCode,
-                    Way = 1,
-                    Details = detailModels
-                };
-                //鎺ㄩ�丒RP 娴嬭瘯娉ㄩ噴
-                _invokeERPService.InvokeInboundOrderApi(model);
-                return WebResponseContent.Instance.OK();
-            }
-            catch (Exception ex)
-            {
-                _unitOfWorkManage.RollbackTran();
-                content.Error(ex.Message);
-            }
-            return content;
-        }
-        #endregion
-        /// <summary>
         /// 鍏ュ簱瀹屾垚涓婃姤ERP
         /// </summary>
         /// <returns></returns>
-        public WebResponseContent FeedbackInboundOrder(Dt_InboundOrder inboundOrder, List<Dt_StockInfoDetail> stockInfoDetails)
+        public WebResponseContent FeedbackInboundOrder(Dt_InboundOrder inboundOrder)
         {
             WebResponseContent content = new WebResponseContent();
             try
@@ -827,45 +746,39 @@
                 {
                     return WebResponseContent.Instance.Error($"鏈壘鍒板叆搴撳崟鏄庣粏淇℃伅");
                 }
-                if (stockInfoDetails.Count==0)
+
+                List<Dt_StockInfoDetail> stockInfoDetails = _stockRepository.StockInfoDetailRepository.QueryData(x => x.OrderNo == inboundOrder.InboundOrderNo);
+                if (stockInfoDetails.Count == 0)
                 {
                     return WebResponseContent.Instance.Error($"鏈壘鍒板簱瀛樻槑缁嗕俊鎭�");
                 }
+                List<Dt_StockInfo> stockInfos = _stockRepository.StockInfoRepository.QueryData(x => stockInfoDetails.Select(x => x.StockId).ToList().Contains(x.Id));
                 Dt_Warehouse warehouse = _warehouseService.Repository.QueryFirst(x => x.WarehouseId == inboundOrder.WarehouseId);
                 if (warehouse == null)
                 {
                     return WebResponseContent.Instance.Error($"鏈壘鍒颁粨搴撲俊鎭�");
                 }
-                List<ERPInboundDetailModel>? detailModels = null;
+                List<ERPInboundDetailModel>? detailModels = new List<ERPInboundDetailModel>();
                 foreach (var item in stockInfoDetails)
                 {
-                    Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.QueryFirst(x => x.Id == item.StockId);
-                    if (detailModels!=null && detailModels.FirstOrDefault(x=>x.Rack==stockInfo.LocationCode)!=null)
+                    ERPInboundDetailModel detailModel = new ERPInboundDetailModel()
                     {
-                        var detailModel = detailModels.FirstOrDefault(x => x.Rack == stockInfo.LocationCode);
-                        detailModel.Quantity = (Convert.ToDouble(detailModel.Quantity) + item.StockQuantity).ToString();
-                    }
-                    else
-                    {
-                        ERPInboundDetailModel detailModel = new ERPInboundDetailModel()
-                        {
-                            ExpiryDate = item.EffectiveDate ?? "",
-                            LocationCode = warehouse.WarehouseCode,
-                            MaterialsCode = item.MaterielCode,
-                            MfgDate = item.ProductionDate ?? "",
-                            QtyCustoms = "0",
-                            Quantity = item.StockQuantity.ToString(),
-                            Rack = stockInfo.LocationCode,
-                            ReceiptCode = inboundOrder.UpperOrderNo,
-                            ReceiptSerNo = item.InboundOrderRowNo.ToString()
-                        };
-                        detailModels.Add(detailModel);
-                    }
+                        ExpiryDate = item.EffectiveDate ?? "",
+                        LocationCode = warehouse.WarehouseCode,
+                        MaterialsCode = item.MaterielCode,
+                        MfgDate = item.ProductionDate ?? "",
+                        QtyCustoms = "0",
+                        Quantity = item.StockQuantity.ToString(),
+                        Rack = stockInfos.FirstOrDefault(x => x.Id == item.StockId).LocationCode,
+                        ReceiptCode = inboundOrder.UpperOrderNo,
+                        ReceiptSerNo = item.InboundOrderRowNo.ToString()
+                    };
+                    detailModels.Add(detailModel);
                 }
                 ERPInboundModel model = new ERPInboundModel()
                 {
                     Code = CreateCodeByRule(nameof(RuleCodeEnum.RLCodeRule)),
-                    CreatorCode = inboundOrder.Creater,//娴嬭瘯
+                    CreatorCode = inboundOrder.Creater,
                     EntDate = inboundOrder.CreateDate.ToString("yyyy-MM-dd HH:mm:ss"),
                     StockDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                     SuppliersId = inboundOrder.SupplierId,
@@ -875,7 +788,7 @@
                     Way = 1,
                     Details = detailModels
                 };
-                //鎺ㄩ�丒RP 娴嬭瘯娉ㄩ噴
+                //鎺ㄩ�丒RP
                 _invokeERPService.InvokeInboundOrderApi(model);
                 return WebResponseContent.Instance.OK();
             }
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 1501360..875c1e5 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"
@@ -214,16 +214,15 @@
                 #endregion
 
                 Dt_InboundOrder? inboundOrder = _inboundRepository.InboundOrderRepository.Db.Queryable<Dt_InboundOrder>().Where(x => x.InboundOrderNo == stockInfo.Details.FirstOrDefault().OrderNo).Includes(x => x.Details).First();
+                if (inboundOrder == null)
+                {
+                    return WebResponseContent.Instance.Error($"瀵瑰簲鍏ュ簱鍗曚笉瀛樺湪");
+                }
+                //鏌ヨ鍘熷畬鎴愮殑鍏ュ簱鏄庣粏鏁伴噺
+                int overCount = inboundOrder.Details.Where(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()).ToList().Count;
                 Dt_InboundOrderDetail? inboundOrderDetail = null;
-                List<ERPInboundDetailModel> detailModels = new List<ERPInboundDetailModel>();
                 if (stockInfo.StockStatus == StockStatusEmun.鍏ュ簱纭.ObjToInt())
                 {
-                    if (inboundOrder == null)
-                    {
-                        return WebResponseContent.Instance.Error($"瀵瑰簲鍏ュ簱鍗曚笉瀛樺湪");
-                    }
-                    //鏌ヨ鍘熷畬鎴愮殑鍏ュ簱鏄庣粏鏁伴噺
-                    int overCount = inboundOrder.Details.Where(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()).ToList().Count;
                     inboundOrderDetail = inboundOrder.Details.FirstOrDefault(x => x.RowNo == stockInfo.Details.FirstOrDefault()?.InboundOrderRowNo);
                     foreach (var item in stockInfo.Details)
                     {
@@ -249,16 +248,15 @@
                             inboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.Over.ObjToInt();
                             overCount += 1;
                         }
-                        else if(inboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.New.ObjToInt())
+                        else if (inboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.New.ObjToInt())
                         {
                             inboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.Inbounding.ObjToInt();
                         }
-                        detailModels.Add(detailModel);
                     }
-                    if (inboundOrder.Details.Count == overCount)
-                    {
-                        inboundOrder.OrderStatus = InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt();
-                    }
+                }
+                if (inboundOrder.Details.Count == overCount)
+                {
+                    inboundOrder.OrderStatus = InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt();
                 }
 
                 if ((stockInfo.StockStatus == StockStatusEmun.鍏ュ簱纭.ObjToInt() || stockInfo.StockStatus == StockStatusEmun.鎵嬪姩缁勭洏鍏ュ簱纭.ObjToInt()) && warehouse.WarehouseCode == WarehouseEnum.HA64.ToString())
@@ -292,20 +290,14 @@
                 _stockRepository.StockInfoDetailRepository.UpdateData(stockInfo.Details);
                 _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, lastStatus, LocationStatusEnum.InStock, LocationChangeType.InboundCompleted);
                 _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(stockInfo, stockInfo.Details, stockInfo.Details.Sum(x => x.StockQuantity), stockInfo.Details.Sum(x => x.StockQuantity), StockChangeTypeEnum.Inbound, taskNum);
-                if (inboundOrder != null)
+                _inboundRepository.InboundOrderRepository.UpdateData(inboundOrder);
+                if (inboundOrderDetail != null)
                 {
-                    _inboundRepository.InboundOrderRepository.UpdateData(inboundOrder);
-                    if (inboundOrderDetail!=null)
-                    {
-                        _inboundRepository.InboundOrderDetailRepository.UpdateData(inboundOrderDetail);
-                    }
+                    _inboundRepository.InboundOrderDetailRepository.UpdateData(inboundOrderDetail);
                 }
                 _unitOfWorkManage.CommitTran();
-                if (stockInfo.StockStatus == StockStatusEmun.鍏ュ簱纭.ObjToInt() && inboundOrder.OrderStatus== InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt())
-                {
-                    List<Dt_StockInfoDetail> stockInfoDetails = _stockRepository.StockInfoDetailRepository.QueryData(x => x.OrderNo == inboundOrder.InboundOrderNo);
-                    _inboundOrderService.FeedbackInboundOrder(inboundOrder, stockInfoDetails);
-                }
+                if (inboundOrder.OrderStatus == InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt())
+                    _inboundOrderService.FeedbackInboundOrder(inboundOrder);
                 return WebResponseContent.Instance.OK();
             }
             catch (Exception ex)

--
Gitblit v1.9.3