pan
2025-11-12 ca4a0e7ffc11dc6f4c19b75f625444b06768ea15
ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs
@@ -35,12 +35,14 @@
    {
        private readonly IUnitOfWorkManage _unitOfWorkManage;
        private readonly IRepository<Dt_StockInfo> _stockInfoRepository;
        public IRepository<Dt_LocationInfo> Repository => BaseDal;
        public  IRepository<Dt_LocationInfo> Repository => BaseDal;
        public readonly IRepository<Dt_LocationType> _locationTypeRepository;
        public LocationInfoService(IRepository<Dt_LocationInfo> BaseDal, IUnitOfWorkManage unitOfWorkManage, IRepository<Dt_StockInfo> stockInfoRepository) : base(BaseDal)
        public LocationInfoService(IRepository<Dt_LocationInfo> BaseDal, IUnitOfWorkManage unitOfWorkManage, IRepository<Dt_StockInfo> stockInfoRepository, IRepository<Dt_LocationType> locationTypeRepository) : base(BaseDal)
        {
            _unitOfWorkManage = unitOfWorkManage;
            _stockInfoRepository = stockInfoRepository;
            _locationTypeRepository = locationTypeRepository;
        }
        /// <summary>
@@ -97,6 +99,21 @@
            return LocationDisableStatus(new int[] { key });
        }
        /// <summary>
        /// æ‰¹é‡ä¿®æ”¹è´§ä½çŠ¶æ€
        /// </summary>
        /// <param name="locationInfos"></param>
        /// <param name="locationStatus"></param>
        public void UpdateLocationStatus(List<Dt_LocationInfo> locationInfos, LocationStatusEnum locationStatus)
        {
            locationInfos.ForEach(x =>
            {
                x.LocationStatus = locationStatus.ObjToInt();
            });
            UpdateData(locationInfos);
        }
        private readonly static object _locker = new object();
        static List<LocationCache> locationCaches = new List<LocationCache>();
        private int locationCacheTime = 10;
@@ -136,6 +153,31 @@
            }
        }
        /// <summary>
        /// èŽ·å–å¯å‡ºåº“è´§ä½ç¼–å·
        /// </summary>
        /// <param name="warehouseId"></param>
        /// <returns></returns>
        public List<string> GetCanOutLocationCodes()
        {
            return Repository.QueryData(x => x.LocationCode, x =>  x.LocationStatus == LocationStatusEnum.InStock.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt())).Distinct().ToList();
        }
        /// <summary>
        /// æ ¹æ®è´§ä½ç¼–号集合获取货位信息
        /// </summary>
        /// <param name="locationCodes"></param>
        /// <returns></returns>
        public List<Dt_LocationInfo> GetLocationInfos(List<string> locationCodes)
        {
            return Repository.QueryData(x => locationCodes.Contains(x.LocationCode));
        }
        public List<LocationTypeDto> GetLocationTypes()
        {
          return   _locationTypeRepository.Db.Queryable<Dt_LocationType>().Select(x=>
              new LocationTypeDto { LocationType=x.LocationType,LocationTypeDesc=x.LocationTypeDesc}).ToList();
        }
        /// <summary>
        /// åˆå§‹åŒ–货位
@@ -275,7 +317,7 @@
                                EnableStatus = EnableStatusEnum.Normal.ObjToInt(),
                                Layer = k + 1,
                                LocationStatus = LocationStatusEnum.Free.ObjToInt(),
                                LocationType = LocationTypeEnum.Undefined.ObjToInt(),
                                LocationType = LocationTypeEnum.Normal.ObjToInt(),
                                RoadwayNo = $"{initializationLocationDTO.Roadway.ToString()}",
                                Row = i + 1,
                                Depth = depth,