From df97e66f99cf081abf212a8d97fc32afe9c6e7a7 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期五, 17 一月 2025 13:46:32 +0800
Subject: [PATCH] 更新配置文件PDA版本

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/PurchaseOrderService.cs |   88 ++++++++++++++++++++++++++++++++++----------
 1 files changed, 68 insertions(+), 20 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/PurchaseOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/PurchaseOrderService.cs"
index 4262788..1e593eb 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/PurchaseOrderService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/PurchaseOrderService.cs"
@@ -3,6 +3,7 @@
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using WIDESEA_BasicRepository;
 using WIDESEA_Common.OrderEnum;
 using WIDESEA_Core;
 using WIDESEA_Core.BaseRepository;
@@ -10,6 +11,8 @@
 using WIDESEA_Core.Enums;
 using WIDESEA_Core.Helper;
 using WIDESEA_DTO;
+using WIDESEA_DTO.Basic;
+using WIDESEA_IBasicRepository;
 using WIDESEA_IInboundRepository;
 using WIDESEA_IInboundService;
 using WIDESEA_InboundRepository;
@@ -21,30 +24,43 @@
     {
         private readonly IUnitOfWorkManage _unitOfWorkManage;
         private readonly IPurchaseOrderDetailRepository _purchaseOrderDetailRepository;
+        private readonly IBasicRepository _basicRepository;
+        private readonly ISupplierInfoRepository _supplierInfoRepository;
+        private readonly IMaterielInfoRepository _materielInfoRepository;
 
-        public PurchaseOrderService(IPurchaseOrderRepository BaseDal, IPurchaseOrderDetailRepository purchaseOrderDetailRepository, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+        public PurchaseOrderService(IPurchaseOrderRepository BaseDal, IPurchaseOrderDetailRepository purchaseOrderDetailRepository, IUnitOfWorkManage unitOfWorkManage, IBasicRepository basicRepository, ISupplierInfoRepository supplierInfoRepository, IMaterielInfoRepository materielInfoRepository) : base(BaseDal)
         {
             _purchaseOrderDetailRepository = purchaseOrderDetailRepository;
             _unitOfWorkManage = unitOfWorkManage;
+            _basicRepository = basicRepository;
+            _supplierInfoRepository = supplierInfoRepository;
+            _materielInfoRepository = materielInfoRepository;
         }
-
-        public WebResponseContent ReceivePurchaseOrderSingle(PurchaseOrderModel model)
+        public WebResponseContent GetPurchaseOrderInfo(string purchaseOrderNo)
         {
             try
             {
-                switch (model.Way)
+                Dt_PurchaseOrder purchaseOrder = BaseDal.Db.Queryable<Dt_PurchaseOrder>().Where(x => x.PurchaseOrderNo == purchaseOrderNo).Includes(x => x.Details).First();
+                List<string> MaterielCodes = purchaseOrder.Details.Where(x => x.PurchaseDetailStatus != PurchaseOrderDetailStatusEnum.Received.ObjToInt()).Select(x => x.MaterielCode).ToList();
+                return WebResponseContent.Instance.OK(data: MaterielCodes);
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+        public WebResponseContent ReceivePurchaseOrder(PurchaseOrderModel model)
+        {
+            try
+            {
+                return model.Way switch
                 {
-                    case 1:
-                        return AddPurchaseOrder(model);
-                    case 2:
-                        return UpdatePurchaseOrder(model);
-                    case 3:
-                        return DeletePurchaseOrder(model);
-                    case 4:
-                        return ClosePurchaseOrder(model);
-                }
-
-                return WebResponseContent.Instance.OK();
+                    1 => AddPurchaseOrder(model),
+                    2 => UpdatePurchaseOrder(model),
+                    3 => DeletePurchaseOrder(model),
+                    4 => ClosePurchaseOrder(model),
+                    _ => WebResponseContent.Instance.OK(),
+                };
             }
             catch (Exception ex)
             {
@@ -60,17 +76,33 @@
                 {
                     return WebResponseContent.Instance.Error($"閲囪喘鍗曞彿閲嶅");
                 }
-
+                if (_supplierInfoRepository.QueryFirst(x => x.SupplierCode == model.SCode) == null)
+                {
+                    return WebResponseContent.Instance.Error($"鏈壘鍒颁緵搴斿晢缂栫爜銆恵model.SCode}銆戠殑淇℃伅");
+                }
+                List<Dt_Warehouse> warehouses = _basicRepository.WarehouseRepository.QueryData();
+                List<Dt_MaterielInfo> materielInfos = _materielInfoRepository.QueryData();
                 List<Dt_PurchaseOrderDetail> purchaseOrderDetails = new List<Dt_PurchaseOrderDetail>();
                 foreach (var item in model.MList)
                 {
+                    Dt_Warehouse? warehouse = warehouses.FirstOrDefault(x => x.WarehouseCode == item.WaId);
+                    if (warehouse == null)
+                    {
+                        return WebResponseContent.Instance.Error($"鏈壘鍒颁粨搴撲俊鎭�");
+                    }
+                    Dt_MaterielInfo? materielInfo = materielInfos.FirstOrDefault(x => x.MaterielCode == item.MCode);
+                    if (materielInfo == null)
+                    {
+                        return WebResponseContent.Instance.Error($"鏈壘鍒扮墿鏂欑紪鐮併�恵item.MCode}銆戠殑淇℃伅");
+                    }
                     Dt_PurchaseOrderDetail purchaseOrderDetail = new Dt_PurchaseOrderDetail()
                     {
                         MaterielCode = item.MCode,
                         PurchaseDetailQuantity = item.Qty,
+                        PurchaseDetailReceiveQty = 0,
                         PurchaseDetailStatus = PurchaseOrderDetailStatusEnum.NotReceived.ObjToInt(),
                         Unit = item.Unit,
-                        WarehouseId = item.WaId,
+                        WarehouseId = warehouse.WarehouseId,
                         RowNo = item.RowId,
                     };
                     purchaseOrderDetails.Add(purchaseOrderDetail);
@@ -110,12 +142,27 @@
                 {
                     return WebResponseContent.Instance.Error($"鏈壘鍒伴噰璐崟鏄庣粏淇℃伅");
                 }
-
+                if (_supplierInfoRepository.QueryFirst(x => x.SupplierCode == model.SCode) == null)
+                {
+                    return WebResponseContent.Instance.Error($"鏈壘鍒颁緵搴斿晢缂栫爜銆恵model.SCode}銆戠殑淇℃伅");
+                }
+                List<Dt_Warehouse> warehouses = _basicRepository.WarehouseRepository.QueryData();
+                List<Dt_MaterielInfo> materielInfos = _materielInfoRepository.QueryData();
                 List<Dt_PurchaseOrderDetail> purchaseOrderDetails = new List<Dt_PurchaseOrderDetail>();
                 List<Dt_PurchaseOrderDetail> updatePurchaseOrderDetails = new List<Dt_PurchaseOrderDetail>();
                 List<int> detailIds = new List<int>();
                 foreach (var item in model.MList)
                 {
+                    Dt_Warehouse? warehouse = warehouses.FirstOrDefault(x => x.WarehouseCode == item.WaId);
+                    if (warehouse == null)
+                    {
+                        return WebResponseContent.Instance.Error($"鏈壘鍒颁粨搴撲俊鎭�");
+                    }
+                    Dt_MaterielInfo? materielInfo = materielInfos.FirstOrDefault(x => x.MaterielCode == item.MCode);
+                    if (materielInfo == null)
+                    {
+                        return WebResponseContent.Instance.Error($"鏈壘鍒扮墿鏂欑紪鐮併�恵item.MCode}銆戠殑淇℃伅");
+                    }
                     Dt_PurchaseOrderDetail? purchaseOrderDetail = purchaseOrder.Details.FirstOrDefault(x => x.RowNo == item.RowId);
                     if (purchaseOrderDetail == null)
                     {
@@ -123,9 +170,10 @@
                         {
                             MaterielCode = item.MCode,
                             PurchaseDetailQuantity = item.Qty,
+                            PurchaseDetailReceiveQty = 0,
                             PurchaseDetailStatus = PurchaseOrderDetailStatusEnum.NotReceived.ObjToInt(),
                             Unit = item.Unit,
-                            WarehouseId = item.WaId,
+                            WarehouseId = warehouse.WarehouseId,
                             RowNo = item.RowId,
                         };
                         purchaseOrderDetails.Add(purchaseOrderDetail);
@@ -136,7 +184,7 @@
                         purchaseOrderDetail.PurchaseDetailQuantity = item.Qty;
                         purchaseOrderDetail.PurchaseDetailStatus = PurchaseOrderDetailStatusEnum.NotReceived.ObjToInt();
                         purchaseOrderDetail.Unit = item.Unit;
-                        purchaseOrderDetail.WarehouseId = item.WaId;
+                        purchaseOrderDetail.WarehouseId = warehouse.WarehouseId;
                         purchaseOrderDetail.RowNo = item.RowId;
                         updatePurchaseOrderDetails.Add(purchaseOrderDetail);
                         detailIds.Add(purchaseOrderDetail.Id);

--
Gitblit v1.9.3