wangxinhui
5 天以前 225d11e2ddaa55d1d482201cb4d89c9486cdba69
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_BasicRepository/LocationInfoRepository.cs
@@ -14,6 +14,9 @@
namespace WIDESEA_BasicRepository
{
    /// <summary>
    /// è´§ä½ä»“储实现层
    /// </summary>
    public class LocationInfoRepository : RepositoryBase<Dt_LocationInfo>, ILocationInfoRepository
    {
        public LocationInfoRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
@@ -21,36 +24,48 @@
        }
        /// <summary>
        /// èŽ·å–åˆ†ç»„æ‰€æœ‰è´§ä½
        /// </summary>
        /// <param name="roadway"></param>
        /// <returns></returns>
        public List<LocationGroupDTO> GetAllLocationGroups(string roadway)
        {
            return QueryTabs<Dt_LocationInfo, Dt_LocationInfo, LocationGroupDTO>((a, b) => a.Column == b.Column && a.Layer == b.Layer && a.Row != b.Row && SqlFunc.Abs(a.Row - b.Row) == 1, (a, b) => new LocationGroupDTO { DepthA = a.Depth, DepthB = b.Depth, EnableStatusA = a.EnableStatus, EnableStatusB = b.EnableStatus, IdA = a.Id, IdB = b.Id, LocationCodeA = a.LocationCode, LocationCodeB = b.LocationCode, LocationStatusA = a.LocationStatus, LocationStatusB = b.LocationStatus, LocationTypeA = a.LocationType, LocationTypeB = b.LocationType }, a => a.Depth == 1 && a.RoadwayNo == roadway, b => b.Depth == 2 && b.RoadwayNo == roadway, x => true);
        }
        /// <summary>
        /// æ ¹æ®çŠ¶æ€èŽ·å–åˆ†ç»„è´§ä½
        /// </summary>
        /// <param name="roadway"></param>
        /// <param name="locationAStatus"></param>
        /// <param name="locationBStatus"></param>
        /// <returns></returns>
        public List<LocationGroupDTO> GetLocationGroups(string roadway, LocationStatusEnum locationAStatus, LocationStatusEnum locationBStatus)
        {
            return QueryTabs<Dt_LocationInfo, Dt_LocationInfo, LocationGroupDTO>(
                (a, b) => a.Column == b.Column && a.Layer == b.Layer && a.Row != b.Row && SqlFunc.Abs(a.Row - b.Row) == 1,
                (a, b) => new LocationGroupDTO { DepthA = a.Depth, DepthB = b.Depth, EnableStatusA = a.EnableStatus, EnableStatusB = b.EnableStatus, IdA = a.Id, IdB = b.Id, LocationCodeA = a.LocationCode, LocationCodeB = b.LocationCode, LocationStatusA = a.LocationStatus, LocationStatusB = b.LocationStatus, LocationTypeA = a.LocationType, LocationTypeB = b.LocationType },
                a => a.Depth == 1 && a.RoadwayNo == roadway && a.LocationStatus == locationAStatus.ObjToInt(),
                b => b.Depth == 2 && b.RoadwayNo == roadway && b.LocationStatus == locationBStatus.ObjToInt(),
                (a, b) => a.Column == b.Column && a.Layer == b.Layer && a.Row != b.Row && SqlFunc.Abs(a.Row - b.Row) == 1,
                (a, b) => new LocationGroupDTO { DepthA = a.Depth, DepthB = b.Depth, EnableStatusA = a.EnableStatus, EnableStatusB = b.EnableStatus, IdA = a.Id, IdB = b.Id, LocationCodeA = a.LocationCode, LocationCodeB = b.LocationCode, LocationStatusA = a.LocationStatus, LocationStatusB = b.LocationStatus, LocationTypeA = a.LocationType, LocationTypeB = b.LocationType },
                a => a.Depth == 1 && a.RoadwayNo == roadway && a.LocationStatus == locationAStatus.ObjToInt(),
                b => b.Depth == 2 && b.RoadwayNo == roadway && b.LocationStatus == locationBStatus.ObjToInt(),
                x => true);
        }
        public override bool UpdateData(Dt_LocationInfo entity)
        {
            return base.UpdateData(entity);
        }
        public List<string> GetCanOutLocationCodes(List<string> roadways, List<int> areaIds)
        {
            return QueryData(x => x.LocationCode, x => roadways.Contains(x.RoadwayNo) && (areaIds.Contains(x.AreaId) || x.AreaId == 0) && 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 QueryData(x => locationCodes.Contains(x.LocationCode));
        }
        /// <summary>
        /// æ‰¹é‡ä¿®æ”¹è´§ä½çŠ¶æ€
        /// </summary>
        /// <param name="locationInfos"></param>
        /// <param name="locationStatus"></param>
        public void UpdateLocationStatus(List<Dt_LocationInfo> locationInfos, LocationStatusEnum locationStatus)
        {
            locationInfos.ForEach(x =>
@@ -59,5 +74,35 @@
            });
            UpdateData(locationInfos);
        }
        /// <summary>
        /// èŽ·å–å¯å‡ºåº“è´§ä½ç¼–å·
        /// </summary>
        /// <param name="warehouseId"></param>
        /// <returns></returns>
        public List<string> GetCanOutLocationCodes(int warehouseId)
        {
            return QueryData(x => x.LocationCode, x => x.WarehouseId == warehouseId && x.LocationStatus == LocationStatusEnum.InStock.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt())).Distinct().ToList();
        }
        /// <summary>
        /// èŽ·å–å¯å‡ºåº“è´§ä½ç¼–å·
        /// </summary>
        /// <param name="warehouseId"></param>
        /// <returns></returns>
        public List<string> PPGetCanOutLocationCodes(int warehouseId)
        {
            return QueryData(x => x.LocationCode, x => x.WarehouseId == warehouseId && x.LocationType == LocationTypeEnum.Undefined.ObjToInt() && x.LocationStatus == LocationStatusEnum.InStock.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt())).Distinct().ToList();
        }
        /// <summary>
        /// èŽ·å–MES指定可出库货位编号
        /// </summary>
        /// <param name="warehouseId"></param>
        /// <returns></returns>
        public List<string> GetCanOutLocationCodes(string locationcode)
        {
            return QueryData(x => x.LocationCode, x => x.LocationCode == locationcode && x.LocationStatus == LocationStatusEnum.InStock.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt())).Distinct().ToList();
        }
    }
}