1
helongyang
2025-06-12 25cb7cd50d12f48e93d6cde47420ca3458e9c47a
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/MesProInOrderService.cs
@@ -15,6 +15,7 @@
using WIDESEA_IInboundRepository;
using WIDESEA_IInboundService;
using WIDESEA_IOutboundService;
using WIDESEA_IStockRepository;
using WIDESEA_Model.Models;
namespace WIDESEA_InboundService
@@ -24,10 +25,12 @@
        public IMesProInOrderRepository Repository => BaseDal;
        private readonly IUnitOfWorkManage _unitOfWorkManage;
        private readonly IInboundRepository _inboundRepository;
        public MesProInOrderService(IMesProInOrderRepository BaseDal, IUnitOfWorkManage unitOfWorkManag, IInboundRepository inboundRepository) : base(BaseDal)
        private readonly IStockRepository _stockRepository;
        public MesProInOrderService(IMesProInOrderRepository BaseDal, IUnitOfWorkManage unitOfWorkManag, IInboundRepository inboundRepository, IStockRepository stockRepository) : base(BaseDal)
        {
            _unitOfWorkManage = unitOfWorkManag;
            _inboundRepository = inboundRepository;
            _stockRepository = stockRepository;
        }
        /// <summary>
        /// æˆå“å…¥åº“扫码
@@ -41,7 +44,7 @@
            try
            {
                //获取对应MES成品入库单据
                Dt_MesProInOrder mesProInOrder = BaseDal.Db.Queryable<Dt_MesProInOrder>().Includes(x => x.Details).First();
                Dt_MesProInOrder mesProInOrder = BaseDal.Db.Queryable<Dt_MesProInOrder>().Where(x => x.Id == Id).Includes(x => x.Details).First();
                if (mesProInOrder==null)
                {
                    return content.Error("当前MES入库单据不存在");
@@ -51,14 +54,26 @@
                    return content.Error("当前单据已入库或关闭状态");
                }
                ProSerNumAnalysisModel model = CodeAnalysisHelper.CodeAnalysis<ProSerNumAnalysisModel>(AnalysisCodeEnum.ProSerNumAnalysis, serNum);
                Dt_MesProInOrderDetail? proInOrderDetail = mesProInOrder.Details.FirstOrDefault(x => x.BagNo == model.BagNO);
                //判断扫描和单据中是否匹配
                if (proInOrderDetail == null)
                {
                    return content.Error($"框码{mesProInOrder.BatchNo}中无内包{model.BagNO}信息");
                }
                if ((proInOrderDetail.OverInQuantity + model.OKPCSQTY.ObjToInt())> proInOrderDetail.OKPCSQTY)
                {
                    return content.Error($"内包数量溢出{(proInOrderDetail.OverInQuantity + model.OKPCSQTY.ObjToInt()) - proInOrderDetail.OKPCSQTY}");
                }
                float SumPCSQty = mesProInOrder.Details.Sum(x => x.OKPCSQTY);
                float OverPCSQty = mesProInOrder.Details.Sum(x=>x.OverInQuantity);
                if ((OverPCSQty+model.OKPCSQTY.ObjToInt())>SumPCSQty)
                {
                    return content.Error($"当前入库订单数量溢出{(OverPCSQty + model.OKPCSQTY.ObjToInt())- SumPCSQty}");
                }
                //获取对应内包明细
                Dt_MesProInOrderDetail? proInOrderDetail = mesProInOrder.Details.FirstOrDefault(x=>x.BagNo==model.BagNO) ?? throw new Exception($"未找到");
                proInOrderDetail.OverInQuantity += model.OKPCSQTY.ObjToInt();
                _inboundRepository.MesProInOrderDetailRepository.UpdateData(proInOrderDetail);
                return content.OK($"内包{proInOrderDetail.BagNo}已扫数量:{proInOrderDetail.OverInQuantity},剩余:{proInOrderDetail.OKPCSQTY-proInOrderDetail.OverInQuantity}");
            }
            catch (Exception ex)
            {