From 07b532a6a6adf0a9d965b037cf98c1f98accd138 Mon Sep 17 00:00:00 2001
From: yanjinhui <3306209981@qq.com>
Date: 星期五, 07 十一月 2025 20:11:09 +0800
Subject: [PATCH] 优化出入退货代码

---
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs              |  478 +++++++++++++++++++++++++++++++---
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/NewBusiness.cs                        |  227 +++++++++++++++
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/extend/Allocat.cs                     |    2 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/extend/Check.cs                       |   23 +
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/Business.cs                           |   12 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderServices.cs                 |   22 +
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/LKBusiness/DeliveryOrderServicesLK.cs |   39 ++
 7 files changed, 731 insertions(+), 72 deletions(-)

diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/Business.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/Business.cs"
index 8fa2694..4e8d747 100644
--- "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/Business.cs"
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/Business.cs"
@@ -48,11 +48,11 @@
             try
             {
                 var reslut = WarehouseEnum.绔嬪簱.ObjToInt().ToString("000");
-                var orders = _cabinOrderServices.Repository.QueryData(x => x.OdrderStatus == "鏂板缓" && x.Warehouse_no == reslut);
+                var orders = _cabinOrderServices.Repository.QueryData(x => x.OdrderStatus == "鏂板缓" && x.Warehouse_no == reslut).ToList();
                 if (orders.Count < 1) return WebResponseContent.Instance.OK();
                 string url = "http://172.16.1.2:9357/file-admin/api/in/ediIn";
-                var cabinOrderDetails = _cabinDetailServices.Repository.QueryData(x => orders.Select(x => x.Id).ToList().Contains(x.OrderId));
-                var materielInfos = _materielInfoService.Repository.QueryData(x => cabinOrderDetails.Select(x => x.Goods_no).Contains(x.MaterielCode));
+                var cabinOrderDetails = _cabinDetailServices.Repository.QueryData(x => orders.Select(x => x.Id).ToList().Contains(x.OrderId)).ToList();
+                var materielInfos = _materielInfoService.Repository.QueryData(x => cabinOrderDetails.Select(x => x.Goods_no).Contains(x.MaterielCode)).ToList();
                 foreach (var order in orders)
                 {
                     order.Details = cabinOrderDetails.Where(x => x.OrderId == order.Id).ToList();
@@ -127,11 +127,11 @@
             try
             {
                 var reslut = WarehouseEnum.绔嬪簱.ObjToInt().ToString("000");
-                var orders = _deliveryOrderServices.Repository.QueryData(x => x.OutStatus == "鏂板缓" && x.Warehouse_no == reslut);
+                var orders = _deliveryOrderServices.Repository.QueryData(x => x.OutStatus == "鏂板缓" && x.Warehouse_no == reslut).ToList();
                 if (orders.Count < 1) return WebResponseContent.Instance.OK();
                 string url = "http://172.16.1.2:9357/file-admin/api/out/ediOut";
-                var deliveryOrderDetails = _deliveryOrderDetailServices.Repository.QueryData(x => orders.Select(x => x.Id).ToList().Contains(x.DeliveryOrderId));
-                var materielInfos = _materielInfoService.Repository.QueryData(x => deliveryOrderDetails.Select(x => x.Goods_no).Contains(x.MaterielCode));
+                var deliveryOrderDetails = _deliveryOrderDetailServices.Repository.QueryData(x => orders.Select(x => x.Id).ToList().Contains(x.DeliveryOrderId)).ToList();
+                var materielInfos = _materielInfoService.Repository.QueryData(x => deliveryOrderDetails.Select(x => x.Goods_no).Contains(x.MaterielCode)).ToList();
                 foreach (var order in orders)
                 {
                     order.Details = deliveryOrderDetails.Where(x => x.DeliveryOrderId == order.Id).ToList();
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderServices.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderServices.cs"
index c1098c6..278a7b4 100644
--- "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderServices.cs"
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderServices.cs"
@@ -524,7 +524,11 @@
                     {
                         //鎵惧簱瀛樻壒娆′俊鎭�
                         Dt_Inventory_Batch inventory_Batch = inventory_Batchs.Where(x => x.MaterielCode == item.goods_no && x.BatchNo == item.batch_num).First();
-                        if (inventory_Batch.SupplyQuantity != item.order_qty) throw new Exception($"鐩樼泩鍏ュ簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐩樼泩鏁伴噺鏈夎");
+                        if (inventory_Batch.SupplyQuantity != item.order_qty)
+                        {
+                            _messageInfoService.AddMessageInfo(MessageGroupByEnum.InOrderAlarm, "ERP鎶ユ姤婧㈠叆搴撻敊璇�", $"鐩樼泩鍏ュ簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐩樼泩鏁伴噺鏈夎");
+                            throw new Exception($"鐩樼泩鍏ュ簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐩樼泩鏁伴噺鏈夎");
+                        }
                         //鎵炬墍鏈夊簱瀛�
                         List<Dt_InventoryInfo> inventoryInfos = _InventoryInfos.Where(x => x.MaterielCode == inventory_Batch.MaterielCode && x.BatchNo == inventory_Batch.BatchNo).ToList();
                         foreach (var inventoryInfo in inventoryInfos)
@@ -614,7 +618,12 @@
                         //鎵惧簱瀛樻壒娆′俊鎭�
                         Dt_Inventory_Batch inventory_Batch = inventory_Batchs.Where(x => x.MaterielCode == item.goods_no && x.BatchNo == item.batch_num).First();
                         var Qty = Math.Abs(inventory_Batch.SupplyQuantity);
-                        if (Qty != item.order_qty) throw new Exception($"鐩樼泩鍏ュ簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐩樼泩鏁伴噺鏈夎");
+                        if (Qty != item.order_qty)
+                        {
+                            _messageInfoService.AddMessageInfo(MessageGroupByEnum.InOrderAlarm, "ERP鎶ユ姤婧㈠叆搴撻敊璇�", $"鐩樼泩鍏ュ簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐩樼泩鏁伴噺鏈夎");
+                            throw new Exception($"鐩樼泩鍏ュ簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐩樼泩鏁伴噺鏈夎");
+                        }
+
                         //鎵炬墍鏈夊簱瀛�
                         List<Dt_InventoryInfo> inventoryInfos = _InventoryInfos.Where(x => x.MaterielCode == inventory_Batch.MaterielCode && x.BatchNo == inventory_Batch.BatchNo).ToList();
                         //鑾峰彇绔嬪簱鐩樼偣宸紓鏁�
@@ -626,9 +635,12 @@
                         var inventoryDJ = inventoryInfos.Where(x => x.WarehouseCode == WareCodeDJ).ToList();
                         //var DJQty = Math.Abs(inventoryDJ.Sum(x => x.SupplyQuantity));
                         var DJQty = inventoryDJ.Sum(x => x.SupplyQuantity);
+                        if (LkQty + DJQty != Qty)
+                        {
+                            _messageInfoService.AddMessageInfo(MessageGroupByEnum.InOrderAlarm, "ERP鎶ユ姤婧㈠叆搴撻敊璇�", $"鐩樼泩鍏ュ簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐩樼泩鏁伴噺鏈夎");
+                            throw new Exception($"銆恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐗╂枡淇℃伅涓庣墿鏂欐壒娆′俊鎭洏鐩堟暟閲忎笉绗�");
+                        }
 
-
-                        if (LkQty + DJQty != Qty) throw new Exception($"銆恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐗╂枡淇℃伅涓庣墿鏂欐壒娆′俊鎭洏鐩堟暟閲忎笉绗�");
                         if (LkQty == 0)//绔嬪簱鏃犲樊寮�
                         {
                             #region 搴撳瓨銆佸簱瀛樻壒娆″钩璐�
@@ -701,7 +713,7 @@
                             cabinOrdersAdd.Add(entityOrder);
                             #endregion
                         }
-                        else
+                        else // LkQty != 0 琛ㄧず绔嬪簱鏈夊樊寮�
                         {
                             #region 澶т欢搴撳簱瀛樺钩璐�
                             inventoryInfos = inventoryInfos.Where(x => x.WarehouseCode == WareCodeDJ).ToList();
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs"
index 4a549b5..4a33baa 100644
--- "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs"
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs"
@@ -633,6 +633,340 @@
         #endregion
 
         #region 鍒涘缓鐩樹簭鍑哄簱鍗�
+        //public WebResponseContent CreateCheckOutOrder(UpstramOutOrderInfo order)
+        //{
+        //    WebResponseContent content = new WebResponseContent();
+        //    try
+        //    {
+        //        string WareCodeMJ = WarehouseEnum.楹荤簿搴�.ObjToInt().ToString("000");
+        //        string WareCodeLD = WarehouseEnum.鍐峰喕搴�.ObjToInt().ToString("000");
+        //        List<Dt_SupplyTask_Hty> supplyTask_Hties = new List<Dt_SupplyTask_Hty>();
+        //        List<Dt_Inventory_Batch> batchesUp = new List<Dt_Inventory_Batch>();
+        //        List<Dt_InventoryInfo> infosUp = new List<Dt_InventoryInfo>();
+        //        var codes = order.details.Select(x => x.goods_no).ToList();
+        //        #region 鐗规畩搴撴埧
+        //        if (order.warehouse_no == WareCodeMJ || order.warehouse_no == WareCodeLD)
+        //        {
+        //            List<Dt_Inventory_Batch> inventory_Batchs = _inventory_BatchServices.Repository.QueryData(x => codes.Contains(x.MaterielCode)).ToList();
+        //            List<Dt_InventoryInfo> _InventoryInfos = _inventoryInfoService.Repository.QueryData(x => codes.Contains(x.MaterielCode)).ToList();
+        //            #region 搴撳瓨銆佸簱瀛樻壒娆″钩璐�
+        //            foreach (var item in order.details)
+        //            {
+        //                //鎵惧簱瀛樻壒娆′俊鎭�
+        //                Dt_Inventory_Batch inventory_Batch = inventory_Batchs.Where(x => x.MaterielCode == item.goods_no && x.BatchNo == item.batch_num).First();
+        //                var Qty = Math.Abs(inventory_Batch.SupplyQuantity);
+        //                if (Qty != item.order_qty)
+        //                {
+        //                    _messageInfoService.AddMessageInfo(MessageGroupByEnum.OutOrderAlarm, "ERP鎶ユ崯鍑哄簱閿欒", $"鐩樹簭鍑哄簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐩樹簭鏁伴噺鏈夎");
+        //                    throw new Exception($"鐩樹簭鍑哄簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐩樹簭鏁伴噺鏈夎");
+        //                }
+        //                    //鎵炬墍鏈夊簱瀛�
+        //                    List<Dt_InventoryInfo> inventoryInfos = _InventoryInfos.Where(x => x.MaterielCode == inventory_Batch.MaterielCode && x.BatchNo == inventory_Batch.BatchNo).ToList();
+        //                foreach (var inventoryInfo in inventoryInfos)
+        //                {
+        //                    #region 娣诲姞鐩樹簭鍑哄簱浠诲姟
+        //                    if (inventoryInfo.StockQuantity != inventoryInfo.SupplyQuantity)
+        //                    {
+        //                        Dt_SupplyTask_Hty supplyTask_Hty = new Dt_SupplyTask_Hty()
+        //                        {
+        //                            WarehouseCode = inventoryInfo.WarehouseCode,
+        //                            OperateType = OperateTypeEnum.鑷姩瀹屾垚.ToString(),
+        //                            InsertTime = DateTime.Now,
+        //                            TaskStatus = SupplyStatusEnum.OutFinish.ObjToInt(),
+        //                            BatchNo = inventoryInfo.BatchNo,
+        //                            MaterielName = inventoryInfo.MaterielName,
+        //                            MaterielCode = inventoryInfo.MaterielCode,
+        //                            MaterielSpec = inventoryInfo.MaterielSpec,
+        //                            TaskType = TaskTypeEnum.ChenckOut.ObjToInt(),
+        //                            CreateDate = DateTime.Now,
+        //                            Creater = App.User.UserName,
+        //                            LocationCode = inventoryInfo.LocationCode,
+        //                            OrderNo = order.order_no,
+        //                            StockQuantity = Math.Abs(inventoryInfo.SupplyQuantity),
+        //                            SupplyQuantity = 0,
+        //                            Remark = "鐩樹簭鍏ュ簱"
+        //                        };
+        //                        //_supplyTaskHtyService.AddData(supplyTask_Hty);
+        //                        supplyTask_Hties.Add(supplyTask_Hty);
+        //                    }
+        //                    #endregion
+        //                    inventoryInfo.StockQuantity += inventoryInfo.SupplyQuantity;
+        //                    inventoryInfo.AvailableQuantity = inventoryInfo.StockQuantity;
+        //                    inventoryInfo.SupplyQuantity = 0;
+        //                    inventoryInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
+        //                    // 妫�鏌ュ簱瀛樻槸鍚︿负0锛屽鏋滄槸鍒欐爣璁颁负鍒犻櫎
+                          
+        //                }
+        //                inventory_Batch.StockQuantity += inventory_Batch.SupplyQuantity;
+        //                inventory_Batch.AvailableQuantity = inventory_Batch.StockQuantity;
+        //                inventory_Batch.SupplyQuantity = 0;
+        //                infosUp.AddRange(inventoryInfos);
+        //                batchesUp.Add(inventory_Batch);
+        //                // 妫�鏌ユ壒娆″簱瀛樻槸鍚︿负0锛屽鏋滄槸鍒欐爣璁颁负鍒犻櫎
+                     
+        //                //_inventoryInfoService.UpdateData(inventoryInfos);
+        //                //_inventory_BatchServices.UpdateData(inventory_Batch);
+        //            }
+        //            #endregion
+
+        //            #region 鍒涘缓鐩樼偣鍗�
+        //            var entityOrder = new Dt_DeliveryOrder
+        //            {
+        //                Out_no = order.order_no,
+        //                Out_type = order.order_type,
+        //                Client_no = order.client_no,
+        //                Client_name = order.client_name,
+        //                OutStatus = "宸插畬鎴�",
+        //                Account_time = order.account_time,
+        //                Warehouse_no = order.warehouse_no,
+        //                Details = order.details.Select(d => new Dt_DeliveryOrderDetail
+        //                {
+        //                    Goods_no = d.goods_no,
+        //                    Order_qty = Math.Abs(d.order_qty),
+        //                    Order_Outqty = Math.Abs(d.order_qty),
+        //                    Batch_num = d.batch_num,
+        //                    Exp_date = d.exp_date,
+        //                    Reservoirarea = order.warehouse_no,
+        //                    OotDetailStatus = "宸插畬鎴�",
+        //                    Status = 2,
+        //                }).ToList()
+        //            };
+        //            _unitOfWorkManage.BeginTran();
+        //            _supplyTaskHtyService.AddData(supplyTask_Hties);
+        //            _inventoryInfoService.UpdateData(infosUp);
+        //            _inventory_BatchServices.UpdateData(batchesUp);
+        //            //BaseDal.Db.InsertNav(entityOrder).Include(it => it.Details).ExecuteCommand();
+        //            _unitOfWorkManage.CommitTran();
+        //            #endregion
+        //        }
+        //        #endregion
+        //        else
+        //        {
+        //            List<Dt_DeliveryOrder> deliveryOrdersAdd = new List<Dt_DeliveryOrder>();
+        //            string WareCodeLK = WarehouseEnum.绔嬪簱.ObjToInt().ToString("000");
+        //            string WareCodeDJ = WarehouseEnum.澶т欢搴�.ObjToInt().ToString("000");
+        //            List<Dt_Inventory_Batch> inventory_Batchs = _inventory_BatchServices.Repository.QueryData(x => codes.Contains(x.MaterielCode));
+        //            List<Dt_InventoryInfo> _InventoryInfos = _inventoryInfoService.Repository.QueryData(x => codes.Contains(x.MaterielCode));
+        //            foreach (var item in order.details)
+        //            {
+        //                //鎵惧簱瀛樻壒娆′俊鎭�
+        //                Dt_Inventory_Batch inventory_Batch = inventory_Batchs.Where(x => x.MaterielCode == item.goods_no && x.BatchNo == item.batch_num).First();
+        //                var Qty = Math.Abs(inventory_Batch.SupplyQuantity);
+        //                if (Qty != item.order_qty)
+        //                {
+        //                    _messageInfoService.AddMessageInfo(MessageGroupByEnum.OutOrderAlarm, "ERP鎶ユ崯鍑哄簱閿欒", $"鐩樹簭鍑哄簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐩樹簭鏁伴噺鏈夎");
+        //                    throw new Exception($"鐩樹簭鍑哄簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐩樹簭鏁伴噺鏈夎");
+        //                } 
+        //                //鎵炬墍鏈夊簱瀛�
+        //                List<Dt_InventoryInfo> inventoryInfos = _InventoryInfos.Where(x => x.MaterielCode == inventory_Batch.MaterielCode && x.BatchNo == inventory_Batch.BatchNo).ToList();
+        //                //鑾峰彇绔嬪簱鐩樼偣宸紓鏁�
+        //                var inventoryLK = inventoryInfos.Where(x => x.WarehouseCode == WareCodeLK).First();
+        //                //var LkQty = Math.Abs(inventoryLK.SupplyQuantity);
+        //                var LkQty = inventoryLK.SupplyQuantity;
+        //                //鑾峰彇澶т欢搴撶洏鐐瑰樊寮傛暟
+        //                var inventoryDJ = inventoryInfos.Where(x => x.WarehouseCode == WareCodeDJ).ToList();
+        //                //var DJQty = Math.Abs(inventoryDJ.Sum(x => x.SupplyQuantity));
+        //                var DJQty = inventoryDJ.Sum(x => x.SupplyQuantity);
+        //                var count = Math.Abs(LkQty + DJQty);
+        //                if (count != Qty) {
+        //                    _messageInfoService.AddMessageInfo(MessageGroupByEnum.OutOrderAlarm, "ERP鎶ユ崯鍑哄簱閿欒", $"鐩樹簭鍑哄簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐩樹簭鏁伴噺鏈夎");
+        //                    throw new Exception($"銆恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐗╂枡淇℃伅涓庣墿鏂欐壒娆′俊鎭洏浜忔暟閲忎笉绗�");
+        //                }
+        //                if (LkQty == 0)//绔嬪簱鏃犵洏鐐瑰樊寮傦紝鍙湁澶т欢搴撴湁宸紓
+        //                {
+        //                    #region 搴撳瓨銆佸簱瀛樻壒娆″钩璐�
+        //                    foreach (var inventoryInfo in inventoryInfos)
+        //                    {
+        //                        #region 娣诲姞鐩樹簭鍑哄簱浠诲姟
+        //                        if (inventoryInfo.StockQuantity != inventoryInfo.SupplyQuantity)
+        //                        {
+        //                            Dt_SupplyTask_Hty supplyTask_Hty = new Dt_SupplyTask_Hty()
+        //                            {
+        //                                WarehouseCode = inventoryInfo.WarehouseCode,
+        //                                OperateType = OperateTypeEnum.鑷姩瀹屾垚.ToString(),
+        //                                InsertTime = DateTime.Now,
+        //                                TaskStatus = SupplyStatusEnum.OutFinish.ObjToInt(),
+        //                                BatchNo = inventoryInfo.BatchNo,
+        //                                MaterielName = inventoryInfo.MaterielName,
+        //                                MaterielCode = inventoryInfo.MaterielCode,
+        //                                MaterielSpec = inventoryInfo.MaterielSpec,
+        //                                TaskType = TaskTypeEnum.ChenckOut.ObjToInt(),
+        //                                CreateDate = DateTime.Now,
+        //                                Creater = App.User.UserName,
+        //                                LocationCode = inventoryInfo.LocationCode,
+        //                                OrderNo = order.order_no,
+        //                                StockQuantity = Math.Abs(inventoryInfo.SupplyQuantity),
+        //                                SupplyQuantity = 0,
+        //                                Remark = "鐩樹簭鍏ュ簱"
+        //                            };
+        //                            //_supplyTaskHtyService.AddData(supplyTask_Hty);
+        //                            supplyTask_Hties.Add(supplyTask_Hty);
+        //                        }
+        //                        #endregion
+        //                        // 鏇存柊搴撳瓨淇℃伅
+        //                        inventoryInfo.StockQuantity += inventoryInfo.SupplyQuantity;
+        //                        inventoryInfo.AvailableQuantity = inventoryInfo.StockQuantity;
+        //                        inventoryInfo.SupplyQuantity = 0;
+        //                        inventoryInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
+        //                        // 妫�鏌ュ簱瀛樻槸鍚︿负0锛屽鏋滄槸鍒欐爣璁颁负鍒犻櫎
+                            
+        //                    }
+        //                    //鏇存柊鎵规淇℃伅
+        //                    //_inventoryInfoService.UpdateData(inventoryInfos);
+        //                    inventory_Batch.StockQuantity += inventory_Batch.SupplyQuantity;
+        //                    inventory_Batch.AvailableQuantity = inventory_Batch.StockQuantity;
+        //                    inventory_Batch.SupplyQuantity = 0;
+        //                    //_inventory_BatchServices.UpdateData(inventory_Batch);
+        //                    infosUp.AddRange(inventoryInfos);
+        //                    batchesUp.Add(inventory_Batch);
+        //                    #endregion
+
+        //                    #region 鍒涘缓澶т欢搴撶洏鐐瑰崟
+        //                    var entityOrder = new Dt_DeliveryOrder
+        //                    {
+        //                        Out_no = order.order_no,
+        //                        Out_type = order.order_type,
+        //                        Client_no = order.client_no,
+        //                        Account_time = order.account_time,
+        //                        OutStatus = "宸插畬鎴�",
+        //                        Client_name = order.client_name,
+        //                        Warehouse_no = WareCodeDJ,
+        //                        Details = order.details.Select(d => new Dt_DeliveryOrderDetail
+        //                        {
+        //                            Goods_no = d.goods_no,
+        //                            Order_qty = Math.Abs(d.order_qty),
+        //                            Order_Outqty = Math.Abs(d.order_qty),
+        //                            Batch_num = d.batch_num,
+        //                            Exp_date = d.exp_date,
+        //                            Reservoirarea = WareCodeDJ,
+        //                            OotDetailStatus = "宸插畬鎴�",
+        //                            Status = 2,
+        //                        }).ToList()
+        //                    };
+        //                    //Db.InsertNav(entityOrder).Include(it => it.Details).ExecuteCommand();
+        //                    //Repository.AddData(entityOrder);
+        //                    deliveryOrdersAdd.Add(entityOrder);
+        //                    #endregion
+        //                }
+        //                else //绔嬪簱鏈夌洏鐐瑰樊寮傦紙闇�瑕佸嚭搴擄級锛屽ぇ浠跺簱鍙兘鏈夋垨娌℃湁宸紓
+        //                {
+        //                    #region 澶т欢搴撳簱瀛樺钩璐�
+        //                    inventoryInfos = inventoryInfos.Where(x => x.WarehouseCode == WareCodeDJ).ToList();
+        //                    foreach (var inventoryInfo in inventoryInfos)
+        //                    {
+        //                        #region 娣诲姞鐩樹簭鍑哄簱浠诲姟
+        //                        if (inventoryInfo.StockQuantity != inventoryInfo.SupplyQuantity)
+        //                        {
+        //                            Dt_SupplyTask_Hty supplyTask_Hty = new Dt_SupplyTask_Hty()
+        //                            {
+        //                                WarehouseCode = inventoryInfo.WarehouseCode,
+        //                                OperateType = OperateTypeEnum.鑷姩瀹屾垚.ToString(),
+        //                                InsertTime = DateTime.Now,
+        //                                TaskStatus = SupplyStatusEnum.OutFinish.ObjToInt(),
+        //                                BatchNo = inventoryInfo.BatchNo,
+        //                                MaterielName = inventoryInfo.MaterielName,
+        //                                MaterielCode = inventoryInfo.MaterielCode,
+        //                                MaterielSpec = inventoryInfo.MaterielSpec,
+        //                                TaskType = TaskTypeEnum.ChenckOut.ObjToInt(),
+        //                                CreateDate = DateTime.Now,
+        //                                Creater = App.User.UserName,
+        //                                LocationCode = inventoryInfo.LocationCode,
+        //                                OrderNo = order.order_no,
+        //                                StockQuantity = Math.Abs(inventoryInfo.SupplyQuantity),
+        //                                SupplyQuantity = 0,
+        //                                Remark = "鐩樹簭鍑哄簱"
+        //                            };
+        //                            //_supplyTaskHtyService.AddData(supplyTask_Hty);
+        //                            supplyTask_Hties.Add(supplyTask_Hty);
+        //                        }
+        //                        #endregion
+        //                        inventoryInfo.StockQuantity += inventoryInfo.SupplyQuantity;
+        //                        inventoryInfo.AvailableQuantity = inventoryInfo.StockQuantity;
+        //                        inventoryInfo.SupplyQuantity = 0;
+        //                        inventoryInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
+        //                    }
+        //                    //_inventoryInfoService.UpdateData(inventoryInfos);
+        //                    infosUp.AddRange(inventoryInfos);
+        //                    #endregion
+
+        //                    #region 鍒涘缓澶т欢搴撶洏鐐瑰崟
+        //                    if (DJQty != 0)
+        //                    {
+        //                        var cabinOrder = new Dt_DeliveryOrder
+        //                        {
+        //                            Out_no = order.order_no,
+        //                            Out_type = order.order_type,
+        //                            Client_name = order.client_name,
+        //                            Account_time = order.account_time,
+        //                            OutStatus = "宸插畬鎴�",
+        //                            Client_no = order.client_no,
+        //                            Warehouse_no = WareCodeDJ,
+        //                            Details = order.details.Select(d => new Dt_DeliveryOrderDetail
+        //                            {
+        //                                Goods_no = d.goods_no,
+        //                                Order_qty = DJQty,
+        //                                Order_Outqty = DJQty,
+        //                                Batch_num = d.batch_num,
+        //                                Exp_date = d.exp_date,
+        //                                Reservoirarea = WareCodeDJ,
+        //                                OotDetailStatus = "宸插畬鎴�",
+        //                                Status = 2,
+        //                            }).ToList()
+        //                        };
+        //                        //Repository.AddData(cabinOrder);
+        //                        //Db.InsertNav(cabinOrder).Include(it => it.Details).ExecuteCommand();
+        //                        deliveryOrdersAdd.Add(cabinOrder);
+        //                    }
+        //                    #endregion
+        //                    //杩欓噷
+        //                    #region 鍒涘缓绔嬪簱鐩樼偣鍗�
+        //                    var entityOrder = new Dt_DeliveryOrder
+        //                    {
+        //                        Out_no = order.order_no,
+        //                        Out_type = order.order_type,
+        //                        Client_no = order.client_no,
+        //                        Account_time = order.account_time,
+        //                        OutStatus = "鏂板缓",
+        //                        Client_name = order.client_name,
+        //                        Warehouse_no = WareCodeLK,
+        //                        Details = order.details.Select(d => new Dt_DeliveryOrderDetail
+        //                        {
+        //                            Goods_no = d.goods_no,
+        //                            Order_qty = Math.Abs(LkQty), //缁欎笅娓竁CS鐨勬槸瑕佹暣鏁�
+        //                            Batch_num = d.batch_num,
+        //                            Exp_date = d.exp_date,
+        //                            Reservoirarea = WareCodeLK,
+        //                            OotDetailStatus = "鏂板缓",
+        //                            Status = 0,
+        //                        }).ToList()
+        //                    };
+        //                    //Db.InsertNav(entityOrder).Include(it => it.Details).ExecuteCommand();
+        //                    //Repository.AddData(entityOrder);
+        //                    deliveryOrdersAdd.Add(entityOrder);
+        //                    #endregion
+        //                }
+        //                //return WebResponseContent.Instance.OK("鎴愬姛");
+        //            }
+        //            _unitOfWorkManage.BeginTran();
+        //            _supplyTaskHtyService.AddData(supplyTask_Hties);
+        //            _inventoryInfoService.UpdateData(infosUp);
+        //            _inventory_BatchServices.UpdateData(batchesUp);
+        //            BaseDal.Db.InsertNav(deliveryOrdersAdd).Include(it => it.Details).ExecuteCommand();
+        //            _unitOfWorkManage.CommitTran();
+        //        }
+        //        return WebResponseContent.Instance.OK("鎴愬姛");
+        //    }
+        //    catch (Exception ex)
+        //    {
+        //        _unitOfWorkManage.RollbackTran();
+        //        content.Error(ex.Message);
+        //    }
+        //    return content;
+        //}
+        #endregion
+
+
+        #region 鍒涘缓鐩樹簭鍑哄簱鍗� 锛堟坊鍔犲垹闄ゅ簱瀛樹负0鐨勬儏鍐碉級
         public WebResponseContent CreateCheckOutOrder(UpstramOutOrderInfo order)
         {
             WebResponseContent content = new WebResponseContent();
@@ -642,20 +976,29 @@
                 string WareCodeLD = WarehouseEnum.鍐峰喕搴�.ObjToInt().ToString("000");
                 List<Dt_SupplyTask_Hty> supplyTask_Hties = new List<Dt_SupplyTask_Hty>();
                 List<Dt_Inventory_Batch> batchesUp = new List<Dt_Inventory_Batch>();
+                List<Dt_Inventory_Batch> batchesDel = new List<Dt_Inventory_Batch>();//鍒犻櫎
                 List<Dt_InventoryInfo> infosUp = new List<Dt_InventoryInfo>();
+                List<Dt_InventoryInfo> infosDel = new List<Dt_InventoryInfo>();//鍒犻櫎
                 var codes = order.details.Select(x => x.goods_no).ToList();
+
                 #region 鐗规畩搴撴埧
                 if (order.warehouse_no == WareCodeMJ || order.warehouse_no == WareCodeLD)
                 {
-                    List<Dt_Inventory_Batch> inventory_Batchs = _inventory_BatchServices.Repository.QueryData(x => codes.Contains(x.MaterielCode));
-                    List<Dt_InventoryInfo> _InventoryInfos = _inventoryInfoService.Repository.QueryData(x => codes.Contains(x.MaterielCode));
+                    List<Dt_Inventory_Batch> inventory_Batchs = _inventory_BatchServices.Repository.QueryData(x => codes.Contains(x.MaterielCode)).ToList();
+                    List<Dt_InventoryInfo> _InventoryInfos = _inventoryInfoService.Repository.QueryData(x => codes.Contains(x.MaterielCode)).ToList();
+
                     #region 搴撳瓨銆佸簱瀛樻壒娆″钩璐�
                     foreach (var item in order.details)
                     {
                         //鎵惧簱瀛樻壒娆′俊鎭�
                         Dt_Inventory_Batch inventory_Batch = inventory_Batchs.Where(x => x.MaterielCode == item.goods_no && x.BatchNo == item.batch_num).First();
                         var Qty = Math.Abs(inventory_Batch.SupplyQuantity);
-                        if (Qty != item.order_qty) throw new Exception($"鐩樹簭鍑哄簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐩樹簭鏁伴噺鏈夎");
+                        if (Qty != item.order_qty)
+                        {
+                            _messageInfoService.AddMessageInfo(MessageGroupByEnum.OutOrderAlarm, "ERP鎶ユ崯鍑哄簱閿欒", $"鐩樹簭鍑哄簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐩樹簭鏁伴噺鏈夎");
+                            throw new Exception($"鐩樹簭鍑哄簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐩樹簭鏁伴噺鏈夎");
+                        }
+
                         //鎵炬墍鏈夊簱瀛�
                         List<Dt_InventoryInfo> inventoryInfos = _InventoryInfos.Where(x => x.MaterielCode == inventory_Batch.MaterielCode && x.BatchNo == inventory_Batch.BatchNo).ToList();
                         foreach (var inventoryInfo in inventoryInfos)
@@ -682,22 +1025,31 @@
                                     SupplyQuantity = 0,
                                     Remark = "鐩樹簭鍏ュ簱"
                                 };
-                                //_supplyTaskHtyService.AddData(supplyTask_Hty);
                                 supplyTask_Hties.Add(supplyTask_Hty);
                             }
                             #endregion
+
                             inventoryInfo.StockQuantity += inventoryInfo.SupplyQuantity;
                             inventoryInfo.AvailableQuantity = inventoryInfo.StockQuantity;
                             inventoryInfo.SupplyQuantity = 0;
                             inventoryInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
+
+                            // 妫�鏌ュ簱瀛樻槸鍚︿负0锛屽鏋滄槸鍒欐爣璁颁负鍒犻櫎
+                            if (inventoryInfo.StockQuantity <= 0)
+                                infosDel.Add(inventoryInfo);
+                            else
+                                infosUp.Add(inventoryInfo);
                         }
+
                         inventory_Batch.StockQuantity += inventory_Batch.SupplyQuantity;
                         inventory_Batch.AvailableQuantity = inventory_Batch.StockQuantity;
                         inventory_Batch.SupplyQuantity = 0;
-                        infosUp.AddRange(inventoryInfos);
-                        batchesUp.Add(inventory_Batch);
-                        //_inventoryInfoService.UpdateData(inventoryInfos);
-                        //_inventory_BatchServices.UpdateData(inventory_Batch);
+
+                        // 妫�鏌ユ壒娆″簱瀛樻槸鍚︿负0锛屽鏋滄槸鍒欐爣璁颁负鍒犻櫎
+                        if (inventory_Batch.StockQuantity <= 0)
+                            batchesDel.Add(inventory_Batch);
+                        else
+                            batchesUp.Add(inventory_Batch);
                     }
                     #endregion
 
@@ -723,10 +1075,19 @@
                             Status = 2,
                         }).ToList()
                     };
+
                     _unitOfWorkManage.BeginTran();
                     _supplyTaskHtyService.AddData(supplyTask_Hties);
-                    _inventoryInfoService.UpdateData(infosUp);
-                    _inventory_BatchServices.UpdateData(batchesUp);
+
+                    if (infosUp.Any())
+                        _inventoryInfoService.UpdateData(infosUp);
+                    if (infosDel.Any())
+                        _inventoryInfoService.DeleteData(infosDel);
+                    if (batchesUp.Any())
+                        _inventory_BatchServices.UpdateData(batchesUp);
+                    if (batchesDel.Any())
+                        _inventory_BatchServices.DeleteData(batchesDel);
+
                     BaseDal.Db.InsertNav(entityOrder).Include(it => it.Details).ExecuteCommand();
                     _unitOfWorkManage.CommitTran();
                     #endregion
@@ -739,25 +1100,35 @@
                     string WareCodeDJ = WarehouseEnum.澶т欢搴�.ObjToInt().ToString("000");
                     List<Dt_Inventory_Batch> inventory_Batchs = _inventory_BatchServices.Repository.QueryData(x => codes.Contains(x.MaterielCode));
                     List<Dt_InventoryInfo> _InventoryInfos = _inventoryInfoService.Repository.QueryData(x => codes.Contains(x.MaterielCode));
+
                     foreach (var item in order.details)
                     {
                         //鎵惧簱瀛樻壒娆′俊鎭�
                         Dt_Inventory_Batch inventory_Batch = inventory_Batchs.Where(x => x.MaterielCode == item.goods_no && x.BatchNo == item.batch_num).First();
                         var Qty = Math.Abs(inventory_Batch.SupplyQuantity);
-                        if (Qty != item.order_qty) throw new Exception($"鐩樹簭鍑哄簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐩樹簭鏁伴噺鏈夎");
+                        if (Qty != item.order_qty)
+                        {
+                            _messageInfoService.AddMessageInfo(MessageGroupByEnum.OutOrderAlarm, "ERP鎶ユ崯鍑哄簱閿欒", $"鐩樹簭鍑哄簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐩樹簭鏁伴噺鏈夎");
+                            throw new Exception($"鐩樹簭鍑哄簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐩樹簭鏁伴噺鏈夎");
+                        }
+
                         //鎵炬墍鏈夊簱瀛�
                         List<Dt_InventoryInfo> inventoryInfos = _InventoryInfos.Where(x => x.MaterielCode == inventory_Batch.MaterielCode && x.BatchNo == inventory_Batch.BatchNo).ToList();
-                        //鑾峰彇绔嬪簱鐩樼偣宸紓鏁�.銆傘�傘�傘�傘�傘�傘�傘�傘�傘�傘�傘��
+                        //鑾峰彇绔嬪簱鐩樼偣宸紓鏁�
                         var inventoryLK = inventoryInfos.Where(x => x.WarehouseCode == WareCodeLK).First();
-                        //var LkQty = Math.Abs(inventoryLK.SupplyQuantity);
                         var LkQty = inventoryLK.SupplyQuantity;
                         //鑾峰彇澶т欢搴撶洏鐐瑰樊寮傛暟
                         var inventoryDJ = inventoryInfos.Where(x => x.WarehouseCode == WareCodeDJ).ToList();
-                        //var DJQty = Math.Abs(inventoryDJ.Sum(x => x.SupplyQuantity));
                         var DJQty = inventoryDJ.Sum(x => x.SupplyQuantity);
                         var count = Math.Abs(LkQty + DJQty);
-                        if (count != Qty) throw new Exception($"銆恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐗╂枡淇℃伅涓庣墿鏂欐壒娆′俊鎭洏浜忔暟閲忎笉绗�");
-                        if (LkQty == 0)//绔嬪簱鏃犲樊寮�
+
+                        if (count != Qty)
+                        {
+                            _messageInfoService.AddMessageInfo(MessageGroupByEnum.OutOrderAlarm, "ERP鎶ユ崯鍑哄簱閿欒", $"鐩樹簭鍑哄簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐩樹簭鏁伴噺鏈夎");
+                            throw new Exception($"銆恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐗╂枡淇℃伅涓庣墿鏂欐壒娆′俊鎭洏浜忔暟閲忎笉绗�");
+                        }
+
+                        if (LkQty == 0)//绔嬪簱鏃犵洏鐐瑰樊寮傦紝鍙湁澶т欢搴撴湁宸紓
                         {
                             #region 搴撳瓨銆佸簱瀛樻壒娆″钩璐�
                             foreach (var inventoryInfo in inventoryInfos)
@@ -784,22 +1155,33 @@
                                         SupplyQuantity = 0,
                                         Remark = "鐩樹簭鍏ュ簱"
                                     };
-                                    //_supplyTaskHtyService.AddData(supplyTask_Hty);
                                     supplyTask_Hties.Add(supplyTask_Hty);
                                 }
                                 #endregion
+
+                                // 鏇存柊搴撳瓨淇℃伅
                                 inventoryInfo.StockQuantity += inventoryInfo.SupplyQuantity;
                                 inventoryInfo.AvailableQuantity = inventoryInfo.StockQuantity;
                                 inventoryInfo.SupplyQuantity = 0;
                                 inventoryInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
+
+                                // 妫�鏌ュ簱瀛樻槸鍚︿负0锛屽鏋滄槸鍒欐爣璁颁负鍒犻櫎
+                                if (inventoryInfo.StockQuantity <= 0)
+                                    infosDel.Add(inventoryInfo);
+                                else
+                                    infosUp.Add(inventoryInfo);
                             }
-                            //_inventoryInfoService.UpdateData(inventoryInfos);
+
+                            //鏇存柊鎵规淇℃伅
                             inventory_Batch.StockQuantity += inventory_Batch.SupplyQuantity;
                             inventory_Batch.AvailableQuantity = inventory_Batch.StockQuantity;
                             inventory_Batch.SupplyQuantity = 0;
-                            //_inventory_BatchServices.UpdateData(inventory_Batch);
-                            infosUp.AddRange(inventoryInfos);
-                            batchesUp.Add(inventory_Batch);
+
+                            // 妫�鏌ユ壒娆″簱瀛樻槸鍚︿负0锛屽鏋滄槸鍒欐爣璁颁负鍒犻櫎
+                            if (inventory_Batch.StockQuantity <= 0)
+                                batchesDel.Add(inventory_Batch);
+                            else
+                                batchesUp.Add(inventory_Batch);
                             #endregion
 
                             #region 鍒涘缓澶т欢搴撶洏鐐瑰崟
@@ -824,16 +1206,14 @@
                                     Status = 2,
                                 }).ToList()
                             };
