From a6e0ea9ce13e791f3edae4edffeb3be3ccb760be Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期一, 31 三月 2025 02:14:59 +0800
Subject: [PATCH] 版本更新

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderService.cs |  129 +++++++++++++++++++++++++++---------------
 1 files changed, 82 insertions(+), 47 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 e309926..80a732e 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"
@@ -42,7 +42,16 @@
             _basicRepository = basicRepository;
             _invokeERPService = invokeERPService;
         }
-
+        public override PageGridData<Dt_ReceiveOrder> GetPageData(PageDataOptions options)
+        {
+            PageGridData<Dt_ReceiveOrder> pageGridData = base.GetPageData(options);
+            //foreach (var item in pageGridData.Rows)
+            //{
+            //    //鑾峰彇鏀惰揣鏄庣粏
+            //    item.PurchaseOrderNo
+            //}
+            return pageGridData;
+        }
         public override WebResponseContent AddData(SaveModel saveModel)
         {
             if (saveModel.MainData.ContainsKey(nameof(Dt_ReceiveOrder.ReceiveOrderStatus).FirstLetterToLower()))
@@ -95,7 +104,7 @@
                 {
                     return WebResponseContent.Instance.Error($"鏈壘鍒版敹璐у崟");
                 }
-                if (receiveOrder.ReceiveOrderStatus==ReceiveOrderStatusEnum.Completed.ObjToInt())
+                if (receiveOrder.ReceiveOrderStatus == ReceiveOrderStatusEnum.Completed.ObjToInt())
                 {
                     return WebResponseContent.Instance.Error($"鏀惰揣鍗曞凡瀹屾垚");
                 }
@@ -122,45 +131,52 @@
                         PriceInTax = 0,
                         PurchaseOrderCode = item.PurchaseOrderNo,
                         PurchaseOrderSerno = item.PurchaseOrderDetailRowNo,
-                        QtyRecieved = item.ReceivedQuantity.ObjToInt(),
+                        QtyRecieved = item.ReceivedQuantity,
                         Serno = item.RowNo,
-                        Supplotno = "",
+                        Supplotno = item.LotNo,
                         Taxrate = "",
-                        
+
                     };
+                    if (receiveOrder.ReceiveOrderType!=ReceiveOrderTypeEnum.PO.ObjToInt())
+                    {
+                        recevieOrderDetail.Taxrate = "ZZ11";
+                        recevieOrderDetail.Currcode = "RMB";
+                    }
                     recevieOrderDetails.Add(recevieOrderDetail);
                 }
 
                 ERPReceiveModel receiveModel = new ERPReceiveModel()
                 {
                     Code = receiveOrder.ReceiveOrderNo,
-                    CompanyId = "HATC",
                     DeliveryCode = receiveOrder.DeliveryCode,
                     CustomerId = receiveOrder.CustomerId,
-                    CreatorId = "TC20082",//娴嬭瘯 receiveOrder.Creater
+                    CreatorId = receiveOrder.Creater,
                     EntDate = receiveOrder.CreateDate.ToString("yyyy-MM-dd HH:mm:ss"),
-                    ReceiveDate = receiveOrder.ReceiveDate.ToString("yyyy-MM-dd HH:mm:ss"),
-                    PlantsId = "HA02",
+                    ReceiveDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                     SuppliersId = receiveOrder.SuppliersId,
-                    Type = Enum.GetName(typeof(ReceiveOrderTypeEnum),receiveOrder.ReceiveOrderType),
+                    Type = Enum.GetName(typeof(ReceiveOrderTypeEnum), receiveOrder.ReceiveOrderType) ?? throw new Exception($"閲囪喘鍗曠被鍨嬮敊璇�"),
                     UniqueTag = receiveOrder.ReceiveOrderId.ToString(),
                     WarehouseCode = warehouse.WarehouseCode,
                     Way = 1,
                     Details = recevieOrderDetails
                 };
