From 39ee9078d88fd4787437360e7f69ed999aaf0b7b Mon Sep 17 00:00:00 2001 From: wangxinhui <wangxinhui@hnkhzn.com> Date: 星期六, 28 十二月 2024 09:14:41 +0800 Subject: [PATCH] 更新代码 --- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs | 169 ++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 109 insertions(+), 60 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs" index 188c4e0..76ab96e 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs" @@ -49,7 +49,7 @@ { try { - Dt_ReceiveOrder receiveOrder = _inboundRepository.ReceiveOrderRepository.QueryFirst(x => x.ReceiveOrderNo == orderNo); + Dt_ReceiveOrder receiveOrder = _inboundRepository.ReceiveOrderRepository.Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderNo == orderNo).Includes(x=>x.Details).First(); if (receiveOrder == null) { return WebResponseContent.Instance.Error($"鏈壘鍒拌鏀惰揣鍗�"); @@ -67,92 +67,141 @@ { return WebResponseContent.Instance.Error($"鏈壘鍒拌鐗╂枡鐨勪俊鎭�"); } - - Dt_PurchaseOrder purchaseOrder = _inboundRepository.PurchaseOrderRepository.QueryFirst(x => x.PurchaseOrderNo == model.PurchaseOrderNo); + //璇ユ敹璐у崟浠撳簱鏄惁鏈夎鐗╂枡 + if (materielInfo.WarehouseId!= receiveOrder.WarehouseId) + { + return WebResponseContent.Instance.Error($"璇ョ墿鏂欎笉灞炰簬璇ヤ粨搴�"); + } + Dt_PurchaseOrder purchaseOrder = _inboundRepository.PurchaseOrderRepository.Db.Queryable<Dt_PurchaseOrder>().Where(x => x.PurchaseOrderNo == model.PurchaseOrderNo).Includes(x=>x.Details).First(); if (purchaseOrder == null) { return WebResponseContent.Instance.Error($"鏈壘鍒拌閲囪喘鍗�"); } - + if (purchaseOrder.Details.Count == 0) + { + return WebResponseContent.Instance.Error($"鏈壘鍒拌閲囪喘鍗曟槑缁嗘暟鎹�"); + } if (purchaseOrder.SupplierCode != receiveOrder.SuppliersId) { return WebResponseContent.Instance.Error($"渚涘簲鍟嗕笉涓�鑷�,璇锋柊寤烘敹璐у崟"); } - if (purchaseOrder.PurchaseOrderStatus == PurchaseOrderStatusEnum.Received.ObjToInt()) { return WebResponseContent.Instance.Error($"璇ラ噰璐崟鏀惰揣宸插畬鎴�"); } - - List<Dt_PurchaseOrderDetail> purchaseOrderDetails = _inboundRepository.PurchaseOrderDetailRepository.QueryData(x => x.PurchaseOrderId == purchaseOrder.Id); - if (purchaseOrderDetails == null || purchaseOrderDetails.Count == 0) - { - return WebResponseContent.Instance.Error($"鏈壘鍒拌閲囪喘鍗曟槑缁嗘暟鎹�"); - } - - Dt_PurchaseOrderDetail? purchaseOrderDetail = purchaseOrderDetails.FirstOrDefault(x => x.PurchaseDetailQuantity == model.Quantity && x.MaterielCode == model.MaterielCode && x.PurchaseDetailStatus == PurchaseOrderDetailStatusEnum.NotReceived.ObjToInt()); + Dt_PurchaseOrderDetail? purchaseOrderDetail = purchaseOrder.Details.FirstOrDefault(x => x.MaterielCode == model.MaterielCode && (x.PurchaseDetailStatus == PurchaseOrderDetailStatusEnum.NotReceived.ObjToInt() || x.PurchaseDetailStatus == PurchaseOrderDetailStatusEnum.Receiving.ObjToInt())); if (purchaseOrderDetail == null) { - if (purchaseOrderDetails.Count > 0) + if (purchaseOrder.Details.Count > 0) { return WebResponseContent.Instance.Error($"璇ユ槑缁嗘敹璐у凡瀹屾垚"); } - return WebResponseContent.Instance.Error($"鏈壘鍒板搴旂殑閲囪喘鍗曟槑缁嗘暟鎹�"); } - Dt_ReceiveOrderDetail detail = BaseDal.QueryFirst(x => x.PurchaseOrderNo == model.PurchaseOrderNo && x.PurchaseOrderDetailRowNo == purchaseOrderDetail.RowNo); - if (detail != null) + //鍒ゆ柇鏄惁瀛樺湪瀵瑰簲閲囪喘鏄庣粏鐨勬敹璐ф槑缁� + Dt_ReceiveOrderDetail? detail = receiveOrder.Details.FirstOrDefault(x => x.PurchaseOrderNo == model.PurchaseOrderNo && x.PurchaseOrderDetailRowNo == purchaseOrderDetail.RowNo); + if (detail != null && detail.ReceivedQuantity == purchaseOrderDetail.PurchaseDetailQuantity) { - return WebResponseContent.Instance.Error($"璇ユ槑缁嗘敹璐у凡瀹屾垚"); + return WebResponseContent.Instance.Error($"璇ユ槑缁嗗凡鏀惰揣"); } lock (_rowNoLocker) { - int rowNo = 0; - List<Dt_ReceiveOrderDetail> receiveOrderDetails = BaseDal.QueryData(x => x.ReceiveOrderId == receiveOrder.ReceiveOrderId); - if (receiveOrderDetails != null && receiveOrderDetails.Count > 0) + if (detail!=null) { - rowNo = receiveOrderDetails.Max(x => x.RowNo); + //鍘熸湁鏀惰揣鏄庣粏澧炲姞鏀惰揣鏁伴噺 + detail.ReceivedQuantity += model.Quantity; + purchaseOrderDetail.PurchaseDetailReceiveQty = detail.ReceivedQuantity; + if (purchaseOrderDetail.PurchaseDetailReceiveQty > purchaseOrderDetail.PurchaseDetailQuantity) + { + return WebResponseContent.Instance.Error($"閲囪喘鍗曡鐗╂枡鏁伴噺鍜屾敹璐ф暟閲忎笉涓�鑷�"); + } + if(purchaseOrderDetail.PurchaseDetailReceiveQty ==purchaseOrderDetail.PurchaseDetailQuantity) + { + purchaseOrderDetail.PurchaseDetailStatus = PurchaseOrderDetailStatusEnum.Received.ObjToInt(); + } + float sumQty = purchaseOrder.Details.Sum(x => x.PurchaseDetailReceiveQty) + model.Quantity; + _unitOfWorkManage.BeginTran(); + if (purchaseOrder.OrderQuantity == sumQty) + { + purchaseOrder.PurchaseOrderStatus = PurchaseOrderStatusEnum.Received.ObjToInt(); + _inboundRepository.PurchaseOrderRepository.UpdateData(purchaseOrder); + } + BaseDal.UpdateData(detail); + _inboundRepository.PurchaseOrderDetailRepository.UpdateData(purchaseOrderDetail); + _unitOfWorkManage.CommitTran(); } - - Dt_ReceiveOrderDetail receiveOrderDetail = new Dt_ReceiveOrderDetail() + else { - PurchaseOrderNo = model.PurchaseOrderNo, - ReceivedQuantity = model.Quantity, - MaterielCode = model.MaterielCode, - LotNo = model.LotNo, - ReceiveOrderId = receiveOrder.ReceiveOrderId, - PurchaseOrderDetailRowNo = purchaseOrderDetail.RowNo, - IfInspection = materielInfo.IsCheck.ObjToInt(), - CurrCode = "", - PriceInTax = 0, - TaxRate = "", - RowNo = rowNo + 1, - Unit = purchaseOrderDetail.Unit - }; - - if (receiveOrder.ReceiveOrderStatus == ReceiveOrderStatusEnum.NotStarted.ObjToInt()) - { - receiveOrder.ReceiveOrderStatus = ReceiveOrderStatusEnum.Receiving.ObjToInt(); + int rowNo = 0; + if (receiveOrder.Details.Count > 0) + { + rowNo = receiveOrder.Details.Max(x => x.RowNo); + } + Dt_ReceiveOrderDetail receiveOrderDetail = new Dt_ReceiveOrderDetail() + { + PurchaseOrderNo = model.PurchaseOrderNo, + ReceivedQuantity = model.Quantity, + MaterielCode = model.MaterielCode, + LotNo = model.LotNo, + ReceiveOrderId = receiveOrder.ReceiveOrderId, + PurchaseOrderDetailRowNo = purchaseOrderDetail.RowNo, + IfInspection = materielInfo.IsCheck.ObjToInt(), + CurrCode = "", + PriceInTax = 0, + TaxRate = "", + RowNo = rowNo + 1, + Unit = purchaseOrderDetail.Unit + }; + if (receiveOrder.ReceiveOrderStatus == ReceiveOrderStatusEnum.NotStarted.ObjToInt()) + { + receiveOrder.ReceiveOrderStatus = ReceiveOrderStatusEnum.Receiving.ObjToInt(); + } + //鍒ゆ柇閲囪喘鏄庣粏鏁伴噺 + if (purchaseOrderDetail.PurchaseDetailQuantity<model.Quantity) + { + return WebResponseContent.Instance.Error($"璇锋牳瀵归噰璐崟璇ョ墿鏂欐暟閲�"); + } + if (purchaseOrderDetail.PurchaseDetailReceiveQty>0) + { + purchaseOrderDetail.PurchaseDetailReceiveQty += model.Quantity; + } + else + { + purchaseOrderDetail.PurchaseDetailReceiveQty = model.Quantity; + } + if (purchaseOrderDetail.PurchaseDetailReceiveQty> purchaseOrderDetail.PurchaseDetailQuantity) + { + return WebResponseContent.Instance.Error($"閲囪喘鍗曡鐗╂枡鏁伴噺鍜屾敹璐ф暟閲忎笉涓�鑷�"); + } + if (purchaseOrderDetail.PurchaseDetailQuantity == purchaseOrderDetail.PurchaseDetailReceiveQty) + { + purchaseOrderDetail.PurchaseDetailStatus = PurchaseOrderDetailStatusEnum.Received.ObjToInt(); + } + float sumQty = purchaseOrder.Details.Sum(x => x.PurchaseDetailReceiveQty) + model.Quantity; + _unitOfWorkManage.BeginTran(); + BaseDal.AddData(receiveOrderDetail); + if (purchaseOrder.OrderQuantity == sumQty) + { + purchaseOrder.PurchaseOrderStatus = PurchaseOrderStatusEnum.Received.ObjToInt(); + _inboundRepository.PurchaseOrderRepository.UpdateData(purchaseOrder); + } + _inboundRepository.ReceiveOrderRepository.UpdateData(receiveOrder); + _inboundRepository.PurchaseOrderDetailRepository.UpdateData(purchaseOrderDetail); + #region 娉ㄩ噴 + //if (materielInfo.IsCheck == WhetherEnum.True) + //{ + // Dt_CheckOrder checkOrder = _mapper.Map<Dt_CheckOrder>(receiveOrderDetail); + // checkOrder.ReceiveOrderNo = receiveOrder.ReceiveOrderNo; + // checkOrder.QualifiedQuantity = receiveOrderDetail.ReceivedQuantity; + // checkOrder.ScrappedQuantity = 0; + // checkOrder.ReturnQuantity = 0; + // checkOrder.DefectedQuantity = 0; + // _checkOrderRepository.AddData(checkOrder); + //} + #endregion + _unitOfWorkManage.CommitTran(); } - purchaseOrderDetail.PurchaseDetailStatus = PurchaseOrderDetailStatusEnum.Received.ObjToInt(); - - _unitOfWorkManage.BeginTran(); - BaseDal.AddData(receiveOrderDetail); - _inboundRepository.ReceiveOrderRepository.UpdateData(receiveOrder); - _inboundRepository.PurchaseOrderDetailRepository.UpdateData(purchaseOrderDetail); - - if (materielInfo.IsCheck == WhetherEnum.True) - { - Dt_CheckOrder checkOrder = _mapper.Map<Dt_CheckOrder>(receiveOrderDetail); - checkOrder.ReceiveOrderNo = receiveOrder.ReceiveOrderNo; - checkOrder.QualifiedQuantity = receiveOrderDetail.ReceivedQuantity; - checkOrder.ScrappedQuantity = 0; - checkOrder.ReturnQuantity = 0; - checkOrder.DefectedQuantity = 0; - _checkOrderRepository.AddData(checkOrder); - } - - _unitOfWorkManage.CommitTran(); + return WebResponseContent.Instance.OK(); } } -- Gitblit v1.9.3