wangxinhui
昨天 57148c2264abe80bd3b472f2980104d90dad5c61
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs
@@ -3,8 +3,10 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common.CommonEnum;
using WIDESEA_Common.OrderEnum;
using WIDESEA_Common.StockEnum;
using WIDESEA_Common.WareHouseEnum;
using WIDESEA_Core;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.BaseServices;
@@ -12,6 +14,7 @@
using WIDESEA_Core.Helper;
using WIDESEA_External.Model;
using WIDESEA_IApprovalRepository;
using WIDESEA_IBasicRepository;
using WIDESEA_ICheckRepository;
using WIDESEA_ICheckService;
using WIDESEA_IInboundRepository;
@@ -31,7 +34,10 @@
        private readonly IPurchaseOrderDetailRepository _purchaseOrderDetailRepository;
        private readonly IOutboundRepository _outboundRepository;
        private readonly IStockRepository _stockRepository;
        public CheckOrderResultService(ICheckOrderResultRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, ICheckOrderRepository checkOrderRepository, IReceiveOrderRepository receiveOrderRepository, ICheckOrderService checkOrderService, IPurchaseOrderRepository purchaseOrderRepository, IPurchaseOrderDetailRepository purchaseOrderDetailRepository, IOutboundRepository outboundRepository, IStockRepository stockRepository) : base(BaseDal)
        private readonly IWarehouseRepository _warehouseRepository;
        private readonly IReceiveOrderDetailRepository _receiveOrderDetailRepository;
        public CheckOrderResultService(ICheckOrderResultRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, ICheckOrderRepository checkOrderRepository, IReceiveOrderRepository receiveOrderRepository, ICheckOrderService checkOrderService, IPurchaseOrderRepository purchaseOrderRepository, IPurchaseOrderDetailRepository purchaseOrderDetailRepository, IOutboundRepository outboundRepository, IStockRepository stockRepository,IWarehouseRepository warehouseRepository, IReceiveOrderDetailRepository receiveOrderDetailRepository) : base(BaseDal)
        {
            _checkOrderRepository = checkOrderRepository;
            _unitOfWorkManage = unitOfWorkManage;
@@ -41,6 +47,8 @@
            _purchaseOrderDetailRepository = purchaseOrderDetailRepository;
            _outboundRepository = outboundRepository;
            _stockRepository = stockRepository;
            _warehouseRepository=warehouseRepository;
            _receiveOrderDetailRepository = receiveOrderDetailRepository;
        }
        /// <summary>
