using SqlSugar;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using WIDESEAWCS_Common.LocationEnum;
|
using WIDESEAWCS_Core.BaseRepository;
|
using WIDESEAWCS_Core.BaseServices;
|
using WIDESEAWCS_Core.Helper;
|
using WIDESEAWCS_IBasicInfoService;
|
using WIDESEAWCS_Model.Models;
|
|
namespace WIDESEAWCS_BasicInfoService
|
{
|
public class RGVLocationInfoService : ServiceBase<Dt_RGVLocationInfo, IRepository<Dt_RGVLocationInfo>>, IRGVLocationInfoService
|
{
|
public RGVLocationInfoService(IRepository<Dt_RGVLocationInfo> BaseDal) : base(BaseDal)
|
{
|
}
|
private Dictionary<string, OrderByType> _emptyAssignOrderBy = new Dictionary<string, OrderByType>()
|
{
|
{ nameof(Dt_RGVLocationInfo.Depth), OrderByType.Desc },
|
{ nameof(Dt_RGVLocationInfo.Layer), OrderByType.Asc },
|
//{ nameof(Dt_RGVLocationInfo.Column), OrderByType.Asc },
|
{ nameof(Dt_RGVLocationInfo.Row), OrderByType.Asc },
|
};
|
private Dictionary<string, OrderByType> _DepthAscOrderBy = new Dictionary<string, OrderByType>()
|
{
|
{ nameof(Dt_RGVLocationInfo.Depth), OrderByType.Asc },
|
};
|
public IRepository<Dt_RGVLocationInfo> Repository => BaseDal;
|
|
public List<Dt_RGVLocationInfo> GetFreeLocationInfos()
|
{
|
return BaseDal.QueryData(x => x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt(), _emptyAssignOrderBy);
|
}
|
/// <summary>
|
/// 查找入库可用货位
|
/// </summary>
|
/// <param name="AreaCode"></param>
|
/// <returns></returns>
|
public Dt_RGVLocationInfo GetInFreeLocationInfo(string AreaCode)
|
{
|
Dt_RGVLocationInfo? rGVLocationInfo = BaseDal.QueryFirst(x => x.WarehouseId.ToString() == AreaCode && x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt(), _emptyAssignOrderBy);
|
#region 判断巷道是否有货
|
if (rGVLocationInfo != null)
|
{
|
List<string> NoRoadwayNos = new List<string>();
|
while (true)
|
{
|
Dt_RGVLocationInfo dt_RGVLocationInfo = BaseDal.QueryFirst(x => x.RoadwayNo == rGVLocationInfo.RoadwayNo && x.Depth < rGVLocationInfo.Depth && x.LocationStatus == LocationStatusEnum.InStock.ObjToInt(), _emptyAssignOrderBy);
|
if (dt_RGVLocationInfo == null) return rGVLocationInfo;
|
|
rGVLocationInfo = BaseDal.QueryFirst(x => x.RoadwayNo == dt_RGVLocationInfo.RoadwayNo && x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.Depth > dt_RGVLocationInfo.Depth && x.LocationStatus == LocationStatusEnum.Free.ObjToInt(), _DepthAscOrderBy);
|
dt_RGVLocationInfo = BaseDal.QueryFirst(x => x.RoadwayNo == rGVLocationInfo.RoadwayNo && x.Depth > rGVLocationInfo.Depth && x.LocationStatus == LocationStatusEnum.InStock.ObjToInt(), _emptyAssignOrderBy);
|
if (dt_RGVLocationInfo == null) return rGVLocationInfo;
|
|
}
|
}
|
#endregion
|
return rGVLocationInfo;
|
}
|
}
|
}
|