From dcecb039035f4b2e82e31c39b74db9402444c536 Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期二, 08 四月 2025 21:35:39 +0800
Subject: [PATCH] 代码更新,优化等内容

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderService.cs |   92 +++++++++++++++++++++++++++++++++-------------
 1 files changed, 66 insertions(+), 26 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderService.cs"
index 80a732e..2e8992a 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderService.cs"
@@ -1,8 +1,10 @@
 锘縰sing AutoMapper;
 using MailKit.Search;
+using SqlSugar;
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Reflection;
 using System.Text;
 using System.Threading.Tasks;
 using WIDESEA_Common.CommonEnum;
@@ -11,6 +13,7 @@
 using WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
 using WIDESEA_Core.Helper;
+using WIDESEA_Core.Utilities;
 using WIDESEA_DTO;
 using WIDESEA_DTO.Basic;
 using WIDESEA_DTO.ERP;
@@ -81,14 +84,47 @@
 
             if (saveModel.MainData.TryGetValue(nameof(Dt_ReceiveOrder.SuppliersId).FirstLetterToLower(), out object? suppliersId) && suppliersId != null && !string.IsNullOrEmpty(suppliersId.ToString()))
             {
-                Dt_ReceiveOrder receiveOrder = BaseDal.QueryFirst(x => x.SuppliersId == suppliersId.ToString() && x.WarehouseId == Convert.ToInt32(saveModel.MainData[nameof(Dt_ReceiveOrder.WarehouseId).FirstLetterToLower()]));
-                if (receiveOrder != null && receiveOrder.ReceiveOrderStatus != ReceiveOrderStatusEnum.Completed.ObjToInt())
+                Dt_ReceiveOrder receiveOrder = BaseDal.QueryFirst(x => x.SuppliersId == suppliersId.ToString() && x.WarehouseId == Convert.ToInt32(saveModel.MainData[nameof(Dt_ReceiveOrder.WarehouseId).FirstLetterToLower()]) && x.ReceiveOrderStatus< ReceiveOrderStatusEnum.Completed.ObjToInt());
+                if (receiveOrder != null)
                 {
                     return WebResponseContent.Instance.Error("璇ヤ緵搴斿晢鏈夋湭瀹屾垚鐨勬敹璐у崟");
                 }
             }
 
             return base.AddData(saveModel);
+        }
+        public override object GetDetailPage(PageDataOptions pageData)
+        {
+            Type t = typeof(Dt_ReceiveOrder);
+
+            if (pageData.Value == null) return new PageGridData<object>(total: 0, null);
+            string keyName = t.GetKeyName();
+            ////鐢熸垚鏌ヨ鏉′欢
+            //Expression<Func<TEntity, bool>> whereExpression = keyName.CreateExpression<TEntity>(pageData.Value, LinqExpressionType.Equal);
+            int totalCount = 0;
+            PropertyInfo propertyInfo = t.GetProperties().FirstOrDefault(x => x.GetCustomAttribute<Navigate>() != null);
+            if (propertyInfo != null)
+            {
+                Type detailType = propertyInfo.PropertyType.GetGenericArguments()[0];
+                Navigate navigate = propertyInfo.GetCustomAttribute<Navigate>();
+                List<Dt_ReceiveOrderDetail> list = BaseDal.Db.Queryable<Dt_ReceiveOrderDetail>().Where(navigate.GetName(), "=", pageData.Value).ToPageList(pageData.Page, pageData.Rows, ref totalCount);
+                decimal sum = 0;
+                list.ForEach(x =>
+                {
+                    sum += Convert.ToDecimal(x.ReceivedQuantity);
+                });
+                PageGridData<Dt_ReceiveOrderDetail> pageGridData = new PageGridData<Dt_ReceiveOrderDetail>()
+                {
+                    Total = totalCount,
+                    Rows = list,
+                    Summary = new
+                    {
+                        ReceivedQuantity = Math.Round(sum, 3),
+                    }
+                };
+                return pageGridData;
+            }
+            return new PageGridData<object>(total: 0, null);
         }
         /// <summary>
         /// 鏀惰揣瀹屾垚骞跺洖浼燛RP
@@ -196,11 +232,11 @@
                 List<Dt_ReceiveOrder> dt_ReceiveOrders = new List<Dt_ReceiveOrder>();
                 if (string.IsNullOrEmpty(orderNo))
                 {
-                    dt_ReceiveOrders = Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderStatus < ReceiveOrderStatusEnum.Completed.ObjToInt() && x.WarehouseId == warehouseId).ToPageList(pageNo, 5);
+                    dt_ReceiveOrders = Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderStatus < ReceiveOrderStatusEnum.Completed.ObjToInt() && x.WarehouseId == warehouseId).Includes(x=>x.Details).OrderByDescending(x=>x.ReceiveOrderId).ToPageList(pageNo, 5);
                 }
                 else
                 {
-                    dt_ReceiveOrders = Db.Queryable<Dt_ReceiveOrder>().Where(x => (x.ReceiveOrderNo.Contains(orderNo) || x.SuppliersId.Contains(orderNo)) && x.ReceiveOrderStatus < ReceiveOrderStatusEnum.Completed.ObjToInt() && x.WarehouseId == warehouseId).ToPageList(pageNo, 5);
+                    dt_ReceiveOrders = Db.Queryable<Dt_ReceiveOrder>().Where(x => (x.ReceiveOrderNo.Contains(orderNo) || x.SuppliersId.Contains(orderNo)) && x.ReceiveOrderStatus < ReceiveOrderStatusEnum.Completed.ObjToInt() && x.WarehouseId == warehouseId).OrderByDescending(x => x.ReceiveOrderId).Includes(x => x.Details).ToPageList(pageNo, 5);
                 }
 
                 content.OK(data: dt_ReceiveOrders);
