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/DeliveryOrderServices.cs |   14 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/NewBusiness.cs           |   16 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_LogService.cs              |   22 +
 新建文件夹/WIDESEA_WMSServer/ClassLibrary2/MaterielInfoService.cs                 |  152 +++++----
 新建文件夹/WIDESEA_WMSServer/ClassLibrary2/MessageInfoService.cs                  |    3 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/Business.cs              |  285 +++++++++++++++---
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderServices.cs    |  377 +++++++++++++++++++++++-
 7 files changed, 718 insertions(+), 151 deletions(-)

diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/ClassLibrary2/MaterielInfoService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/ClassLibrary2/MaterielInfoService.cs"
index 5817be8..7f82787 100644
--- "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/ClassLibrary2/MaterielInfoService.cs"
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/ClassLibrary2/MaterielInfoService.cs"
@@ -1,6 +1,7 @@
 锘縰sing HslCommunication;
 using Newtonsoft.Json;
 using Quartz.Util;
+using SqlSugar;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -167,6 +168,13 @@
 
             return "鏈煡";
         }
+
+
+        /// <summary>
+        /// 鍙戠粰涓嬫父wcs鍚屾鑽搧淇℃伅 
+        /// </summary>
+        /// <returns></returns>
+        #region 鍚屾涓嬫父鐗╂枡鎺ュ彛
         public WebResponseContent ProductSynchronous()
         {
             try
@@ -222,82 +230,84 @@
                 return WebResponseContent.Instance.Error(ex.Message);
             }
         }
