using System; using System.Collections.Generic; using System.Linq; using System.Web; using Learun.Application.TwoDevelopment.EducationalAdministration; using Learun.Util; using Nancy; using Newtonsoft.Json; namespace Learun.Application.WebApi.Modules { public class StuScoreApi : BaseNoLoginApi { public StuScoreApi() : base("/Learun/adms/EducationalAdministration/StuScore") { Get["/scoreListByStuInfo"] = GetScoreListByStuInfo; } private StuInfoBasicIBLL stuInfoBasicIBLL = new StuInfoBasicBLL(); private StuScoreIBLL stuScoreIBLL = new StuScoreBLL(); private CdMajorIBLL cdMajorIBLL = new CdMajorBLL(); private ClassInfoIBLL classInfoIBLL = new ClassInfoBLL(); /// /// 获取成绩列表 /// /// /// private Response GetScoreListByStuInfo(dynamic _) { var param = this.GetReq(); ScoreListByStuInfo result = new ScoreListByStuInfo(); var stuInfoBasicEntity = stuInfoBasicIBLL.GetStuInfoBasicEntityByStuNo(param.StuNo); if (stuInfoBasicEntity != null) { result.StuNo = stuInfoBasicEntity.StuNo; result.StuName = stuInfoBasicEntity.StuName; result.MajorNo = stuInfoBasicEntity.MajorNo; result.ClassNo = stuInfoBasicEntity.ClassNo; if (!string.IsNullOrEmpty(stuInfoBasicEntity.MajorNo)) { result.MajorName = cdMajorIBLL.GetCdMajorEntityByMajorNo(stuInfoBasicEntity.MajorNo)?.MajorName; } if (!string.IsNullOrEmpty(stuInfoBasicEntity.ClassNo)) { result.ClassName = classInfoIBLL.GetClassInfoEntityByClassNo(stuInfoBasicEntity.ClassNo)?.ClassName; } } var queryJson = JsonConvert.SerializeObject(param); var data = stuScoreIBLL.GetScoreListByStuInfo(queryJson); var dataTemp = data.GroupBy(x => new { x.AcademicYearNo, x.Semester }).Select(x => new ScoreList() { AcademicYearNo = x.Key.AcademicYearNo, Semester = x.Key.Semester, StuScoreEntityList = x.Select(y => new StuScoreEntity() { AcademicYearNo = y.AcademicYearNo, Semester = y.Semester, LessonSortNo = y.LessonSortNo, LessonSortName = y.LessonSortName, LessonNo = y.LessonNo, LessonName = y.LessonName, StudyScore = y.StudyScore, Score = y.Score, ScoreOfNotPass = y.ScoreOfNotPass, ScoreOfNotPassTwo = y.ScoreOfNotPassTwo }).OrderBy(a=>a.LessonSortNo).ThenBy(a=>a.LessonNo).ToList() }).ToList().OrderByDescending(x=>x.AcademicYearNo).ThenByDescending(x=>x.Semester); result.ScoreList = dataTemp.ToList(); return Success(result); } public class Model { /// /// 学年(18-19) /// public string AcademicYearNo { get; set; } /// /// 学期(1) /// public string Semester { get; set; } /// /// 学号 /// public string StuNo { get; set; } } public class ScoreListByStuInfo { public string StuNo { get; set; } public string StuName { get; set; } public string MajorNo { get; set; } public string MajorName { get; set; } public string ClassNo { get; set; } public string ClassName { get; set; } public List ScoreList { get; set; } } public class ScoreList { public string AcademicYearNo { get; set; } public string Semester { get; set; } public List StuScoreEntityList { get; set; } } } }