zs
2025-05-19 1225fbcf6dd197c39853e2cb0f70c7318836abcb
HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsCommonAppService.cs
@@ -45,6 +45,27 @@
            _wmsInOutStockRecordRepository = wmsInOutStockRecordRepository;
        }
        /// 动态构造查询条件
        /// </summary>
        /// <param name="input">输入参数</param>
        /// <returns></returns>
        private FunReturnResultModel<Expression<Func<WmsPlace, bool>>> DynamicGetQueryPlaceParams(GetWmsPlaceInput input)
        {
            // 动态构造查询条件
            var whereConditions = WhereConditionsExtensions.GetWhereConditions<WmsPlace, GetWmsPlaceInput>(input);
            if (!whereConditions.IsSuccess)
            {
                throw new Exception("动态构造查询条件失败:" + whereConditions.ErrMsg);
            }
            //也可再次自定义构建查询条件
            Expression<Func<WmsPlace, bool>> extendExpression = a => a.IsDeleted == false;
            // 使用 System.Linq.PredicateBuilder 的 And
            var pres = (System.Linq.Expressions.Expression<Func<WmsPlace, bool>>)(whereConditions.data);
            whereConditions.data = System.Linq.PredicateBuilder.And(pres, extendExpression);
            return whereConditions;
        }
        /// <summary>
        /// 查找空库位
@@ -61,7 +82,9 @@
            // 1. 获取所有库存和库位信息
            var stockList = await _wmsMaterialStockRepository.GetListAsync(whereConditions);
            var placeList = await _wmsPlaceRepository.GetListAsync(new WmsPlace { StorageTypeNo = Domain.Shared.Enums.PlaceTypeEnum.YUANLIAOKUWEI });
            var placeConditions = DynamicGetQueryPlaceParams(new GetWmsPlaceInput { StorageTypeNo = (int)PlaceTypeEnum.YUANLIAOKUWEI });
            var placeList = await _wmsPlaceRepository.GetListByFilterAsync(placeConditions.data);
            var allPlaceList = ObjectMapper.Map<List<WmsPlace>, List<WmsPlaceDto>>(placeList.Where(x => !x.IsDisabled).ToList());
            // 2. 查找相同物料型号和编号的库存(按库存量降序)