From 2b49f7643d15b74889d190f216630559006ed93a Mon Sep 17 00:00:00 2001
From: yanjinhui <3306209981@qq.com>
Date: 星期一, 01 十二月 2025 09:48:43 +0800
Subject: [PATCH] pad和后端的优化

---
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderServices.cs |  113 ++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 101 insertions(+), 12 deletions(-)

diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderServices.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderServices.cs"
index e9578a4..2c182d4 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"
@@ -12,6 +12,7 @@
 using System.Transactions;
 using WIDESEA_Common;
 using WIDESEA_Common.LocationEnum;
+using WIDESEA_Common.MaterielEnum;
 using WIDESEA_Common.OrderEnum;
 using WIDESEA_Common.StockEnum;
 using WIDESEA_Common.TaskEnum;
@@ -103,15 +104,72 @@
         /// <param name="pageNo"></param>
         /// <param name="orderNo"></param>
         /// <returns></returns>
+        //public WebResponseContent GetCabinOrderDetail(int pageNo, string orderNo)
+        //{
+        //    WebResponseContent content = new WebResponseContent();
+        //    Dt_CabinOrder cabinOrder = Db.Queryable<Dt_CabinOrder>().Includes(x => x.Details).First(x => x.Order_no == orderNo);
+        //    List<Dt_CabinOrderDetail> cabinOrderDetails = cabinOrder.Details.Where(x => x.Status == 2 && x.OrderDetailStatus != "宸插畬鎴�").ToList();
+        //    content.OK(data: cabinOrderDetails);
+        //    return content;
+        //}
+
         public WebResponseContent GetCabinOrderDetail(int pageNo, string orderNo)
         {
             WebResponseContent content = new WebResponseContent();
-            Dt_CabinOrder cabinOrder = Db.Queryable<Dt_CabinOrder>().Includes(x => x.Details).First(x => x.Order_no == orderNo);
-            List<Dt_CabinOrderDetail> cabinOrderDetails = cabinOrder.Details.Where(x => x.Status == 2 && x.OrderDetailStatus != "宸插畬鎴�").ToList();
-            content.OK(data: cabinOrderDetails);
+            try
+            {
+                Dt_CabinOrder cabinOrder = Db.Queryable<Dt_CabinOrder>().Includes(x => x.Details).First(x => x.Order_no == orderNo);
+                List<Dt_CabinOrderDetail> cabinOrderDetails = cabinOrder.Details.Where(x => x.Status == 2 && x.OrderDetailStatus != "宸插畬鎴�").ToList();
+
+                // 鑾峰彇鎵�鏈夌墿鏂欑紪鍙�
+                var materielCodes = cabinOrderDetails.Select(x => x.Goods_no).Distinct().ToList();
+
+                // 鑾峰彇鐗╂枡淇℃伅
+                var materiels = Db.Queryable<Dt_MaterielInfo>()
+                    .Where(x => materielCodes.Contains(x.MaterielCode))
+                    .ToList()
+                    .ToDictionary(x => x.MaterielCode, x => x);
+
+                // 缁勫悎鏁版嵁
+                var result = cabinOrderDetails.Select(detail =>
+                {
+                    var materiel = materiels.ContainsKey(detail.Goods_no) ? materiels[detail.Goods_no] : null;
+
+                    return new
+                    {
+                        // 璁㈠崟鏄庣粏瀛楁
+                        detail.Id,
+                        detail.Batch_num,
+                        detail.Goods_no,
+                        detail.Order_qty,
+                        detail.Order_Inqty,
+                        detail.Status,
+                        detail.OrderDetailStatus,
+                        detail.Exp_date,//鏁堟湡
+
+                        // 鐗╂枡淇℃伅瀛楁
+                        MaterielName = materiel?.MaterielName ?? "",
+                        item = materiel?.item ?? "", // 鍝佸悕/閫氱敤鍚�
+                        MaterielSpec = materiel?.MaterielSpec ?? "", // 鐗╂枡瑙勬牸
+                        Factory = materiel?.Factory ?? "", // 鐢熶骇鍘傚
+                        MaterielUnit = materiel?.MaterielUnit ?? "", // 鍩烘湰鍗曚綅
+                        MaterielStoragecondition = materiel?.MaterielStoragecondition, // 瀛樺偍鏉′欢/鏁堟湡
+                        MaterielModel = materiel?.MaterielModel ?? "" // 鐗╂枡鍨嬪彿
+                    };
+                }).ToList();
+                int pageSize = 5; // 姣忛〉鏄剧ず5鏉�
+                var pagedResult = result
+                    .Skip((pageNo - 1) * pageSize)
+                    .Take(pageSize)
+                    .ToList();
+                content.OK(data: pagedResult);
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
             return content;
         }
-
 
         /// <summary>
         /// Pad鍏ュ簱瀹屾垚 
@@ -142,6 +200,15 @@
                 cabinOrderDetail.Order_Inqty += Inqty;
                 if (cabinOrderDetail.Order_Inqty > cabinOrderDetail.Order_qty)
                     return WebResponseContent.Instance.Error($"鍏ュ簱鏁伴噺涓嶅彲瓒呭嚭鍗曟嵁鏁伴噺");
+                //澶т欢搴撴暣绠辨牎楠�
+                if (warehouseCode == WarehouseEnum.澶т欢搴�.ObjToInt().ToString("000")&& (materielInfo.MaterielSourceType==MaterielSourceTypeEnum.SelfMadePart))
+                { 
+                    var BoxRule = materielInfo.BoxQty;
+                    if (BoxRule > 0 && Inqty % BoxRule != 0)
+                    {
+                        return WebResponseContent.Instance.Error($"澶т欢搴撳彧鍏佽瀛樻斁鏁寸璐х墿锛佸綋鍓嶅叆搴撴暟閲� {Convert.ToInt32(Inqty)} 涓嶆槸绠辫 {Convert.ToInt32(BoxRule)} 鐨勬暣鏁板��");
+                    }
+                }
 
                 #region 澶勭悊鍏ュ簱鍗曪紝璐т綅锛屽簱瀛橈紝搴撳瓨鎵规淇℃伅
                 _unitOfWorkManage.BeginTran();
@@ -162,6 +229,7 @@
                 #region 璐т綅
                 var location = _locationInfoService.Repository.QueryFirst(x => x.LocationCode == LocationCode);
                 if (location == null) return WebResponseContent.Instance.Error($"璇风淮鎶よ揣浣嶇紪鍙枫�恵LocationCode}銆戠殑璐т綅淇℃伅");
+              
                 //if (location.EnableStatus == EnableStatusEnum.Disable.ObjToInt())
                 //    return WebResponseContent.Instance.Error($"璐т綅缂栧彿銆恵LocationCode}銆戝凡绂佺敤锛岃鎭㈠姝e父鍐嶄娇鐢�");
                 if (location.WarehouseCode != cabinOrderDetail.Reservoirarea)
@@ -321,6 +389,16 @@
             {
                 string WareCodeMJ = WarehouseEnum.楹荤簿搴�.ObjToInt().ToString("000");
                 string WareCodeLD = WarehouseEnum.鍐峰喕搴�.ObjToInt().ToString("000");
+                #region 妫�鏌ユ槸鍚︽湁鏈畬鎴愮殑鐩樼偣浠诲姟
+                var dt_bath = _inventory_BatchServices.Repository.QueryData(x => order.details.Select(d => d.goods_no).Contains(x.MaterielCode)).ToList();
+                if (dt_bath.Count>=1)
+                {
+                    foreach (var item in dt_bath)
+                    {
+                        if (item.SupplyQuantity > 0) throw new Exception($"鍏ュ簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵dt_bath[0].MaterielCode}銆戝瓨鍦ㄦ湭瀹屾垚鐨勭洏鐩堝叆搴撲换鍔★紝璇峰鐞嗗畬鎴愬悗鍐嶈繘琛屾甯稿叆搴撴搷浣�");
+                    }
+                } 
+                #endregion
                 List<Dt_CabinOrder> dt_CabinOrders = new List<Dt_CabinOrder>();
                 #region 鐗规畩鑽搧鍏ョ壒娈婂簱鎴�
                 if (order.warehouse_no == WareCodeMJ || order.warehouse_no == WareCodeLD)
@@ -850,17 +928,22 @@
                 if (order.warehouse_no == WareCodeMJ || order.warehouse_no == WareCodeLD)
                 {
 
-                    List<Dt_Inventory_Batch> inventory_Batchs = _inventory_BatchServices.Repository.QueryData(x => codes.Contains(x.MaterielCode));
-                    List<Dt_InventoryInfo> _InventoryInfos = _inventoryInfoService.Repository.QueryData(x => codes.Contains(x.MaterielCode));
+                    List<Dt_Inventory_Batch> inventory_Batchs = _inventory_BatchServices.Repository.QueryData(x => codes.Contains(x.MaterielCode)).ToList();
+                    List<Dt_InventoryInfo> _InventoryInfos = _inventoryInfoService.Repository.QueryData(x => codes.Contains(x.MaterielCode)).ToList();
                     #region 搴撳瓨銆佸簱瀛樻壒娆″钩璐�
                     foreach (var item in order.details)
                     {
                         //鎵惧簱瀛樻壒娆′俊鎭�
-                        Dt_Inventory_Batch inventory_Batch = inventory_Batchs.Where(x => x.MaterielCode == item.goods_no && x.BatchNo == item.batch_num).First();
+                        Dt_Inventory_Batch inventory_Batch = inventory_Batchs.Where(x => x.MaterielCode == item.goods_no && x.BatchNo == item.batch_num).FirstOrDefault();
+                        if (inventory_Batch==null)
+                        {
+                            _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 (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}銆戠殑鐩樼泩鏁伴噺鏈夎");
+                            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();
@@ -949,7 +1032,12 @@
                     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();
+                        Dt_Inventory_Batch inventory_Batch = inventory_Batchs.Where(x => x.MaterielCode == item.goods_no && x.BatchNo == item.batch_num).FirstOrDefault();
+                        if (inventory_Batch == null)
+                        {
+                            _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}銆戠殑鎵规淇℃伅閿欒");
+                        }
                         var Qty = Math.Abs(inventory_Batch.SupplyQuantity);
                         if (Qty != item.order_qty)
                         {
@@ -1156,7 +1244,8 @@
             }
             catch (Exception ex)
             {
-                throw ex;
+                //throw ex;
+                return content.Error(ex.Message);
             }
             //return content;
             return content.OK($"鐩樼泩鍏ュ簱鍗曞垱寤烘垚鍔�");
@@ -1194,8 +1283,8 @@
                 }
                 else
                 {
-                    var url = "http://121.37.118.63:80/GYZ2/95fck/outOrderOk";
-                    if (cabinOrder.Order_type == "2") url = "http://121.37.118.63:80/GYZ2/95fck/outOrderOk";
+                    var url = "http://192.168.1.100:80/GYZ2/95fck/outOrderOk";
+                    if (cabinOrder.Order_type == "2") url = "http://192.168.1.100:80/GYZ2/95fck/outOrderOk";
                     var requestDate = new
                     {
                         order_no = cabinOrder.Order_no

--
Gitblit v1.9.3