From 24e1afea871c5f24d6018f560389359e143031cd Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期一, 27 十月 2025 10:45:16 +0800
Subject: [PATCH] 添加出入库单人工完成功能

---
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs |   66 +++++++++++++++++++++++++++------
 1 files changed, 54 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/DeliveryOrderServices.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs"
index c2c41ea..78352b9 100644
--- "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs"
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs"
@@ -43,8 +43,9 @@
         private readonly ISupplyTaskService _supplyTaskService;
         private readonly ISupplyTaskHtyService _supplyTaskHtyService;
         private readonly ITacticsService _tacticsService;
+        private readonly IMessageInfoService _messageInfoService;
         public IRepository<Dt_DeliveryOrder> Repository => BaseDal;
-        public DeliveryOrderServices(IRepository<Dt_DeliveryOrder> BaseDal, IBasicService basicService, IUnitOfWorkManage unitOfWorkManage, IInventory_BatchServices inventory_BatchServices, IInventoryInfoService inventoryInfoService, IDeliveryOrderDetailServices deliveryOrderDetailServices, ISupplyTaskService supplyTaskService, ICabinOrderServices cabinOrderServices, ITacticsService tacticsService, ISupplyTaskHtyService supplyTaskHtyService) : base(BaseDal)
+        public DeliveryOrderServices(IRepository<Dt_DeliveryOrder> BaseDal, IBasicService basicService, IUnitOfWorkManage unitOfWorkManage, IInventory_BatchServices inventory_BatchServices, IInventoryInfoService inventoryInfoService, IDeliveryOrderDetailServices deliveryOrderDetailServices, ISupplyTaskService supplyTaskService, ICabinOrderServices cabinOrderServices, ITacticsService tacticsService, ISupplyTaskHtyService supplyTaskHtyService, IMessageInfoService messageInfoService) : base(BaseDal)
         {
             _basicService = basicService;
             _unitOfWorkManage = unitOfWorkManage;
@@ -55,6 +56,7 @@
             _cabinOrderServices = cabinOrderServices;
             _tacticsService = tacticsService;
             _supplyTaskHtyService = supplyTaskHtyService;
+            _messageInfoService = messageInfoService;
         }
         #region 鍒涘缓鍑哄簱鍗�
         /// <summary>
@@ -555,7 +557,7 @@
                         if (Qty != item.order_qty) throw new Exception($"鐩樼泩鍏ュ簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐩樼泩鏁伴噺鏈夎");
                         //鎵炬墍鏈夊簱瀛�
                         List<Dt_InventoryInfo> inventoryInfos = _inventoryInfoService.Repository.QueryData(x => x.MaterielCode == inventory_Batch.MaterielCode && x.BatchNo == inventory_Batch.BatchNo);
-                        //鑾峰彇绔嬪簱鐩樼偣宸紓鏁�
+                        //鑾峰彇绔嬪簱鐩樼偣宸紓鏁�.銆傘�傘�傘�傘�傘�傘�傘�傘�傘�傘�傘��
                         var inventoryLK = inventoryInfos.Where(x => x.WarehouseCode == WareCodeLK).First();
                         var LkQty = Math.Abs(inventoryLK.StockQuantity - inventoryLK.SupplyQuantity);
                         //鑾峰彇澶т欢搴撶洏鐐瑰樊寮傛暟
@@ -624,7 +626,8 @@
                                     Status = 2,
                                 }).ToList()
                             };
-                            Repository.AddData(entityOrder);
+                            Db.InsertNav(entityOrder).Include(it => it.Details).ExecuteCommand();
+                            //Repository.AddData(entityOrder);
                             #endregion
                         }
                         else
@@ -653,7 +656,7 @@
                                         OrderNo = order.order_no,
                                         StockQuantity = Math.Abs(inventoryInfo.StockQuantity - inventoryInfo.SupplyQuantity),
                                         SupplyQuantity = 0,
-                                        Remark = "鐩樼泩鍏ュ簱"
+                                        Remark = "鐩樹簭鍑哄簱"
                                     };
                                     _supplyTaskHtyService.AddData(supplyTask_Hty);
                                 }
@@ -689,7 +692,8 @@
                                         Status = 2,
                                     }).ToList()
                                 };
-                                Repository.AddData(cabinOrder);
+                                //Repository.AddData(cabinOrder);
+                                Db.InsertNav(cabinOrder).Include(it => it.Details).ExecuteCommand();
                             }
                             #endregion
 
@@ -714,15 +718,17 @@
                                     Status = 0,
                                 }).ToList()
                             };
-                            Repository.AddData(entityOrder);
+                            Db.InsertNav(entityOrder).Include(it => it.Details).ExecuteCommand();
+                            //Repository.AddData(entityOrder);
                             #endregion
                         }
+                        return WebResponseContent.Instance.OK("鎴愬姛");
                     }
                 }
             }
