wangxinhui
2025-03-31 a6e0ea9ce13e791f3edae4edffeb3be3ccb760be
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_StockRepository/ProStockInfoRepository.cs
@@ -4,6 +4,7 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common.StockEnum;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.Helper;
using WIDESEA_IStockRepository;
@@ -20,16 +21,17 @@
        public List<Dt_ProStockInfo> GetProStocks(Dt_ProOutOrderDetail proOutOrderDetail,List<string> locationInfos)
        {
            List<Dt_ProStockInfo>? proStockInfos = null;
            bool isCanLot= !string.IsNullOrEmpty(proOutOrderDetail.PLot);
            bool isCanDate = !string.IsNullOrEmpty(proOutOrderDetail.DateCode);
            proStockInfos = Db.Queryable<Dt_ProStockInfo>().Where(x => locationInfos.Contains(x.LocationCode))
            bool isCanLot= string.IsNullOrEmpty(proOutOrderDetail.PLot);
            bool isCanDate = string.IsNullOrEmpty(proOutOrderDetail.DateCode);
            bool isCanVer = string.IsNullOrEmpty(proOutOrderDetail.OutSpecifyVer);
            proStockInfos = Db.Queryable<Dt_ProStockInfo>().Where(x => locationInfos.Contains(x.LocationCode) && x.ProStockAttribute == ProStockAttributeEnum.成品.ObjToInt())
                .Includes(x => x.proStockInfoDetails)
                .Where(x => x.proStockInfoDetails
                .Any(v => v.SaleOrder==proOutOrderDetail.SaleOrder
                && v.ProductCode==proOutOrderDetail.PCode
                && v.ProductVersion==proOutOrderDetail.PVer
                && (isCanLot? v.LotNumber== proOutOrderDetail.PLot:true)
                && (isCanDate ? v.DateCode == proOutOrderDetail.DateCode : true)
                .Any(v => v.SaleOrder == proOutOrderDetail.SaleOrder
                && v.ProductCode == proOutOrderDetail.PCode
                && v.ProductVersion == proOutOrderDetail.PVer
                && (isCanLot ? isCanLot : v.LotNumber == proOutOrderDetail.PLot)
                && (isCanDate ? isCanDate : v.DateCode == proOutOrderDetail.DateCode)
                ))
            .ToList();
            
@@ -37,7 +39,7 @@
            return proStockInfos;
        }
        /// <summary>
        /// èŽ·å–MES提库库存
        /// èŽ·å–MES提库库存(尾数仓)
        /// </summary>
        /// <param name="mesRworkOutboundOrder"></param>
        /// <param name="locationInfos"></param>
@@ -45,14 +47,14 @@
        public List<Dt_ProStockInfo> GetProStocks(Dt_MesRworkOutboundOrder mesRworkOutboundOrder, List<string> locationInfos)
        {
            List<Dt_ProStockInfo>? proStockInfos = null;
            bool isCanDate = !string.IsNullOrEmpty(mesRworkOutboundOrder.DateCode);
            proStockInfos = Db.Queryable<Dt_ProStockInfo>().Where(x => locationInfos.Contains(x.LocationCode))
            bool isCanDate = string.IsNullOrEmpty(mesRworkOutboundOrder.DateCode);
            proStockInfos = Db.Queryable<Dt_ProStockInfo>().Where(x => locationInfos.Contains(x.LocationCode) && x.ProStockAttribute==ProStockAttributeEnum.尾数.ObjToInt())
                .Includes(x => x.proStockInfoDetails)
                .Where(x => x.proStockInfoDetails
                .Any(v => v.SaleOrder == mesRworkOutboundOrder.SaleOrder
                && v.ProductCode == mesRworkOutboundOrder.ProductCode
                && v.ProductVersion == mesRworkOutboundOrder.ProductVersion
                && (isCanDate ? v.DateCode == mesRworkOutboundOrder.DateCode : true)
                && (isCanDate ? isCanDate : v.DateCode == mesRworkOutboundOrder.DateCode)
                ))
            .ToList();
            proStockInfos = proStockInfos.OrderBy(x => x.proStockInfoDetails.FirstOrDefault()?.DateCode).ThenBy(x => x.proStockInfoDetails.Sum(x => x.StockPcsQty)).ToList();