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.BaseServices; using WIDESEA_Core.Helper; using WIDESEA_IApprovalRepository; using WIDESEA_ICheckRepository; using WIDESEA_ICheckService; using WIDESEA_Model.Models; namespace WIDESEA_CheckService { public class CheckOrderResultService : ServiceBase, ICheckOrderResultService { private readonly ICheckOrderRepository _checkOrderRepository; public CheckOrderResultService(ICheckOrderResultRepository BaseDal, ICheckOrderRepository checkOrderRepository) : base(BaseDal) { _checkOrderRepository = checkOrderRepository; } /// /// 提交质检结果 /// /// 质检单主键 /// 质检结果对象 /// public WebResponseContent CommitCheckResult(int checkOrderId, Dt_CheckOrderResult checkResult) { try { Dt_CheckOrder checkOrder = _checkOrderRepository.QueryFirst(x => x.CheckOrderId == checkOrderId); 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 }; _checkOrderRepository.UpdateData(checkOrder); BaseDal.AddData(checkOrderResult); return WebResponseContent.Instance.OK(); } catch (Exception ex) { return WebResponseContent.Instance.Error($"{ex.Message}"); } } } }