wankeda
2025-03-01 1824228ee4f0f25383d1c9e9fea684dfc8a460bc
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/MesProInOrderService.cs
@@ -3,9 +3,13 @@
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.CodeConfigEnum;
using WIDESEA_Core.Helper;
using WIDESEA_DTO.Basic;
using WIDESEA_DTO.MES;
using WIDESEA_IBasicRepository;
using WIDESEA_IInboundRepository;
@@ -19,10 +23,48 @@
    {
        public IMesProInOrderRepository Repository => BaseDal;
        private readonly IUnitOfWorkManage _unitOfWorkManage;
        public MesProInOrderService(IMesProInOrderRepository BaseDal, IUnitOfWorkManage unitOfWorkManag) : base(BaseDal)
        private readonly IInboundRepository _inboundRepository;
        public MesProInOrderService(IMesProInOrderRepository BaseDal, IUnitOfWorkManage unitOfWorkManag, IInboundRepository inboundRepository) : base(BaseDal)
        {
            _unitOfWorkManage = unitOfWorkManag;
            _inboundRepository = inboundRepository;
        }
        /// <summary>
        /// æˆå“å…¥åº“扫码
        /// </summary>
        /// <param name="Id"></param>
        /// <param name="saveModel"></param>
        /// <returns></returns>
        public WebResponseContent ProInboundScan(int Id,string serNum)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                //获取对应MES成品入库单据
                Dt_MesProInOrder mesProInOrder = BaseDal.Db.Queryable<Dt_MesProInOrder>().Includes(x => x.Details).First();
                if (mesProInOrder==null)
                {
                    return content.Error("当前MES入库单据不存在");
                }
                if (mesProInOrder.MesProStatus>= InOrderStatusEnum.入库完成.ObjToInt())
                {
                    return content.Error("当前单据已入库或关闭状态");
                }
                ProSerNumAnalysisModel model = CodeAnalysisHelper.CodeAnalysis<ProSerNumAnalysisModel>(AnalysisCodeEnum.ProSerNumAnalysis, serNum);
                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($"未找到");
            }
            catch (Exception ex)
            {
                content.Error(ex.Message);
            }
            return content;
        }
    }
}