From 465a67a2e9e68c5395871338ae8223efaddc1fdc Mon Sep 17 00:00:00 2001
From: yanjinhui <3306209981@qq.com>
Date: 星期四, 13 十一月 2025 14:18:50 +0800
Subject: [PATCH] 优化下发wcs出入库单

---
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/Business.cs |  892 +++++++++++++++++++++++-----------------------------------
 1 files changed, 357 insertions(+), 535 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 fec8bd0..ff5dc1a 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"
@@ -16,518 +16,383 @@
 using WIDESEA_Common;
 using System.Xml.Linq;
 using WIDESEA_Common.OrderEnum;
+using static WIDESEA_DTO.SquareCabin.AlarmDto;
+using OfficeOpenXml.Style;
+using System.Security.Policy;
+using SqlSugar;
 
-namespace WIDESEA_WMSServer
+namespace WIDESEA_SquareCabinServices
 {
-    public class Business : IBusiness
+    public partial class Business : IBusiness
     {
         private readonly ICabinOrderServices _cabinOrderServices;
         private readonly ICabinOrderDetailServices _cabinDetailServices;
         private readonly IDeliveryOrderServices _deliveryOrderServices;
         private readonly IDeliveryOrderDetailServices _deliveryOrderDetailServices;
+        private readonly IMaterielInfoService _materielInfoService;
         private readonly IMessageInfoService _messageInfoService;
         private readonly IUnitOfWorkManage _unitOfWorkManage;
-        public Business(IDeliveryOrderServices deliveryOrderServices, IUnitOfWorkManage unitOfWorkManage, IDeliveryOrderDetailServices deliveryOrderDetailServices, ICabinOrderServices cabinOrderServices, ICabinOrderDetailServices cabinDetailServices, IMessageInfoService messageInfoService)
+        public Business(IDeliveryOrderServices deliveryOrderServices, IUnitOfWorkManage unitOfWorkManage, IDeliveryOrderDetailServices deliveryOrderDetailServices, ICabinOrderServices cabinOrderServices, ICabinOrderDetailServices cabinDetailServices, IMaterielInfoService materielInfoService, IMessageInfoService messageInfoService)
         {
             _deliveryOrderServices = deliveryOrderServices;
             _unitOfWorkManage = unitOfWorkManage;
             _deliveryOrderDetailServices = deliveryOrderDetailServices;
             _cabinOrderServices = cabinOrderServices;
             _cabinDetailServices = cabinDetailServices;
+            _materielInfoService = materielInfoService;
             _messageInfoService = messageInfoService;
         }
-        #region 鑾峰彇ERP鍏ュ簱鍗�
-        static string SearchInDate = "2025-09-10 00:00:00";
-        /// <summary>
-        /// 鑾峰彇涓婃父绯荤粺鐨勫叆搴撳崟
-        /// </summary>
-        /// <param name="SearchInDate"></param>
-        /// <returns></returns>
-        public WebResponseContent GetUpstreamOrder()
-        {
-            var responseContent = new WebResponseContent();
-            try
-            {
-                // 璇锋眰鍦板潃
-                var url = "http://121.37.118.63:80/GYZ2/95fck/inOrder";
-                //var url = "http://127.0.0.1:4523/m2/5660322-5340849-default/363009261";
 
-                if (string.IsNullOrEmpty(SearchInDate)) SearchInDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
-                //// 璇锋眰鍙傛暟
-                var requestData = new
-                {
-                    searchDate = SearchInDate
-                    //searchDate = "2022-10-10 20:45:16"  // 姝g‘鐨勬牸寮�
-                };
-                SearchInDate = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd HH:mm:ss");
-                // 鍙戣捣璇锋眰
-                var result = HttpHelper.Post(url, requestData.ToJsonString());
-
-                // 鍙嶅簭鍒楀寲
-                var response = JsonConvert.DeserializeObject<UpstreamResponse<UpstreamOrderInfo>>(result);
-
-                if (response == null || response.resultCode != "0" || requestData == null)
-                {
-                    // 璋冪敤寮傚父鎺ュ彛
-                    //SendErrorToUpstream(1, "", response.resultMsg ?? "涓婃父鎺ュ彛杩斿洖澶辫触", "");
-                    return responseContent.Error(response.resultMsg ?? "涓婃父鎺ュ彛杩斿洖澶辫触");
-                }
-
-                if (response.data == null || !response.data.Any())
-                {
-                    return responseContent.OK("鏃犳柊鍏ュ簱鍗曟暟鎹�");
-                }
-                var ordernos = response.data.Select(x => x.order_no).ToList();
-                // 鑾峰彇鎵�鏈夊凡瀛樺湪鐨勫叆搴撳崟鍙�
-                var existingOrderNos = _cabinOrderServices.Db.Queryable<Dt_CabinOrder>()
-                    .Where(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)
-                {
-                    return responseContent.OK("鎵�鏈夊叆搴撳崟宸插瓨鍦紝鏃犻渶鏂板");
-                }
-
-                //瀛樺偍鍏ュ簱鍗曞彿
-                List<string> orderNos = new List<string>();
-                string name = string.Empty;
-                MessageGroupByEnum messageGroupBy = MessageGroupByEnum.InOrderAlarm;
-                MessageStatusEnum messageStatus = MessageStatusEnum.Emergency;
-                foreach (var order in newOrders)
-                {
-                    try
-                    {
-                        _unitOfWorkManage.BeginTran();
-                        if (order.order_type == "1") //姝e父鍏ュ簱
-                        {
-                            name = "鍒涘缓姝e父鍏ュ簱鍗�";
-                            responseContent = _cabinOrderServices.CreateInboundOrder(order);
-                            if (!responseContent.Status) throw new Exception(responseContent.Message);
-                            List<Dt_CabinOrder>? dt_CabinOrders = responseContent.Data as List<Dt_CabinOrder>;
-                            if (dt_CabinOrders != null)
-                                _cabinOrderServices.Db.InsertNav(dt_CabinOrders).Include(x => x.Details).ExecuteCommand();
-                        }
-                        else if (order.order_type == "3")//鍏ュ簱閫�鏂�
-                        {
-                            messageGroupBy = MessageGroupByEnum.OutOrderAlarm;
-                            name = "鍒涘缓鍏ュ簱閫�璐у崟";
-                            //鍒涘缓鍑哄簱鍗�
-                            #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);
-                            }
-                            var content = _deliveryOrderServices.CreateOutboundOrder(upstramOutOrderInfo);
-                            if (!content.Status) throw new Exception(content.Message);
-                            #endregion
-                        }
-                        else if (order.order_type == "5")//鎶ユ孩鍏ュ簱
-                        {
-                            name = "鍒涘缓鐩樼泩鍏ュ簱鍗�";
-                            messageStatus = MessageStatusEnum.Undisposed;
-                            var content = _cabinOrderServices.CreateCheckInOrder(order);
-                            if (!content.Status) throw new Exception(content.Message);
-                        }
-                        _unitOfWorkManage.CommitTran();
-                    }
-                    catch (Exception ex)
-                    {
-                        _unitOfWorkManage.RollbackTran();
-                        _messageInfoService.AddMessageInfo(messageGroupBy, name, ex.Message, messageStatus);
-                        //SendErrorToUpstream(1, "", ex.Message, "");
-                        //return responseContent.Error("鍚屾澶辫触: " + ex.Message);
-                    }
-                };
-                return responseContent.OK("鍚屾鍏ュ簱鍗曟垚鍔�");
-
-            }
-            catch (Exception ex)
-            {
-                // 鍏ㄥ眬寮傚父鏃讹紝涔熸帹閫佸紓甯哥粰涓婃父
-                //SendErrorToUpstream(1, "", ex.Message, "");
-                return responseContent.Error("鍚屾澶辫触: " + ex.Message);
-            }
-        }
+        #region 涓嬪彂绔嬪簱鍏ュ簱鍗�
+        //public WebResponseContent EdiIn()
+        //{
+        //    try
+        //    {
+        //        var reslut = WarehouseEnum.绔嬪簱.ObjToInt().ToString("000");
+        //        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)).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();
+        //            foreach (var item in order.Details)
+        //            {
+        //                item.MedicineGoods = materielInfos.Where(x => x.MaterielCode == item.Goods_no).First();
+        //            }
+        //            #region 涓嬪彂WCS
+        //            string materialCode = order.Details.FirstOrDefault()?.MedicineGoods?.MaterielErpType ?? "YY";
+        //            var ediDto = new ToediInInfo
+        //            {
+        //                //瀹㈡埛浠g爜
+        //                customerCode = "905",
+        //                //鐗╂枡绫诲瀷
+        //                materialCode = materialCode,
+        //                //鍏ュ簱鍗曞彿
+        //                externalOrderNo = order.Order_no,
+        //                //鍏ュ簱鍗曠被鍨�
+        //                inOrderType = order.Order_type == "5" ? "20" : "10",
+        //                //浼樺厛绾�
+        //                priority = 0,
+        //                //鏄惁鍙栨秷
+        //                Is_cancel = 0,
+        //                details = order.Details.Select(d => new ToediInDetail
+        //                {
+        //                    //鎵瑰彿
+        //                    batchNo = d.Batch_num,
+        //                    //浜у搧
+        //                    productCode = d.Goods_no,
+        //                    //sku鍚嶇О
+        //                    productName = d.MedicineGoods.MaterielName,
+        //                    //sku瑙勬牸
+        //                    productSpecifications = d.MedicineGoods.MaterielSpec,
+        //                    //鏁伴噺
+        //                    quantity = (int)d.Order_qty,
+        //                    //鏁堟湡
+        //                    validityPeriod = d.Exp_date,
+        //                    //鐢熶骇鍘傚
+        //                    manufacturer = d.MedicineGoods.Factory,
+        //                    //鎴垮彿
+        //                    libraryNo = order.Warehouse_no,
+        //                }).ToList()
+        //            };
+        //            var result = HttpHelper.Post(url, ediDto.ToJsonString());
+        //            var resp = JsonConvert.DeserializeObject<TowcsResponse<object>>(result);
+        //            if (resp != null && resp.code == "0")
+        //            {
+        //                order.OdrderStatus = "寮�濮�";
+        //                foreach (var item in cabinOrderDetails.Where(x => x.OrderId == order.Id))
+        //                {
+        //                    item.Status = 1;
+        //                    item.OrderDetailStatus = "寮�濮�";
+        //                }
+        //            }
+        //            #endregion
+        //        }
+        //        _cabinOrderServices.UpdateData(orders);
+        //        _cabinDetailServices.UpdateData(cabinOrderDetails);
+        //        return WebResponseContent.Instance.OK();
+        //    }
+        //    catch (Exception ex)
+        //    {
+        //        Console.WriteLine("涓嬪彂WCS鍏ュ簱鍗曞紓甯革細" + ex.Message);
+        //        return WebResponseContent.Instance.Error(ex.Message);
+        //    }
+        //}
         #endregion
 
-        #region 鑾峰彇ERP鍑哄簱鍗�
-        static string SearchOutDate = "2025-09-10 00:00:00";
-        public WebResponseContent GetUpstreamOutOrder()
-        {
-            var responseContent = new WebResponseContent();
-            try
-            {
-                var url = "http://121.37.118.63:80/GYZ2/95fck/outOrder";
-                //var url = "http://127.0.0.1:4523/m1/5660322-5340849-default/GYZ2/95fck/outOrder";
-                if (string.IsNullOrEmpty(SearchOutDate)) SearchOutDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
-                //// 璇锋眰鍙傛暟
-                var requestData = new
-                {
-                    searchDate = SearchOutDate
-                    //searchDate = "2022-10-10 20:45:16"  // 姝g‘鐨勬牸寮�
-                };
-                SearchOutDate = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd HH:mm:ss");
-
-                var result = HttpHelper.Post(url, requestData.ToJsonString());
-                var response = JsonConvert.DeserializeObject<UpstreamResponse<UpstramOutOrderInfo>>(result);
-
-                if (response.resultCode != "0")
-                {
-                    //SendErrorToUpstream(3, "", response.resultMsg ?? "涓婃父鎺ュ彛杩斿洖澶辫触", "");
-                    return responseContent.Error(response.resultMsg ?? "涓婃父鎺ュ彛杩斿洖澶辫触");
-                }
-
-                if (response.data == null || !response.data.Any())
-                {
-                    return responseContent.OK("鏃犳柊鍑哄簱鍗曟暟鎹�");
-                }
-                var ordernos = response.data.Select(x => x.order_no).ToList();
-                // 宸插瓨鍦ㄥ嚭搴撳崟鍙�
-                var existingOutOrderNos = _deliveryOrderServices.Db.Queryable<Dt_DeliveryOrder>()
-                    .Where(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();
-
-                List<string> order_no = newOutOrders.Select(x => x.order_no).ToList();
-
-                if (newOutOrders.Count < 1)
-                {
-                    return responseContent.OK("鎵�鏈夊嚭搴撳崟宸插瓨鍦紝鏃犻渶鏂板");
-                }
-
-                List<Dt_DeliveryOrder> _DeliveryOrders = new List<Dt_DeliveryOrder>();
-                List<string> orderNos = new List<string>();
-                string name = string.Empty;
-                MessageGroupByEnum messageGroupBy = MessageGroupByEnum.OutOrderAlarm;
-                MessageStatusEnum messageStatus = MessageStatusEnum.Emergency;
-                foreach (var outorder in newOutOrders)
-                {
-                    try
-                    {
-                        _unitOfWorkManage.BeginTran();
-                        if (outorder.order_type == "1") // 姝e父鍑哄簱鍗�
-                        {
-                            name = "鍒涘缓姝e父鍑哄簱鍗�";
-                            var content = _deliveryOrderServices.CreateOutboundOrder(outorder);
-                            if (!content.Status) throw new Exception(content.Message);
-                        }
-                        else if (outorder.order_type == "2")//鍑哄簱閫�璐�
-                        {
-                            name = "鍒涘缓鍑哄簱閫�璐у崟";
-                            messageGroupBy = MessageGroupByEnum.InOrderAlarm;
-                            // 鍒涘缓鍑哄簱閫�璐у崟 - 杩欓噷闇�瑕佹牴鎹笟鍔¢�昏緫瀹炵幇
-                            // 鏆傛椂璺宠繃鎴栧疄鐜伴��璐ч�昏緫
-                            //continue;
-                            #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);
-                            }
-                            responseContent = _cabinOrderServices.CreateInboundOrder(order);
-                            if (!responseContent.Status) throw new Exception(responseContent.Message);
-                            List<Dt_CabinOrder>? dt_CabinOrders = responseContent.Data as List<Dt_CabinOrder>;
-                            if (dt_CabinOrders != null && dt_CabinOrders.Count > 0)
-                                _cabinOrderServices.Db.InsertNav(dt_CabinOrders).Include(x => x.Details).ExecuteCommand();
-                            #endregion
-                        }
-                        else if (outorder.order_type == "6")//鎶ユ崯鍑哄簱
-                        {
-                            name = "鍒涘缓鐩樻崯鍑哄簱鍗�";
-                            messageStatus = MessageStatusEnum.Undisposed;
-                            var content = _deliveryOrderServices.CreateCheckOutOrder(outorder);
-                            if (!content.Status) throw new Exception(content.Message);
-                        }
-                        _unitOfWorkManage.CommitTran();
-                    }
-                    catch (Exception ex)
-                    {
-                        _unitOfWorkManage.RollbackTran();
-                        _messageInfoService.AddMessageInfo(messageGroupBy, name, ex.Message, messageStatus);
-                        //SendErrorToUpstream(3, "", ex.Message, "");
-                        //return responseContent.Error("鍚屾澶辫触: " + ex.Message);
-                    }
-                }
-                return responseContent.OK($"鍚屾鍑哄簱鍗曟垚鍔燂紝鍏眥_DeliveryOrders.Count}鏉�");
-            }
-            catch (Exception ex)
-            {
-                //SendErrorToUpstream(3, "", ex.Message, "");
-                return responseContent.Error("鍚屾澶辫触: " + ex.Message);
-            }
-        }
+        #region 涓嬪彂绔嬪簱鍑哄簱鍗�
+        //public WebResponseContent EdiOut()
+        //{
+        //    try
+        //    {
+        //        var reslut = WarehouseEnum.绔嬪簱.ObjToInt().ToString("000");
+        //        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)).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();
+        //            foreach (var item in order.Details)
+        //            {
+        //                item.MedicineGoods = materielInfos.Where(x => x.MaterielCode == item.Goods_no).First();
+        //            }
+        //            #region 涓嬪彂WCS
+        //            string materialCode = order.Details.FirstOrDefault()?.MedicineGoods?.MaterielErpType ?? "YY";
+        //            var ediDto = new ToediOutInfo
+        //            {
+        //                //瀹㈡埛浠g爜
+        //                customerCode = "905",
+        //                //鐗╂枡绫诲瀷
+        //                materialCode = materialCode,
+        //                externalOrderNo = order.Out_no,
+        //                outOrderType = order.Out_type,
+        //                priority = 1,
+        //                Is_cancel = 0,
+        //                details = order.Details.Select(d => new ToeOutdiInDetail
+        //                {
+        //                    batchNo = d.Batch_num,
+        //                    productCode = d.Goods_no,
+        //                    productName = d.MedicineGoods.MaterielName,
+        //                    productSpecifications = d.MedicineGoods.MaterielModel,
+        //                    quantity = (int)d.Order_qty,
+        //                }).ToList()
+        //            };
+        //            switch (order.Out_type)
+        //            {
+        //                case "1"://姝e父鍑哄簱
+        //                case "3"://鍏ュ簱閫�璐�
+        //                    ediDto.outOrderType = "10";//涓�鑸氦鏄撳嚭搴撳崟
+        //                    break;
+        //                case "6"://鐩樹簭鍑哄簱
+        //                    ediDto.outOrderType = "30";//鐩樹簭鍑哄簱鍗�
+        //                    break;
+        //            }
+        //            var result = HttpHelper.Post(url, ediDto.ToJsonString());
+        //            var resp = JsonConvert.DeserializeObject<TowcsResponse<object>>(result);
+        //            if (resp != null && resp.code == "0")
+        //            {
+        //                order.OutStatus = "寮�濮�";
+        //                foreach (var item in deliveryOrderDetails.Where(x => x.DeliveryOrderId == order.Id))
+        //                {
+        //                    item.Status = 1;
+        //                    item.OotDetailStatus = "寮�濮�";
+        //                }
+        //            }
+        //            #endregion
+        //        }
+        //        _deliveryOrderServices.UpdateData(orders);
+        //        _deliveryOrderDetailServices.UpdateData(deliveryOrderDetails);
+        //        return WebResponseContent.Instance.OK();
+        //    }
+        //    catch (Exception ex)
+        //    {
+        //        Console.WriteLine("涓嬪彂WCS鍑哄簱鍗曞紓甯革細" + ex.Message);
+        //        return WebResponseContent.Instance.Error(ex.Message);
+        //    }
+        //}
         #endregion
 
+
+
+
+
+        // 浣跨敤 SqlSugar 鐨� Ado.Connection 鎵嬪姩绠$悊
         #region 涓嬪彂绔嬪簱鍏ュ簱鍗�
         public WebResponseContent EdiIn()
         {
-            try
+            // 鍒涘缓鐙珛鐨� SqlSugarClient
+            using (var db = new SqlSugarClient(new ConnectionConfig
             {
-                //2.鏌ヨ绗﹀悎鏉′欢鐨勮鍗曪紙琛ㄥご = 鏂板缓 && 鍖呭惈鏈夋晥鏄庣粏锛�
-                //var orders = BaseDal.Db.Queryable<Dt_CabinOrder>()
-                //    .Where(o => o.OdrderStatus == "鏂板缓")
-                //    .Includes(o => o.Details, d => d.MedicineGoods)
-                //    .ToList();
-                //鏌ュ嚭鍖呭惈鍏ㄩ儴鐨勫叆搴撳崟锛屽寘鍚叏閮ㄦ槑缁�+涓�涓槑缁嗗搴斾竴涓晢鍝�
-                var reslut = WarehouseEnum.绔嬪簱.ObjToInt().ToString("000");
-                var orders = _cabinOrderServices.Db.CopyNew()
-                .Queryable<Dt_CabinOrder>()
-                .Where(o => o.OdrderStatus == "鏂板缓" && o.Warehouse_no == reslut)
-                .Includes(o => o.Details, d => d.MedicineGoods)
-                .ToList();
-                // 3. 鍐嶈繃婊ゆ帀涓嶇鍚堟潯浠剁殑鏄庣粏锛堝彧淇濈暀 Status=0锛�
-                foreach (var order in orders)
+                ConnectionString = "Data Source=.;Initial Catalog=WIDESEA_WMSDBF_Z22;User ID=sa;Password=48PYX_h7KS@f;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
+                DbType = DbType.SqlServer,
+                IsAutoCloseConnection = true,  // 鍏抽敭閰嶇疆锛岃嚜鍔ㄥ叧闂繛鎺�
+                MoreSettings = new ConnMoreSettings()
                 {
-                    Console.WriteLine($"璁㈠崟 {order.Order_no} 鍘熸槑缁嗘暟锛歿order.Details.Count}");
-                    order.Details = order.Details.Where(d => d.Status == 0).ToList();
-                    Console.WriteLine($"璁㈠崟 {order.Order_no} 杩囨护鍚庢槑缁嗘暟锛歿order.Details.Count}");
+                    IsAutoRemoveDataCache = true
                 }
-
-
-                if (orders == null || !orders.Any())
+            }))
+            {
+                try
                 {
-                    Console.WriteLine("娌℃湁绗﹀悎鏉′欢鐨勮鍗曢渶瑕佹帹閫�");
-                    return WebResponseContent.Instance.Error("娌℃湁绗﹀悎鏉′欢鐨勮鍗曢渶瑕佹帹閫�");
-                }
+                    var reslut = WarehouseEnum.绔嬪簱.ObjToInt().ToString("000");
 
-                // 4. 閬嶅巻璁㈠崟锛岀粍瑁� DTO 骞舵帹閫�
-                foreach (var order in orders)
-                {
-                    // 浠庣涓�涓湁 MedicineGoods 鐨勬槑缁嗕腑鍙栧嚭 MaterielErpType
-                    string materialCode = order.Details
-                        .Select(d => d.MedicineGoods?.MaterielErpType)
-                        .FirstOrDefault(x => !string.IsNullOrEmpty(x)) ?? "YY"; // 榛樿鍊糦Y
+                    // 浣跨敤鏂扮殑 db 瀹炰緥鎵ц鎵�鏈夋煡璇�
+                    var orders = db.Queryable<Dt_CabinOrder>()
+                        .Where(x => x.OdrderStatus == "鏂板缓" && x.Warehouse_no == reslut)
+                        .ToList();
 
-                    var ediDto = new ToediInInfo
+                    if (orders.Count < 1) return WebResponseContent.Instance.OK();
+                    string url = "http://172.16.1.2:9357/file-admin/api/in/ediIn";
+                    var orderIds = orders.Select(x => x.Id).ToList();
+
+
+                    var cabinOrderDetails = db.Queryable<Dt_CabinOrderDetail>()
+                        .Where(x => orderIds.Contains(x.OrderId))
+                        .ToList();
+
+
+                    var goodsCodes = cabinOrderDetails.Select(x => x.Goods_no).Distinct().ToList();
+
+                    var materielInfos = db.Queryable<Dt_MaterielInfo>()
+                        .Where(x => goodsCodes.Contains(x.MaterielCode))
+                        .ToList();
+
+
+                    foreach (var order in orders)
                     {
-
-                        //瀹㈡埛浠g爜
-                        customerCode = "905",
-                        //鐗╂枡绫诲瀷
-                        materialCode = materialCode,
-                        //鍏ュ簱鍗曞彿
-                        externalOrderNo = order.Order_no,
-                        //鍏ュ簱鍗曠被鍨�
-                        inOrderType = order.Order_type == "5" ? "20" : "10",
-                        //浼樺厛绾�
-                        priority = 0,
-                        //鏄惁鍙栨秷
-                        Is_cancel = 0,
-                        details = order.Details.Select(d => new ToediInDetail
+                        order.Details = cabinOrderDetails.Where(x => x.OrderId == order.Id).ToList();
+                        foreach (var item in order.Details) //鎵嬪姩鍒涘缓涓庣墿鏂欒〃鐨勮繛鎺�
                         {
-                            //鎵瑰彿
-                            batchNo = d.Batch_num,
-                            //浜у搧
-                            productCode = d.Goods_no,
-                            //sku鍚嶇О
-                            productName = d.MedicineGoods?.MaterielName,
-                            //sku瑙勬牸
-                            productSpecifications = d.MedicineGoods?.MaterielSpec,
-                            //鏁伴噺
-                            quantity = (int)d.Order_qty,
-                            //鏁堟湡
-                            validityPeriod = d.Exp_date,
-                            //鐢熶骇鍘傚
-                            manufacturer = d.MedicineGoods?.Factory,
-                            //鎴垮彿
-                            libraryNo = order.Warehouse_no,
-                        }).ToList()
-                    };
-
-                    var url = "http://172.16.1.2:9357/file-admin/api/in/ediIn";
-                    //var url = "http://127.0.0.1:4523/m2/5660322-5340849-default/363019549";
-                    var result = HttpHelper.Post(url, ediDto.ToJsonString());
-                    var resp = JsonConvert.DeserializeObject<TowcsResponse<object>>(result);
-
-                    if (resp != null && resp.code == "0")
-                    {
-                        // 鏇存柊琛ㄥご鐘舵��
-                        _cabinOrderServices.Db.Updateable<Dt_CabinOrder>()
-                           .SetColumns(o => new Dt_CabinOrder { OdrderStatus = "寮�濮�" })
-                           .Where(o => o.Id == order.Id)
-                           .ExecuteCommand();
-
-                        // 鏇存柊鏄庣粏鐘舵�佷负宸插悓姝�  //杩欓噷瑕佹槸灏嗘柊寤�--銆嬪紑濮嬬姸鎬�,鍦ㄥ悗绔帴鍙h繑鍥炴垜浠殑鏃跺�欏湪杩斿洖宸插畬鎴�
-                        _cabinDetailServices.Db.Updateable<Dt_CabinOrderDetail>()
-                          .SetColumns(d => new Dt_CabinOrderDetail { Status = 1, OrderDetailStatus = "寮�濮�" })
-                          .Where(d => d.OrderId == order.Id && d.Status == 0)
-                          .ExecuteCommand();
-
-                        Console.WriteLine($"璁㈠崟 {order.Order_no} 鎺ㄩ�佹垚鍔�");
+                            item.MedicineGoods = materielInfos.Where(x => x.MaterielCode == item.Goods_no).First();
+                        }
+                        #region 涓嬪彂WCS
+                        string materialCode = order.Details.FirstOrDefault()?.MedicineGoods?.MaterielErpType ?? "YY";
+                        var ediDto = new ToediInInfo
+                        {
+                            customerCode = "905",
+                            materialCode = materialCode,
+                            externalOrderNo = order.Order_no,
+                            inOrderType = order.Order_type == "5" ? "20" : "10",
+                            priority = 0,
+                            Is_cancel = 0,
+                            details = order.Details.Select(d => new ToediInDetail
+                            {
+                                batchNo = d.Batch_num,
+                                productCode = d.Goods_no,
+                                productName = d.MedicineGoods.MaterielName,
+                                productSpecifications = d.MedicineGoods.MaterielSpec,
+                                quantity = (int)d.Order_qty,
+                                validityPeriod = d.Exp_date,
+                                manufacturer = d.MedicineGoods.Factory,
+                                libraryNo = order.Warehouse_no,
+                            }).ToList()
+                        };
+                        var result = HttpHelper.Post(url, ediDto.ToJsonString());
+                        var resp = JsonConvert.DeserializeObject<TowcsResponse<object>>(result);
+                        if (resp != null && resp.code == "0")
+                        {
+                            order.OdrderStatus = "寮�濮�";
+                            foreach (var item in cabinOrderDetails.Where(x => x.OrderId == order.Id))
+                            {
+                                item.Status = 1;
+                                item.OrderDetailStatus = "寮�濮�";
+                            }
+                        }
+                        #endregion
                     }
-                    else
-                    {
-                        //SendErrorToUpstream(3, order.Order_no, resp?.msg ?? "WCS 鎺ㄩ�佸け璐�", "");
-                        Console.WriteLine($"璁㈠崟 {order.Order_no} 鎺ㄩ�佸け璐ワ細{resp?.msg}");
-                        return new WebResponseContent { Status = false, Message = "璁㈠崟鎺ㄩ�佸け璐�" };
-                    }
+
+                    // 浣跨敤鍚屼竴涓� db 瀹炰緥鎵ц鏇存柊
+                    db.Updateable(orders).ExecuteCommand();
+                    db.Updateable(cabinOrderDetails).ExecuteCommand();
+
+                    return WebResponseContent.Instance.OK();
                 }
-                return new WebResponseContent { Status = true, Message = "鎺ㄩ�佹垚鍔�" };
-            }
-            catch (Exception ex)
-            {
-
-                Console.WriteLine("EdiIn 寮傚父锛�" + ex.Message);
-                return new WebResponseContent { Status = false, Message = ex.Message };
-            }
+                catch (Exception ex)
+                {
+                    Console.WriteLine("涓嬪彂WCS鍏ュ簱鍗曞紓甯革細" + ex.Message);
+                    return WebResponseContent.Instance.Error(ex.Message);
+                }
+            } // 杩欓噷浼氳嚜鍔ㄥ叧闂繛鎺ワ紝涓嶉渶瑕佹墜鍔ㄧ鐞�
         }
         #endregion
 
         #region 涓嬪彂绔嬪簱鍑哄簱鍗�
         public WebResponseContent EdiOut()
         {
-            var responseContent = new WebResponseContent();
-            var WarehouseLk = WarehouseEnum.绔嬪簱.ObjToInt().ToString("000");
-            try
+            using (var db = new SqlSugarClient(new ConnectionConfig
             {
-                // 1. 鏌ヨ绗﹀悎鏉′欢鐨勮鍗曪紙琛ㄥご=鏂板缓 && 鍖呭惈鏈夋晥鏄庣粏锛�
-                var outOrders = _deliveryOrderServices.Db.CopyNew().Queryable<Dt_DeliveryOrder>()
-                    .Where(o => o.OutStatus == "鏂板缓" && o.Warehouse_no == WarehouseLk)
-                    .Includes(o => o.Details, d => d.MedicineGoods)
-                    .ToList();
-
-                // 2. 鍐嶈繃婊ゆ帀涓嶇鍚堟潯浠剁殑鏄庣粏锛堝彧淇濈暀 Status=0 锛�
-                foreach (var order in outOrders)
+                ConnectionString = "Data Source=.;Initial Catalog=WIDESEA_WMSDBF_Z22;User ID=sa;Password=48PYX_h7KS@f;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
+                DbType = DbType.SqlServer,
+                IsAutoCloseConnection = true,  // 鍏抽敭閰嶇疆锛岃嚜鍔ㄥ叧闂繛鎺�
+                MoreSettings = new ConnMoreSettings()
                 {
-                    order.Details = order.Details.Where(d => d.Status == 0).ToList();
+                    IsAutoRemoveDataCache = true
                 }
-
-                if (outOrders == null || !outOrders.Any())
+            }))
+            {
+                try
                 {
-                    Console.WriteLine("娌℃湁绗﹀悎鏉′欢鐨勮鍗曢渶瑕佹帹閫�");
-                    return responseContent.Error("娌℃湁绗﹀悎鏉′欢鐨勮鍗曢渶瑕佹帹閫�");
-                }
-
-                foreach (var order in outOrders)
-                {
-                    try
+                    var reslut = WarehouseEnum.绔嬪簱.ObjToInt().ToString("000");
+                    var orders = db.Queryable<Dt_DeliveryOrder>().Where(x => x.OutStatus == "鏂板缓" && x.Warehouse_no == reslut).ToList();
+                    if (orders.Count < 1)
                     {
-                        string materialCode = "YY";//榛樿鍊�
-                                                   //鑾峰彇褰撳墠璁㈠崟鐨勭涓�涓槑缁嗛」
-                        var firstDetail = order.Details.FirstOrDefault();
-                        if (firstDetail?.MedicineGoods != null && !string.IsNullOrEmpty(firstDetail.MedicineGoods.MaterielErpType))
+                        return WebResponseContent.Instance.OK();
+                    }
+                    string url = "http://172.16.1.2:9357/file-admin/api/out/ediOut";
+                    var deliveryOrderDetails = db.Queryable<Dt_DeliveryOrderDetail>().Where(x => orders.Select(x => x.Id).ToList().Contains(x.DeliveryOrderId)).ToList();
+                    var materielInfos = db.Queryable<Dt_MaterielInfo>().Where(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();
+                        #region 涓嬪彂WCS
+                        foreach (var item in order.Details) //鎵嬪姩鍒涘缓涓庣墿鏂欒〃鐨勮繛鎺�
                         {
-                            //濡傛灉鏉′欢婊¤冻锛屽皢鐗╂枡浠g爜璁剧疆涓虹涓�涓槑缁嗛」瀵瑰簲鐨勮嵂鍝佺墿鏂欎唬鐮�
-                            materialCode = firstDetail.MedicineGoods.MaterielErpType;
+                            item.MedicineGoods = materielInfos.Where(x => x.MaterielCode == item.Goods_no).First();
                         }
+                        string materialCode = order.Details.FirstOrDefault()?.MedicineGoods?.MaterielErpType ?? "YY";
+                        var ediDto = new ToediOutInfo
+                        {
+                            //瀹㈡埛浠g爜
+                            customerCode = "905",
+                            //鐗╂枡绫诲瀷
+                            materialCode = materialCode,
+                            externalOrderNo = order.Out_no,
+                            outOrderType = order.Out_type,
+                            priority = 1,
+                            Is_cancel = 0,
+                            details = order.Details.Select(d => new ToeOutdiInDetail
+                            {
+                                batchNo = d.Batch_num,
+                                productCode = d.Goods_no,
+                                productName = d.MedicineGoods.MaterielName,
+                                productSpecifications = d.MedicineGoods.MaterielModel,
+                                quantity = (int)d.Order_qty,
+                            }).ToList()
+                        };
                         switch (order.Out_type)
                         {
                             case "1"://姝e父鍑哄簱
                             case "3"://鍏ュ簱閫�璐�
-                                order.Out_type = "10";//涓�鑸氦鏄撳嚭搴撳崟
+                                ediDto.outOrderType = "10";//涓�鑸氦鏄撳嚭搴撳崟
                                 break;
                             case "6"://鐩樹簭鍑哄簱
-                                order.Out_type = "30";//鐩樹簭鍑哄簱鍗�
+                                ediDto.outOrderType = "30";//鐩樹簭鍑哄簱鍗�
                                 break;
                         }
-                        // 3. 缁勮 DTO
-                        var ediDto = new TowcsDto.ToediOutInfo
-                        {
-                            customerCode = "905",
-                            materialCode = materialCode,
-                            externalOrderNo = order.Out_no,
-                            outOrderType = order.Out_type,//20鏄洏鐐瑰嚭搴撳崟
-                            priority = 1,
-                            Is_cancel = 0,
-                            details = order.Details.Select(d => new TowcsDto.ToeOutdiInDetail
-                            {
-                                batchNo = d.Batch_num,
-                                productCode = d.Goods_no,
-                                productName = d.MedicineGoods?.MaterielName,
-                                productSpecifications = d.MedicineGoods?.MaterielModel,
-                                quantity = (int)d.Order_qty,
-                                //stocktakingDetails = order.Out_type == "3"
-                                //    ? new List<ToOutediInStock>
-                                //      {
-                                //  new ToOutediInStock { palletCode = "FC00001", quantity = d.Order_qty.ToString() }
-                                //      }
-                                //    : null
-                            }).ToList()
-                        };
-
-                        // 4. 璋冪敤鎺ュ彛
-                        var url = "http://172.16.1.2:9357/file-admin/api/out/ediOut";
-                        //var url = "http://127.0.0.1:4523/m2/5660322-5340849-default/363076920";
-
                         var result = HttpHelper.Post(url, ediDto.ToJsonString());
-                        var resp = JsonConvert.DeserializeObject<TowcsDto.TowcsResponse<object>>(result);
-
+                        var resp = JsonConvert.DeserializeObject<TowcsResponse<object>>(result);
                         if (resp != null && resp.code == "0")
                         {
-                            // 鏇存柊琛ㄥご鐘舵��
-                            _cabinDetailServices.Db.Updateable<Dt_DeliveryOrder>()
-                              .SetColumns(o => new Dt_DeliveryOrder { OutStatus = "寮�濮�" })
-                              .Where(o => o.Id == order.Id)
-                              .ExecuteCommand();
+                            order.OutStatus = "寮�濮�";
+                            foreach (var item in deliveryOrderDetails.Where(x => x.DeliveryOrderId == order.Id))
+                            {
+                                item.Status = 1;
+                                item.OotDetailStatus = "寮�濮�";
+                            }
+                        }
+                        #endregion
+                    }
+                    db.Updateable(orders).ExecuteCommand();
+                    db.Updateable(deliveryOrderDetails).ExecuteCommand();
 
-                            // 鏇存柊鏄庣粏鐘舵��
-                            _deliveryOrderDetailServices.Db.Updateable<Dt_DeliveryOrderDetail>()
-                              .SetColumns(d => new Dt_DeliveryOrderDetail { Status = 1, OotDetailStatus = "寮�濮�" })
-                              .Where(d => d.DeliveryOrderId == order.Id && d.Status == 0)
-                              .ExecuteCommand();
-                            Console.WriteLine($"璁㈠崟 {order.Out_no} 鎺ㄩ�佹垚鍔�");
-                        }
-                        else
-                        {
-                            //SendErrorToUpstream(3, order.Out_no, resp?.msg ?? "WCS 鎺ㄩ�佸け璐�", "");
-                            Console.WriteLine($"璁㈠崟 {order.Out_no} 鎺ㄩ�佸け璐ワ細{resp?.msg}");
-                        }
-                        //鍒犻櫎鍏ㄩ儴鐘朵负宸插畬鎴愮殑鏄庣粏鍜岃〃澶达紝绉诲叆鍘嗗彶琛�
-                    }
-                    catch (Exception ex)
-                    {
-                        //SendErrorToUpstream(3, order.Out_no, ex.Message, "");
-                        Console.WriteLine($"璁㈠崟 {order.Out_no} 鎺ㄩ�佸紓甯革細{ex.Message}");
-                    }
+                    return WebResponseContent.Instance.OK();
                 }
