diff --git a/New_College.Api/Controllers/Front/EnrollMentPlansController.cs b/New_College.Api/Controllers/Front/EnrollMentPlansController.cs index aeef41d..ccf5f42 100644 --- a/New_College.Api/Controllers/Front/EnrollMentPlansController.cs +++ b/New_College.Api/Controllers/Front/EnrollMentPlansController.cs @@ -43,15 +43,14 @@ namespace New_College.Api.Controllers.Front { try { - request.Years = request.Years >= 2023 ? 2023 : request.Years; + request.Years = request.Years >= 2023 ? 2023 : request.Years; Expression> whereexp = Expressionable.Create() //创建表达式 - .And(c => c.Location == request.Location) - .And(c => c.Years == request.Years) - .AndIF(!string.IsNullOrEmpty(request.UniversityName), w => SqlFunc.Contains(w.UniversityName, request.UniversityName)) - .AndIF(!string.IsNullOrEmpty(request.MajorName), w => SqlFunc.Contains(w.Major, request.MajorName)).ToExpression(); - + .And(c => c.Location == request.Location) + .And(c => c.Years == request.Years) + .AndIF(!string.IsNullOrEmpty(request.BatchName), w => w.BatchName == request.BatchName) + .AndIF(!string.IsNullOrEmpty(request.UniversityName), w => SqlFunc.Contains(w.UniversityName, request.UniversityName)) + .AndIF(!string.IsNullOrEmpty(request.MajorName), w => SqlFunc.Contains(w.Major, request.MajorName)).ToExpression(); var pageModel = await this.d_PlanMajorDesc.QueryPage(whereexp, request.PageIndex, request.PageSize); - if (pageModel.dataCount > 0) { return new MessageModel>() diff --git a/New_College.Api/Controllers/Front/LibraryController.cs b/New_College.Api/Controllers/Front/LibraryController.cs index 33ed1e2..2956292 100644 --- a/New_College.Api/Controllers/Front/LibraryController.cs +++ b/New_College.Api/Controllers/Front/LibraryController.cs @@ -11,6 +11,7 @@ using New_College.IServices; using New_College.Model; using New_College.Model.Models; using New_College.Model.ViewModels; +using SqlSugar; namespace New_College.Api.Controllers.Front @@ -47,23 +48,37 @@ namespace New_College.Api.Controllers.Front success = false }; } - var query = await _ScoreLineServices.Query(c => c.Score == queryDto.Score.ToString() && c.Province == queryDto.Pronvice); - var newscore = queryDto.Score - 1; - var tmpquery = await _ScoreLineServices.Query(c => c.Score == newscore.ToString() && c.Province == queryDto.Pronvice); - query.ForEach(a => - { - var newsuminfo = tmpquery.FirstOrDefault(a => a.Years == a.Years); - response.Add(new SameScoreLineDataDto() - { - Count = a.Count, - Score = a.Score, - SumCount = a.SumCount, - Years = a.Years, - Type = a.Type, - ScoreRegion = newsuminfo.SumCount + "~" + a.SumCount - }); - }); + //1.先计算分数对应的位次, + //2.再通过位次反向匹配,前面三年的分数 + + var biaozhun = await _ScoreLineServices.Query(c => (c.Score == queryDto.Score.ToString() || c.Score == (queryDto.Score - 1).ToString()) && c.Province == queryDto.Pronvice && c.Years == queryDto.Years); + var lines = biaozhun.Select(s => s.SumCount).ToArray(); + var query = await _ScoreLineServices.Query(c => SqlFunc.Between(c.SumCount, lines.Min(), lines.Max()) && c.Province == queryDto.Pronvice); + //var newscore = queryDto.Score - 1; + //var tmpquery = await _ScoreLineServices.Query(c => c.Score == newscore.ToString() && c.Province == queryDto.Pronvice); + //query.ForEach(a => + //{ + // // var newsuminfo = tmpquery.FirstOrDefault(a => a.Years == a.Years); + + // response.Add(new SameScoreLineDataDto() + // { + // Count = a.Count, + // Score = a.Score, + // SumCount = a.SumCount, + // Years = a.Years, + // Type = a.Type, + // ScoreRegion = newsuminfo.SumCount + "~" + a.SumCount + // }); + //}); + response = query.GroupBy(g => new SameScoreLineDataDto { Years = g.Years, Type = g.Type }).Select(c => new SameScoreLineDataDto() + { + Score = query.Where(e => e.Years == c.Key.Years && e.Type == c.Key.Type).Max(e => e.Score), + ScoreRegion = query.Where(e => e.Years == c.Key.Years && e.Type == c.Key.Type).Min(e => e.SumCount) + "~" + query.Where(e => e.Years == c.Key.Years && e.Type == c.Key.Type).Max(e => e.SumCount), + Years = c.Key.Years, + Type = c.Key.Type + + }).DistinctBy(c => c.Years).ToList(); return new MessageModel>() { msg = "ok",