-                            //Db.InsertNav(entityOrder).Include(it => it.Details).ExecuteCommand();
-                            //Repository.AddData(entityOrder);
                             deliveryOrdersAdd.Add(entityOrder);
                             #endregion
                         }
-                        else
+                        else //绔嬪簱鏈夌洏鐐瑰樊寮傦紙闇�瑕佸嚭搴擄級锛屽ぇ浠跺簱鍙兘鏈夋垨娌℃湁宸紓
                         {
                             #region 澶т欢搴撳簱瀛樺钩璐�
-                            inventoryInfos = inventoryInfos.Where(x => x.WarehouseCode == WareCodeDJ).ToList();
-                            foreach (var inventoryInfo in inventoryInfos)
+                            var inventoryInfosDJ = inventoryInfos.Where(x => x.WarehouseCode == WareCodeDJ).ToList();
+                            foreach (var inventoryInfo in inventoryInfosDJ)
                             {
                                 #region 娣诲姞鐩樹簭鍑哄簱浠诲姟
                                 if (inventoryInfo.StockQuantity != inventoryInfo.SupplyQuantity)
@@ -857,17 +1237,21 @@
                                         SupplyQuantity = 0,
                                         Remark = "鐩樹簭鍑哄簱"
                                     };
-                                    //_supplyTaskHtyService.AddData(supplyTask_Hty);
                                     supplyTask_Hties.Add(supplyTask_Hty);
                                 }
                                 #endregion
