bug fixed

develop
old易 2026-02-03 17:39:14 +08:00
parent bb1078c6ff
commit 77fc3165b6
1 changed files with 45 additions and 44 deletions

View File

@ -44,50 +44,51 @@ namespace New_College.Repository
RefAsync<int> totalCount = 0; RefAsync<int> totalCount = 0;
var pageresult = new PageModel<UniversityPlanProView>(); var pageresult = new PageModel<UniversityPlanProView>();
request.Year = request.Year > 2024 ? 2024 : request.Year; request.Year = request.Year > 2024 ? 2024 : request.Year;
var pagelist = await this.Db.Queryable<D_PlanMajorDescPro>().Where(c => c.Location == request.Location) var pagelist = await this.Db.Queryable<D_PlanMajorDescPro>()
.Where(c => c.Years == request.Year) .Where(c => c.Location == request.Location)
.Where(c => !string.IsNullOrWhiteSpace(c.Logo)) .Where(c => c.Years == request.Year)
.WhereIF(request.Sff.HasValue, c => c._211 == (request.Sff == 1 ? "是" : "否")) .Where(c => !string.IsNullOrWhiteSpace(c.Logo))
.WhereIF(request.Nhef.HasValue, c => c._985 == (request.Nhef == 1 ? "是" : "否")) .WhereIF(request.Sff.HasValue, c => c._211 == (request.Sff == 1 ? "是" : "否"))
.WhereIF(request.Syl.HasValue, c => c._SYL == (request.Syl == 1 ? "是" : "否")) .WhereIF(request.Nhef.HasValue, c => c._985 == (request.Nhef == 1 ? "是" : "否"))
.WhereIF(request.Nature != null && request.Nature.Any(), x => SqlFunc.ContainsArray(request.Nature, x.Nature)) .WhereIF(request.Syl.HasValue, c => c._SYL == (request.Syl == 1 ? "是" : "否"))
.WhereIF(request.AreaName != null && request.AreaName.Any() && !request.AreaName.Contains("全国"), x => SqlFunc.ContainsArray(request.AreaName, x.AreaName)) .WhereIF(request.Nature != null && request.Nature.Any(), x => SqlFunc.ContainsArray(request.Nature, x.Nature))
.WhereIF(request.SubjectLevel.HasValue, c => c.EducationCategory == (request.SubjectLevel == 1 ? "本科" : "专科")) .WhereIF(request.AreaName != null && request.AreaName.Any() && !request.AreaName.Contains("全国"),
.WhereIF(!string.IsNullOrWhiteSpace(request.Name), c => SqlFunc.Contains(c.UniversityName, request.Name)).GroupBy(c => new x => SqlFunc.ContainsArray(request.AreaName, x.AreaName))
{ .WhereIF(request.SubjectLevel.HasValue, c => c.EducationCategory == (request.SubjectLevel == 1 ? "本科" : "专科"))
c.AreaName, .WhereIF(!string.IsNullOrWhiteSpace(request.Name), c => SqlFunc.Contains(c.UniversityName, request.Name))
c.UId,
c.UniversityName, // ✅ 关键:只按学校聚合(必要时带上地区)
c.Nature, .GroupBy(c => new { c.UId, c.UniversityName, c.AreaName })
c._985,
c._211, .Select(c => new UniversityPlanProView
c._SYL, {
c.SchoolType, UId = c.UId,
c.EducationCategory, Name = c.UniversityName,
c.Rank, AreaName = c.AreaName,
c.Logo,
c.Web // 其它字段用聚合“取一个值”
}) Nature = SqlFunc.AggregateMax(c.Nature),
.Select(c => new UniversityPlanProView() _985 = SqlFunc.AggregateMax(c._985),
{ _211 = SqlFunc.AggregateMax(c._211),
AreaName = c.AreaName, _SYL = SqlFunc.AggregateMax(c._SYL),
ALLCount = SqlFunc.AggregateSum(c.PlanCount), UniversityType = SqlFunc.AggregateMax(c.SchoolType),
MajorCount = SqlFunc.AggregateCount(c.UId), SubjectLevel = SqlFunc.AggregateMax(c.EducationCategory),
NewCount = SqlFunc.AggregateSum(c.NewCount), Logo = SqlFunc.AggregateMax(c.Logo),
UId = c.UId, Web = SqlFunc.AggregateMax(c.Web),
Name = c.UniversityName, Rank = SqlFunc.AggregateMax(c.Rank),
Nature = c.Nature,
_985 = c._985, // ✅ 计划数合并
_211 = c._211, ALLCount = SqlFunc.AggregateSum(c.PlanCount),
_SYL = c._SYL,
Logo = c.Logo, // ⚠️ 你这里的 MajorCount 目前写法“数的是行数”,不一定等于专业数
Web = c.Web, // 如果表里每行就是一个专业,那用 Count() OK否则要 CountDistinct(专业ID/专业名)
UniversityType = c.SchoolType, MajorCount = SqlFunc.AggregateCount(1),
SubjectLevel = c.EducationCategory,
Rank = string.IsNullOrEmpty(c.Rank) ? "--" : c.Rank NewCount = SqlFunc.AggregateSum(c.NewCount),
}) })
.OrderBy(k => k.UId, OrderByType.Asc) .OrderBy(k => k.UId, OrderByType.Asc)
.ToPageListAsync(request.PageIndex, request.PageSize, totalCount); .ToPageListAsync(request.PageIndex, request.PageSize, totalCount);
pageresult.pageCount = (Math.Ceiling(totalCount.ObjToDecimal() / request.PageSize.ObjToDecimal())).ObjToInt(); pageresult.pageCount = (Math.Ceiling(totalCount.ObjToDecimal() / request.PageSize.ObjToDecimal())).ObjToInt();
pageresult.page = request.PageIndex; pageresult.page = request.PageIndex;
pageresult.data = pagelist; pageresult.data = pagelist;