From e4a391c581aaca1fa7b0239bc96375d0c0cb8de6 Mon Sep 17 00:00:00 2001
From: yangpeixing <yangpeixing@hnkhzn.com>
Date: 星期三, 04 二月 2026 08:55:49 +0800
Subject: [PATCH] 1

---
 WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutboundOrderService.cs |  209 ++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 171 insertions(+), 38 deletions(-)

diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutboundOrderService.cs b/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutboundOrderService.cs
index 89cd668..1fa3a06 100644
--- a/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutboundOrderService.cs
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutboundOrderService.cs
@@ -41,11 +41,13 @@
         private readonly IOutboundOrder_HtyService _outboundOrder_HtyService;
         private readonly IOutboundOrderDetail_HtyService _outboundOrderDetail_HtyService;
         private readonly IOutboundOrderDetailService _outboundOrderDetailService;
+        private readonly INewOutboundOrderDetailService _newOutboundOrderDetailService;
+        private readonly INewOutboundOrderService _newOutboundOrderService;
         //private readonly ITaskService _taskService;
 
         public IOutboundOrderRepository Repository => BaseDal;
 
-        public OutboundOrderService(IOutboundOrderRepository BaseDal, IMapper mapper, IMaterielInfoService materielInfoService, IUnitOfWorkManage unitOfWorkManage, IOutboundOrderDetailService outboundOrderDetailService, IOutboundOrder_HtyService outboundOrder_HtyService, IOutboundOrderDetail_HtyService outboundOrderDetail_HtyService, IStockInfoDetailService stockDetailService, IStockInfoService stockInfoService) : base(BaseDal)
+        public OutboundOrderService(IOutboundOrderRepository BaseDal, IMapper mapper, IMaterielInfoService materielInfoService, IUnitOfWorkManage unitOfWorkManage, IOutboundOrderDetailService outboundOrderDetailService, IOutboundOrder_HtyService outboundOrder_HtyService, IOutboundOrderDetail_HtyService outboundOrderDetail_HtyService, IStockInfoDetailService stockDetailService, IStockInfoService stockInfoService, INewOutboundOrderDetailService newOutboundOrderDetailService, INewOutboundOrderService newOutboundOrderService) : base(BaseDal)
         {
             _mapper = mapper;
             _unitOfWorkManage = unitOfWorkManage;
@@ -53,8 +55,10 @@
             _stockDetailService = stockDetailService;
             _stockService = stockInfoService;
             _outboundOrder_HtyService = outboundOrder_HtyService;
-            _outboundOrderDetail_HtyService = outboundOrderDetail_HtyService; 
+            _outboundOrderDetail_HtyService = outboundOrderDetail_HtyService;
             _outboundOrderDetailService = outboundOrderDetailService;
+            _newOutboundOrderDetailService = newOutboundOrderDetailService;
+            _newOutboundOrderService = newOutboundOrderService;
             //_taskService = taskService;
         }
 
@@ -66,7 +70,7 @@
             {
                 BatchNo = x.FirstOrDefault()?.BatchNo ?? "",
                 MaterielCode = x.Key,
-                MaterielName = x.FirstOrDefault()?.MaterielName??"",
+                MaterielName = x.FirstOrDefault()?.MaterielName ?? "",
                 OrderQuantity = x.Sum(x => x.OrderQuantity),
                 Remark = x.FirstOrDefault(v => !string.IsNullOrEmpty(v.Remark))?.Remark ?? ""
             }).ToList();
@@ -169,56 +173,185 @@
                 OutboundOrderAddDTO orderAddDTO1 = new OutboundOrderAddDTO();
                 orderAddDTO1.OrderNo = houseCancelOut.No;
                 orderAddDTO1.Details = houseCancelOut.DetailList.DicToIEnumerable<OutboundOrderDetailAddDTO>();
-                Dt_OutboundOrder oldOutboundOrder = BaseDal.Db.Queryable<Dt_OutboundOrder>().Where(x => x.OrderNo == orderAddDTO1.OrderNo).Includes(x => x.Details).First();
-                Dt_OutboundOrderDetail OutboundOrderDetail = BaseDal.Db.Queryable<Dt_OutboundOrderDetail>().Where(x => x.OrderId == oldOutboundOrder.Id).First();
+                Dt_OutboundOrder? oldOutboundOrder = BaseDal.Db.Queryable<Dt_OutboundOrder>().Where(x => x.OrderNo == orderAddDTO1.OrderNo).Includes(x => x.Details).First();
                 if (oldOutboundOrder == null)
                 {
                     return WebResponseContent.Instance.Error("鏈壘鍒版鍑哄簱鍗曟嵁");
                 }