+
                                 inventoryInfo.StockQuantity += inventoryInfo.SupplyQuantity;
                                 inventoryInfo.AvailableQuantity = inventoryInfo.StockQuantity;
                                 inventoryInfo.SupplyQuantity = 0;
                                 inventoryInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
+
+                                // 妫�鏌ュ簱瀛樻槸鍚︿负0锛屽鏋滄槸鍒欐爣璁颁负鍒犻櫎
+                                if (inventoryInfo.StockQuantity <= 0)
+                                    infosDel.Add(inventoryInfo);
+                                else
+                                    infosUp.Add(inventoryInfo);
                             }
-                            //_inventoryInfoService.UpdateData(inventoryInfos);
-                            infosUp.AddRange(inventoryInfos);
                             #endregion
 
                             #region 鍒涘缓澶т欢搴撶洏鐐瑰崟
@@ -894,12 +1278,10 @@
                                         Status = 2,
                                     }).ToList()
                                 };
-                                //Repository.AddData(cabinOrder);
-                                //Db.InsertNav(cabinOrder).Include(it => it.Details).ExecuteCommand();
                                 deliveryOrdersAdd.Add(cabinOrder);
                             }
                             #endregion
-                            //杩欓噷
+
                             #region 鍒涘缓绔嬪簱鐩樼偣鍗�
                             var entityOrder = new Dt_DeliveryOrder
                             {
@@ -921,20 +1303,27 @@
                                     Status = 0,
                                 }).ToList()
                             };
