diff --git a/Admin.Core.IService/IService_New/IBaseSpaceInfoServices.cs b/Admin.Core.IService/IService_New/IBaseSpaceInfoServices.cs index b36c816d..1dfaad60 100644 --- a/Admin.Core.IService/IService_New/IBaseSpaceInfoServices.cs +++ b/Admin.Core.IService/IService_New/IBaseSpaceInfoServices.cs @@ -16,5 +16,28 @@ namespace Admin.Core.IService /// /// Task InStoreGetSpaceInfoByMaterialType(string store, string materialType); + + /// + /// 出库通过物料类型获取指定货道 + /// + /// + /// + /// + Task OutStoreGetSpaceInfoByMaterialCode(string store, string materialCode); + + /// + /// 通过货道编号获取货道信息 + /// + /// + /// + /// + Task GetSpaceInfoBySpaceCode(string store, string spaceCode); + + /// + /// 更新货道信息 + /// + /// + /// + Task UpdateSpaceInfo(BaseSpaceInfo spaceInfo); } } \ No newline at end of file diff --git a/Admin.Core.Service/Service_New/BaseSpaceInfoServices.cs b/Admin.Core.Service/Service_New/BaseSpaceInfoServices.cs index e34ba6dd..d7b85453 100644 --- a/Admin.Core.Service/Service_New/BaseSpaceInfoServices.cs +++ b/Admin.Core.Service/Service_New/BaseSpaceInfoServices.cs @@ -16,6 +16,9 @@ using Admin.Core.Model.Sys; namespace Admin.Core.Service { + /** + * 货道 + **/ public class BaseSpaceInfoServices : BaseServices, IBaseSpaceInfoServices { private static readonly log4net.ILog logHelper = LogManager.GetLogger(typeof(BaseSpaceInfoServices)); @@ -105,7 +108,102 @@ namespace Admin.Core.Service logHelper.Info("入库过滤未获取到匹配的货道信息"); } return spaceInfo; + } + #endregion + + #region 出库通过物料类型获取指定货道 + /// + /// 出库通过物料类型获取指定货道 + /// + /// + /// + /// + public async Task OutStoreGetSpaceInfoByMaterialCode(string store, string materialType) + { + BaseSpaceInfo spaceInfo = null; + List spaceInfos; + try + { + //Expression> exp = s1 => true; + spaceInfos = await _baseSpaceInfoRepository.QueryAsync(x => x.StoreCode == store && x.MaterialType == materialType && x.SpaceStatus == 1 && x.SpaceStock > 0);//相同型号、启用状态、库存不为空的货道信息 + + logHelper.Info($"根据仓库{store};物料:{materialType};获取到的货道信息:{spaceInfos.ToJson()}"); + logHelper.Info($"仓库{store};物料:{materialType};匹配的入库货道信息:{spaceInfos.ToJson()}"); + } + catch (Exception ex) + { + logHelper.Error("出库通过物料类型获取货道信息异常", ex); + } + return spaceInfo; + } + #endregion + + #region 出库过滤逻辑 + /// + /// 出库过滤逻辑 + /// + /// + public BaseSpaceInfo outStoreFilter(List spaceInfos) + { + BaseSpaceInfo spaceInfo = null; + if (spaceInfos.Count > 0) + { + //获取库存最少的货道(优先清空货道) + spaceInfo = spaceInfos.Where(x => x.SpaceStock > 0).OrderBy(x => x.SpaceStock).First(); + } + else + { + logHelper.Info("出库过滤未获取到匹配的货道信息"); + } + + return spaceInfo; + } + #endregion + + #region 通过货道编号获取货道信息 + /// + /// 通过货道编号获取货道信息 + /// + /// + /// + /// + public async Task GetSpaceInfoBySpaceCode(string store, string spaceCode) + { + BaseSpaceInfo spaceInfo = null; + try + { + spaceInfo = await _baseSpaceInfoRepository.FirstAsync(x => x.StoreCode == store && x.SpaceCode == spaceCode); + } + catch (Exception ex) + { + logHelper.Error("通过货道编号获取货道信息异常", ex); + } + return spaceInfo; + } + #endregion + + #region 更新货道信息 + /// + /// 更新货道信息 + /// + /// + /// + public async Task UpdateSpaceInfo(BaseSpaceInfo spaceInfo) + { + bool result = false; + try + { + result = await _baseSpaceInfoRepository.UpdateAsync(spaceInfo); + } + catch (Exception ex) + { + logHelper.Error("更新货道信息异常", ex); + } + return result; } #endregion + + + } } \ No newline at end of file