-
-                return responseContent.OK("鍑哄簱璁㈠崟鎺ㄩ�佸畬鎴�");
-            }
-            catch (Exception ex)
-            {
-                Console.WriteLine("EdiOut 寮傚父锛�" + ex.Message);
-                return responseContent.Error("鍑哄簱璁㈠崟鎺ㄩ�佸け璐ワ細" + ex.Message);
+                catch (Exception ex)
+                {
+                    Console.WriteLine("涓嬪彂WCS鍑哄簱鍗曞紓甯革細" + ex.Message);
+                    return WebResponseContent.Instance.Error(ex.Message);
+                }
             }
         }
         #endregion
+
+
+
+
 
         #region 鍏ュ簱瀹屾垚涓婃姤ERP
         /// <summary>
@@ -540,66 +405,57 @@
             var responseContent = new WebResponseContent();
             try
             {
-                _unitOfWorkManage.BeginTran();
                 #region 鏌ユ壘鎵�鏈夊凡瀹屾垚鍏ュ簱鍗�
                 var inorders = _cabinOrderServices.Repository.QueryData(x => x.OdrderStatus == "宸插畬鎴�").Select(x => x.Order_no).Distinct().ToList();
-                foreach (var inorder in inorders)
+                var Orders = _cabinOrderServices.Db.Queryable<Dt_CabinOrder>().Where(x => inorders.Contains(x.Order_no)).Includes(x => x.Details).ToList();
+                List<Dt_CabinOrder> cabinOrders = new List<Dt_CabinOrder>();
+                List<Dt_CabinOrderDetail> cabinOrderDetails = new List<Dt_CabinOrderDetail>();
+                var url = "http://121.37.118.63:80/GYZ2/95fck/inOrderOk";
+                foreach (var item in Orders.GroupBy(x => x.Order_no))
                 {
-                    var Orders = _cabinOrderServices.Db.Queryable<Dt_CabinOrder>().Where(x => x.Order_no == inorder).Includes(x => x.Details).ToList();
-
-                    if (!Orders.Where(x => x.OdrderStatus != "宸插畬鎴�").Any())
+                    //鍙湁褰撹璁㈠崟鍙蜂笅鐨勬墍鏈夎褰曢兘鏄�"宸插畬鎴�"鐘舵�佹椂锛屾墠缁х画澶勭悊
+                    if (!item.Where(x => x.OdrderStatus != "宸插畬鎴�").Any())
                     {
-                        if (Orders.FirstOrDefault().Order_type == InOrderTypeEnum.Allocat.ObjToInt().ToString())
+                        if (item.First().Order_type == InOrderTypeEnum.Allocat.ObjToInt().ToString())
                         {
-                            foreach (var item in Orders)
+                            foreach (var a in item)
                             {
-                                if (item.Details != null)
-                                    _cabinDetailServices.Repository.DeleteAndMoveIntoHty(item.Details, OperateTypeEnum.鑷姩瀹屾垚);
-                                item.Details = null;
+                                if (a.Details != null) cabinOrderDetails.AddRange(a.Details);
+                                a.Details = null;
+                                cabinOrders.Add(a);
                             }
-                            _cabinOrderServices.Repository.DeleteAndMoveIntoHty(Orders, OperateTypeEnum.鑷姩瀹屾垚);
                         }
                         else
                         {
-                            // 璋冪敤涓婃父鎺ュ彛
-                            var url = "http://121.37.118.63:80/GYZ2/95fck/inOrderOk";
-
-
-
-                            var result = HttpHelper.Post(url, new { order_no = inorder }.ToJsonString());
+                            if (item.First().Order_type == "2") url = "http://121.37.118.63:80/GYZ2/95fck/outOrderOk";//鍑哄簱閫�璐�
+                            var result = HttpHelper.Post(url, new { order_no = item.Key }.ToJsonString());
                             var response = JsonConvert.DeserializeObject<UpstreamOrderResponse>(result);
-                            if (response.resultCode == "0")
+                            if (response != null && response.resultCode == "0")
                             {
-                                foreach (var item in Orders)
+                                foreach (var a in item)
                                 {
-                                    if (item.Details != null)
-                                        _cabinDetailServices.Repository.DeleteAndMoveIntoHty(item.Details, OperateTypeEnum.鑷姩瀹屾垚);
-                                    item.Details = null;
+                                    if (a.Details != null) cabinOrderDetails.AddRange(a.Details);
+                                    a.Details = null;
+                                    cabinOrders.Add(a);
                                 }
-                                _cabinOrderServices.Repository.DeleteAndMoveIntoHty(Orders, OperateTypeEnum.鑷姩瀹屾垚);
-                                // 鎻愪氦浜嬪姟
                             }
                             else
                             {
                                 string mess = "涓婃姤ERP鏃犲搷搴�";
                                 if (response != null) mess = response.resultMsg;
-                                _messageInfoService.AddMessageInfo(MessageGroupByEnum.InOrderAlarm, $"鍏ュ簱鍗曞彿銆恵inorder}銆戝畬鎴愪笂鎶RP澶辫触", mess);
-                                //_unitOfWorkManage.RollbackTran();
-                                //SendErrorToUpstream(2, "", $"涓婃父鎺ュ彛杩斿洖澶辫触: {response.resultMsg}", inorder);
+                                _messageInfoService.AddMessageInfo(MessageGroupByEnum.InOrderAlarm, $"鍏ュ簱鍗曞彿銆恵item.Key}銆戝畬鎴愪笂鎶RP澶辫触", mess);
                                 continue;
                             }
                         }
-
-
                     }
                 }
+                _cabinDetailServices.Repository.DeleteAndMoveIntoHty(cabinOrderDetails, OperateTypeEnum.鑷姩瀹屾垚);
+                _cabinOrderServices.Repository.DeleteAndMoveIntoHty(cabinOrders, OperateTypeEnum.鑷姩瀹屾垚);
                 #endregion
-                _unitOfWorkManage.CommitTran();
                 return responseContent.OK();
             }
             catch (Exception ex)
             {
-                _unitOfWorkManage.RollbackTran();
                 return responseContent.Error("鎵归噺澶勭悊澶辫触锛�" + ex.Message);
             }
         }