-                            //Db.InsertNav(entityOrder).Include(it => it.Details).ExecuteCommand();
-                            //Repository.AddData(entityOrder);
                             deliveryOrdersAdd.Add(entityOrder);
                             #endregion
                         }
-                        //return WebResponseContent.Instance.OK("鎴愬姛");
                     }
+
                     _unitOfWorkManage.BeginTran();
                     _supplyTaskHtyService.AddData(supplyTask_Hties);
-                    _inventoryInfoService.UpdateData(infosUp);
-                    _inventory_BatchServices.UpdateData(batchesUp);
+
+                    if (infosUp.Any())
+                        _inventoryInfoService.UpdateData(infosUp);
+                    if (infosDel.Any())
+                        _inventoryInfoService.DeleteData(infosDel);
+                    if (batchesUp.Any())
+                        _inventory_BatchServices.UpdateData(batchesUp);
+                    if (batchesDel.Any())
+                        _inventory_BatchServices.DeleteData(batchesDel);
+
                     BaseDal.Db.InsertNav(deliveryOrdersAdd).Include(it => it.Details).ExecuteCommand();
                     _unitOfWorkManage.CommitTran();
                 }
+
                 return WebResponseContent.Instance.OK("鎴愬姛");
             }
             catch (Exception ex)
@@ -1029,7 +1418,12 @@
             return content;
         }
 