-                //鏀惰揣鎺ㄩ�佽嚦ERP
-                string Content = _invokeERPService.InvokeMatReceiveApi(receiveModel);
-                ErpRequestContent erpRequest=Content.DeserializeObject<ErpRequestContent>();
-                if (erpRequest.res==0)
-                {
-                    return WebResponseContent.Instance.Error(erpRequest.Data);
-                }
-                receiveOrder.ReceiveOrderStatus = ReceiveOrderStatusEnum.Completed.ObjToInt();
-                receiveOrder.UploadStatus = WhetherEnum.True.ObjToInt();
+
                 //鏇存柊鏀惰揣鍗曚俊鎭�
-                _unitOfWorkManage.BeginTran();
+                receiveOrder.ReceiveOrderStatus = ReceiveOrderStatusEnum.Completed.ObjToInt();
+                //鏀惰揣鎺ㄩ�佽嚦ER
+                string response = _invokeERPService.InvokeMatReceiveApi(receiveModel);
+                ErpRequestContent requestContent = response.DeserializeObject<ErpRequestContent>();
+                if (requestContent.res != 1)
+                {
+                    return WebResponseContent.Instance.Error($"{requestContent.Data}");
+                }
+                receiveOrder.UploadStatus = WhetherEnum.True.ObjToInt();
                 BaseDal.UpdateData(receiveOrder);
-                _unitOfWorkManage.CommitTran();
+                if (receiveOrder.Details.FirstOrDefault(x=>x.IfInspection==WhetherEnum.True.ObjToInt())==null)
+                {
+                    //鍒涘缓鍏ュ簱鍗� todo:鏄庣粏閮芥槸涓嶆楠岃嚜鍔ㄥ垱寤哄叆搴撳崟
+                    CreateInboundOrder(orderId);
+                }
                 return WebResponseContent.Instance.OK();
             }
             catch (Exception ex)
@@ -175,15 +191,16 @@
             try
             {
                 int pageNo = saveModel.MainData["pageNo"].ObjToInt();
+                int warehouseId = saveModel.MainData["warehouseId"].ObjToInt();
                 string orderNo = saveModel.MainData["orderNo"].ToString();
                 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()).ToPageList(pageNo, 5);
+                    dt_ReceiveOrders = Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderStatus < ReceiveOrderStatusEnum.Completed.ObjToInt() && x.WarehouseId == warehouseId).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()).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).ToPageList(pageNo, 5);
                 }
 
                 content.OK(data: dt_ReceiveOrders);
@@ -205,6 +222,10 @@
             try
             {
                 Dt_ReceiveOrder receiveOrder = Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderId == receiveOrderId).Includes(x => x.Details).First();
