using Mapster; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using wms.sqlsugar.model.cp; using WMS.BZModels; using WMS.BZModels.Dto.CP.BillInventoryReportDtos; using WMS.BZSqlSugar; using WMS.Info; namespace WMS.BZServices.CP { public class BillInventoryReportService { private readonly Repository _billInventoryReportRepository; public BillInventoryReportService(Repository billInventoryReportRepository) { _billInventoryReportRepository = billInventoryReportRepository; } public PagedInfo GetPageList(Pagination pagination, BillInventoryReportQueryDto billInvNowQueryDto) { ISugarQueryable sugarQueryable = GetQueryable(billInvNowQueryDto); var list = sugarQueryable. ToPage(pagination); return list; } public IList GetList(BillInventoryReportQueryDto billInvNowQueryDto) { ISugarQueryable sugarQueryable = GetQueryable(billInvNowQueryDto); var list = sugarQueryable.ToList().Adapt>(); return list; } private ISugarQueryable GetQueryable(BillInventoryReportQueryDto billInventoryReportQueryDto) { var predicate = Expressionable.Create(); predicate = predicate.AndIF(!string.IsNullOrEmpty(billInventoryReportQueryDto?.KeyWord), m => m.DateMonth.Contains(billInventoryReportQueryDto.KeyWord)); predicate = predicate.AndIF(!string.IsNullOrEmpty(billInventoryReportQueryDto?.DateMonth), m => m.DateMonth.Contains(billInventoryReportQueryDto.DateMonth)); predicate = predicate.AndIF(billInventoryReportQueryDto != null && billInventoryReportQueryDto.StartTimeBegin.HasValue, m => m.StartTime >= billInventoryReportQueryDto.StartTimeBegin); predicate = predicate.AndIF(billInventoryReportQueryDto != null && billInventoryReportQueryDto.StartTimeEnd.HasValue, m => m.StartTime <= billInventoryReportQueryDto.StartTimeEnd); predicate = predicate.AndIF(billInventoryReportQueryDto != null && billInventoryReportQueryDto.EndTimeBegin.HasValue, m => m.EndTime >= billInventoryReportQueryDto.EndTimeBegin); predicate = predicate.AndIF(billInventoryReportQueryDto != null && billInventoryReportQueryDto.EndTimeEnd.HasValue, m => m.EndTime <= billInventoryReportQueryDto.EndTimeEnd); var sugarQueryable = _billInventoryReportRepository.Queryable().Where(predicate.ToExpression()); return sugarQueryable; } } }