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, 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; } /// /// 提交质检结果 /// /// 质检单主键 /// 质检结果对象 /// 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}"); } } } }