+                if (receiveOrder.UploadStatus!= WhetherEnum.True.ObjToInt())
+                {
+                    return WebResponseContent.Instance.Error($"璇ユ敹璐у崟鏉ユ枡涓婁紶ERP澶辫触鏃犳硶鍒涘缓鍏ュ簱鍗曟嵁");
+                }
                 if (receiveOrder == null)
                 {
                     return WebResponseContent.Instance.Error($"鏈壘鍒拌鏀惰揣鍗曚俊鎭�");
@@ -217,21 +238,30 @@
                 {
                     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)
+                Dt_InboundOrder OldCreateOrder = _inboundRepository.InboundOrderRepository.QueryFirst(x => x.UpperOrderNo == receiveOrder.ReceiveOrderNo);
+                if (receiveOrder.CreateInOrderStatus==WhetherEnum.True.ObjToInt() || OldCreateOrder!=null)
                 {
-                    return WebResponseContent.Instance.Error($"璇ユ敹璐у崟鏈川妫�瀹屾垚");
+                    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($"璇ユ敹璐у崟鏈川妫�瀹屾垚");
+                //}
 
-                if (checkOrders.FirstOrDefault(x => x.AuditStatus != AuditStatusEnum.Agree.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)
+                //{
+                //    return WebResponseContent.Instance.Error($"鏀惰揣鏄庣粏涓瓨鏈夎川妫�鏈�氳繃");
+                //}
+                #endregion
 
                 Dt_InboundOrder inboundOrder = new Dt_InboundOrder()
                 {
-                    InboundOrderNo="TestInboundNo1",//娴嬭瘯
                     UpperOrderNo = receiveOrder.ReceiveOrderNo,
                     CreateType = OrderCreateTypeEnum.UpperSystemPush.ObjToInt(),
                     OrderStatus = InOrderStatusEnum.鏈紑濮�.ObjToInt(),
@@ -240,22 +270,26 @@
                     SupplierId = receiveOrder.SuppliersId,
                     Details = new List<Dt_InboundOrderDetail>()
                 };
-
+                List<Dt_MaterielInfo> materielCodeInfos = _basicRepository.MaterielInfoRepository.QueryData(x => receiveOrder.Details.Select(x => x.MaterielCode).ToList().Contains(x.MaterielCode));
                 foreach (var item in receiveOrder.Details)
                 {
                     float quantity = item.ReceivedQuantity;
-                    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();
-                    }
+                    #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();
+                    //}
+                    #endregion
                     Dt_InboundOrderDetail detail = new Dt_InboundOrderDetail()
                     {
                         MaterielCode = item.MaterielCode,
+                        MaterielName = materielCodeInfos.FirstOrDefault(x => x.MaterielCode == item.MaterielCode)?.MaterielName ?? "",
+                        MaterielSpec= materielCodeInfos.FirstOrDefault(x => x.MaterielCode == item.MaterielCode)?.MaterielSpec ?? "",
                         OrderDetailStatus = OrderDetailStatusEnum.New.ObjToInt(),
                         OrderQuantity = quantity,
                         OverInQuantity = 0,
@@ -276,7 +310,7 @@
                 return WebResponseContent.Instance.Error(ex.Message);
             }
         }
-
+        #region 娴嬭瘯
         public WebResponseContent ReceiveAllOrder(int purchaseOrderId, string lotNo)
         {
             try
@@ -286,7 +320,7 @@
                 {
                     return WebResponseContent.Instance.Error($"鏈壘鍒拌閲囪喘鍗�");
                 }
-                if (purchaseOrder.Details == null || purchaseOrder.Details.Count == 0)
+                if (purchaseOrder.Details.Count == 0)
                 {
                     return WebResponseContent.Instance.Error($"鏈壘鍒伴噰璐崟鏄庣粏淇℃伅");
                 }
@@ -333,11 +367,11 @@
                         };
                         rowNo += 1;
                         receiveOrderDetails.Add(receiveOrderDetail);
-
+                        #region 娉ㄩ噴
                         if (materielInfo.IsCheck == WhetherEnum.True)
                         {
                             Dt_CheckOrder checkOrder = _mapper.Map<Dt_CheckOrder>(receiveOrderDetail);
-                            checkOrder.CheckOrderNo = "TestCheckNo11";//娴嬭瘯
+                            checkOrder.CheckOrderNo = "TestCheckNo21";//娴嬭瘯
                             checkOrder.ReceiveOrderNo = "";
                             checkOrder.QualifiedQuantity = receiveOrderDetail.ReceivedQuantity;
                             checkOrder.ScrappedQuantity = 0;
@@ -347,10 +381,10 @@
                             checkOrder.UploadStatus = CheckUploadEnum.UploadNo.ObjToInt();
                             checkOrders.Add(checkOrder);
                         }
+                        #endregion
                     }
                     receiveOrder = new Dt_ReceiveOrder()
                     {
-                        ReceiveOrderNo= "TestReceiveOrderNo11",//娴嬭瘯
                         ReceiveOrderStatus = ReceiveOrderStatusEnum.Receiving.ObjToInt(),
                         CustomerId = "",
                         DeliveryCode = "/",
@@ -441,5 +475,6 @@
                 return WebResponseContent.Instance.Error(ex.Message);
             }
         }
+        #endregion
     }
 }

--
Gitblit v1.9.3