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_OutboundService/ProOutOrderService.cs |  149 +++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 143 insertions(+), 6 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProOutOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProOutOrderService.cs"
index 9954061..0192475 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProOutOrderService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProOutOrderService.cs"
@@ -133,7 +133,7 @@
             WebResponseContent content = new WebResponseContent();
             try
             {
-
+                
             }
             catch (Exception ex)
             {
@@ -150,10 +150,24 @@
             WebResponseContent content = new WebResponseContent();
             try
             {
-
+                Dt_ProOutOrder proOutOrder = _outboundRepository.ProOutOrderRepository.Db.Queryable<Dt_ProOutOrder>().Where(x => x.ProOutOrderNo == outOrderDTO.OrderNo).Includes(x => x.Details).First();
+                if (proOutOrder==null)
+                {
+                    return content.Error($"鏈壘鍒板嚭搴撳崟{outOrderDTO.OrderNo}");
+                }
+                if (proOutOrder.ProOrderStatus==OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt() || proOutOrder.ProOrderStatus == OutOrderStatusEnum.鍑哄簱涓�.ObjToInt())
+                {
+                    return content.Error("鍑哄簱鍗曟墽琛屼腑");
+                }
+                _unitOfWorkManage.BeginTran();
+                _outboundRepository.ProOutOrderRepository.DeleteData(proOutOrder);
+                _outboundRepository.ProOutOrderDetailRepository.DeleteData(proOutOrder.Details);
+                _unitOfWorkManage.CommitTran();
+                content.OK("鎴愬姛");
             }
             catch (Exception ex)
             {
+                _unitOfWorkManage.RollbackTran();
                 content.Error(ex.Message);
             }
             return content;
@@ -162,11 +176,12 @@
         /// 鎴愬搧鍑哄緟鍙戣揣鍖�(骞冲簱)+鍚屾ERP鍑哄簱(缁戝畾浜嗗嚭搴撳崟搴撳瓨)
         /// </summary>
         /// <returns></returns>
-        public WebResponseContent OutProductPK(string[] OutPKCodes,string ProOutNo)
+        public WebResponseContent OutProductPK(SaveModel saveModel, string ProOutNo)
         {
             WebResponseContent content = new WebResponseContent();
             try
             {
+                List<string> OutPKCodes = saveModel.DelKeys.Select(x => x.ToString()).ToList();
                 if (OutPKCodes.IsNullOrEmpty())
                 {
                     return content.Error("涓嶈兘涓虹┖");
@@ -190,7 +205,7 @@
                     return content.Error($"鍑哄簱鍗晎ProOutNo}宸叉棤缁戝畾搴撳瓨");
                 }
                 List<Dt_ProStockInfo> proStockInfos = new List<Dt_ProStockInfo>();
-                List<Dt_ProStockInfoDetail> proStockInfoDetails=new List<Dt_ProStockInfoDetail>();
+                List<Dt_ProStockInfoDetail> proStockInfoDetails = new List<Dt_ProStockInfoDetail>();
                 List<Dt_Warehouse> warehouses = _basicRepository.WarehouseRepository.QueryData(x => x.WarehouseType == WarehouseTypEnum.鎴愬搧.ToString());
                 foreach (var item in OutPKCodes)
                 {
@@ -291,6 +306,11 @@
                     };
                     _stockRepository.ProStockInfoRepository.DeleteAndMoveIntoHty(proStockInfos, OperateTypeEnum.鑷姩瀹屾垚);
                     _stockRepository.ProStockInfoDetailRepository.DeleteAndMoveIntoHty(proStockInfoDetails, OperateTypeEnum.鑷姩瀹屾垚);
+                    WebResponseContent contentSaveInfos = SaveOutProPKInfos(proStockInfos);
+                    if (!contentSaveInfos.Status)
+                    {
+                        throw new Exception(contentSaveInfos.Message);
+                    };
                     string response = _invokeERPService.InvokeProOutApi(proOutOrderModel);
                     ErpRequestContent erpRequestContent = response.DeserializeObject<ErpRequestContent>();
                     if (erpRequestContent.res != 1)
@@ -319,6 +339,65 @@
             catch (Exception ex)
             {
                 _unitOfWorkManage.RollbackTran();
+                content.Error(ex.Message);
+            }
+            return content;
+        }
+        /// <summary>
+        /// 鑾峰彇鍑哄簱鎵�鏈夌殑澶栧唴鍖呮槑缁�
+        /// </summary>
+        /// <param name="proStockInfos"></param>
+        /// <returns></returns>
+        public WebResponseContent SaveOutProPKInfos(List<Dt_ProStockInfo> proStockInfos)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                List<Dt_OutProPKStockInfo> outProPKStockInfos = new List<Dt_OutProPKStockInfo>();
+                foreach (var fromItem in proStockInfos)
+                {
+                    foreach (var lordItem in fromItem.proStockInfoDetails)
+                    {
+                        Dt_OutProPKStockInfo outProPKStockInfo = new Dt_OutProPKStockInfo()
+                        {
+                            PCode = lordItem.ProductCode,
+                            PVer=lordItem.ProductVersion,
+                            PLot=lordItem.ProductVersion,
+                            DateCode=lordItem.DateCode,
+                            StockId=fromItem.Id,
+                            OriginalQuantity=lordItem.StockPcsQty,
+                            AssignQuantity=lordItem.StockPcsQty,
+                            PalletCode=fromItem.PalletCode,
+                            Unit="PCS"
+                        };
+                        outProPKStockInfos.Add(outProPKStockInfo);
+                    }
+                }
+                Db.InsertNav(outProPKStockInfos).Include(x=>x).ExecuteCommand();
+                content.OK();
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+            return content;
+        }
+        //鏍规嵁鍐呭寘鍑哄簱
+        public WebResponseContent BagProductPK(SaveModel saveModel)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                var outOrder = saveModel.MainData["proOutNo"].ToString();
+                var outBags = saveModel.DelKeys.Select(x => x.ToString()).ToList();
+                if (outBags.Count<=0)
+                {
+                    return content.Error("鍐呭寘淇℃伅鑾峰彇澶辫触");
+                }
+
+            }
+            catch (Exception ex)
+            {
                 content.Error(ex.Message);
             }
             return content;