@@ -616,95 +472,61 @@
             var responseContent = new WebResponseContent();
             try
             {
-                _unitOfWorkManage.BeginTran();
                 #region 鏌ユ壘鎵�鏈夊凡瀹屾垚鍑哄簱鍗�
                 var outorders = _deliveryOrderServices.Repository.QueryData(x => x.OutStatus == "宸插畬鎴�").Select(x => x.Out_no).Distinct().ToList();
-                foreach (var outorder in outorders)
+                var Orders = _deliveryOrderServices.Db.Queryable<Dt_DeliveryOrder>().Where(x => outorders.Contains(x.Out_no)).Includes(x => x.Details).ToList();
+                List<Dt_DeliveryOrder> cabinOrders = new List<Dt_DeliveryOrder>();
+                List<Dt_DeliveryOrderDetail> cabinOrderDetails = new List<Dt_DeliveryOrderDetail>();
+                var url = "http://121.37.118.63:80/GYZ2/95fck/outOrderOk";
+                foreach (var item in Orders.GroupBy(x => x.Out_no))
                 {
-                    var Orders = _deliveryOrderServices.Db.Queryable<Dt_DeliveryOrder>().Where(x => x.Out_no == outorder).Includes(x => x.Details).ToList();
-
-                    if (!Orders.Where(x => x.OutStatus != "宸插畬鎴�").Any())
+                    if (!item.Where(x => x.OutStatus != "宸插畬鎴�").Any())
                     {
-                        if (Orders.FirstOrDefault().Out_type == OutOrderTypeEnum.Allocate.ObjToInt().ToString())
+                        if (item.First().Out_type == OutOrderTypeEnum.Allocate.ObjToInt().ToString())
                         {
-                            foreach (var item in Orders)
+                            foreach (var a in item)
                             {
-                                if (item.Details != null)
-                                    _deliveryOrderDetailServices.Repository.DeleteAndMoveIntoHty(item.Details, OperateTypeEnum.鑷姩瀹屾垚);
-                                item.Details = null;
+                                if (a.Details != null) cabinOrderDetails.AddRange(a.Details);
+                                a.Details = null;
+                                cabinOrders.Add(a);
                             }
-                            _deliveryOrderServices.Repository.DeleteAndMoveIntoHty(Orders, OperateTypeEnum.鑷姩瀹屾垚);
                         }
                         else
                         {
-                            var url = "http://121.37.118.63:80/GYZ2/95fck/outOrderOk";
-                            var requestDate = new
-                            {
-                                order_no = outorder
-                            };
-                            var result = HttpHelper.Post(url, requestDate.ToJsonString());
+                            if (item.First().Out_type == "3") url = "http://121.37.118.63:80/GYZ2/95fck/inOrderOk";//鍏ュ簱閫�璐� 鍑哄簱鍗�
+                            var result = HttpHelper.Post(url, new { order_no = item.Key }.ToJsonString());
                             var response = JsonConvert.DeserializeObject<UpstreamOrderResponse>(result);
                             if (response != null && response.resultCode == "0")
                             {
-                                foreach (var item in Orders)
+                                foreach (var a in item)
                                 {
-                                    if (item.Details != null)
-                                        _deliveryOrderDetailServices.Repository.DeleteAndMoveIntoHty(item.Details, OperateTypeEnum.鑷姩瀹屾垚);
-                                    item.Details = null;
+                                    if (a.Details != null) cabinOrderDetails.AddRange(a.Details);
+                                    a.Details = null;
+                                    cabinOrders.Add(a);
                                 }
-                                _deliveryOrderServices.Repository.DeleteAndMoveIntoHty(Orders, OperateTypeEnum.鑷姩瀹屾垚);
                             }
                             else
                             {
                                 string mess = "涓婃姤ERP鏃犲搷搴�";
                                 if (response != null) mess = response.resultMsg;
-                                _messageInfoService.AddMessageInfo(MessageGroupByEnum.OutOrderAlarm, $"鍑哄簱鍗曞彿銆恵outorder}銆戝畬鎴愪笂鎶RP澶辫触", mess);
-                                //_unitOfWorkManage.RollbackTran();
-                                //SendErrorToUpstream(4, "", $"涓婃父鎺ュ彛杩斿洖澶辫触: {response.resultMsg}", outorder);
+                                _messageInfoService.AddMessageInfo(MessageGroupByEnum.InOrderAlarm, $"鍑哄簱鍗曞彿銆恵item.Key}銆戝畬鎴愪笂鎶RP澶辫触", mess);
                                 continue;
                             }
                         }
                     }
                 }
+                _deliveryOrderDetailServices.Repository.DeleteAndMoveIntoHty(cabinOrderDetails, OperateTypeEnum.鑷姩瀹屾垚);
+                _deliveryOrderServices.Repository.DeleteAndMoveIntoHty(cabinOrders, OperateTypeEnum.鑷姩瀹屾垚);
+
                 #endregion
-                _unitOfWorkManage.CommitTran();
                 return responseContent.OK();
             }
             catch (Exception ex)
             {
-                _unitOfWorkManage.RollbackTran();
                 return responseContent.Error("鎵归噺澶勭悊澶辫触锛�" + ex.Message);
             }
         }
         #endregion