-            catch (Exception e)
+            catch (Exception ex)
             {
-                content.Error(e.Message);
+                content.Error(ex.Message);
             }
             return content;
         }
@@ -858,7 +864,7 @@
                 Dt_SupplyTask supplyTask = _supplyTaskService.Repository.QueryFirst(x => x.TaskId == TaskId && x.TaskStatus == SupplyStatusEnum.NewOut.ObjToInt());
                 if (supplyTask == null) throw new Exception("褰撳墠鍑哄簱浠诲姟宸插畬鎴�");
                 if (supplyTask.LocationCode != LocationCode) throw new Exception($"褰撳墠鍑哄簱璐т綅銆恵LocationCode}銆戜笌浠诲姟鍒嗛厤璐т綅涓嶅尮閰�");
-                OutTaskFinish(supplyTask);
+                content = OutTaskFinish(supplyTask);
             }
             catch (Exception ex)
             {
@@ -872,11 +878,10 @@
             WebResponseContent content = new WebResponseContent();
             try
             {
-
-                Dt_DeliveryOrder cabinOrder = BaseDal.Db.Queryable<Dt_DeliveryOrder>().Where(x => x.Out_no == supplyTask.OrderNo && x.Warehouse_no == supplyTask.WarehouseCode).Includes(x => x.Details).First();
+                Dt_DeliveryOrder? cabinOrder = BaseDal.Db.Queryable<Dt_DeliveryOrder>().Where(x => x.Out_no == supplyTask.OrderNo && x.Warehouse_no == supplyTask.WarehouseCode).Includes(x => x.Details).First();
                 if (cabinOrder == null) return WebResponseContent.Instance.Error($"鍑哄簱鍗曞凡瀹屾垚");
 
-                Dt_DeliveryOrderDetail cabinOrderDetail = cabinOrder.Details.Where(x => x.Batch_num == supplyTask.BatchNo && x.Reservoirarea == supplyTask.WarehouseCode && x.Goods_no == supplyTask.MaterielCode).First();
+                Dt_DeliveryOrderDetail? cabinOrderDetail = cabinOrder.Details.Where(x => x.Batch_num == supplyTask.BatchNo && x.Reservoirarea == supplyTask.WarehouseCode && x.Goods_no == supplyTask.MaterielCode).FirstOrDefault();
                 if (cabinOrderDetail == null) return WebResponseContent.Instance.Error($"鍑哄簱鍗曟槑缁嗗凡瀹屾垚");
                 Dt_MaterielInfo materielInfo = _basicService.MaterielInfoService.Repository.QueryFirst(x => x.MaterielCode == cabinOrderDetail.Goods_no);
                 if (materielInfo == null) return WebResponseContent.Instance.Error($"璇风淮鎶ょ墿鏂欑紪鍙枫�恵cabinOrderDetail.Goods_no}銆戠殑鐗╂枡淇℃伅");
@@ -965,5 +970,42 @@
             }
             return content;
         }
+
+        public WebResponseContent FinishOutOrder(int key)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                Dt_DeliveryOrder deliveryOrder = BaseDal.QueryFirst(x => x.Id == key);
+                List<Dt_DeliveryOrder> deliveryOrders = Db.Queryable<Dt_DeliveryOrder>().Where(x => x.Out_no == deliveryOrder.Out_no).Includes(x => x.Details).ToList();//鎵惧嚭鎵�鏈夊嚭搴撳崟鍙风浉鍚岀殑鍑哄簱鍗�
+                _unitOfWorkManage.BeginTran();
+                foreach (var item in deliveryOrders)
+                {
+                    if (item.Details != null)
+                        _deliveryOrderDetailServices.Repository.DeleteAndMoveIntoHty(item.Details, OperateTypeEnum.浜哄伐瀹屾垚);
+                    item.Modifier = App.User.UserName;
+                    item.ModifyDate = DateTime.Now;
+                    item.Details = null;
+                }
+                BaseDal.DeleteAndMoveIntoHty(deliveryOrders, OperateTypeEnum.浜哄伐瀹屾垚);
+                var url = "http://121.37.118.63:80/GYZ2/95fck/outOrderOk";
+                var requestDate = new
+                {
+                    order_no = deliveryOrder.Out_no
+                };
+                var result = HttpHelper.Post(url, requestDate.ToJsonString());
+                var response = JsonConvert.DeserializeObject<UpstreamOrderResponse>(result);
+                if (response == null) throw new Exception("涓婃姤ERP鍑哄簱鍗曞畬鎴愬け璐ワ紒");
+                if (response.resultCode != "0") throw new Exception(response.resultMsg);
+                _unitOfWorkManage.CommitTran();
+                content.OK();
+            }
+            catch (Exception ex)
+            {
+                _unitOfWorkManage.RollbackTran();
+                content.Error(ex.Message);
+            }
+            return content;
+        }
     }
 }

--
Gitblit v1.9.3