using CMS.Plugin.HIAWms.Application.Contracts.Dtos.CommonDto; using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsEnumDto; using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialType; using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsStore; using CMS.Plugin.HIAWms.Application.Contracts.Services; using CMS.Plugin.HIAWms.Domain.Shared.Enums; using CMS.Plugin.HIAWms.Domain.WmsAreas; using CMS.Plugin.HIAWms.Domain.WmsMaterials; using CMS.Plugin.HIAWms.Domain.WmsMaterialTypes; using CMS.Plugin.HIAWms.Domain.WmsPlaces; using CMS.Plugin.HIAWms.Domain.WmsStores; using CmsQueryExtensions; using CmsQueryExtensions.Extension; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; using CMS.Plugin.HIAWms.Domain.WmsMaterialTypes; using static CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsArea.WmsAreaCreateOrUpdateDtoBase; using static CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsPlace.WmsPlaceCreateOrUpdateDtoBase; namespace CMS.Plugin.HIAWms.Application.Implements { /// /// 枚举类型接口实现 /// public class WmsEnumAppService : CMSPluginAppService, IWmsEnumAppService { private readonly IWmsStoreRepository _storeRepository; private readonly IWmsAreaRepository _wmsAreaRepository; private readonly IWmsPlaceRepository _wmsPlaceRepository; private readonly IWmsMaterialRepository _wmsMaterialRepository; private readonly IWmsMaterialTypeRepository _WmsMaterialTypeRepository; public WmsEnumAppService(IWmsStoreRepository storeRepository, IWmsAreaRepository wmsAreaRepository, IWmsPlaceRepository wmsPlaceRepository, IWmsMaterialRepository wmsMaterialRepository, IWmsMaterialTypeRepository wmsMaterialTypeRepository) { _storeRepository = storeRepository; _wmsAreaRepository = wmsAreaRepository; _wmsPlaceRepository = wmsPlaceRepository; _wmsMaterialRepository = wmsMaterialRepository; _WmsMaterialTypeRepository = wmsMaterialTypeRepository; } public List GetEnumDataList(WmsEnumInput enumInput) { return EnumHelper.GetEnumItems(enumInput.EnumName); } /// /// 获取仓库列表 /// /// public async Task> GetStreList() { var list = await _storeRepository.GetListForSelectAsync(); if (list == null || list.Count <= 0) { return new List(); } var result = list.Select(x => new WmsStoreForAreaOutpur { StoreCode = x.StoreCode, StoreName = x.StoreName, }).ToList(); return result; } /// /// 库区列表 /// /// public async Task> GetAreaListAsync() { var list = await _wmsAreaRepository.GetListForSelectAsync(); if (list == null || list.Count <= 0) { return new List(); } var result = list.Select(x => new AreaForListOuptut { AreaName = x.AreaName, AreaNo = x.AreaNo, }).ToList(); return result; } /// /// 巷道列表 /// /// public async Task> GetAisleListAsync() { var list = await _wmsPlaceRepository.GetAisleListForSelectAsync(); if (list == null || list.Count <= 0) { return new List(); } var result = list.Select(x => new PlaceAisleForListOuptut { Aisle = x.Aisle, AisleName = $"第{x.Aisle}巷道", }).ToList(); return result; } /// /// 获取机型 /// /// public async Task> GetMaterialModeListAsync() { var materialList = await _wmsMaterialRepository.GetMaterialListAsync(new WmsMaterial()); if (materialList == null || materialList.Count <= 0) return new List(); return materialList.Select(material => new MaterialModelOutput { MaterialModel = material.MaterialModel, MaterialModelDesc = material.MaterialModel }).ToList(); } /// /// 获取库区列表 /// /// /// public async Task> GetPlaceListForSelectAsync(PlaceTypeEnum placeType) { var placeList = await _wmsPlaceRepository.GetPlaceListForSelectAsync(placeType); if (placeList == null || placeList.Count <= 0) return new List(); ; return placeList.Select(place => new PlaceListOutput { PlaceNo = place.PlaceNo, PlaceNoDesc = place.PlaceNo }).ToList(); } /// /// 获取类型列表 /// /// public async Task> GetMaterialTypeListAsync() { var queryInput = new GetWmsMaterialTypeInput(); var whereConditions = DynamicGetQueryParams(queryInput); var list = await _WmsMaterialTypeRepository.GetListAsync(whereConditions); var result = new List(); if (list == null || list.Count <= 0) return result; result = list.Select(x => new MaterialTypeOutput { MaterialTypeCode = x.MaterialTypeCode, MaterialTypeDesc = x.MaterialTypeDesc, }).ToList(); return result; } private FunReturnResultModel>> DynamicGetQueryParams(GetWmsMaterialTypeInput input) { //动态构造查询条件 var whereConditions = WhereConditionsExtensions.GetWhereConditions(input); if (!whereConditions.IsSuccess) { throw new Exception("动态构造查询条件失败:" + whereConditions.ErrMsg); } //也可再次自定义构建查询条件 Expression> extendExpression = a => a.IsDeleted == false; // 使用 System.Linq.PredicateBuilder 的 And var pres = (System.Linq.Expressions.Expression>)(whereConditions.data); whereConditions.data = System.Linq.PredicateBuilder.And(pres, extendExpression); return whereConditions; } } }