1
wankeda
2025-03-05 a0194deab4b4f19183f7b596bf5f9e3bb8a15ec9
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs
@@ -94,20 +94,21 @@
                {
                    return WebResponseContent.Instance.Error($"该采购单明细收货已完成");
                }
                //判断是否存在对应采购明细的收货明细
                Dt_ReceiveOrderDetail? detail = receiveOrder.Details.FirstOrDefault(x => x.PurchaseOrderNo == model.PurchaseOrderNo && x.PurchaseOrderDetailRowNo == purchaseOrderDetail.RowNo);
                if (detail != null && detail.ReceivedQuantity == purchaseOrderDetail.PurchaseDetailQuantity)
                //判断该采购单明细是否已存在明细
                List<Dt_ReceiveOrderDetail> details = receiveOrder.Details.Where(x => x.PurchaseOrderNo == model.PurchaseOrderNo && x.PurchaseOrderDetailRowNo == purchaseOrderDetail.RowNo && x.MaterielCode == model.MaterielCode).ToList();
                if (details.Count >0 && details.Sum(x=>x.ReceivedQuantity) == purchaseOrderDetail.PurchaseDetailQuantity)
                {
                    return WebResponseContent.Instance.Error($"该收货单明细已收货");
                }
                //获取具体批次及物料
                Dt_ReceiveOrderDetail? detail = details.FirstOrDefault(x => x.LotNo == model.LotNo && x.MaterielCode==model.MaterielCode);
                lock (_rowNoLocker)
                {
                    if (detail != null)
                    {
                        //原有收货明细增加收货数量
                        detail.ReceivedQuantity += model.Quantity;
                        purchaseOrderDetail.PurchaseDetailReceiveQty = detail.ReceivedQuantity;
                        purchaseOrderDetail.PurchaseDetailReceiveQty += model.Quantity;
                        if (purchaseOrderDetail.PurchaseDetailReceiveQty > purchaseOrderDetail.PurchaseDetailQuantity)
                        {
                            return WebResponseContent.Instance.Error($"采购单该物料数量和收货数量不一致");
@@ -120,7 +121,7 @@
                        {
                            purchaseOrderDetail.PurchaseDetailStatus = PurchaseOrderDetailStatusEnum.Receiving.ObjToInt();
                        }
                        float sumQty = purchaseOrder.Details.Sum(x => x.PurchaseDetailReceiveQty)+ model.Quantity;
                        float sumQty = purchaseOrder.Details.Sum(x => x.PurchaseDetailReceiveQty);
                        if (purchaseOrder.OrderQuantity == sumQty)
                        {
                            purchaseOrder.PurchaseOrderStatus = PurchaseOrderStatusEnum.Received.ObjToInt();
@@ -148,6 +149,8 @@
                            ReceivedQuantity = model.Quantity,
                            MaterielCode = model.MaterielCode,
                            LotNo = model.LotNo,
                            MaterielName=materielInfo.MaterielName,
                            MaterielSpec=materielInfo.MaterielSpec,
                            ReceiveOrderId = receiveOrder.ReceiveOrderId,
                            PurchaseOrderDetailRowNo = purchaseOrderDetail.RowNo,
                            IfInspection = materielInfo.IsCheck.ObjToInt(),
@@ -182,7 +185,11 @@
                        {
                            purchaseOrderDetail.PurchaseDetailStatus = PurchaseOrderDetailStatusEnum.Received.ObjToInt();
                        }
                        float sumQty = purchaseOrder.Details.Sum(x => x.PurchaseDetailReceiveQty) + model.Quantity;
                        else
                        {
                            purchaseOrderDetail.PurchaseDetailStatus = PurchaseOrderDetailStatusEnum.Receiving.ObjToInt();
                        }
                        float sumQty = purchaseOrder.Details.Sum(x => x.PurchaseDetailReceiveQty); //+ model.Quantity
                        _unitOfWorkManage.BeginTran();
                        BaseDal.AddData(receiveOrderDetail);
                        if (purchaseOrder.OrderQuantity == sumQty)