@@ -449,8 +528,8 @@
                     {
                         Way = 1,
                         StockOutCode = _outboundOrderService.CreateCodeByRule(nameof(RuleCodeEnum.ProOutCOdeRule)),
-                        ConfirmedUserNo = "admin",
-                        AssignUserNo = "admin",
+                        ConfirmedUserNo = App.User.UserName,
+                        AssignUserNo = App.User.UserName,
                         WarehouseCode = warehouse.WarehouseCode,
                         ShipDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                         DeliverplanCode = proOutOrder.ProOutOrderNo,
@@ -482,5 +561,63 @@
             }
             return content;
         }
+        /// <summary>
+        /// PDA鑾峰彇鍑哄簱鍗曟嵁
+        /// </summary>
+        /// <param name="saveModel"></param>
+        /// <returns></returns>
+        public WebResponseContent GetProOutOrders(SaveModel saveModel)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                int pageNo = saveModel.MainData["pageNo"].ObjToInt();
+                int warehouseId = saveModel.MainData["warehouseId"].ObjToInt();
+                string orderNo = saveModel.MainData["orderNo"].ToString();
+                List<Dt_ProOutOrder> proOutOrders = new List<Dt_ProOutOrder>();
+                if (string.IsNullOrEmpty(orderNo))
+                {
+                    proOutOrders = Db.Queryable<Dt_ProOutOrder>().Where(x => x.ProOrderStatus == OutOrderStatusEnum.鍑哄簱涓�.ObjToInt() && x.WarehouseId == warehouseId).Includes(x=>x.Details).OrderByDescending(x => x.Id).ToPageList(pageNo, 5);
+                }
+                else
+                {
+                    proOutOrders = Db.Queryable<Dt_ProOutOrder>().Where(x => (x.ProOutOrderNo.Contains(orderNo) || x.ProOutOrderNo.Contains(orderNo)) && x.ProOrderStatus == OutOrderStatusEnum.鍑哄簱涓�.ObjToInt() && x.WarehouseId == warehouseId).OrderByDescending(x => x.Id).Includes(x => x.Details).ToPageList(pageNo, 5);
+                }
+
+                content.OK(data: proOutOrders);
+            }
+            catch (Exception)
+            {
+
+                throw;
+            }
+            return content;
+        }
+        /// <summary>
+        /// 鑾峰彇鎵爜鑾峰彇璁㈠崟鏄庣粏淇℃伅
+        /// </summary>
+        public WebResponseContent GetOrderDetails(int keyId)
+        {
+            WebResponseContent content=new WebResponseContent();
+            try
+            {
+                //鑾峰彇鍑哄簱鍗曞彿
+                Dt_ProOutOrder proOutOrder = BaseDal.QueryFirst(x => x.Id == keyId);
+                if (proOutOrder == null)
+                {
+                    return content.Error($"鏈壘鍒板嚭搴撳崟{proOutOrder.ProOutOrderNo}");
+                }
+                //鑾峰彇褰撳墠宸茬粦瀹氱殑澶栧寘鐮�(鍑哄簱鐘舵��)
+                List<string> outBags = _stockRepository.ProStockInfoRepository.QueryData(x => x.StockStatus == StockStatusEmun.骞冲簱寰呭彂璐�.ObjToInt() && x.ShipmentOrder== proOutOrder.ProOutOrderNo).Select(x=>x.PalletCode).ToList();
+                //鑾峰彇鏄庣粏
+                List<Dt_ProOutOrderDetail> proOutOrderDetails = _outboundRepository.ProOutOrderDetailRepository.QueryData(x=>x.ProOrderId==keyId).OrderBy(x=>x.ProOrderDetailStatus).ThenBy(x=>x.Id).ToList();
+                content.OK("鎴愬姛", new { outBags, proOutOrderDetails });
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+            return content;
+        }
     }
 }

--
Gitblit v1.9.3