Exemplo n.º 1
0
        public IActionResult Page([Required] int index, String sName, String sId, [Required] int iId, [Required] int pid, Boolean isUnder, Boolean isPost, [Required] int grade)
        {
            if (ModelState.IsValid && index > 0)
            {
                String sql = "select * from StudentView where  InstituteId > 0";

                List <SqlParameter> parameters = new List <SqlParameter>();

                if (sName != null && sName.Trim() != "")
                {
                    sql += $" and StudentName like @Name";

                    parameters.Add(new SqlParameter {
                        ParameterName = "@Name", Value = $"%{sName.Trim()}%", SqlDbType = SqlDbType.NVarChar
                    });
                }

                if (sId != null && sId.Trim() != "")
                {
                    sql += $" and StudentId = @StudentId";

                    parameters.Add(new SqlParameter {
                        ParameterName = "@StudentId", Value = sId.Trim(), SqlDbType = SqlDbType.NVarChar
                    });
                }

                if (iId > 0)
                {
                    sql += $" and InstituteId = {iId}";
                }

                if (pid > 0)
                {
                    sql += $" and ProfessionId = {pid}";
                }

                if (isUnder == !isPost)
                {
                    if (isPost)
                    {
                        sql += $" and StudentType = 1";
                    }

                    if (isUnder)
                    {
                        sql += $" and StudentType = 0";
                    }
                }

                if (grade > 2015)
                {
                    sql += $" and Grade = {grade}";
                }

                int pageSize = 10;
                // ReSharper disable once CoVariantArrayConversion
                int dataCount = _context.VStudentMaps.FromSql(sql, parameters.ToArray()).Count();
                int pageCount = dataCount / pageSize;
                int lastCount = dataCount % pageSize;
                if (lastCount > 0)
                {
                    pageCount++;
                }

                if (index > pageCount || index <= 0)
                {
                    return(Json(new
                    {
                        isOk = true,
                        lineCount = 0,
                        pageCount = 1,    //总共是多少页
                        pageNowIndex = 1, //当前是第几页
                        size = pageSize
                    }));
                }
                // ReSharper disable once CoVariantArrayConversion
                var items = _context.VStudentMaps.FromSql(sql, parameters.ToArray()).OrderBy(item => item.InstituteId)
                            .ThenBy(item => item.ProfessionId)
                            .Skip((index - 1) * pageSize).Take(pageSize).Select(val => new
                {
                    instituteName  = val.InstituteName,
                    professionName = $"{val.ProfessionName}" + (val.ProfessionType == ProfessionType.UnderGraduate ? "[本科生]" : "[研究生]"),
                    professionType = val.ProfessionType,
                    studentId      = val.StudentId,
                    studentName    = val.StudentName,
                    grade          = val.Grade,
                    phone          = val.Phone,
                    birthDate      = _logger.FormatDateShortLocal(val.BirthDate),
                    sex            = val.Sex == true?"男":"女",
                    studentType    = val.StudentType == StudentType.UnderGraduate? "本科生":"研究生",
                    isPassExam     = val.IsPassExam? "通过":"未通过",
                    maxExamScore   = val.MaxExamScore,
                    maxExamCount   = val.MaxExamCount,
                    professionId   = val.ProfessionId,
                    email          = val.Email,
                    idNumber       = val.IDNumber
                }).ToList();

                return(Json(new
                {
                    isOk = true,
                    lineCount = dataCount,
                    PageCount = pageCount, //总共是多少页
                    pageNowIndex = index,  //当前是第几页
                    Items = items,
                    size = pageSize
                }));
            }
            else
            {
                return(Json(new
                {
                    isOk = false,
                    message = $"参数错误,传递了不符合规定的参数"
                }));
            }
        }