From e755a1c79f29b42f9344e6ab87475e9a4d6c7dc6 Mon Sep 17 00:00:00 2001
From: wankeda <Administrator@DESKTOP-HAU3ST3>
Date: 星期四, 15 一月 2026 13:52:25 +0800
Subject: [PATCH] 合托功能

---
 WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderService.cs |   80 +++++++++++++++++++++++++++++----------
 1 files changed, 59 insertions(+), 21 deletions(-)

diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderService.cs b/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderService.cs
index 8febdad..5d1dbbf 100644
--- a/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderService.cs
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderService.cs
@@ -37,6 +37,8 @@
 using WIDESEA_Model.Models;
 using WIDESEA_Model.Models.Inbound;
 using static WIDESEA_Common.HouseInventoryIn;
+using static WIDESEA_Common.HouseSyncretism;
+using static WIDESEA_Common.InventoryAllocate;
 using Parameter = WIDESEA_Common.Parameter;
 
 namespace WIDESEA_InboundService
@@ -453,6 +455,11 @@
                     .Where(x => orderDetailIds.Contains(x.Id))
                     .ToList();
 
+                if (inboundOrderDetails.Sum(x => x.OrderQuantity) <= inboundOrderDetails.Sum(x => x.ReceiptQuantity))
+                {
+                    return WebResponseContent.Instance.Error($"姝ゅ崟鎹凡鍏ㄩ儴缁勭洏瀹屾垚");
+                }
+
                 // 鎸夎鍗曟槑缁咺D鍒嗙粍锛屾鏌ユ瘡涓槑缁嗙殑鎵�鏈夌鍙锋槸鍚﹂兘鎵弿浜�
                 var detailsByOrderDetailId = CPinboundOrderDetails
                     .GroupBy(x => x.OrderDetailId)
@@ -486,7 +493,7 @@
                     // 鏍囪璇ユ槑缁嗕负宸插畬鎴愮粍鐩�
                     orderDetail.OrderDetailStatus = OrderDetailStatusEnum.GroupAndInbound.ObjToInt();
                     var recqty = orderDetail.ReceiptQuantity;
-                    float totalQty = cpDetails.FirstOrDefault().QtyOfpcs;
+                    float totalQty = cpDetails.Sum(item => item.QtyOfpcs);
                     orderDetail.ReceiptQuantity = (decimal)totalQty + recqty; // 鏀惰揣鏁伴噺绛変簬璁㈠崟鏁伴噺
 
                     detailsToUpdate.Add(orderDetail);
@@ -498,7 +505,6 @@
                 Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.Db
                     .Queryable<Dt_StockInfo>()
                     .Where(x => x.PalletCode == palletCode)
-                    .Includes(x => x.Details)
                     .First();
 
                 if (stockInfo == null)
@@ -570,7 +576,7 @@
                         BatchNo = orderDetail.BatchNo,
                         SupplierBatch = orderDetail.SupplierBatch,
                         LinId = orderDetail.LinId,
-                        StockQuantity = (decimal)cPInboundOrderDetail.FirstOrDefault().QtyOfpcs,
+                        StockQuantity = (decimal)cPInboundOrderDetail.Sum(item => item.QtyOfpcs),
                         Status = (int)StockStatusEmun.缁勭洏鏆傚瓨,
                         Creater = "WMS",
                         CreateDate = DateTime.Now,
@@ -645,7 +651,7 @@
         }
         public string ReceiveWMSTaskin = WIDESEA_Core.Helper.AppSettings.Configuration["ReceiveWMSTaskin"];
         /// <summary>
-        /// 鍚堟墭
+        /// 缁勭洏鍚堟墭
         /// </summary>
         /// <param name="saveModel"></param>
         /// <returns></returns>
@@ -659,32 +665,64 @@
                 var targetAddress = saveModel.MainData["targetAddress"];
 
                 Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Includes(x => x.Details).Where(x => x.PalletCode == soussAddress).First();
