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_CheckService/CheckOrderResultService.cs | 148 +++++++++++++++++++++++++++++++++++++----------- 1 files changed, 113 insertions(+), 35 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 bd29729..c67a1cc 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" @@ -21,11 +21,17 @@ private readonly ICheckOrderRepository _checkOrderRepository; private readonly IUnitOfWorkManage _unitOfWorkManage; private readonly IReceiveOrderRepository _receiveOrderRepository; - public CheckOrderResultService(ICheckOrderResultRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, ICheckOrderRepository checkOrderRepository, IReceiveOrderRepository receiveOrderRepository) : base(BaseDal) + 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) { _checkOrderRepository = checkOrderRepository; _unitOfWorkManage = unitOfWorkManage; _receiveOrderRepository = receiveOrderRepository; + _checkOrderService = checkOrderService; + _purchaseOrderRepository = purchaseOrderRepository; + _purchaseOrderDetailRepository = purchaseOrderDetailRepository; } /// <summary> @@ -33,69 +39,141 @@ /// </summary> /// <param name="checkOrderId">璐ㄦ鍗曚富閿�</param> /// <param name="checkResult">璐ㄦ缁撴灉瀵硅薄</param> + /// <param name="IsAccept">鏄惁鎺ュ彈</param> /// <returns></returns> - public WebResponseContent CommitCheckResult(int checkOrderId,Dt_CheckOrderResult checkResult) + public WebResponseContent CommitCheckResult(int checkOrderId,Dt_CheckOrderResult checkResult,int IsAccept=0) { + WebResponseContent content = new WebResponseContent(); try { Dt_CheckOrder checkOrder = _checkOrderRepository.QueryFirst(x => x.CheckOrderId == checkOrderId); //鑾峰彇璐ㄦ鍗曞搴旂殑鏀惰揣鍗� - Dt_ReceiveOrder receiveOrder = _receiveOrderRepository.QueryFirst(x=>x.ReceiveOrderNo==checkOrder.ReceiveOrderNo); - if (receiveOrder.ReceiveOrderStatus!=ReceiveOrderStatusEnum.Completed.ObjToInt()) - { - return WebResponseContent.Instance.Error($"{receiveOrder.ReceiveOrderNo}鏀惰揣鍗曟湭瀹屾垚鏃犳硶璐ㄦ"); - } if (checkOrder == null) { - return WebResponseContent.Instance.Error($"鏈壘鍒拌璐ㄦ鍗�"); + return content.Error($"鏈壘鍒拌璐ㄦ鍗�"); + } + 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 WebResponseContent.Instance.Error($"璇ュ崟鎹凡缁忔楠屽畬鎴�"); + return content.Error($"璇ュ崟鎹凡缁忔楠屽畬鎴�"); } - if (checkResult.Quantity < 0 || checkResult.Quantity > checkOrder.ReceivedQuantity || checkOrder.ReceivedQuantity - checkOrder.ScrappedQuantity - checkOrder.DefectedQuantity - checkOrder.ReturnQuantity < checkResult.Quantity) + Dt_CheckOrderResult? checkOrderResult = null; + Dt_PurchaseOrder? purchaseOrder = null; + Dt_PurchaseOrderDetail? purchaseOrderDetail= null; + if (checkResult.CheckOrderId!=0) { - return WebResponseContent.Instance.Error($"鏁伴噺杈撳叆閿欒"); + if (checkResult.Quantity < 0 || checkResult.Quantity > checkOrder.ReceivedQuantity || checkOrder.ReceivedQuantity - checkOrder.ReturnQuantity < checkResult.Quantity) + { + return content.Error($"鏁伴噺瓒呭嚭"); + } + if (checkResult.Result == CheckResultEnum.Return.ToString())//閫�璐� + { + checkOrder.DefectedNote = checkResult.Note; + checkOrder.ReturnQuantity += 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, + }; + //鑾峰彇瀵瑰簲閲囪喘鍗� + 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 -= checkResult.Quantity; } - if (checkResult.Result == CheckResultEnum.Defect.ToString())//鐗归噰 + if (IsAccept==CheckAcceptEnum.Accept.ObjToInt()) { - checkOrder.DefectedNote = checkResult.Note; - checkOrder.DefectedQuantity += checkResult.Quantity; - checkOrder.QualifiedQuantity -= checkResult.Quantity; + checkOrder.Result = CheckAcceptEnum.Accept.ToString(); } - else if (checkResult.Result == CheckResultEnum.Return.ToString())//閫�璐� + else if (IsAccept == CheckAcceptEnum.UnAccept.ObjToInt()) { - checkOrder.DefectedNote = checkResult.Note; - checkOrder.ReturnQuantity += checkResult.Quantity; - checkOrder.QualifiedQuantity -= checkResult.Quantity; + checkOrder.Result = CheckAcceptEnum.UnAccept.ToString(); } - else if (checkResult.Result == CheckResultEnum.Scrapped.ToString())//鎶ュ簾 + else { - checkOrder.DefectedNote = checkResult.Note; - checkOrder.ScrappedQuantity += checkResult.Quantity; - checkOrder.QualifiedQuantity -= checkResult.Quantity; + return content.Error("鏈壘鍒版楠岀被鍨�"); } - checkOrder.CheckOrderStatus = CheckOrderStatusEnum.Checked.ObjToInt(); - - Dt_CheckOrderResult checkOrderResult = new Dt_CheckOrderResult() + if (checkOrderResult!=null) { - Quantity = checkResult.Quantity, - CheckOrderId = checkOrderId, - DefectCode = checkResult.DefectCode, - Result = checkResult.Result, - Note = checkResult.Note - }; + checkOrder.QualifiedQuantity = checkOrder.ReceivedQuantity - checkOrderResult.Quantity; + } + else + { + checkOrder.QualifiedQuantity = checkOrder.ReceivedQuantity; + } + checkOrder.CheckUserName = App.User.UserName; _unitOfWorkManage.BeginTran(); + + 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); + } + //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); - BaseDal.AddData(checkOrderResult); _unitOfWorkManage.CommitTran(); - return WebResponseContent.Instance.OK(); + content.OK(); } catch (Exception ex) { - return WebResponseContent.Instance.Error($"{ex.Message}"); + _unitOfWorkManage.RollbackTran(); + return content.Error($"{ex.Message}"); } + return content; + } + /// <summary> + /// 鑾峰彇妫�楠屼俊鎭� + /// </summary> + public WebResponseContent GetCheckResultInfo(int checkId) + { + WebResponseContent content = new WebResponseContent(); + try + { + Dt_CheckOrderResult checkOrderResult = BaseDal.QueryFirst(x => x.CheckOrderId == checkId); + content.OK("鎴愬姛", checkOrderResult); + } + catch (Exception ex) + { + content.Error(ex.Message); + } + return content; } } } -- Gitblit v1.9.3