From b790305873e20a7f26d63c71623210964105014e Mon Sep 17 00:00:00 2001
From: yanjinhui <3306209981@qq.com>
Date: 星期三, 12 十一月 2025 18:45:08 +0800
Subject: [PATCH] 优化

---
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderServices.cs |  377 ++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 356 insertions(+), 21 deletions(-)

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 278a7b4..e9578a4 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"
@@ -9,6 +9,7 @@
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using System.Transactions;
 using WIDESEA_Common;
 using WIDESEA_Common.LocationEnum;
 using WIDESEA_Common.OrderEnum;
@@ -502,6 +503,338 @@
         #endregion
 
         #region 鍒涘缓鐩樼泩鍏ュ簱鍗�
+        //public WebResponseContent CreateCheckInOrder(UpstreamOrderInfo 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));
+        //            List<Dt_InventoryInfo> _InventoryInfos = _inventoryInfoService.Repository.QueryData(x => codes.Contains(x.MaterielCode));
+        //            #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();
+        //                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)
+        //                {
+        //                    #region 娣诲姞鐩樼泩鍏ュ簱浠诲姟
+        //                    if (inventoryInfo.SupplyQuantity != 0)
+        //                    {
+        //                        Dt_SupplyTask_Hty supplyTask_Hty = new Dt_SupplyTask_Hty()
+        //                        {
+        //                            WarehouseCode = inventoryInfo.WarehouseCode,
+        //                            OperateType = OperateTypeEnum.鑷姩瀹屾垚.ToString(),
+        //                            InsertTime = DateTime.Now,
+        //                            TaskStatus = SupplyStatusEnum.InFinish.ObjToInt(),
+        //                            BatchNo = inventoryInfo.BatchNo,
+        //                            MaterielName = inventoryInfo.MaterielName,
+        //                            MaterielCode = inventoryInfo.MaterielCode,
+        //                            MaterielSpec = inventoryInfo.MaterielSpec,
+        //                            TaskType = TaskTypeEnum.ChenckIn.ObjToInt(),
+        //                            CreateDate = DateTime.Now,
+        //                            Creater = App.User.UserName,
+        //                            LocationCode = inventoryInfo.LocationCode,
+        //                            OrderNo = order.order_no,
+        //                            StockQuantity = 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();
+        //                }
+        //                infosUp.AddRange(inventoryInfos);
+        //                inventory_Batch.StockQuantity += inventory_Batch.SupplyQuantity;
+        //                inventory_Batch.AvailableQuantity = inventory_Batch.StockQuantity;
+        //                inventory_Batch.SupplyQuantity = 0;
+        //                batchesUp.Add(inventory_Batch);
+        //                //_inventoryInfoService.UpdateData(inventoryInfos);
+        //                //_inventory_BatchServices.UpdateData(inventory_Batch);
+        //            }
+        //            #endregion
+        //            #region 鍒涘缓鐩樼偣鍗�
+        //            var entityOrder = new Dt_CabinOrder
+        //            {
+        //                Order_no = order.order_no,
+        //                Order_type = order.order_type,
+        //                Supplier_no = order.supplier_no,
+        //                Account_tiem = order.account_time,
+        //                OdrderStatus = "宸插畬鎴�",
+        //                Supplier_name = order.supplier_name,
+        //                Warehouse_no = order.warehouse_no,
+        //                Details = order.details.Select(d => new Dt_CabinOrderDetail
+        //                {
+        //                    Goods_no = d.goods_no,
+        //                    Order_qty = Math.Abs(d.order_qty),
+        //                    Order_Inqty = Math.Abs(d.order_qty),
+        //                    Batch_num = d.batch_num,
+        //                    Exp_date = d.exp_date,
+        //                    Reservoirarea = order.warehouse_no,
+        //                    OrderDetailStatus = "宸插畬鎴�",
+        //                    Status = 2,
+        //                }).ToList()
+        //            };
+        //            _unitOfWorkManage.BeginTran();
+        //            if (supplyTask_Hties.Count > 0) _supplyTaskHtyService.AddData(supplyTask_Hties);
+        //            if (infosUp.Count > 0) _inventoryInfoService.UpdateData(infosUp);
+        //            if (batchesUp.Count > 0) _inventory_BatchServices.UpdateData(batchesUp);
+        //            BaseDal.Db.InsertNav(entityOrder).Include(it => it.Details).ExecuteCommand();
+        //            _unitOfWorkManage.CommitTran();
+        //            //Repository.AddData(entityOrder);
+        //            #endregion
+        //        }
+        //        #endregion
+        //        else
+        //        {
+        //            List<Dt_CabinOrder> cabinOrdersAdd = new List<Dt_CabinOrder>();
+        //            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)).ToList();
+        //            List<Dt_InventoryInfo> _InventoryInfos = _inventoryInfoService.Repository.QueryData(x => codes.Contains(x.MaterielCode)).ToList();
+        //            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.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();
+        //                //鑾峰彇绔嬪簱鐩樼偣宸紓鏁�
+        //                var inventoryLK = inventoryInfos.Where(x => x.WarehouseCode == WareCodeLK).FirstOrDefault(); //淇敼杩欓噷鏈夊彲鑳藉彧鏈夊ぇ浠跺簱鎵嶄細瀛樺湪宸紓
+        //                //var LkQty = Math.Abs(inventoryLK.SupplyQuantity);
+        //                var LkQty = inventoryLK?.SupplyQuantity ?? 0;
+
+        //                //鑾峰彇澶т欢搴撶洏鐐瑰樊寮傛暟
+        //                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 == 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.InFinish.ObjToInt(),
+        //                                BatchNo = inventoryInfo.BatchNo,
+        //                                MaterielName = inventoryInfo.MaterielName,
+        //                                MaterielCode = inventoryInfo.MaterielCode,
+        //                                MaterielSpec = inventoryInfo.MaterielSpec,
+        //                                TaskType = TaskTypeEnum.ChenckIn.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);
+        //                    inventory_Batch.StockQuantity += inventory_Batch.SupplyQuantity;
+        //                    inventory_Batch.AvailableQuantity = inventory_Batch.StockQuantity;
+        //                    inventory_Batch.SupplyQuantity = 0;
+        //                    //_inventory_BatchServices.UpdateData(inventory_Batch);
+        //                    batchesUp.Add(inventory_Batch);
+        //                    #endregion
+
+        //                    #region 鍒涘缓澶т欢搴撶洏鐐瑰崟
+        //                    var entityOrder = new Dt_CabinOrder
+        //                    {
+        //                        Order_no = order.order_no,
+        //                        Order_type = order.order_type,
+        //                        Supplier_no = order.supplier_no,
+        //                        Account_tiem = order.account_time,
+        //                        OdrderStatus = "宸插畬鎴�",
+        //                        Supplier_name = order.supplier_name,
+        //                        Warehouse_no = WareCodeDJ,
+        //                        Details = order.details.Select(d => new Dt_CabinOrderDetail
+        //                        {
+        //                            Goods_no = d.goods_no,
+        //                            Order_qty = Math.Abs(d.order_qty),
+        //                            Order_Inqty = Math.Abs(d.order_qty),
+        //                            Batch_num = d.batch_num,
+        //                            Exp_date = d.exp_date,
+        //                            Reservoirarea = WareCodeDJ,
+        //                            OrderDetailStatus = "宸插畬鎴�",
+        //                            Status = 2,
+        //                        }).ToList()
+        //                    };
+        //                    //Repository.AddData(entityOrder);
+        //                    //Db.InsertNav(entityOrder).Include(it => it.Details).ExecuteCommand();
+        //                    cabinOrdersAdd.Add(entityOrder);
+        //                    #endregion
+        //                }
+        //                else // LkQty != 0 琛ㄧず绔嬪簱鏈夊樊寮�
+        //                {
+        //                    #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.InFinish.ObjToInt(),
+        //                                BatchNo = inventoryInfo.BatchNo,
+        //                                MaterielName = inventoryInfo.MaterielName,
+        //                                MaterielCode = inventoryInfo.MaterielCode,
+        //                                MaterielSpec = inventoryInfo.MaterielSpec,
+        //                                TaskType = TaskTypeEnum.ChenckIn.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_CabinOrder
+        //                        {
+        //                            Order_no = order.order_no,
+        //                            Order_type = order.order_type,
+        //                            Supplier_no = order.supplier_no,
+        //                            Account_tiem = order.account_time,
+        //                            OdrderStatus = "宸插畬鎴�",
+        //                            Supplier_name = order.supplier_name,
+        //                            Warehouse_no = WareCodeDJ,
+        //                            Details = order.details.Select(d => new Dt_CabinOrderDetail
+        //                            {
+        //                                Goods_no = d.goods_no,
+        //                                Order_qty = DJQty,
+        //                                Order_Inqty = DJQty,
+        //                                Batch_num = d.batch_num,
+        //                                Exp_date = d.exp_date,
+        //                                Reservoirarea = WareCodeDJ,
+        //                                OrderDetailStatus = "宸插畬鎴�",
+        //                                Status = 2,
+        //                            }).ToList()
+        //                        };
+        //                        //Repository.AddData(cabinOrder);
+        //                        //Db.InsertNav(cabinOrder).Include(it => it.Details).ExecuteCommand();
+        //                        cabinOrdersAdd.Add(cabinOrder);
+        //                    }
+        //                    #endregion
+
+        //                    #region 鍒涘缓绔嬪簱鐩樼偣鍗�
+        //                    var entityOrder = new Dt_CabinOrder
+        //                    {
+        //                        Order_no = order.order_no,
+        //                        Order_type = order.order_type,
+        //                        Supplier_no = order.supplier_no,
+        //                        Account_tiem = order.account_time,
+        //                        OdrderStatus = "鏂板缓",
+        //                        Supplier_name = order.supplier_name,
+        //                        Warehouse_no = WareCodeLK,
+        //                        Details = order.details.Select(d => new Dt_CabinOrderDetail
+        //                        {
+        //                            Goods_no = d.goods_no,
+        //                            Order_qty = Math.Abs(LkQty),
+        //                            Batch_num = d.batch_num,
+        //                            Exp_date = d.exp_date,
+        //                            Reservoirarea = WareCodeLK,
+        //                            OrderDetailStatus = "鏂板缓",
+        //                            Status = 0,
+        //                        }).ToList()
+        //                    };
+        //                    //Repository.AddData(entityOrder);
+        //                    //Db.InsertNav(entityOrder).Include(it => it.Details).ExecuteCommand();
+        //                    cabinOrdersAdd.Add(entityOrder);
+        //                    #endregion
+        //                }
+        //            }
+
+        //            _unitOfWorkManage.BeginTran();
+        //            if (supplyTask_Hties.Count > 1) _supplyTaskHtyService.AddData(supplyTask_Hties);
+
+        //            if (infosUp.Count > 0) _inventoryInfoService.UpdateData(infosUp);
+        //            if (batchesUp.Count > 0) _inventory_BatchServices.UpdateData(batchesUp);
+        //            if (cabinOrdersAdd.Count > 0) BaseDal.Db.InsertNav(cabinOrdersAdd).Include(it => it.Details).ExecuteCommand();
+        //            _unitOfWorkManage.CommitTran();
+        //            // 娣诲姞浜嬪姟鎻愪氦鍚庣殑妫�鏌�
+        //            Console.WriteLine($"浜嬪姟鎻愪氦瀹屾垚锛屽噯澶囪繑鍥炪�俢abinOrdersAdd鏁伴噺: {cabinOrdersAdd.Count}");
+        //        }
+        //    }
+        //    catch (Exception ex)
+        //    {
+        //        _unitOfWorkManage.RollbackTran();
+        //        //_messageInfoService.AddMessageInfo(MessageGroupByEnum.InOrderAlarm, "鍒涘缓鐩樼泩鍏ュ簱鍗�", ex.Message);
+        //        //return content.Error(ex.Message);
+        //        throw ex;
+        //    }
+        //    //return content;
+        //    return content.OK($"鐩樼泩鍏ュ簱鍗� {order.order_no} 鍒涘缓鎴愬姛");
+        //}
+        #endregion
+        #region 鍒涘缓鐩樼泩鍏ュ簱鍗�(淇敼鍘熺増鍥犱负鍓嶉潰璁㈠崟鍒涘缓澶辫触瀵艰嚧鍚庨潰涔熷垱寤轰笉浜嗛棶棰�)
         public WebResponseContent CreateCheckInOrder(UpstreamOrderInfo order)
         {
             WebResponseContent content = new WebResponseContent();
@@ -573,7 +906,6 @@
                         //_inventory_BatchServices.UpdateData(inventory_Batch);
                     }
                     #endregion