-        /// <summary>
-        /// 鍙戠粰涓嬫父wcs鍚屾鑽搧淇℃伅 
-        /// </summary>
-        /// <returns></returns>
-        public WebResponseContent ProductSynchronous1()
-        {
-            try
-            {
-                //鎶婂皬浠舵湭涓嬪彂鐨勭殑淇℃伅鍜岀瑙勪负0锛屾渶浣庡簱瀛樹负0鐨勮繃婊ゆ帀
-                //var list = BaseDal.Db.Queryable<Dt_MaterielInfo>().Where(x => x.GoodStatusState == "鏈笅鍙�" && x.MaterielSourceType == MaterielSourceTypeEnum.SelfMadePart).ToList();
-                var list = BaseDal.QueryData(x => x.MaterielSourceType == MaterielSourceTypeEnum.SelfMadePart && x.BoxQty > 0 && x.MinQty > 0 && x.GoodStatusState == "鏈笅鍙�").ToList();
-                if (list.Count < 1)
-                {
-                    return new WebResponseContent().OK("鏃犳湭涓嬪彂鑽搧");
-                }
-                //鎵惧埌浜嗗氨灏嗘暣涓猯ist鍙戠粰涓嬫父绯荤粺
-                foreach (var item in list)
-                {
-                    var medicineDTO = new ProductInfo
-                    {
-                        //鐢ㄦ埛code
-                        customerCode = "905",
-                        //鐗╂枡绫诲瀷
-                        materialCode = item.MaterielErpType,
-                        //浜у搧缂栫爜
-                        productCode = item.MaterielCode,
-                        //浜у搧鍚�
-                        productName = item.MaterielName,
-                        //浜у搧鏉$爜
-                        productBarCode = item.Barcode,
+        #endregion
 
-                        //鑽墏
-                        medicine = item.Dosage_form,//杩欓噷瑕佽皟鐢ㄦ柟娉曪紝杞寲鏂规硶
 
-                        //瑙勬牸
-                        productSpecifications = item.MaterielSpec,
-                        //鍗曚綅
-                        unit = item.MaterielUnit,
-                        //闀�
-                        singleProductLongNum = (item.MaterielLength ?? 0).ToString(),
-                        //瀹�
-                        singleProductWideNum = (item.MaterielWide ?? 0).ToString(),
-                        //楂�
-                        singleProductHighNum = (item.MaterielHeight ?? 0).ToString(),
-                        //閲嶉噺
-                        singleProductWeight = (item.MaterielWeight ?? 0).ToString(),
-                        //浣撶Н
-                        singleProductVolume = (item.MaterielVolume ?? 0).ToString(),
-                        //鏄惁鍙栨秷 0鏄笉鍒犻櫎锛�1鍒犻櫎
-                        isDelete = "0"
-                    };
-                    var url = "http://172.16.1.2:9357/file-admin/api/product/productSynchronous";
-                    var result = HttpHelper.Post(url, medicineDTO.ToJsonString());
-                    var resp = JsonConvert.DeserializeObject<TowcsResponse<object>>(result);
+        #region 鎵嬪姩鍏抽棴鏁版嵁搴撹繛鎺� 鍚屾涓嬫父鐗╂枡 
+        //public WebResponseContent ProductSynchronous()
+        //{
+        //    using (var db = new SqlSugarClient(new ConnectionConfig
+        //    {
+        //        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()
+        //        {
+        //            IsAutoRemoveDataCache = true
+        //        }
+        //    }))
+        //    {
+        //        try
+        //        {
+        //            List<Dt_MaterielInfo> materielInfos = db.Queryable<Dt_MaterielInfo>().Where(x => x.MaterielSourceType == MaterielSourceTypeEnum.SelfMadePart && x.BoxQty > 0 && x.MinQty > 0 && x.GoodStatusState == "鏈笅鍙�").ToList();
+        //            if (materielInfos.Count < 1)
+        //            {
 
-                    if (resp != null && resp.code == "0")
-                    {
-                        item.GoodStatusState = "涓嬪彂瀹屾垚";
-                    }
-                    else
-                    {
-                        continue;
-                    }
+        //                return WebResponseContent.Instance.Error("鏃犳湭涓嬪彂鑽搧");
+        //            }
+        //            var url = "http://172.16.1.2:9357/file-admin/api/product/productSynchronous";
+        //            foreach (var item in materielInfos)
+        //            {
+        //                var medicineDTO = new ProductInfo
+        //                {
+        //                    //鐢ㄦ埛code
+        //                    customerCode = "905",
+        //                    //鐗╂枡绫诲瀷
+        //                    materialCode = item.MaterielErpType,
+        //                    //浜у搧缂栫爜
+        //                    productCode = item.MaterielCode,
+        //                    //浜у搧鍚�
+        //                    productName = item.MaterielName,
+        //                    //浜у搧鏉$爜
+        //                    productBarCode = item.Barcode,
 
-                }
-                BaseDal.UpdateData(list);
-                //Db.Updateable(list).ExecuteCommand();
-                return new WebResponseContent { Status = true, Message = "鎴愬姛" };
-            }
-            catch (Exception ex)
-            {
-                Console.WriteLine("ProductSynchronous 寮傚父锛�" + ex.Message);
-                return new WebResponseContent { Status = false, Message = ex.Message };
-            }
+        //                    //鑽墏
+        //                    medicine = item.Dosage_form,//杩欓噷瑕佽皟鐢ㄦ柟娉曪紝杞寲鏂规硶
 
-        }
+        //                    //瑙勬牸
+        //                    productSpecifications = item.MaterielSpec,
+        //                    //鍗曚綅
+        //                    unit = item.MaterielUnit,
+        //                    //闀�
+        //                    singleProductLongNum = (item.MaterielLength ?? 0).ToString(),
+        //                    //瀹�
+        //                    singleProductWideNum = (item.MaterielWide ?? 0).ToString(),
+        //                    //楂�
+        //                    singleProductHighNum = (item.MaterielHeight ?? 0).ToString(),
+        //                    //閲嶉噺
+        //                    singleProductWeight = (item.MaterielWeight ?? 0).ToString(),
+        //                    //浣撶Н
+        //                    singleProductVolume = (item.MaterielVolume ?? 0).ToString(),
+        //                    //鏄惁鍙栨秷 0鏄笉鍒犻櫎锛�1鍒犻櫎
+        //                    isDelete = "0"
+        //                };
+        //                var result = HttpHelper.Post(url, medicineDTO.ToJsonString());
+        //                var resp = JsonConvert.DeserializeObject<TowcsResponse<object>>(result);
+        //                if (resp != null && resp.code == "0") item.GoodStatusState = "涓嬪彂瀹屾垚";
+        //            }
+        //            db.Updateable(materielInfos).ExecuteCommand();
+
+        //            return WebResponseContent.Instance.OK();
+        //        }
+        //        catch (Exception ex)
+        //        {
+        //            Console.WriteLine("涓嬪彂WCS鐗╂枡淇℃伅寮傚父锛�" + ex.Message);
+        //            return WebResponseContent.Instance.Error(ex.Message);
+        //        }
+        //    }
+        //}
+        #endregion
+
         public override WebResponseContent DeleteData(object[] keys)
         {
             WebResponseContent content = new WebResponseContent();
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/ClassLibrary2/MessageInfoService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/ClassLibrary2/MessageInfoService.cs"
index 7ab47d9..5ec07cc 100644
--- "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/ClassLibrary2/MessageInfoService.cs"
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/ClassLibrary2/MessageInfoService.cs"
@@ -120,6 +120,9 @@
             return content;
         }
 
