From 9ec715d2deb18a269dd49c48da91a36632d08c81 Mon Sep 17 00:00:00 2001 From: wangxinhui <wangxinhui@hnkhzn.com> Date: 星期三, 18 六月 2025 00:56:26 +0800 Subject: [PATCH] 最新代码上传,优化功能等 --- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs | 168 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 167 insertions(+), 1 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 c67a1cc..1ecc986 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" @@ -4,14 +4,18 @@ using System.Text; using System.Threading.Tasks; using WIDESEA_Common.OrderEnum; +using WIDESEA_Common.StockEnum; using WIDESEA_Core; using WIDESEA_Core.BaseRepository; using WIDESEA_Core.BaseServices; +using WIDESEA_Core.Enums; using WIDESEA_Core.Helper; using WIDESEA_IApprovalRepository; using WIDESEA_ICheckRepository; using WIDESEA_ICheckService; using WIDESEA_IInboundRepository; +using WIDESEA_IOutboundRepository; +using WIDESEA_IStockRepository; using WIDESEA_Model.Models; namespace WIDESEA_CheckService @@ -24,7 +28,9 @@ private readonly ICheckOrderService _checkOrderService; private readonly IPurchaseOrderRepository _purchaseOrderRepository; private readonly IPurchaseOrderDetailRepository _purchaseOrderDetailRepository; - public CheckOrderResultService(ICheckOrderResultRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, ICheckOrderRepository checkOrderRepository, IReceiveOrderRepository receiveOrderRepository, ICheckOrderService checkOrderService, IPurchaseOrderRepository purchaseOrderRepository, IPurchaseOrderDetailRepository purchaseOrderDetailRepository) : base(BaseDal) + 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) { _checkOrderRepository = checkOrderRepository; _unitOfWorkManage = unitOfWorkManage; @@ -32,6 +38,8 @@ _checkOrderService = checkOrderService; _purchaseOrderRepository = purchaseOrderRepository; _purchaseOrderDetailRepository = purchaseOrderDetailRepository; + _outboundRepository = outboundRepository; + _stockRepository = stockRepository; } /// <summary> @@ -159,6 +167,164 @@ return content; } /// <summary> + /// 鎻愪氦閫佹纭缁撴灉 + /// </summary> + /// <param name="checkOrderId"></param> + /// <param name="checkResult"></param> + /// <param name="IsAccept"></param> + /// <returns></returns> + public WebResponseContent CommitInspectResult(int checkOrderId, Dt_CheckOrderResult checkResult, int IsAccept = 0) + { + WebResponseContent content = new WebResponseContent(); + try + { + Dt_CheckOrder checkOrder = _checkOrderRepository.QueryFirst(x => x.CheckOrderId == checkOrderId); + //鑾峰彇璐ㄦ鍗曞搴旂殑鏀惰揣鍗� + if (checkOrder == null) + { + return content.Error($"鏈壘鍒拌璐ㄦ鍗�"); + } + Dt_OutboundOrder outboundOrder = _outboundRepository.OutboundOrderRepository.Db.Queryable<Dt_OutboundOrder>().Where(x => x.OrderNo == checkOrder.ReceiveOrderNo).Includes(x => x.Details).First(); + if (outboundOrder.OrderStatus != OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt()) + { + return content.Error($"{outboundOrder.OrderNo}閫佹鍗曞嚭搴撴湭瀹屾垚鏃犳硶璐ㄦ"); + } + if (checkOrder.CheckOrderStatus == CheckOrderStatusEnum.Checked.ObjToInt()) + { + return content.Error($"璇ュ崟鎹凡缁忔楠屽畬鎴�"); + } + Dt_CheckOrderResult? checkOrderResult = null; + //鑾峰彇搴撳瓨 + Dt_OutStockLockInfo outStockLockInfo = _outboundRepository.OutboundStockLockInfoRepository.QueryFirst(x => x.Id == checkOrder.ReceiveDetailRowNo) ?? throw new Exception("鏈壘鍒伴�佹鍗曡鎯�"); + Dt_StockInfo? stockInfo = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>() + .Where(x => x.PalletCode == outStockLockInfo.PalletCode && x.StockStatus == StockStatusEmun.閫佹瀹屾垚.ObjToInt()).Includes(x => x.Details).First() ?? throw new Exception("鏈壘鍒伴�佹鍗曞搴斿簱瀛樻暟鎹�"); + List<Dt_StockInfoDetail> stockInfoDetails = new List<Dt_StockInfoDetail>(); + List<Dt_StockInfoDetail> DelStockDetails =new List<Dt_StockInfoDetail>(); + if (checkResult.CheckOrderId != 0) + { + if (checkResult.Quantity < 0 || checkResult.Quantity > checkOrder.ReceivedQuantity) + { + return content.Error($"鏁伴噺瓒呭嚭"); + } + if (checkResult.Result == InspectResultEnum.Return.ToString())//閫�璐� + { + checkOrder.DefectedNote = checkResult.Note; + checkOrder.ReturnQuantity += checkResult.Quantity; + } + else if(checkResult.Result == InspectResultEnum.Defect.ToString()) + { + checkOrder.DefectedNote = checkResult.Note; + checkOrder.DefectedQuantity += checkResult.Quantity; + } + else if (checkResult.Result == InspectResultEnum.Scrapped.ToString()) + { + checkOrder.DefectedNote = checkResult.Note; + checkOrder.ScrappedQuantity += checkResult.Quantity; + } + else + { + return content.Error($"鏈壘鍒扮己闄风被鍨�"); + } + checkOrderResult = new Dt_CheckOrderResult() + { + Quantity = checkResult.Quantity, + CheckOrderId = checkOrderId, + DefectCode = checkResult.DefectCode, + Result = checkResult.Result, + Note = checkResult.Note, + SampleCount = checkResult.SampleCount, + }; + if (Math.Round(checkResult.Quantity,2) == Math.Round(stockInfoDetails.Sum(x=>x.StockQuantity),2)) + { + DelStockDetails = stockInfo.Details; + } + else + { + foreach (var item in stockInfo.Details) + { + if (checkResult.Quantity == 0) + { + break; + } + else if(checkResult.Quantity< item.StockQuantity) + { + checkResult.Quantity = 0; + item.StockQuantity -= checkResult.Quantity; + 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()) + { + checkOrder.Result = InspectAcceptEnum.Accept.ToString(); + } + else if (IsAccept == InspectAcceptEnum.UnAccept.ObjToInt()) + { + checkOrder.Result = InspectAcceptEnum.UnAccept.ToString(); + } + else if (IsAccept == InspectAcceptEnum.DefectAccept.ObjToInt()) + { + checkOrder.Result = InspectAcceptEnum.DefectAccept.ToString(); + } + else + { + return content.Error("鏈壘鍒版楠岀被鍨�"); + } + checkOrder.CheckOrderStatus = CheckOrderStatusEnum.Checked.ObjToInt(); + if (checkOrderResult != null) + { + checkOrder.QualifiedQuantity = checkOrder.ReceivedQuantity - checkOrderResult.Quantity; + } + else + { + checkOrder.QualifiedQuantity = checkOrder.ReceivedQuantity; + } + checkOrder.CheckUserName = App.User.UserName; + _unitOfWorkManage.BeginTran(); + + if (checkOrderResult != null) + { + BaseDal.AddData(checkOrderResult); + } + //娓呴櫎搴撳瓨鏁伴噺 + if (stockInfoDetails.Count>0) + { + _stockRepository.StockInfoDetailRepository.UpdateData(stockInfoDetails); + } + if (DelStockDetails.Count>0) + { + _stockRepository.StockInfoDetailRepository.DeleteAndMoveIntoHty(DelStockDetails, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚); + } + if (DelStockDetails.Count==stockInfo.Details.Count) + { + _stockRepository.StockInfoRepository.DeleteAndMoveIntoHty(stockInfo, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚); + } + //ERP涓婃姤 + WebResponseContent responseContent = _checkOrderService.FeedbackInspectResult(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> public WebResponseContent GetCheckResultInfo(int checkId) -- Gitblit v1.9.3