@@ -244,20 +280,20 @@
                     return WebResponseContent.Instance.Error($"璇ユ敹璐у崟瀵瑰簲鐨勫叆搴撳崟宸插瓨鍦�");
                 }
                 #region 娉ㄩ噴
-                //List<Dt_CheckOrder> checkOrders = _checkOrderRepository.QueryData(x => x.ReceiveOrderNo == receiveOrder.ReceiveOrderNo);
-                //if (checkOrders.FirstOrDefault(x => x.CheckOrderStatus == CheckOrderStatusEnum.NotCheck.ObjToInt()) != null)
-                //{
-                //    return WebResponseContent.Instance.Error($"璇ユ敹璐у崟鏈川妫�瀹屾垚");
-                //}
+                List<Dt_CheckOrder> checkOrders = _checkOrderRepository.QueryData(x => x.ReceiveOrderNo == receiveOrder.ReceiveOrderNo);
+                if (checkOrders.FirstOrDefault(x => x.CheckOrderStatus == CheckOrderStatusEnum.NotCheck.ObjToInt()) != null)
+                {
+                    return WebResponseContent.Instance.Error($"璇ユ敹璐у崟鏈川妫�瀹屾垚");
+                }
 
-                ////if (checkOrders.FirstOrDefault(x => x.AuditStatus != AuditStatusEnum.Agree.ObjToInt()) != null)
-                ////{
-                ////    return WebResponseContent.Instance.Error($"璇ユ敹璐у崟璐ㄦ缁撴灉瀹℃壒鏈畬鎴�");
-                ////}
-                //if (checkOrders.FirstOrDefault(x => x.Result != CheckAcceptEnum.Accept.ToString()) != null)
+                //if (checkOrders.FirstOrDefault(x => x.AuditStatus != AuditStatusEnum.Agree.ObjToInt()) != null)
                 //{
-                //    return WebResponseContent.Instance.Error($"鏀惰揣鏄庣粏涓瓨鏈夎川妫�鏈�氳繃");
+                //    return WebResponseContent.Instance.Error($"璇ユ敹璐у崟璐ㄦ缁撴灉瀹℃壒鏈畬鎴�");
                 //}
+                if (checkOrders.FirstOrDefault(x => x.Result != CheckAcceptEnum.Accept.ToString()) != null)
+                {
+                    return WebResponseContent.Instance.Error($"鏀惰揣鏄庣粏涓瓨鏈夎川妫�鏈�氳繃");
+                }
                 #endregion
 
                 Dt_InboundOrder inboundOrder = new Dt_InboundOrder()
@@ -275,15 +311,15 @@
                 {
                     float quantity = item.ReceivedQuantity;
                     #region 娉ㄩ噴
-                    //if (item.IfInspection == WhetherEnum.True.ObjToInt())
-                    //{
-                    //    Dt_CheckOrder? checkOrder = checkOrders.FirstOrDefault(x => x.ReceiveOrderNo == receiveOrder.ReceiveOrderNo && x.ReceiveDetailRowNo == item.RowNo);
-                    //    if (checkOrder == null)
-                    //    {
-                    //        return WebResponseContent.Instance.Error($"璐ㄦ鍗曟暟鎹敊璇�");
-                    //    }
-                    //    quantity = checkOrder.QualifiedQuantity.GetValueOrDefault() + checkOrder.DefectedQuantity.GetValueOrDefault();
-                    //}
+                    if (item.IfInspection == WhetherEnum.True.ObjToInt())
+                    {
+                        Dt_CheckOrder? checkOrder = checkOrders.FirstOrDefault(x => x.ReceiveOrderNo == receiveOrder.ReceiveOrderNo && x.ReceiveDetailRowNo == item.RowNo);
+                        if (checkOrder == null)
+                        {
+                            return WebResponseContent.Instance.Error($"璐ㄦ鍗曟暟鎹敊璇�");
+                        }
+                        quantity = checkOrder.QualifiedQuantity.GetValueOrDefault() + checkOrder.DefectedQuantity.GetValueOrDefault();
+                    }
                     #endregion
                     Dt_InboundOrderDetail detail = new Dt_InboundOrderDetail()
                     {
@@ -300,13 +336,17 @@
                     };
                     inboundOrder.Details.Add(detail);
                 }
-
+                //鏇存柊鍏ュ簱鍗曞垱寤虹姸鎬�
+                receiveOrder.CreateInOrderStatus = WhetherEnum.True.ObjToInt();
+                _unitOfWorkManage.BeginTran();
+                BaseDal.UpdateData(receiveOrder);
                 _inboundRepository.InboundOrderRepository.Db.InsertNav(inboundOrder).Include(x => x.Details).ExecuteCommand();
-
+                _unitOfWorkManage.CommitTran();
                 return WebResponseContent.Instance.OK();
             }
             catch (Exception ex)
             {
+                _unitOfWorkManage.RollbackTran();
                 return WebResponseContent.Instance.Error(ex.Message);
             }
         }

--
Gitblit v1.9.3