-                Dt_StockInfo stockInfo1 = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Includes(x => x.Details).Where(x => x.PalletCode == targetAddress).First();
-                Dt_Warehouse warehouse = _warehouseService.Repository.QueryFirst(x => x.WarehouseId == stockInfo1.WarehouseId);
-                if (stockInfo == null || stockInfo1 == null)
+                Dt_StockInfo targetstockInfo = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Includes(x => x.Details).Where(x => x.PalletCode == targetAddress).First();
+                Dt_Warehouse warehouse = _warehouseService.Repository.QueryFirst(x => x.WarehouseId == targetstockInfo.WarehouseId);
+                if (stockInfo == null || targetstockInfo == null)
                 {
                     throw new Exception("搴撳瓨鏈壘鍒版墭鐩樺彿");
                 }
                 foreach (var item in stockInfo.Details)
                 {
-                    item.StockId = stockInfo1.Id;
+                    item.StockId = targetstockInfo.Id;
+                }
+                if (warehouse.WarehouseCode == "SC02_CP")
+                {
+                    warehouse.WarehouseCode = "SC01_CP";
+                }
+                if (warehouse.WarehouseCode == "SC02_BC")
+                {
+                    warehouse.WarehouseCode = "SC01_BC";
                 }
                 var houseSyncretism = new HouseSyncretism
                 {
-                    ApiType = "AsnController",
-                    Method = "AsrsGroudingAsn",
-                    Parameters = new List<HouseSyncretism.data>
+                    ApiType = "InventoryMoveController",
+                    Method = "AsrsSubmitMoveDatas",
+
+                    Parameters = new List<HouseSyncretism.Parame>
                     {
-                        new HouseSyncretism.data
+                        new HouseSyncretism.Parame {
+                            Value =  stockInfo.Details.Select(g => new Parame.Syncretism
                         {
-                            Lpn=stockInfo.PalletCode,
-                            MoveType=0,
-                            WareHouseCode=warehouse.WarehouseCode,
+                            Lpn = stockInfo.PalletCode,
+                            MoveType = 0,
+                            WareHouseCode = warehouse.WarehouseCode,
+                            ItemCode = g.MaterielCode,
+                            MoveNumber = g.StockQuantity,
+                            LotNo = g.BatchNo,
+                            WipBatch = g.BatchNo,
+                            LocationName = stockInfo.LocationCode,
+                            TargetLocName = targetstockInfo.LocationCode,
+                            TargetLpn = targetstockInfo.PalletCode,
 
-                        }
+                        }).ToList()
+                            }
                     }
-                };
+                    //    Parameters = stockInfo.Details.Select(g => new HouseSyncretism.data
+                    //    {
+                    //        Lpn = stockInfo.PalletCode,
+                    //        MoveType = 0,
+                    //        WareHouseCode = warehouse.WarehouseCode,
+                    //        ItemCode = g.MaterielCode,
+                    //        MoveNumber = g.StockQuantity,
+                    //        //LotNo = g.,
+                    //        WipBatch = g.BatchNo,
+                    //        LocationName = stockInfo.PalletCode,
+                    //        TargetLocName = targetstockInfo.PalletCode,
+                    //        TargetLpn = targetstockInfo.PalletCode,
 
+                    //    }).ToList()
+                    //};
+                };
                 var authResult = AuthenticateWithWMS();
                 if (authResult.IsSuccess)
                 {
@@ -704,10 +742,10 @@
 
                 }
                 _unitOfWorkManage.BeginTran();
-                stockInfo1.Details.AddRange(stockInfo.Details);
-                _stockRepository.StockInfoRepository.UpdateData(stockInfo1);
-                stockInfo.Details.Clear();
-                _stockRepository.StockInfoRepository.UpdateData(stockInfo);
+                targetstockInfo.Details.AddRange(stockInfo.Details);
+                _stockRepository.StockInfoRepository.UpdateData(targetstockInfo);
+                _stockRepository.StockInfoDetailRepository.UpdateData(stockInfo.Details);
+                _stockRepository.StockInfoRepository.DeleteData(stockInfo);
                 _unitOfWorkManage.CommitTran();
                 webResponseContent = WebResponseContent.Instance.OK("鍚堟墭鎴愬姛");
             }

--
Gitblit v1.9.3