-       
+
+        /// <summary>
+        /// 澶勭悊鍑哄簱鍗曘�佸簱瀛樹俊鎭�佸嚭搴撲换鍔°�佽皟鎷ㄤ换鍔�
+        /// </summary>
+        /// <param name="supplyTask"></param>
+        /// <returns></returns>
         public WebResponseContent OutTaskFinish(Dt_SupplyTask supplyTask, Dt_DeliveryOrder deliveryOrder)
         {
             WebResponseContent content = new WebResponseContent();
@@ -1063,8 +1457,7 @@
                 #endregion
 
                 #region 搴撳瓨鎵规 濡傛灉浠诲姟绫诲瀷鏄皟鎷ㄥ嚭搴撲换鍔★紙8锛夊氨涓嶄慨鏀规壒娆″簱瀛�
-                Dt_Inventory_Batch inventory_Batch = _inventory_BatchServices.Repository.QueryFirst(x => x.BatchNo == inventoryInfo.BatchNo && x.MaterielCode ==
-                    inventoryInfo.MaterielCode);
+                Dt_Inventory_Batch inventory_Batch = _inventory_BatchServices.Repository.QueryFirst(x => x.BatchNo == inventoryInfo.BatchNo && x.MaterielCode ==inventoryInfo.MaterielCode);
                 if (supplyTask.TaskType != TaskTypeEnum.AllocatOut.ObjToInt())
                 {
                     inventory_Batch.StockQuantity -= supplyTask.StockQuantity;
@@ -1074,12 +1467,12 @@
                 supplyTask.TaskStatus = SupplyStatusEnum.OutFinish.ObjToInt();
 
                 _unitOfWorkManage.BeginTran();
-                if (inventory_Batch.StockQuantity <= 0)
+                if (inventory_Batch.StockQuantity <= 0)//濡傛灉搴撳瓨鏁伴噺灏忎簬0灏卞垹闄ゅ簱瀛樻壒娆′俊鎭�
                     _inventory_BatchServices.DeleteData(inventory_Batch);
                 else
                     _inventory_BatchServices.UpdateData(inventory_Batch);
                 //_materielInfoService.UpdateData(materielInfo);
-                if (inventoryInfo.StockQuantity <= 0)
+                if (inventoryInfo.StockQuantity <= 0)//濡傛灉搴撳瓨鏁伴噺灏忎簬0灏卞垹闄ゅ簱瀛樹俊鎭�
                     _inventoryInfoService.DeleteData(inventoryInfo);
                 else
                     _inventoryInfoService.UpdateData(inventoryInfo);
@@ -1118,6 +1511,7 @@
             return content;
         }
 
+     
         public WebResponseContent OutTaskFinish(Dt_SupplyTask supplyTask)
         {
             WebResponseContent content = new WebResponseContent();
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/LKBusiness/DeliveryOrderServicesLK.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/LKBusiness/DeliveryOrderServicesLK.cs"
index f96c94d..1dda607 100644
--- "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/LKBusiness/DeliveryOrderServicesLK.cs"
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/LKBusiness/DeliveryOrderServicesLK.cs"
@@ -11,6 +11,8 @@
 using WIDESEA_Core.Enums;
 using WIDESEA_ISquareCabinServices;
 using WIDESEA_Core.Helper;
+using WIDESEA_Common;
+using static WIDESEA_DTO.SquareCabin.OrderDto;
 
 namespace WIDESEA_SquareCabinServices
 {
@@ -25,6 +27,8 @@
                 List<Dt_SupplyTask_Hty> supplyTask_Hties = new List<Dt_SupplyTask_Hty>();
                 List<Dt_InventoryInfo> infosUp = new List<Dt_InventoryInfo>();
                 List<Dt_Inventory_Batch> batchesUp = new List<Dt_Inventory_Batch>();
+                List<Dt_InventoryInfo> infosDel = new List<Dt_InventoryInfo>();//娣诲姞鍒犻櫎
+                List<Dt_Inventory_Batch> batchesDel = new List<Dt_Inventory_Batch>();
                 List<Dt_MaterielInfo> materielInfos = _materielInfoService.Repository.QueryData(x => deliveryOrder.Details.Select(x => x.Goods_no).ToList().Contains(x.MaterielCode));
                 List<Dt_InventoryInfo> inventoryInfos = _inventoryInfoService.Repository.QueryData(x => deliveryOrder.Warehouse_no == x.WarehouseCode && deliveryOrder.Details.Select(x => x.Goods_no).ToList().Contains(x.MaterielCode));
                 List<Dt_Inventory_Batch> inventory_Batches = _inventory_BatchServices.Repository.QueryData(x => deliveryOrder.Details.Select(x => x.Goods_no).ToList().Contains(x.MaterielCode));
@@ -37,11 +41,20 @@
                         foreach (var detail in request.details)
                         {
                             Dt_DeliveryOrderDetail? orderDetail = deliveryOrder.Details.FirstOrDefault(x => x.Goods_no == detail.productCode && x.Batch_num == detail.batchNo);
-                            if (orderDetail == null) throw new Exception($"鏈壘鍒扮洏鐐瑰崟銆恵deliveryOrder.Out_no}銆戠墿鏂欑紪鍙枫�恵detail.productCode}銆戠墿鏂欐壒娆°�恵detail.batchNo}銆戠殑鏄庣粏淇℃伅");
+                            if (orderDetail == null)
+                            {
+                                _messageInfoService.AddMessageInfo(MessageGroupByEnum.OutOrderAlarm, "鐩樹簭鍑哄簱鍗�", $"鏈壘鍒扮洏鐐瑰崟銆恵deliveryOrder.Out_no}銆戠墿鏂欑紪鍙枫�恵detail.productCode}銆戠墿鏂欐壒娆°�恵detail.batchNo}銆戠殑鏄庣粏淇℃伅");
+                                throw new Exception($"鏈壘鍒扮洏鐐瑰崟銆恵deliveryOrder.Out_no}銆戠墿鏂欑紪鍙枫�恵detail.productCode}銆戠墿鏂欐壒娆°�恵detail.batchNo}銆戠殑鏄庣粏淇℃伅");
+
+                            }
                             decimal orderQty = detail.orderDetails?.Sum(x => decimal.TryParse(x.quantity, out var q) ? Math.Abs(q) : 0) ?? 0;
                             Dt_InventoryInfo inventoryInfo = inventoryInfos.Where(x => x.MaterielCode == detail.productCode && x.BatchNo == detail.batchNo).First();
                             if (orderQty != Math.Abs(inventoryInfo.SupplyQuantity))
+                            {
+                                _messageInfoService.AddMessageInfo(MessageGroupByEnum.OutOrderAlarm, "鐩樹簭鍑哄簱鍗�", $"鐩樹簭鍑哄簱鏁伴噺涓嶄竴鑷�,涓婁紶鏁伴噺銆恵orderQty}銆�,搴撳瓨鐩樹簭鏁伴噺銆恵Math.Abs(inventoryInfo.SupplyQuantity)}銆�");
                                 throw new Exception($"鐩樹簭鍑哄簱鏁伴噺涓嶄竴鑷�,涓婁紶鏁伴噺銆恵orderQty}銆�,搴撳瓨鐩樹簭鏁伴噺銆恵Math.Abs(inventoryInfo.SupplyQuantity)}銆�");
+
+                            }
                             //娣诲姞鐗╂枡淇℃伅涓殑绔嬪簱涓氬姟搴撳瓨淇℃伅
                             var mater = materielInfos.FirstOrDefault(x => x.MaterielCode == detail.productCode);
                             if (mater != null)
@@ -53,13 +66,24 @@
                             inventoryInfo.AvailableQuantity = inventoryInfo.StockQuantity;
                             inventoryInfo.SupplyQuantity = 0;
                             inventoryInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
-                            infosUp.Add(inventoryInfo);
+                            // 妫�鏌ュ簱瀛樻槸鍚︿负0锛屽鏋滄槸鍒欐爣璁颁负鍒犻櫎
+                            if (inventoryInfo.StockQuantity <= 0)
+                                infosDel.Add(inventoryInfo);
+                            else
+                                infosUp.Add(inventoryInfo);
+                            //infosUp.Add(inventoryInfo);
+                            //搴撳瓨鎵规
                             Dt_Inventory_Batch inventory_Batch = inventory_Batches.First(x => x.MaterielCode == inventoryInfo.MaterielCode && x.BatchNo == inventoryInfo.BatchNo);
                             inventory_Batch.StockQuantity += inventory_Batch.SupplyQuantity;
                             inventory_Batch.AvailableQuantity = inventory_Batch.StockQuantity;
                             inventory_Batch.SupplyQuantity = 0;
                             batchesUp.Add(inventory_Batch);
                             orderDetail.OotDetailStatus = "宸插畬鎴�";
+                            orderDetail.Order_Outqty = orderQty; //瀹屾垚鏁伴噺
+                            if (inventory_Batch.StockQuantity<=0)
+                                batchesDel.Add(inventory_Batch);
+                            else
+                                batchesUp.Add(inventory_Batch);
                             cabinOrderDetailsUp.Add(orderDetail);
                             #region 娣诲姞鐩樹簭鍑哄簱浠诲姟
                             Dt_SupplyTask_Hty supplyTask_Hty = new Dt_SupplyTask_Hty()
@@ -85,6 +109,7 @@
                             #endregion
                         }
                         deliveryOrder.OutStatus = "宸插畬鎴�";
+                        //浠庢墍鏈夊嚭搴撴槑缁嗕腑锛岀瓫閫夊嚭閭d簺涓嶅湪宸插畬鎴愬垪琛ㄤ腑鐨勬槑缁嗛」
                         if (deliveryOrder.Details.Where(x => !cabinOrderDetailsUp.Select(x => x.Id).Contains(x.Id)).Any())
                             deliveryOrder.OutStatus = "寮�濮�";
                         _unitOfWorkManage.BeginTran();
@@ -111,9 +136,17 @@
                     {
                         decimal orderQty = detail.orderDetails?.Sum(x => decimal.TryParse(x.quantity, out var q) ? Math.Abs(q) : 0) ?? 0;
                         Dt_SupplyTask? supplyTask = supplyTasks.FirstOrDefault(x => x.MaterielCode == detail.productCode && x.BatchNo == detail.batchNo);
-                        if (supplyTask == null) throw new Exception($"鏈壘鍒拌鍗曞彿銆恵request.externalOrderNo}銆戠墿鏂欑紪鍙枫�恵detail.productCode}銆戠殑鍑哄簱浠诲姟");
+                        if (supplyTask == null)
+                        {
+                            _messageInfoService.AddMessageInfo(MessageGroupByEnum.OutOrderAlarm, "鍑哄簱鍗�", $"鏈壘鍒拌鍗曞彿銆恵request.externalOrderNo}銆戠墿鏂欑紪鍙枫�恵detail.productCode}銆戠殑鍑哄簱浠诲姟");
+                            throw new Exception($"鏈壘鍒拌鍗曞彿銆恵request.externalOrderNo}銆戠墿鏂欑紪鍙枫�恵detail.productCode}銆戠殑鍑哄簱浠诲姟");
+                        }
                         if (supplyTask.StockQuantity != orderQty)
+                        {
+                            _messageInfoService.AddMessageInfo(MessageGroupByEnum.OutOrderAlarm, "鍑哄簱鍗�", $"璁㈠崟鍙枫�恵request.orderNo}銆戠墿鏂欑紪鍙枫�恵detail.productCode}銆戠殑鍑哄簱鏁伴噺涓庡嚭搴撲换鍔℃暟閲忎笉鐩哥瓑");
                             throw new Exception($"璁㈠崟鍙枫�恵request.orderNo}銆戠墿鏂欑紪鍙枫�恵detail.productCode}銆戠殑鍑哄簱鏁伴噺涓庡嚭搴撲换鍔℃暟閲忎笉鐩哥瓑");
+                        }
+                        //澶勭悊鍑哄簱鍗曘�佸簱瀛樹俊鎭�佸嚭搴撲换鍔°�佽皟鎷ㄤ换鍔�
                         content = OutTaskFinish(supplyTask, deliveryOrder);
                         if (!content.Status) throw new Exception(content.Message);
                     }
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/NewBusiness.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/NewBusiness.cs"
index ab80e1e..7c2b623 100644
--- "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/NewBusiness.cs"
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/NewBusiness.cs"
@@ -16,6 +16,171 @@
     public partial class Business
     {
         #region 鑾峰彇ERP鍏ュ簱鍗�
+        //static string SearchInOrderDate = "2025-11-01 00:00:00";
+        //public WebResponseContent GetInOrder()
+        //{
+        //    WebResponseContent content = new WebResponseContent();
+        //    try
+        //    {
+        //        var url = "http://121.37.118.63:80/GYZ2/95fck/inOrder";
+        //        string GetOutOrderDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+        //        if (string.IsNullOrEmpty(SearchInOrderDate)) SearchInOrderDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+        //        var requestData = new { searchDate = SearchInOrderDate };
+        //        //SearchInOrderDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+        //        var result = HttpHelper.Post(url, requestData.ToJsonString());
+        //        var response = JsonConvert.DeserializeObject<UpstreamResponse<UpstreamOrderInfo>>(result);
+        //        if (response == null) return content;
+        //        if (response.data.Count < 1)
+        //        {
+        //            SearchInOrderDate = GetOutOrderDate;
+        //            return content;
+        //        }
+        //        var ordernos = response.data.Select(x => x.order_no).ToList();
+        //        var existingOrderNos = _cabinOrderServices.Repository.QueryData(x => ordernos.Contains(x.Order_no)).Select(x => x.Order_no).Distinct().ToList();
+        //        var newOrders = response.data.Where(order => !existingOrderNos.Contains(order.order_no)).ToList();
+        //        if (newOrders.Count < 1)
+        //        {
+        //            SearchInOrderDate = GetOutOrderDate;
+        //            return content;
+        //        }
+        //        int messQty = 0;
+        //        foreach (var order in newOrders)
+        //        {
+        //            try
+        //            {
+        //                if (order.order_type == "1")
+        //                {
+        //                    content = _cabinOrderServices.CreateInboundOrder(order);
+        //                    if (!content.Status) messQty++;
+        //                }
+        //                else if (order.order_type == "3")//鍏ュ簱閫�鏂�
+        //                {
+        //                    #region 杞崲涓哄嚭搴撳崟
+        //                    UpstramOutOrderInfo upstramOutOrderInfo = new UpstramOutOrderInfo()
+        //                    {
+        //                        order_no = order.order_no,
+        //                        order_type = order.order_type,
+        //                        warehouse_no = order.warehouse_no,
+        //                        details = new List<UpstreamOutOrderDetail>()
+        //                    };
+        //                    foreach (var item in order.details)
+        //                    {
+        //                        UpstreamOutOrderDetail detail = new UpstreamOutOrderDetail()
+        //                        {
+        //                            batch_num = item.batch_num,
+        //                            goods_no = item.goods_no,
+        //                            order_qty = item.order_qty,
+        //                            exp_date = item.exp_date,
+        //                        };
+        //                        upstramOutOrderInfo.details.Add(detail);
+        //                    }
+        //                    #endregion
+        //                    content = _deliveryOrderServices.CreateOutboundOrder(upstramOutOrderInfo);
+        //                    if (!content.Status) messQty++;
+        //                }
+        //                else if (order.order_type == "5")//鎶ユ孩鍏ュ簱
+        //                {
+        //                    content = _cabinOrderServices.CreateCheckInOrder(order);
+        //                    if (!content.Status) messQty++;
+        //                }
+        //            }
+        //            catch (Exception ex)
+        //            {
+        //                continue;
+        //            }
+        //        }
+        //        if (messQty == 0) SearchInOrderDate = GetOutOrderDate;
+        //        return content.OK();
+        //    }
+        //    catch (Exception ex)
+        //    {
+        //        Console.WriteLine("鑾峰彇ERP鍏ュ簱鍗曚俊鎭紓甯革細" + ex.Message);
+        //        return content.Error(ex.Message);
+        //    }
+        //}
+        #endregion
+
+        #region 鑾峰彇ERP鍑哄簱鍗�
+        //static string SearchOutOrderDate = "2025-11-01 00:00:00";
+        //public WebResponseContent GetOutOrder()
+        //{
+        //    WebResponseContent content = new WebResponseContent();
+        //    try
+        //    {
+        //        //var url = "http://121.37.118.63:80/GYZ2/95fck/outOrder";
+        //         var url = "http://127.0.0.1:4523/m2/5660322-5340849-default/366751306?apifoxApiId=366751306";
+        //        string GetOutOrderDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+        //        if (string.IsNullOrEmpty(SearchOutOrderDate)) SearchOutOrderDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+        //        var requestData = new { searchDate = SearchOutOrderDate };
+        //        var result = HttpHelper.Post(url, requestData.ToJsonString());
+        //        var response = JsonConvert.DeserializeObject<UpstreamResponse<UpstramOutOrderInfo>>(result);
+
+        //        if (response == null) return content;
+        //        if (response.data.Count < 1)
+        //        {
+        //            SearchOutOrderDate = GetOutOrderDate;
+        //            return content;
+        //        }
+        //        var ordernos = response.data.Select(x => x.order_no).ToList();
+        //        var existingOutOrderNos = _deliveryOrderServices.Repository.QueryData(x => ordernos.Contains(x.Out_no)).Select(x => x.Out_no).Distinct().ToList();
+        //        var newOutOrders = response.data.Where(outorder => !existingOutOrderNos.Contains(outorder.order_no)).ToList();
+        //        if (newOutOrders.Count < 1)
+        //        {
+        //            SearchOutOrderDate = GetOutOrderDate;
+        //            return content;
+        //        }
+        //        int messQty = 0;
+        //        foreach (var outorder in newOutOrders)
+        //        {
+        //            if (outorder.order_type == "1")// 姝e父鍑哄簱鍗�
+        //            {
+        //                content = _deliveryOrderServices.CreateOutboundOrder(outorder);
+        //                if (!content.Status) messQty++;
+        //            }
+        //            else if (outorder.order_type == "2")//鍑哄簱閫�璐�
+        //            {
+        //                #region 杞崲鎴愬叆搴撳崟
+        //                UpstreamOrderInfo order = new UpstreamOrderInfo()
+        //                {
+        //                    order_no = outorder.order_no,
+        //                    order_type = outorder.order_type,
+        //                    warehouse_no = outorder.warehouse_no,
+        //                    details = new List<UpstreamOrderDetail>()
+        //                };
+        //                foreach (var item in outorder.details)
+        //                {
+        //                    UpstreamOrderDetail detail = new UpstreamOrderDetail()
+        //                    {
+        //                        batch_num = item.batch_num,
+        //                        goods_no = item.goods_no,
+        //                        order_qty = item.order_qty,
+        //                        exp_date = item.exp_date,
+        //                    };
+        //                    order.details.Add(detail);
+        //                }
+        //                #endregion
+        //                content = _cabinOrderServices.CreateInboundOrder(order);
+        //                if (!content.Status) messQty++;
+        //            }
+        //            else if (outorder.order_type == "6")//鎶ユ崯鍑哄簱
+        //            {
+        //                content = _deliveryOrderServices.CreateCheckOutOrder(outorder);
+        //                if (!content.Status) messQty++;
+        //            }
+        //        }
+        //        if (messQty == 0) SearchOutOrderDate = GetOutOrderDate;
+        //    }
+        //    catch (Exception ex)
+        //    {
+        //        content.Error(ex.Message);
+        //    }
+        //    return content;
+        //}
+        #endregion
+
+
+
+        #region 鑾峰彇ERP鍏ュ簱鍗�
         static string SearchInOrderDate = "2025-11-01 00:00:00";
         public WebResponseContent GetInOrder()
         {
@@ -26,7 +191,6 @@
                 string GetOutOrderDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                 if (string.IsNullOrEmpty(SearchInOrderDate)) SearchInOrderDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                 var requestData = new { searchDate = SearchInOrderDate };
-                //SearchInOrderDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                 var result = HttpHelper.Post(url, requestData.ToJsonString());
                 var response = JsonConvert.DeserializeObject<UpstreamResponse<UpstreamOrderInfo>>(result);
                 if (response == null) return content;
@@ -35,14 +199,33 @@
                     SearchInOrderDate = GetOutOrderDate;
                     return content;
                 }
+
                 var ordernos = response.data.Select(x => x.order_no).ToList();
-                var existingOrderNos = _cabinOrderServices.Repository.QueryData(x => ordernos.Contains(x.Order_no)).Select(x => x.Order_no).Distinct().ToList();
-                var newOrders = response.data.Where(order => !existingOrderNos.Contains(order.order_no)).ToList();
+
+                // 鍏抽敭淇敼锛氭寜璁㈠崟绫诲瀷鍒嗗埆妫�鏌ュ搴旂殑琛�
+                var inOrderTypes = new List<string> { "1", "5" }; // 鍏ュ簱绫诲瀷
+                var outOrderTypes = new List<string> { "3" };      // 鍑哄簱绫诲瀷
+
+                // 妫�鏌ュ叆搴撳崟琛紙鍙鏌ュ叆搴撶被鍨嬬殑璁㈠崟锛夋槸鍚﹀瓨鍦�
+                var existingInOrderNos = _cabinOrderServices.Repository.QueryData(x => ordernos.Contains(x.Order_no))
+                    .Select(x => x.Order_no).Distinct().ToList();
+
+                // 妫�鏌ュ嚭搴撳崟琛紙鍙鏌ュ嚭搴撶被鍨嬬殑璁㈠崟锛�
+                var existingOutOrderNos = _deliveryOrderServices.Repository.QueryData(x => ordernos.Contains(x.Out_no))
+                    .Select(x => x.Out_no).Distinct().ToList();
+
+                // 绛涢�夋柊璁㈠崟锛氬叆搴撶被鍨嬫鏌ュ叆搴撹〃锛屽嚭搴撶被鍨嬫鏌ュ嚭搴撹〃 閫夊嚭涓嶅寘鍚凡瀛樺湪鍦�
+                var newOrders = response.data.Where(order =>
+                    (inOrderTypes.Contains(order.order_type) && !existingInOrderNos.Contains(order.order_no)) ||
+                    (outOrderTypes.Contains(order.order_type) && !existingOutOrderNos.Contains(order.order_no))
+                ).ToList();
+
                 if (newOrders.Count < 1)
                 {
                     SearchInOrderDate = GetOutOrderDate;
                     return content;
                 }
+
                 int messQty = 0;
                 foreach (var order in newOrders)
                 {
@@ -60,6 +243,9 @@
                             {
                                 order_no = order.order_no,
                                 order_type = order.order_type,
+                                client_no=order.supplier_no,
+                                client_name=order.supplier_name,
+                                account_time=order.account_time,
                                 warehouse_no = order.warehouse_no,
                                 details = new List<UpstreamOutOrderDetail>()
                             };
@@ -120,16 +306,35 @@
                     SearchOutOrderDate = GetOutOrderDate;
                     return content;
                 }
+
                 var ordernos = response.data.Select(x => x.order_no).ToList();
-                var existingOutOrderNos = _deliveryOrderServices.Repository.QueryData(x => ordernos.Contains(x.Out_no)).Select(x => x.Out_no).Distinct().ToList();
-                var newOutOrders = response.data.Where(outorder => !existingOutOrderNos.Contains(outorder.order_no)).ToList();
-                if (newOutOrders.Count < 1)
+
+                // 鎸夎鍗曠被鍨嬪垎鍒鏌ュ搴旂殑琛�
+                var outOrderTypes = new List<string> { "1", "6" }; // 鍑哄簱绫诲瀷
+                var inOrderTypes = new List<string> { "2" };       // 鍏ュ簱绫诲瀷
+
+                // 妫�鏌ュ嚭搴撳崟琛紙鍙鏌ュ嚭搴撶被鍨嬬殑璁㈠崟锛�
+                var existingOutOrderNos = _deliveryOrderServices.Repository.QueryData(x => ordernos.Contains(x.Out_no))
+                    .Select(x => x.Out_no).Distinct().ToList();
+
+                // 妫�鏌ュ叆搴撳崟琛紙鍙鏌ュ叆搴撶被鍨嬬殑璁㈠崟锛�
+                var existingInOrderNos = _cabinOrderServices.Repository.QueryData(x => ordernos.Contains(x.Order_no))
+                    .Select(x => x.Order_no).Distinct().ToList();
+
+                // 绛涢�夋柊璁㈠崟锛氬嚭搴撶被鍨嬫鏌ュ嚭搴撹〃锛屽叆搴撶被鍨嬫鏌ュ叆搴撹〃
+                var newOrders = response.data.Where(order =>
+                    (outOrderTypes.Contains(order.order_type) && !existingOutOrderNos.Contains(order.order_no)) ||
+                    (inOrderTypes.Contains(order.order_type) && !existingInOrderNos.Contains(order.order_no))
+                ).ToList();
+
+                if (newOrders.Count < 1)
                 {
                     SearchOutOrderDate = GetOutOrderDate;
                     return content;
                 }
+
                 int messQty = 0;
-                foreach (var outorder in newOutOrders)
+                foreach (var outorder in newOrders)
                 {
                     if (outorder.order_type == "1")// 姝e父鍑哄簱鍗�
                     {
@@ -143,6 +348,9 @@
                         {
                             order_no = outorder.order_no,
                             order_type = outorder.order_type,
+                            supplier_no=outorder.client_no,
+                            supplier_name=outorder.client_name,
+                            account_time=outorder.account_time,
                             warehouse_no = outorder.warehouse_no,
                             details = new List<UpstreamOrderDetail>()
                         };
@@ -167,6 +375,7 @@
                         if (!content.Status) messQty++;
                     }
                 }
+
                 if (messQty == 0) SearchOutOrderDate = GetOutOrderDate;
             }
             catch (Exception ex)
@@ -175,6 +384,8 @@
             }
             return content;
         }
-        #endregion
+
+        #endregion  
+
     }
 }
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/extend/Allocat.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/extend/Allocat.cs"
index 657ff21..0f7b5bc 100644
--- "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/extend/Allocat.cs"
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/extend/Allocat.cs"
@@ -112,7 +112,7 @@
                 #endregion
 
 