+        /// <summary>
+        /// 娑堟伅澶勭悊鍜屾帹閫� WebSocket瀹炴椂鎺ㄩ��
+        /// </summary>
         public void GetMessageInfo()
         {
             try
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 fa7bf08..7e6d4d5 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"
@@ -19,6 +19,7 @@
 using static WIDESEA_DTO.SquareCabin.AlarmDto;
 using OfficeOpenXml.Style;
 using System.Security.Policy;
+using SqlSugar;
 
 namespace WIDESEA_SquareCabinServices
 {
@@ -43,6 +44,164 @@
         }
 
         #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 涓嬪彂绔嬪簱鍑哄簱鍗�
+        //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
@@ -50,58 +209,64 @@
                 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();
+                var orderIds = orders.Select(x => x.Id).ToList();
+
+                var cabinOrderDetails = _cabinDetailServices.Repository.QueryData(x => orderIds.Contains(x.OrderId)).ToList();
+
+                var goodsCodes = cabinOrderDetails.Select(x => x.Goods_no).Distinct().ToList();
+                var materielInfos = _materielInfoService.Repository.QueryData(x => goodsCodes.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();
-                    }
+
+                    // 鍏抽敭淇敼锛氫笉璁剧疆瀵艰埅灞炴�э紝閬垮厤瑙﹀彂寤惰繜鍔犺浇
+                    // 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";
+                    // 鐩存帴浠� materielInfos 鏌ヨ锛屼笉閫氳繃瀵艰埅灞炴��
+                    var firstDetail = order.Details.FirstOrDefault();
+                    var firstMedicine = firstDetail != null ?
+                        materielInfos.FirstOrDefault(x => x.MaterielCode == firstDetail.Goods_no) : null;
+
+                    string materialCode = firstMedicine?.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
+                        details = order.Details.Select(d =>
                         {
-                            //鎵瑰彿
-                            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,
+                            var medicine = materielInfos.FirstOrDefault(x => x.MaterielCode == d.Goods_no);
+                            return new ToediInDetail
+                            {
+                                batchNo = d.Batch_num,
+                                productCode = d.Goods_no,
+                                productName = medicine?.MaterielName ?? string.Empty,
+                                productSpecifications = medicine?.MaterielSpec ?? string.Empty,
+                                quantity = (int)d.Order_qty,
+                                validityPeriod = d.Exp_date,
+                                manufacturer = medicine?.Factory ?? string.Empty,
+                                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))
+                        foreach (var item in order.Details)
                         {
                             item.Status = 1;
                             item.OrderDetailStatus = "寮�濮�";
@@ -109,6 +274,7 @@
                     }
                     #endregion
                 }
+
                 _cabinOrderServices.UpdateData(orders);
                 _cabinDetailServices.UpdateData(cabinOrderDetails);
                 return WebResponseContent.Instance.OK();
@@ -119,6 +285,7 @@
                 return WebResponseContent.Instance.Error(ex.Message);
             }
         }
+
         #endregion
 
         #region 涓嬪彂绔嬪簱鍑哄簱鍗�
