From 57148c2264abe80bd3b472f2980104d90dad5c61 Mon Sep 17 00:00:00 2001 From: wangxinhui <wangxinhui@hnkhzn.com> Date: 星期六, 13 九月 2025 08:35:32 +0800 Subject: [PATCH] 合并,接口优化等 --- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs | 200 +++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 175 insertions(+), 25 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs" index 607da70..afc0bc2 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs" @@ -3,14 +3,18 @@ using System.Linq; using System.Text; using System.Threading.Tasks; +using WIDESEA_Common.CommonEnum; using WIDESEA_Common.OrderEnum; using WIDESEA_Common.StockEnum; +using WIDESEA_Common.WareHouseEnum; using WIDESEA_Core; using WIDESEA_Core.BaseRepository; using WIDESEA_Core.BaseServices; using WIDESEA_Core.Enums; using WIDESEA_Core.Helper; +using WIDESEA_External.Model; using WIDESEA_IApprovalRepository; +using WIDESEA_IBasicRepository; using WIDESEA_ICheckRepository; using WIDESEA_ICheckService; using WIDESEA_IInboundRepository; @@ -30,7 +34,10 @@ private readonly IPurchaseOrderDetailRepository _purchaseOrderDetailRepository; private readonly IOutboundRepository _outboundRepository; private readonly IStockRepository _stockRepository; - public CheckOrderResultService(ICheckOrderResultRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, ICheckOrderRepository checkOrderRepository, IReceiveOrderRepository receiveOrderRepository, ICheckOrderService checkOrderService, IPurchaseOrderRepository purchaseOrderRepository, IPurchaseOrderDetailRepository purchaseOrderDetailRepository, IOutboundRepository outboundRepository, IStockRepository stockRepository) : base(BaseDal) + private readonly IWarehouseRepository _warehouseRepository; + private readonly IReceiveOrderDetailRepository _receiveOrderDetailRepository; + + public CheckOrderResultService(ICheckOrderResultRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, ICheckOrderRepository checkOrderRepository, IReceiveOrderRepository receiveOrderRepository, ICheckOrderService checkOrderService, IPurchaseOrderRepository purchaseOrderRepository, IPurchaseOrderDetailRepository purchaseOrderDetailRepository, IOutboundRepository outboundRepository, IStockRepository stockRepository,IWarehouseRepository warehouseRepository, IReceiveOrderDetailRepository receiveOrderDetailRepository) : base(BaseDal) { _checkOrderRepository = checkOrderRepository; _unitOfWorkManage = unitOfWorkManage; @@ -40,6 +47,8 @@ _purchaseOrderDetailRepository = purchaseOrderDetailRepository; _outboundRepository = outboundRepository; _stockRepository = stockRepository; + _warehouseRepository=warehouseRepository; + _receiveOrderDetailRepository = receiveOrderDetailRepository; } /// <summary> @@ -60,6 +69,7 @@ { return content.Error($"鏈壘鍒拌璐ㄦ鍗�"); } + Dt_Warehouse warehouse = _warehouseRepository.QueryFirst(x => x.WarehouseId == checkOrder.WarehouseId); Dt_ReceiveOrder receiveOrder = _receiveOrderRepository.Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderNo == checkOrder.ReceiveOrderNo).Includes(x => x.Details).First(); if (receiveOrder.ReceiveOrderStatus!=ReceiveOrderStatusEnum.Completed.ObjToInt()) { @@ -166,6 +176,144 @@ } return content; } + public WebResponseContent CommitCheckResult(ERPCheckModel checkModel) + { + WebResponseContent content = new WebResponseContent(); + try + { + Dt_CheckOrder checkOrder = _checkOrderRepository.QueryFirst(x => x.CheckOrderNo == checkModel.Code); + //鑾峰彇璐ㄦ鍗曞搴旂殑鏀惰揣鍗� + if (checkOrder == null) + { + return content.Error($"鏈壘鍒拌璐ㄦ鍗�"); + } + Dt_Warehouse warehouse = _warehouseRepository.QueryFirst(x => x.WarehouseId == checkOrder.WarehouseId); + //鑾峰彇鏀惰揣鍗� + Dt_ReceiveOrder receiveOrder = _receiveOrderRepository.Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderNo == checkOrder.ReceiveOrderNo).Includes(x => x.Details).First(); + if (receiveOrder.ReceiveOrderStatus != ReceiveOrderStatusEnum.Completed.ObjToInt()) + { + return content.Error($"{receiveOrder.ReceiveOrderNo}鏀惰揣鍗曟湭瀹屾垚鏃犳硶璐ㄦ"); + } + if (checkOrder.CheckOrderStatus == CheckOrderStatusEnum.Checked.ObjToInt()) + { + return content.Error($"璇ュ崟鎹凡缁忔楠屽畬鎴�"); + } + Dt_CheckOrderResult? checkOrderResult = null; + Dt_PurchaseOrder? purchaseOrder = null; + Dt_PurchaseOrderDetail? purchaseOrderDetail = null; + if (checkModel.Details.Count>0) + { + + ERPCheckResult eRPCheckResult = checkModel.Details.FirstOrDefault(); + if (eRPCheckResult.Result == CheckResultEnum.Return.ToString())//閫�璐� + { + checkOrder.DefectedNote = eRPCheckResult.Result; + checkOrder.ReturnQuantity += (float)Convert.ToDecimal(eRPCheckResult.Quantity); + } + else + { + return content.Error($"鏈壘鍒扮己闄风被鍨�"); + } + //妫�楠岀粨鏋� + checkOrderResult = new Dt_CheckOrderResult() + { + Quantity = (float)Convert.ToDecimal(eRPCheckResult.Quantity), + CheckOrderId = checkOrder.CheckOrderId, + DefectCode = eRPCheckResult.DefectCode, + Result = eRPCheckResult.Result, + Note = eRPCheckResult.Note, + SampleCount = 0, + }; + //鑾峰彇瀵瑰簲閲囪喘鍗曟墸闄ゆ敹璐ф暟閲� + Dt_ReceiveOrderDetail receiveOrderDetail = receiveOrder.Details.First(x => x.RowNo == checkOrder.ReceiveDetailRowNo); + purchaseOrder = _purchaseOrderRepository.Db.Queryable<Dt_PurchaseOrder>().Where(x => x.PurchaseOrderNo == receiveOrderDetail.PurchaseOrderNo).Includes(x => x.Details).Where(x => x.Details.Any(v => v.RowNo == receiveOrderDetail.PurchaseOrderDetailRowNo)).First(); + if (purchaseOrder == null) + { + return content.Error("鏈壘鍒板搴旀敹璐ч噰璐崟"); + } + purchaseOrderDetail = purchaseOrder.Details.FirstOrDefault(); + if (purchaseOrderDetail == null) + { + return content.Error("鏈壘鍒伴��璐у搴旂殑閲囪喘鍗曟槑缁�"); + } + purchaseOrderDetail.PurchaseDetailReceiveQty -= (float)Convert.ToDecimal(eRPCheckResult.Quantity); + } + //鍒ゆ柇妫�楠屽悎鏍肩粨鏋� + if (checkModel.Result == CheckAcceptEnum.Accept.ToString()) + { + checkOrder.Result = CheckAcceptEnum.Accept.ToString(); + } + else if (checkModel.Result == CheckAcceptEnum.UnAccept.ToString()) + { + checkOrder.Result = CheckAcceptEnum.UnAccept.ToString(); + } + else + { + return content.Error("鏈壘鍒版楠岀被鍨�"); + } + checkOrder.CheckOrderStatus = CheckOrderStatusEnum.Checked.ObjToInt(); + List<Dt_ReceiveOrderDetail> receiveOrderDetails = new List<Dt_ReceiveOrderDetail>(); + //鏍规嵁妫�楠屾暟閲忔墸闄ゅ悎鏍兼暟閲� + if (checkOrderResult != null) + { + checkOrder.QualifiedQuantity = checkOrder.ReceivedQuantity - checkOrderResult.Quantity; + //鏇存柊鏀惰揣妫�楠屽悎鏍兼爣璇� + if (warehouse.WarehouseCode == WarehouseEnum.HA152.ToString() || warehouse.WarehouseCode == WarehouseEnum.HA58.ToString()) + { + receiveOrderDetails = receiveOrder.Details.Where(x=>x.RowNo==checkOrder.ReceiveDetailRowNo).OrderByDescending(x => x.RowNo).Take((int)checkOrderResult.Quantity).ToList(); + receiveOrderDetails.ForEach(x => + { + x.IsCheckOk = WhetherEnum.True.ObjToInt(); + }); + } + } + else + { + checkOrder.QualifiedQuantity = checkOrder.ReceivedQuantity; + } + checkOrder.CheckUserName = App.User.UserName; + + _unitOfWorkManage.BeginTran(); + if (receiveOrderDetails.Count > 0) + { + _receiveOrderDetailRepository.UpdateData(receiveOrderDetails); + } + //鏇存柊閲囪喘鍗� + if (checkOrderResult != null && purchaseOrder != null && purchaseOrderDetail != null) + { + BaseDal.AddData(checkOrderResult); + if (purchaseOrder.PurchaseOrderStatus >= PurchaseOrderStatusEnum.Received.ObjToInt()) + { + purchaseOrder.PurchaseOrderStatus = PurchaseOrderStatusEnum.Receiving.ObjToInt(); + _purchaseOrderRepository.UpdateData(purchaseOrder); + } + if (purchaseOrderDetail.PurchaseDetailStatus == PurchaseOrderDetailStatusEnum.Received.ObjToInt()) + { + purchaseOrderDetail.PurchaseDetailStatus = PurchaseOrderDetailStatusEnum.Receiving.ObjToInt(); + } + _purchaseOrderDetailRepository.UpdateData(purchaseOrderDetail); + } + if (string.IsNullOrEmpty(checkModel.CreatorCode)) + { + //ERP涓婃姤 + WebResponseContent responseContent = _checkOrderService.FeedbackCheckResult(checkOrder, checkOrderResult != null ? new List<Dt_CheckOrderResult> { checkOrderResult } : new List<Dt_CheckOrderResult>()); + if (!responseContent.Status) + { + throw new Exception(responseContent.Message); + } + } + checkOrder.UploadStatus = CheckUploadEnum.UploadOk.ObjToInt(); + _checkOrderRepository.UpdateData(checkOrder); + _unitOfWorkManage.CommitTran(); + content.OK(); + } + catch (Exception ex) + { + _unitOfWorkManage.RollbackTran(); + return content.Error($"{ex.Message}"); + } + return content; + } /// <summary> /// 鎻愪氦閫佹纭缁撴灉 /// </summary> @@ -179,7 +327,7 @@ try { Dt_CheckOrder checkOrder = _checkOrderRepository.QueryFirst(x => x.CheckOrderId == checkOrderId); - //鑾峰彇璐ㄦ鍗曞搴旂殑鏀惰揣鍗� + //鑾峰彇璐ㄦ鍗� if (checkOrder == null) { return content.Error($"鏈壘鍒拌璐ㄦ鍗�"); @@ -235,33 +383,25 @@ Note = checkResult.Note, SampleCount = checkResult.SampleCount, }; - if (Math.Round(checkResult.Quantity,2) == Math.Round(stockInfoDetails.Sum(x=>x.StockQuantity),2)) + foreach (var item in stockInfo.Details) { - DelStockDetails = stockInfo.Details; - } - else - { - foreach (var item in stockInfo.Details) + if (checkResult.Quantity == 0) { - if (checkResult.Quantity == 0) - { - break; - } - else if(checkResult.Quantity< item.StockQuantity) - { - item.StockQuantity -= checkResult.Quantity; - item.OutboundQuantity = 0; - checkResult.Quantity = 0; - stockInfoDetails.Add(item); - } - else if (checkResult.Quantity >= item.StockQuantity) - { - checkResult.Quantity = (float)Math.Round((checkResult.Quantity-item.StockQuantity), 2); - DelStockDetails.Add(item); - } + break; + } + else if (checkResult.Quantity < item.StockQuantity) + { + item.StockQuantity -= checkResult.Quantity; + item.OutboundQuantity = 0; + checkResult.Quantity = 0; + stockInfoDetails.Add(item); + } + else if (checkResult.Quantity >= item.StockQuantity) + { + checkResult.Quantity = (float)Math.Round((checkResult.Quantity - item.StockQuantity), 2); + DelStockDetails.Add(item); } } - } if (IsAccept == InspectAcceptEnum.Accept.ObjToInt()) { @@ -299,6 +439,10 @@ //娓呴櫎搴撳瓨鏁伴噺 if (stockInfoDetails.Count>0) { + stockInfoDetails.ForEach(x => + { + x.Status = StockStatusEmun.閫佹搴撳瓨瀹屾垚.ObjToInt(); + }); _stockRepository.StockInfoDetailRepository.UpdateData(stockInfoDetails); } if (initialStockDetails.Count>0) @@ -306,6 +450,7 @@ initialStockDetails.ForEach(x => { x.OutboundQuantity = 0; + x.Status = StockStatusEmun.閫佹搴撳瓨瀹屾垚.ObjToInt(); }); _stockRepository.StockInfoDetailRepository.UpdateData(initialStockDetails); } @@ -317,6 +462,11 @@ { _stockRepository.StockInfoRepository.DeleteAndMoveIntoHty(stockInfo, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚); } + else + { + stockInfo.StockStatus = StockStatusEmun.閫佹搴撳瓨瀹屾垚.ObjToInt(); + _stockRepository.StockInfoRepository.UpdateData(stockInfo); + } //ERP涓婃姤 WebResponseContent responseContent = _checkOrderService.FeedbackInspectResult(checkOrder, checkOrderResult != null ? new List<Dt_CheckOrderResult> { checkOrderResult } : new List<Dt_CheckOrderResult>()); if (!responseContent.Status) -- Gitblit v1.9.3