-                if (oldOutboundOrder.OrderStatus == OutboundStatusEnum.鍑哄簱瀹屾垚.ObjToInt())
+                if (oldOutboundOrder != null)
                 {
-                    return WebResponseContent.Instance.OK();
-                }
-                oldOutboundOrder.OrderStatus = InboundStatusEnum.鍙栨秷.ObjToInt();
-                BaseDal.UpdateData(oldOutboundOrder);
+                    Dt_OutboundOrderDetail OutboundOrderDetail = BaseDal.Db.Queryable<Dt_OutboundOrderDetail>().Where(x => x.OrderId == oldOutboundOrder.Id).First();
 
-                Dt_OutboundOrder_Hty inboundOrder_Hty = new Dt_OutboundOrder_Hty
-                {
-                    OrderStatus = oldOutboundOrder.OrderStatus,
-                    CreateType = oldOutboundOrder.CreateType,
-                    //SourceId = oldOutboundOrder.SourceId,
-                    UpperOrderNo = oldOutboundOrder.UpperOrderNo,
-                    OrderNo = oldOutboundOrder.OrderNo,
-                    OutWareHouse = oldOutboundOrder.OutWareHouse,
-                    TransactionCode = oldOutboundOrder.TransactionCode,
-                    InoutType = oldOutboundOrder.InoutType,
-                    OrderType = oldOutboundOrder.OrderType,
-                    Creater = "WMS",
-                    CreateDate = DateTime.Now,
-                };
-                _outboundOrder_HtyService.AddData(inboundOrder_Hty);
-
-                foreach (var item in oldOutboundOrder.Details)
-                {
-                    Dt_OutboundOrderDetail_Hty dt_InboundOrderDetail_Hty = new Dt_OutboundOrderDetail_Hty
+                    if (oldOutboundOrder.OrderStatus > OutOrderStatusEnum.鏈紑濮�.ObjToInt())
                     {
-                        OrderId = OutboundOrderDetail.OrderId,
-                        MaterielCode = OutboundOrderDetail.MaterielCode,
-                        MaterielName = OutboundOrderDetail.MaterielName,
-                        BatchNo = OutboundOrderDetail.BatchNo,
-                        OrderQuantity = OutboundOrderDetail.OrderQuantity,
-                        OrderDetailStatus = OutboundOrderDetail.OrderDetailStatus,
+                        return WebResponseContent.Instance.Error("姝ゅ崟鎹凡寮�濮嬫墽琛岋紝涓嶅厑璁稿彇娑�");
+                    }
+                    oldOutboundOrder.OrderStatus = OutboundStatusEnum.鍙栨秷.ObjToInt();
+                    _unitOfWorkManage.BeginTran();
+                    BaseDal.UpdateData(oldOutboundOrder);
+
+                    Dt_OutboundOrder_Hty inboundOrder_Hty = new Dt_OutboundOrder_Hty
+                    {
+                        OrderStatus = oldOutboundOrder.OrderStatus,
+                        CreateType = oldOutboundOrder.CreateType,
+                        //SourceId = oldOutboundOrder.SourceId,
+                        UpperOrderNo = oldOutboundOrder.UpperOrderNo,
+                        OrderNo = oldOutboundOrder.OrderNo,
+                        OutWareHouse = oldOutboundOrder.OutWareHouse,
+                        TransactionCode = oldOutboundOrder.TransactionCode,
+                        InoutType = oldOutboundOrder.InoutType,
+                        OrderType = oldOutboundOrder.OrderType,
                         Creater = "WMS",
                         CreateDate = DateTime.Now,
                     };
-                    _outboundOrderDetail_HtyService.AddData(dt_InboundOrderDetail_Hty);
-                    _outboundOrderDetailService.DeleteData(item);
+                    _outboundOrder_HtyService.AddData(inboundOrder_Hty);
+
+                    foreach (var item in oldOutboundOrder.Details)
+                    {
+                        Dt_OutboundOrderDetail_Hty dt_InboundOrderDetail_Hty = new Dt_OutboundOrderDetail_Hty
+                        {
+                            OrderId = OutboundOrderDetail.OrderId,
+                            MaterielCode = OutboundOrderDetail.MaterielCode,
+                            MaterielName = OutboundOrderDetail.MaterielName,
+                            BatchNo = OutboundOrderDetail.BatchNo,
+                            OrderQuantity = OutboundOrderDetail.OrderQuantity,
+                            OrderDetailStatus = OutboundOrderDetail.OrderDetailStatus,
+                            Creater = "WMS",
+                            CreateDate = DateTime.Now,
+                        };
+                        _outboundOrderDetail_HtyService.AddData(dt_InboundOrderDetail_Hty);
+                        _outboundOrderDetailService.DeleteData(item);
+                    }
+                    BaseDal.DeleteData(oldOutboundOrder);
                 }