@@ -129,37 +296,55 @@
                 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();
+                var orderIds = orders.Select(x => x.Id).ToList();
+
+                var deliveryOrderDetails = _deliveryOrderDetailServices.Repository.QueryData(x => orderIds.Contains(x.DeliveryOrderId)).ToList();
+
+                var goodsCodes = deliveryOrderDetails.Select(x => x.Goods_no).Distinct().ToList();
+                var materielInfos = _materielInfoService.Repository.QueryData(x => goodsCodes.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();
-                    }
+
+                    // 鍏抽敭淇敼锛氫笉璁剧疆瀵艰埅灞炴�э紝閬垮厤瑙﹀彂寤惰繜鍔犺浇
+                    // 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";
+                    // 鐩存帴浠� materielInfos 鏌ヨ锛屼笉閫氳繃瀵艰埅灞炴��
+                    var firstDetail = order.Details.FirstOrDefault();
+                    var firstMedicine = firstDetail != null ?
+                        materielInfos.FirstOrDefault(x => x.MaterielCode == firstDetail.Goods_no) : null;
+
+                    string materialCode = firstMedicine?.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
+                        details = order.Details.Select(d =>
                         {
-                            batchNo = d.Batch_num,
-                            productCode = d.Goods_no,
-                            productName = d.MedicineGoods.MaterielName,
-                            productSpecifications = d.MedicineGoods.MaterielModel,
-                            quantity = (int)d.Order_qty,
+                            var medicine = materielInfos.FirstOrDefault(x => x.MaterielCode == d.Goods_no);
+                            return new ToeOutdiInDetail
+                            {
+                                batchNo = d.Batch_num,
+                                productCode = d.Goods_no,
+                                productName = medicine.MaterielName,
+                                productSpecifications = medicine.MaterielModel,
+                                quantity = (int)d.Order_qty,
+                            };
                         }).ToList()
                     };
+
                     switch (order.Out_type)
                     {
                         case "1"://姝e父鍑哄簱
@@ -170,12 +355,13 @@
                             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))
+                        foreach (var item in order.Details)
                         {
                             item.Status = 1;
                             item.OotDetailStatus = "寮�濮�";
@@ -183,6 +369,7 @@
                     }
                     #endregion
                 }
+
                 _deliveryOrderServices.UpdateData(orders);
                 _deliveryOrderDetailServices.UpdateData(deliveryOrderDetails);
                 return WebResponseContent.Instance.OK();
@@ -195,6 +382,10 @@
         }
         #endregion
 
+
+
+
+
         #region 鍏ュ簱瀹屾垚涓婃姤ERP
         /// <summary>
         /// 鍏ュ簱鎶ュ畬鎴愭帴鍙�
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>
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 97ae41b..c0433d5 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"
@@ -354,9 +354,9 @@
                     List<Dt_Inventory_Batch> batchesUp = new List<Dt_Inventory_Batch>();
                     List<Dt_InventoryInfo> inventoryInfosUp = new List<Dt_InventoryInfo>();
                     List<Dt_SupplyTask> supplyTasks = new List<Dt_SupplyTask>();
-                    List<Dt_MaterielInfo> materielInfos = _materielInfoService.Repository.QueryData(x => outorder.details.Select(e => e.goods_no).Contains(x.MaterielCode));
-                    var inventory_Batchs = _inventory_BatchServices.Repository.QueryData(x => outorder.details.Select(e => e.goods_no).Contains(x.MaterielCode));
-                    var InventoryInfos = _inventoryInfoService.Repository.QueryData(x => outorder.details.Select(e => e.goods_no).Contains(x.MaterielCode) && x.StockStatus == StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt() && x.AvailableQuantity > 0 && (x.WarehouseCode == WareCodeDJ || x.WarehouseCode == WareCodeLK));
+                    List<Dt_MaterielInfo> materielInfos = _materielInfoService.Repository.QueryData(x => outorder.details.Select(e => e.goods_no).Contains(x.MaterielCode)).ToList();
+                    var inventory_Batchs = _inventory_BatchServices.Repository.QueryData(x => outorder.details.Select(e => e.goods_no).Contains(x.MaterielCode)).ToList();
+                    var InventoryInfos = _inventoryInfoService.Repository.QueryData(x => outorder.details.Select(e => e.goods_no).Contains(x.MaterielCode) && x.StockStatus == StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt() && x.AvailableQuantity > 0 && (x.WarehouseCode == WareCodeDJ || x.WarehouseCode == WareCodeLK)).ToList();
                     foreach (var detail in outorder.details)
                     {
                         #region 鏌ヨ搴撳瓨鎵规鍜屽簱瀛�
@@ -1098,8 +1098,8 @@
                     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));
