|  |  | 
 |  |  |         { | 
 |  |  |             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($"æªæ¾å°è¯¥æ¶è´§å"); | 
 |  |  | 
 |  |  |                 { | 
 |  |  |                     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) | 
 |  |  |                     { | 
 |  |  |                         return WebResponseContent.Instance.Error($"该æç»æ¶è´§å·²å®æ"); | 
 |  |  |                     } | 
 |  |  |                     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(); | 
 |  |  |                         } | 
 |  |  |                         else | 
 |  |  |                         { | 
 |  |  |                             purchaseOrderDetail.PurchaseDetailStatus = PurchaseOrderDetailStatusEnum.Receiving.ObjToInt(); | 
 |  |  |                         } | 
 |  |  |                         float sumQty = purchaseOrder.Details.Sum(x => x.PurchaseDetailReceiveQty)+ model.Quantity; | 
 |  |  |                         if (purchaseOrder.OrderQuantity == sumQty) | 
 |  |  |                         { | 
 |  |  |                             purchaseOrder.PurchaseOrderStatus = PurchaseOrderStatusEnum.Received.ObjToInt(); | 
 |  |  |                         } | 
 |  |  |                         else | 
 |  |  |                         { | 
 |  |  |                             purchaseOrder.PurchaseOrderStatus = PurchaseOrderStatusEnum.Receiving.ObjToInt(); | 
 |  |  |                         } | 
 |  |  |                         _unitOfWorkManage.BeginTran(); | 
 |  |  |                         _inboundRepository.PurchaseOrderRepository.UpdateData(purchaseOrder); | 
 |  |  |                         BaseDal.UpdateData(detail); | 
 |  |  |                         _inboundRepository.PurchaseOrderDetailRepository.UpdateData(purchaseOrderDetail); | 
 |  |  |                         _unitOfWorkManage.CommitTran(); | 
 |  |  |                     } | 
 |  |  |                     else | 
 |  |  |                     { | 
 |  |  |                         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(); | 
 |  |  |                     } | 
 |  |  |  | 
 |  |  |                     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(); | 
 |  |  |                     } | 
 |  |  |                     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(); | 
 |  |  |                 } | 
 |  |  |             } |