@@ -61,6 +69,7 @@
                {
                    return content.Error($"未找到该质检单");
                }
                Dt_Warehouse warehouse = _warehouseRepository.QueryFirst(x => x.WarehouseId == checkOrder.WarehouseId);
                Dt_ReceiveOrder receiveOrder = _receiveOrderRepository.Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderNo == checkOrder.ReceiveOrderNo).Includes(x => x.Details).First();
                if (receiveOrder.ReceiveOrderStatus!=ReceiveOrderStatusEnum.Completed.ObjToInt())
                {
@@ -178,6 +187,8 @@
                {
                    return content.Error($"未找到该质检单");
                }
                Dt_Warehouse warehouse = _warehouseRepository.QueryFirst(x => x.WarehouseId == checkOrder.WarehouseId);
                //获取收货单
                Dt_ReceiveOrder receiveOrder = _receiveOrderRepository.Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderNo == checkOrder.ReceiveOrderNo).Includes(x => x.Details).First();
                if (receiveOrder.ReceiveOrderStatus != ReceiveOrderStatusEnum.Completed.ObjToInt())
                {
@@ -203,6 +214,7 @@
                    {
                        return content.Error($"未找到缺陷类型");
                    }
                    //检验结果
                    checkOrderResult = new Dt_CheckOrderResult()
                    {
                        Quantity = (float)Convert.ToDecimal(eRPCheckResult.Quantity),
@@ -212,7 +224,7 @@
                        Note = eRPCheckResult.Note,
                        SampleCount = 0,
                    };
                    //获取对应采购单
                    //获取对应采购单扣除收货数量
                    Dt_ReceiveOrderDetail receiveOrderDetail = receiveOrder.Details.First(x => x.RowNo == checkOrder.ReceiveDetailRowNo);
                    purchaseOrder = _purchaseOrderRepository.Db.Queryable<Dt_PurchaseOrder>().Where(x => x.PurchaseOrderNo == receiveOrderDetail.PurchaseOrderNo).Includes(x => x.Details).Where(x => x.Details.Any(v => v.RowNo == receiveOrderDetail.PurchaseOrderDetailRowNo)).First();
                    if (purchaseOrder == null)
@@ -226,6 +238,7 @@
                    }
                    purchaseOrderDetail.PurchaseDetailReceiveQty -= (float)Convert.ToDecimal(eRPCheckResult.Quantity);
                }
                //判断检验合格结果
                if (checkModel.Result == CheckAcceptEnum.Accept.ToString())
                {
                    checkOrder.Result = CheckAcceptEnum.Accept.ToString();
@@ -239,17 +252,33 @@
                    return content.Error("未找到检验类型");
                }
                checkOrder.CheckOrderStatus = CheckOrderStatusEnum.Checked.ObjToInt();
                List<Dt_ReceiveOrderDetail> receiveOrderDetails = new List<Dt_ReceiveOrderDetail>();
                //根据检验数量扣除合格数量
                if (checkOrderResult != null)
                {
                    checkOrder.QualifiedQuantity = checkOrder.ReceivedQuantity - checkOrderResult.Quantity;
                    //更新收货检验合格标识
                    if (warehouse.WarehouseCode == WarehouseEnum.HA152.ToString() || warehouse.WarehouseCode == WarehouseEnum.HA58.ToString())
                    {
                        receiveOrderDetails = receiveOrder.Details.Where(x=>x.RowNo==checkOrder.ReceiveDetailRowNo).OrderByDescending(x => x.RowNo).Take((int)checkOrderResult.Quantity).ToList();
                        receiveOrderDetails.ForEach(x =>
                        {
                            x.IsCheckOk = WhetherEnum.True.ObjToInt();
                        });
                    }
                }
                else
                {
                    checkOrder.QualifiedQuantity = checkOrder.ReceivedQuantity;
                }
                checkOrder.CheckUserName = App.User.UserName;
                _unitOfWorkManage.BeginTran();
                if (receiveOrderDetails.Count > 0)
                {
                    _receiveOrderDetailRepository.UpdateData(receiveOrderDetails);
                }
                //更新采购单
                if (checkOrderResult != null && purchaseOrder != null && purchaseOrderDetail != null)
                {
                    BaseDal.AddData(checkOrderResult);
@@ -264,12 +293,15 @@
                    }
                    _purchaseOrderDetailRepository.UpdateData(purchaseOrderDetail);
                }
                //ERP上报
                WebResponseContent responseContent = _checkOrderService.FeedbackCheckResult(checkOrder, checkOrderResult != null ? new List<Dt_CheckOrderResult> { checkOrderResult } : new List<Dt_CheckOrderResult>());
                if (!responseContent.Status)
                if (string.IsNullOrEmpty(checkModel.CreatorCode))
                {
                    throw new Exception(responseContent.Message);
                }
                    //ERP上报
                    WebResponseContent responseContent = _checkOrderService.FeedbackCheckResult(checkOrder, checkOrderResult != null ? new List<Dt_CheckOrderResult> { checkOrderResult } : new List<Dt_CheckOrderResult>());
                    if (!responseContent.Status)
                    {
                        throw new Exception(responseContent.Message);
                    }
                }
                checkOrder.UploadStatus = CheckUploadEnum.UploadOk.ObjToInt();
                _checkOrderRepository.UpdateData(checkOrder);
                _unitOfWorkManage.CommitTran();
@@ -295,7 +327,7 @@
            try
            {
                Dt_CheckOrder checkOrder = _checkOrderRepository.QueryFirst(x => x.CheckOrderId == checkOrderId);
                //获取质检单对应的收货单
                //获取质检单
                if (checkOrder == null)
                {
                    return content.Error($"未找到该质检单");