+                    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)
                     {
@@ -1115,8 +1115,8 @@
                         //鎵炬墍鏈夊簱瀛�
                         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 = inventoryLK.SupplyQuantity;
+                        var inventoryLK = inventoryInfos.Where(x => x.WarehouseCode == WareCodeLK).FirstOrDefault();
+                        var LkQty = inventoryLK?.SupplyQuantity??0;
                         //鑾峰彇澶т欢搴撶洏鐐瑰樊寮傛暟
                         var inventoryDJ = inventoryInfos.Where(x => x.WarehouseCode == WareCodeDJ).ToList();
                         var DJQty = inventoryDJ.Sum(x => x.SupplyQuantity);
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 3ebd163..6469e42 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"
@@ -5,6 +5,7 @@
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using WIDESEA_Common;
 using WIDESEA_Core;
 using WIDESEA_Core.Helper;
 using WIDESEA_ISquareCabinServices;
@@ -187,7 +188,8 @@
             WebResponseContent content = new WebResponseContent();
             try
             {
-                var url = "http://121.37.118.63:80/GYZ2/95fck/inOrder";
+                //var url = "http://121.37.118.63:80/GYZ2/95fck/inOrder";
+                var url = "http://127.0.0.1:4523/m2/5660322-5340849-default/363009261";
                 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 };
@@ -239,13 +241,13 @@
                         else if (order.order_type == "3")//鍏ュ簱閫�鏂�
                         {
                             #region 杞崲涓哄嚭搴撳崟
-                             UpstramOutOrderInfo upstramOutOrderInfo = new UpstramOutOrderInfo()
+                            UpstramOutOrderInfo upstramOutOrderInfo = new UpstramOutOrderInfo()
                             {
                                 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,
+                                client_no = order.supplier_no,
+                                client_name = order.supplier_name,
+                                account_time = order.account_time,
                                 warehouse_no = order.warehouse_no,
                                 details = new List<UpstreamOutOrderDetail>()
                             };
@@ -286,6 +288,10 @@
         }
         #endregion
 
+
+     
+
+
         #region 鑾峰彇ERP鍑哄簱鍗�
         static string SearchOutOrderDate = "2025-11-01 00:00:00";
         public WebResponseContent GetOutOrder()
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_LogService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_LogService.cs"
index 6b8859f..8a0be83 100644
--- "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_LogService.cs"
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_LogService.cs"
@@ -3,6 +3,7 @@
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using WIDESEA_Core;
 using WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
 using WIDESEA_ISystemService;
@@ -14,6 +15,27 @@
     {
         public Sys_LogService(IRepository<Sys_Log> BaseDal) : base(BaseDal)
         {
+
+        }
+
+        /// <summary>
+        /// 瀹氭椂鍒犻櫎鏃ュ織
+        /// </summary>
+        /// <returns></returns>
+        public WebResponseContent ScheduledDeletion()
+        {
+            WebResponseContent response = new WebResponseContent();
+            try
+            {
+                var deleteDate = DateTime.Now.AddDays(-7); // 7澶╁墠鐨勬棩鏈�
+                var logs = BaseDal.QueryData(x => x.BeginDate < deleteDate).ToList();
+                var deleteCount = BaseDal.DeleteData(logs);
+            }
+            catch (Exception ex)
+            {
+                return response.Error(ex.Message );
+            }
+            return response;
         }
     }
 }

--
Gitblit v1.9.3