1
hutongqing
2024-09-23 d1a2afa67032339c2eb1019a02c6b6d036c0bdb1
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs
@@ -18,9 +18,7 @@
{
    public class LocationInfoService : ServiceBase<Dt_LocationInfo, ILocationInfoRepository>, ILocationInfoService
    {
        private readonly IAreaInfoRepository _areaInfoRepository;
        private readonly IWarehouseRepository _warehouseRepository;
        private readonly IRoadwayInfoRepository _roadwayInfoRepository;
        private readonly IBasicRepository _basicRepository;
        private Dictionary<string, OrderByType> _emptyAssignOrderBy = new Dictionary<string, OrderByType>()
        {
@@ -32,11 +30,9 @@
        public ILocationInfoRepository Repository => BaseDal;
        public LocationInfoService(ILocationInfoRepository BaseDal, IAreaInfoRepository areaInfoRepository, IWarehouseRepository warehouseRepository, IRoadwayInfoRepository roadwayInfoRepository) : base(BaseDal)
        public LocationInfoService(ILocationInfoRepository BaseDal, IBasicRepository basicRepository) : base(BaseDal)
        {
            _areaInfoRepository = areaInfoRepository;
            _warehouseRepository = warehouseRepository;
            _roadwayInfoRepository = roadwayInfoRepository;
            _basicRepository = basicRepository;
        }
        public override WebResponseContent AddData(SaveModel saveModel)
@@ -48,17 +44,17 @@
        {
            try
            {
                Dt_RoadwayInfo roadwayInfo = _roadwayInfoRepository.QueryFirst(x => x.InStationCode == stationCode) ?? throw new Exception("未找到该站台对应的巷道,请检查基础配置信息");
                if (roadwayInfo.EnalbeStatus != RoadwayStatusEnum.Normal.ObjToInt() && roadwayInfo.EnalbeStatus != RoadwayStatusEnum.OnlyIn.ObjToInt())
                Dt_RoadwayInfo roadwayInfo = _basicRepository.RoadwayInfoRepository.QueryFirst(x => x.InStationCode == stationCode) ?? throw new Exception("未找到该站台对应的巷道,请检查基础配置信息");
                if (roadwayInfo.EnableStatus != RoadwayStatusEnum.Normal.ObjToInt() && roadwayInfo.EnableStatus != RoadwayStatusEnum.OnlyIn.ObjToInt())
                {
                    throw new Exception("该巷道不可入库,请检查巷道禁用信息");
                }
                if (roadwayInfo.WarehouseId > 0)
                if (roadwayInfo.AreaId > 0)
                {
                    Dt_Warehouse warehouse = _warehouseRepository.QueryFirst(x => x.Id == roadwayInfo.WarehouseId);
                    if (warehouse != null && warehouse.WarehouseStatus == EnableEnum.Disable.ObjToInt())
                    Dt_AreaInfo areaInfo = _basicRepository.AreaInfoRepository.QueryFirst(x => x.Id == roadwayInfo.AreaId);
                    if (areaInfo != null && areaInfo.AreaStatus == EnableEnum.Disable.ObjToInt())
                    {
                        throw new Exception("仓库被禁用,不可入库");
                        throw new Exception("区域被禁用,不可入库");
                    }
                }
                if (inboundType == TaskTypeEnum.PalletInbound.ObjToInt())//空盘入库分配逻辑
@@ -80,34 +76,42 @@
        private Dt_LocationInfo EmptyAssignLocation(string roadway)
        {
            List<LocationGroupDTO> locationGroups = BaseDal.GetLocationGroups(roadway, LocationStatusEnum.Free, LocationStatusEnum.Pallet);
            List<LocationGroupDTO> locationGroups = BaseDal.GetLocationGroups(roadway, LocationStatusEnum.Pallet, LocationStatusEnum.Free);
            if (locationGroups != null && locationGroups.Count > 0)
            {
                return BaseDal.QueryFirst(x => x.Id == locationGroups.FirstOrDefault().IdA);
                LocationGroupDTO? locationGroup = locationGroups.FirstOrDefault(x => x.EnableStatusA == LocationEnalbeStatusEnum.OnlyIn.ObjToInt() || x.EnableStatusA == LocationEnalbeStatusEnum.Normal.ObjToInt());
                int id = locationGroup?.IdA ?? 0;
                return BaseDal.QueryFirst(x => x.Id == id);
            }
            locationGroups = BaseDal.GetLocationGroups(roadway, LocationStatusEnum.Free, LocationStatusEnum.Free);
            if (locationGroups != null && locationGroups.Count > 0)
            {
                return BaseDal.QueryFirst(x => x.Id == locationGroups.FirstOrDefault().IdB);
                LocationGroupDTO? locationGroup = locationGroups.FirstOrDefault(x => x.EnableStatusB == LocationEnalbeStatusEnum.OnlyIn.ObjToInt() || x.EnableStatusB == LocationEnalbeStatusEnum.Normal.ObjToInt());
                int id = locationGroup?.IdB ?? 0;
                return BaseDal.QueryFirst(x => x.Id == id);
            }
            return BaseDal.QueryFirst(x => x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnalbeStatus == LocationEnalbeStatusEnum.OnlyIn.ObjToInt() || x.EnalbeStatus == LocationEnalbeStatusEnum.Normal.ObjToInt() && x.RoadwayNo == roadway), _emptyAssignOrderBy);
            return BaseDal.QueryFirst(x => x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == LocationEnalbeStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == LocationEnalbeStatusEnum.Normal.ObjToInt() && x.RoadwayNo == roadway), _emptyAssignOrderBy);
        }
        private Dt_LocationInfo StoredAssignLocation(string roadway)
        {
            List<LocationGroupDTO> locationGroups = BaseDal.GetLocationGroups(roadway, LocationStatusEnum.Free, LocationStatusEnum.InStock);
            if (locationGroups != null && locationGroups.Count > 0)
            List<LocationGroupDTO> locationGroups = BaseDal.GetLocationGroups(roadway, LocationStatusEnum.InStock, LocationStatusEnum.Free);
            if (locationGroups != null)
            {
                return BaseDal.QueryFirst(x => x.Id == locationGroups.FirstOrDefault().IdA);
                LocationGroupDTO? locationGroup = locationGroups.FirstOrDefault(x => x.EnableStatusA == LocationEnalbeStatusEnum.OnlyIn.ObjToInt() || x.EnableStatusA == LocationEnalbeStatusEnum.Normal.ObjToInt());
                int id = locationGroup?.IdA ?? 0;
                return BaseDal.QueryFirst(x => x.Id == id);
            }
            locationGroups = BaseDal.GetLocationGroups(roadway, LocationStatusEnum.Free, LocationStatusEnum.Free);
            if (locationGroups != null && locationGroups.Count > 0)
            {
                return BaseDal.QueryFirst(x => x.Id == locationGroups.FirstOrDefault().IdB);
                LocationGroupDTO? locationGroup = locationGroups.FirstOrDefault(x => x.EnableStatusB == LocationEnalbeStatusEnum.OnlyIn.ObjToInt() || x.EnableStatusB == LocationEnalbeStatusEnum.Normal.ObjToInt());
                int id = locationGroup?.IdB ?? 0;
                return BaseDal.QueryFirst(x => x.Id == id);
            }
            return BaseDal.QueryFirst(x => x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnalbeStatus == LocationEnalbeStatusEnum.OnlyIn.ObjToInt() || x.EnalbeStatus == LocationEnalbeStatusEnum.Normal.ObjToInt() && x.RoadwayNo == roadway), _emptyAssignOrderBy);
            return BaseDal.QueryFirst(x => x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == LocationEnalbeStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == LocationEnalbeStatusEnum.Normal.ObjToInt() && x.RoadwayNo == roadway), _emptyAssignOrderBy);
        }
        public Dt_LocationInfo AdjacentDepthLocation(string locationCode)
@@ -140,7 +144,7 @@
                            {
                                AreaId = 0,
                                Column = j + 1,
                                EnalbeStatus = LocationEnalbeStatusEnum.Normal.ObjToInt(),
                                EnableStatus = LocationEnalbeStatusEnum.Normal.ObjToInt(),
                                Layer = k + 1,
                                LocationStatus = LocationStatusEnum.Free.ObjToInt(),
                                LocationType = LocationTypeEnum.Cube.ObjToInt(),