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/Business.cs |  285 +++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 238 insertions(+), 47 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 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>
         /// 鍏ュ簱鎶ュ畬鎴愭帴鍙�

--
Gitblit v1.9.3