| using System; | 
| using System.Collections.Generic; | 
| using System.Linq; | 
| using System.Text; | 
| using System.Threading.Tasks; | 
| using WIDESEA_Common.OrderEnum; | 
| using WIDESEA_Core; | 
| using WIDESEA_Core.BaseRepository; | 
| using WIDESEA_Core.BaseServices; | 
| using WIDESEA_Core.Helper; | 
| using WIDESEA_IApprovalRepository; | 
| using WIDESEA_ICheckRepository; | 
| using WIDESEA_ICheckService; | 
| using WIDESEA_IInboundRepository; | 
| using WIDESEA_Model.Models; | 
|   | 
| namespace WIDESEA_CheckService | 
| { | 
|     public class CheckOrderResultService : ServiceBase<Dt_CheckOrderResult, ICheckOrderResultRepository>, ICheckOrderResultService | 
|     { | 
|         private readonly ICheckOrderRepository _checkOrderRepository; | 
|         private readonly IUnitOfWorkManage _unitOfWorkManage; | 
|         private readonly IReceiveOrderRepository _receiveOrderRepository; | 
|         public CheckOrderResultService(ICheckOrderResultRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, ICheckOrderRepository checkOrderRepository, IReceiveOrderRepository receiveOrderRepository) : base(BaseDal) | 
|         { | 
|             _checkOrderRepository = checkOrderRepository; | 
|             _unitOfWorkManage = unitOfWorkManage; | 
|             _receiveOrderRepository = receiveOrderRepository; | 
|         } | 
|   | 
|         /// <summary> | 
|         /// 提交质检结果 | 
|         /// </summary> | 
|         /// <param name="checkOrderId">质检单主键</param> | 
|         /// <param name="checkResult">质检结果对象</param> | 
|         /// <returns></returns> | 
|         public WebResponseContent CommitCheckResult(int checkOrderId,Dt_CheckOrderResult checkResult) | 
|         { | 
|             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($"未找到该质检单"); | 
|                 } | 
|                 if (checkOrder.CheckOrderStatus == CheckOrderStatusEnum.Checked.ObjToInt()) | 
|                 { | 
|                     return WebResponseContent.Instance.Error($"该单据已经检验完成"); | 
|                 } | 
|                 if (checkResult.Quantity < 0 || checkResult.Quantity > checkOrder.ReceivedQuantity || checkOrder.ReceivedQuantity - checkOrder.ScrappedQuantity - checkOrder.DefectedQuantity - checkOrder.ReturnQuantity < checkResult.Quantity) | 
|                 { | 
|                     return WebResponseContent.Instance.Error($"数量输入错误"); | 
|                 } | 
|                 if (checkResult.Result == CheckResultEnum.Defect.ToString())//特采 | 
|                 { | 
|                     checkOrder.DefectedNote = checkResult.Note; | 
|                     checkOrder.DefectedQuantity += checkResult.Quantity; | 
|                     checkOrder.QualifiedQuantity -= checkResult.Quantity; | 
|                 } | 
|                 else if (checkResult.Result == CheckResultEnum.Return.ToString())//退货 | 
|                 { | 
|                     checkOrder.DefectedNote = checkResult.Note; | 
|                     checkOrder.ReturnQuantity += checkResult.Quantity; | 
|                     checkOrder.QualifiedQuantity -= checkResult.Quantity; | 
|                 } | 
|                 else if (checkResult.Result == CheckResultEnum.Scrapped.ToString())//报废 | 
|                 { | 
|                     checkOrder.DefectedNote = checkResult.Note; | 
|                     checkOrder.ScrappedQuantity += checkResult.Quantity; | 
|                     checkOrder.QualifiedQuantity -= checkResult.Quantity; | 
|                 } | 
|   | 
|                 checkOrder.CheckOrderStatus = CheckOrderStatusEnum.Checked.ObjToInt(); | 
|   | 
|                 Dt_CheckOrderResult checkOrderResult = new Dt_CheckOrderResult() | 
|                 { | 
|                     Quantity = checkResult.Quantity, | 
|                     CheckOrderId = checkOrderId, | 
|                     DefectCode = checkResult.DefectCode, | 
|                     Result = checkResult.Result, | 
|                     Note = checkResult.Note | 
|                 }; | 
|                 _unitOfWorkManage.BeginTran(); | 
|                 _checkOrderRepository.UpdateData(checkOrder); | 
|                 BaseDal.AddData(checkOrderResult); | 
|                 _unitOfWorkManage.CommitTran(); | 
|                 return WebResponseContent.Instance.OK(); | 
|             } | 
|             catch (Exception ex) | 
|             { | 
|                 return WebResponseContent.Instance.Error($"{ex.Message}"); | 
|             } | 
|         } | 
|     } | 
| } |