-                BaseDal.DeleteData(oldOutboundOrder);
+                _unitOfWorkManage.CommitTran();
+                //Dt_NewOutboundOrder dt_NewOutboundOrder = BaseDal.Db.Queryable<Dt_NewOutboundOrder>().Where(x => x.OrderNo == orderAddDTO1.OrderNo).Includes(x => x.Details).First();
+                //if (dt_NewOutboundOrder == null)
+                //{
+                //    return WebResponseContent.Instance.Error("鏈壘鍒版鍑哄簱鍗曟嵁");
+                //}
+                //if (dt_NewOutboundOrder != null)
+                //{
+
+                //    if (dt_NewOutboundOrder.OrderStatus > OutOrderStatusEnum.鏈紑濮�.ObjToInt())
+                //    {
+                //        return WebResponseContent.Instance.Error("姝ゅ崟鎹凡寮�濮嬫墽琛岋紝涓嶅厑璁稿彇娑�");
+                //    }
+                //    List<Dt_NewOutboundOrderDetail> newOutboundOrderDetail = BaseDal.Db.Queryable<Dt_NewOutboundOrderDetail>().Where(x => x.OrderId == dt_NewOutboundOrder.Id).ToList();
+                //    dt_NewOutboundOrder.OrderStatus = OutboundStatusEnum.鍙栨秷.ObjToInt();
+                //    foreach (var item in newOutboundOrderDetail)
+                //    {
+                //        item.OrderDetailStatus = OutboundStatusEnum.鍙栨秷.ObjToInt();
+                //    }
+                //    _newOutboundOrderService.UpdateData(dt_NewOutboundOrder);
+                //    _newOutboundOrderDetailService.UpdateData(newOutboundOrderDetail);
+                //}
                 content = WebResponseContent.Instance.OK();
             }
             catch (Exception ex)
             {
+                _unitOfWorkManage.RollbackTran();
+                content = WebResponseContent.Instance.Error(ex.Message);
+            }
+            finally
+            {
+
+            }
+            return content;
+        }
+
+
+        /// <summary>
+        /// 鎴愬搧鍑哄簱鍗曟嵁鍙栨秷
+        /// </summary>
+        /// <param name="houseCancelOut"></param>
+        /// <returns></returns>
+        public WebResponseContent NewCancelOut(HouseCancelOut houseCancelOut)
+        {
+            WebResponseContent content = new();
+            try
+            {
+                OutboundOrderAddDTO orderAddDTO1 = new OutboundOrderAddDTO();
+                orderAddDTO1.OrderNo = houseCancelOut.No;
+                orderAddDTO1.Details = houseCancelOut.DetailList.DicToIEnumerable<OutboundOrderDetailAddDTO>();
+                Dt_NewOutboundOrder? oldOutboundOrder = BaseDal.Db.Queryable<Dt_NewOutboundOrder>().Where(x => x.OrderNo == orderAddDTO1.OrderNo).Includes(x => x.Details).First();
+                if (oldOutboundOrder == null)
+                {
+                    return WebResponseContent.Instance.Error("鏈壘鍒版鍑哄簱鍗曟嵁");
+                }
+                if (oldOutboundOrder != null)
+                {
+                    Dt_NewOutboundOrderDetail OutboundOrderDetail = BaseDal.Db.Queryable<Dt_NewOutboundOrderDetail>().Where(x => x.OrderId == oldOutboundOrder.Id).First();
+
+                    if (oldOutboundOrder.OrderStatus > OutOrderStatusEnum.鏈紑濮�.ObjToInt())
+                    {
+                        return WebResponseContent.Instance.Error("姝ゅ崟鎹凡寮�濮嬫墽琛岋紝涓嶅厑璁稿彇娑�");
+                    }
+                    oldOutboundOrder.OrderStatus = OutboundStatusEnum.鍙栨秷.ObjToInt();
+                    _unitOfWorkManage.BeginTran();
+                    _newOutboundOrderService.UpdateData(oldOutboundOrder);
+
+                    Dt_OutboundOrder_Hty inboundOrder_Hty = new Dt_OutboundOrder_Hty
+                    {
+                        OrderStatus = oldOutboundOrder.OrderStatus,
+                        CreateType = oldOutboundOrder.CreateType,
+                        //SourceId = oldOutboundOrder.SourceId,
+                        UpperOrderNo = oldOutboundOrder.UpperOrderNo,
+                        OrderNo = oldOutboundOrder.OrderNo,
+                        OutWareHouse = oldOutboundOrder.OutWareHouse,
+                        TransactionCode = oldOutboundOrder.TransactionCode,
+                        InoutType = oldOutboundOrder.InoutType,
+                        OrderType = oldOutboundOrder.OrderType,
+                        Creater = "WMS",
+                        CreateDate = DateTime.Now,
+                    };
+                    _outboundOrder_HtyService.AddData(inboundOrder_Hty);
+
+                    foreach (var item in oldOutboundOrder.Details)
+                    {
+                        Dt_OutboundOrderDetail_Hty dt_InboundOrderDetail_Hty = new Dt_OutboundOrderDetail_Hty
+                        {
+                            OrderId = OutboundOrderDetail.OrderId,
+                            MaterielCode = OutboundOrderDetail.MaterielCode,
+                            MaterielName = OutboundOrderDetail.MaterielName,
+                            BatchNo = OutboundOrderDetail.BatchNo,
+                            OrderQuantity = OutboundOrderDetail.OrderQuantity,
+                            OrderDetailStatus = OutboundOrderDetail.OrderDetailStatus,
+                            Creater = "WMS",
+                            CreateDate = DateTime.Now,
+                        };
+                        _outboundOrderDetail_HtyService.AddData(dt_InboundOrderDetail_Hty);
+                        _newOutboundOrderDetailService.DeleteData(item);
+                    }
+                    _newOutboundOrderService.DeleteData(oldOutboundOrder);
+                }
+                _unitOfWorkManage.CommitTran();
+                //Dt_NewOutboundOrder dt_NewOutboundOrder = BaseDal.Db.Queryable<Dt_NewOutboundOrder>().Where(x => x.OrderNo == orderAddDTO1.OrderNo).Includes(x => x.Details).First();
+                //if (dt_NewOutboundOrder == null)
+                //{
+                //    return WebResponseContent.Instance.Error("鏈壘鍒版鍑哄簱鍗曟嵁");
+                //}
+                //if (dt_NewOutboundOrder != null)
+                //{
+
+                //    if (dt_NewOutboundOrder.OrderStatus > OutOrderStatusEnum.鏈紑濮�.ObjToInt())
+                //    {
+                //        return WebResponseContent.Instance.Error("姝ゅ崟鎹凡寮�濮嬫墽琛岋紝涓嶅厑璁稿彇娑�");
+                //    }
+                //    List<Dt_NewOutboundOrderDetail> newOutboundOrderDetail = BaseDal.Db.Queryable<Dt_NewOutboundOrderDetail>().Where(x => x.OrderId == dt_NewOutboundOrder.Id).ToList();
+                //    dt_NewOutboundOrder.OrderStatus = OutboundStatusEnum.鍙栨秷.ObjToInt();
+                //    foreach (var item in newOutboundOrderDetail)
+                //    {
+                //        item.OrderDetailStatus = OutboundStatusEnum.鍙栨秷.ObjToInt();
+                //    }
+                //    _newOutboundOrderService.UpdateData(dt_NewOutboundOrder);
+                //    _newOutboundOrderDetailService.UpdateData(newOutboundOrderDetail);
+                //}
+                content = WebResponseContent.Instance.OK();
+            }
+            catch (Exception ex)
+            {
+                _unitOfWorkManage.RollbackTran();
                 content = WebResponseContent.Instance.Error(ex.Message);
             }
             finally

--
Gitblit v1.9.3