-
                     #region 鍒涘缓鐩樼偣鍗�
                     var entityOrder = new Dt_CabinOrder
                     {
@@ -596,13 +928,14 @@
                             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();
-                    //Repository.AddData(entityOrder);
+                    using (var scop = new TransactionScope(TransactionScopeOption.RequiresNew))
+                    {
+                        if (supplyTask_Hties.Count > 0) _supplyTaskHtyService.AddData(supplyTask_Hties);
+                        if (infosUp.Count > 0) _inventoryInfoService.UpdateData(infosUp);
+                        if (batchesUp.Count > 0) _inventory_BatchServices.UpdateData(batchesUp);
+                        BaseDal.Db.InsertNav(entityOrder).Include(it => it.Details).ExecuteCommand();
+                        scop.Complete();
+                    }
                     #endregion
                 }
                 #endregion
@@ -627,9 +960,9 @@
                         //鎵炬墍鏈夊簱瀛�
                         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 inventoryLK = inventoryInfos.Where(x => x.WarehouseCode == WareCodeLK).FirstOrDefault(); //淇敼杩欓噷鏈夊彲鑳藉彧鏈夊ぇ浠跺簱鎵嶄細瀛樺湪宸紓
                         //var LkQty = Math.Abs(inventoryLK.SupplyQuantity);