-
-        #region 鎺ㄩ�佸紓甯镐笂鎶RP
-        /// <summary>
-        /// 鎺ㄩ�佸紓甯镐俊鎭粰涓婃父绯荤粺1.鍏ュ簱鍗曟帴鍙o紱2.鍏ュ簱鍗曟姤瀹屾垚鎺ュ彛锛�3.鍑哄簱鍗曟帴鍙o紱4.鍑哄簱鎶ュ畬鎴愭帴鍙o紱5.鑽搧鍩虹淇℃伅鍚屾鎺ュ彛锛�6.渚涘簲鍟嗕俊鎭帴鍙o紱7.瀹㈡埛淇℃伅鎺ュ彛锛�8.搴撳瓨
-        /// </summary>
-        public void SendErrorToUpstream(int type, string code, string message, string remark)
-        {
-            try
-            {
-                var url = "http://121.37.118.63:80/GYZ2/95fck/lexceptionLogog";
-
-                var requestData = new
-                {
-                    type = type.ToString(),
-                    code = code,
-                    message = message,
-                    remark = remark
-                };
-
-                var result = HttpHelper.Post(url, requestData.ToJsonString());
-                // 鍙互鍙嶅簭鍒楀寲妫�鏌� resultCode 鏄惁涓�0
-            }
-            catch (Exception e)
-            {
-                // 杩欓噷涓嶈鍐嶆姏寮傚父浜嗭紝閬垮厤姝诲惊鐜�
-                Console.WriteLine("寮傚父鎺ュ彛鎺ㄩ�佸け璐ワ細" + e.Message);
-            }
-        }
-        #endregion
+      
     }
 }

--
Gitblit v1.9.3