-                #region 澶т欢搴撹ˉ绔嬪簱鍚庣珛搴撲笟鍔″簱瀛樻暟杩樻槸灏忎簬绔嬪簱鏈�灏忓簱瀛樻暟锛屾坊鍔犳彁绀轰俊鎭�
+                #region 澶т欢搴撹ˉ绔嬪簱鍚庣珛搴撲笟鍔″簱materielInfo.Business_qty瀛樻暟杩樻槸灏忎簬绔嬪簱鏈�灏忓簱瀛樻暟锛屾坊鍔犳彁绀轰俊鎭�
                 //娣诲姞鎶ヨ淇℃伅
                 if (materielInfo.Business_qty < materielInfo.MinQty)
                 {
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/extend/Check.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/extend/Check.cs"
index ee73c0a..fa1f6cf 100644
--- "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/extend/Check.cs"
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/extend/Check.cs"
@@ -33,11 +33,18 @@
                 //List<Dt_SupplyTask> supplyTasks = new List<Dt_SupplyTask>();
                 List<Dt_SupplyTask> supplyTasks1 = new List<Dt_SupplyTask>();
                 List<Dt_InventoryInfo> _InventoryInfos = new List<Dt_InventoryInfo>();
-                List<Dt_Inventory_Batch> inventory_Batches = _inventory_BatchServices.Repository.QueryData(x => keys.Contains(x.Id));
+                List<Dt_Inventory_Batch> inventory_Batches = _inventory_BatchServices.Repository.QueryData(x => keys.Contains(x.Id)).ToList();
                 foreach (var item in inventory_Batches)
                 {
                     var supplyTasks = _supplyTaskService.Repository.QueryData(x => x.MaterielCode == item.MaterielCode && x.BatchNo == item.BatchNo && x.TaskStatus == SupplyStatusEnum.NewCheck.ObjToInt()).ToList();
-                    if (item.SupplyQuantity != 0) throw new Exception($"鐗╂枡缂栧彿銆恵item.MaterielCode}銆戞壒娆″彿銆恵item.BatchNo}銆戝凡瀛樺湪鐩樼偣宸紓!");
+                    //if (item.SupplyQuantity != 0) throw new Exception($"鐗╂枡缂栧彿銆恵item.MaterielCode}銆戞壒娆″彿銆恵item.BatchNo}銆戝凡瀛樺湪鐩樼偣宸紓!");
+                    if (item.SupplyQuantity != 0)
+                    {
+                        item.SupplyQuantity = 0;
+                        // 杩欓噷闇�瑕佹洿鏂版壒娆¤〃鐨勫樊寮傛暟閲�
+                        _inventory_BatchServices.UpdateData(item);
+                    }
+
                     if (supplyTasks.Count > 0) throw new Exception($"鐗╂枡缂栧彿銆恵item.MaterielCode}銆戞壒娆″彿銆恵item.BatchNo}銆戝凡瀛樺湪鐩樼偣浠诲姟锛岃鍏堝畬鎴愬綋鍓嶇洏鐐逛换鍔�");
                     supplyTasks = _supplyTaskService.Repository.QueryData(x => x.MaterielCode == item.MaterielCode && x.BatchNo == item.BatchNo && x.TaskStatus == SupplyStatusEnum.NewOut.ObjToInt()).ToList();
                     if (supplyTasks.Count > 0) throw new Exception($"鐗╂枡缂栧彿銆恵item.MaterielCode}銆戞壒娆″彿銆恵item.BatchNo}銆戝凡瀛樺湪鍑哄簱浠诲姟锛岃鍏堝畬鎴愬綋鍓嶅嚭搴撲换鍔�");
@@ -79,6 +86,8 @@
                             #region 鍒涘缓鐩樼偣浠诲姟
                             foreach (var inventory in items)
                             {
+                                //鍦ㄥ垱寤虹洏鐐逛换鍔℃椂閲嶇疆搴撳瓨鐨勭洏鐐瑰樊寮備负0
+                                inventory.SupplyQuantity = 0;
                                 Dt_SupplyTask supplyTask = new Dt_SupplyTask()
                                 {
                                     WarehouseCode = inventory.WarehouseCode,
@@ -206,7 +215,7 @@
             {
                 var LocationCode = saveModel.MainData["locationCode"].ToString();
                 var TaskId = saveModel.MainData["taskId"].ObjToInt();
-                var qty = saveModel.MainData["qty"].ObjToInt();
+                var qty = saveModel.MainData["qty"].ObjToDecimal();
                 Dt_SupplyTask supplyTask = _supplyTaskService.Repository.QueryFirst(x => x.TaskId == TaskId && x.TaskStatus == SupplyStatusEnum.NewCheck.ObjToInt());
                 if (supplyTask == null) throw new Exception("褰撳墠鐩樼偣浠诲姟宸插畬鎴�");
                 if (supplyTask.LocationCode != LocationCode) throw new Exception($"褰撳墠鐩樼偣璐т綅銆恵LocationCode}銆戜笌浠诲姟鍒嗛厤璐т綅涓嶅尮閰�");
@@ -249,8 +258,8 @@
                 #endregion
 
                 #region 搴撳瓨
-                List<Dt_Inventory_Batch> inventory_Batchs = _inventory_BatchServices.Repository.QueryData(x => cabinOrder.Details.Select(x => x.Goods_no).Contains(x.MaterielCode));
-                List<Dt_InventoryInfo> inventoryInfos = _inventoryInfoService.Repository.QueryData(x => cabinOrder.Details.Select(x => x.Goods_no).Contains(x.MaterielCode) && x.WarehouseCode == supplyTask.WarehouseCode && x.StockStatus == StockStatusEmun.鐩樼偣閿佸畾.ObjToInt());
+                List<Dt_Inventory_Batch> inventory_Batchs = _inventory_BatchServices.Repository.QueryData(x => cabinOrder.Details.Select(x => x.Goods_no).Contains(x.MaterielCode)).ToList();
+                List<Dt_InventoryInfo> inventoryInfos = _inventoryInfoService.Repository.QueryData(x => cabinOrder.Details.Select(x => x.Goods_no).Contains(x.MaterielCode) && x.WarehouseCode == supplyTask.WarehouseCode && x.StockStatus == StockStatusEmun.鐩樼偣閿佸畾.ObjToInt()).ToList();
                 Dt_InventoryInfo? inventoryInfo = new();
                 List<Dt_InventoryInfo> inventoryInfosDel = new List<Dt_InventoryInfo>();
                 if (supplyTask.WarehouseCode != WarehouseEnum.绔嬪簱.ObjToInt().ToString("000"))
@@ -263,7 +272,7 @@
                     inventoryInfo = inventoryInfos.FirstOrDefault(x => x.BatchNo == cabinOrderDetail.Batch_num && x.MaterielCode == cabinOrderDetail.Goods_no);
                 }
                 if (inventoryInfo == null) return WebResponseContent.Instance.Error($"鏈壘鍒扮珛搴撶殑搴撳瓨淇℃伅");
-                inventoryInfo.SupplyQuantity = supplyTask.SupplyQuantity - inventoryInfo.StockQuantity;
+                inventoryInfo.SupplyQuantity = supplyTask.SupplyQuantity - inventoryInfo.StockQuantity;//鐩樼偣宸紓鏁�
                 #endregion
 
                 List<Dt_SupplyTask> supplyTasks = _supplyTaskService.Repository.QueryData(x => x.OrderNo == supplyTask.OrderNo && x.TaskStatus == SupplyStatusEnum.NewCheck.ObjToInt() && x.TaskId != supplyTask.TaskId).ToList();//鏌ユ壘褰撳墠鐩樼偣鍗曠殑鐩樼偣浠诲姟
@@ -275,7 +284,7 @@
                     #region 澶勭悊褰撳墠鐗╂枡鎵规鐨勫簱瀛樺拰鎵规淇℃伅
                     Dt_Inventory_Batch inventory_Batch = inventory_Batchs.First(x => x.BatchNo == inventoryInfo.BatchNo && x.MaterielCode == inventoryInfo.MaterielCode);
                     var SupplyQuantitys = inventoryInfos.Where(x => x.BatchNo == inventoryInfo.BatchNo && x.MaterielCode == inventoryInfo.MaterielCode).Sum(x => x.SupplyQuantity);
-                    if (SupplyQuantitys == 0)
+                    if (SupplyQuantitys == 0)//涓嶅瓨鍦ㄧ洏鐐瑰樊寮�
                     {
                         foreach (var item in inventoryInfos.Where(x => x.BatchNo == inventoryInfo.BatchNo && x.MaterielCode == inventoryInfo.MaterielCode))
                         {

--
Gitblit v1.9.3