-                        var LkQty = inventoryLK.SupplyQuantity;
+                        var LkQty = inventoryLK?.SupplyQuantity ?? 0;
 
                         //鑾峰彇澶т欢搴撶洏鐐瑰樊寮傛暟
                         var inventoryDJ = inventoryInfos.Where(x => x.WarehouseCode == WareCodeDJ).ToList();
@@ -797,7 +1130,7 @@
                                 Details = order.details.Select(d => new Dt_CabinOrderDetail
                                 {
                                     Goods_no = d.goods_no,
-                                    Order_qty =Math.Abs( LkQty),
+                                    Order_qty = Math.Abs(LkQty),
                                     Batch_num = d.batch_num,
                                     Exp_date = d.exp_date,
                                     Reservoirarea = WareCodeLK,
@@ -811,25 +1144,27 @@
                             #endregion
                         }
                     }
-                    _unitOfWorkManage.BeginTran();
-                    _supplyTaskHtyService.AddData(supplyTask_Hties);
-                    _inventoryInfoService.UpdateData(infosUp);
-                    _inventory_BatchServices.UpdateData(batchesUp);
-                    BaseDal.Db.InsertNav(cabinOrdersAdd).Include(it => it.Details).ExecuteCommand();
-                    _unitOfWorkManage.CommitTran();
+                    using (var scop = new TransactionScope(TransactionScopeOption.RequiresNew))
+                    {
+                        if (supplyTask_Hties.Count > 0) _supplyTaskHtyService.AddData(supplyTask_Hties);
+                        if (infosUp.Count > 0) _inventoryInfoService.UpdateData(infosUp);
+                        if (batchesUp.Count > 0) _inventory_BatchServices.UpdateData(batchesUp);
+                        if (cabinOrdersAdd.Count > 0) BaseDal.Db.InsertNav(cabinOrdersAdd).Include(it => it.Details).ExecuteCommand();
+                        scop.Complete();
+                    }
                 }
             }
             catch (Exception ex)
             {
-                _unitOfWorkManage.RollbackTran();
-                //_messageInfoService.AddMessageInfo(MessageGroupByEnum.InOrderAlarm, "鍒涘缓鐩樼泩鍏ュ簱鍗�", ex.Message);
-                content.Error(ex.Message);
+                throw ex;
             }
-            return content;
+            //return content;
+            return content.OK($"鐩樼泩鍏ュ簱鍗曞垱寤烘垚鍔�");
         }
         #endregion
 
 
+
         /// <summary>
         /// 浜哄伐鍏ュ簱瀹屾垚
         /// </summary>

--
Gitblit v1.9.3