コード例 #1
0
 public ActionResult List(Models.PerformData.List vm)
 {
     return(Code.MvcHelper.Post(null, Url.Action("List", new
     {
         searchText = vm.SearchText,
         performId = vm.PerformId,
         classId = vm.ClassId
     })));
 }
コード例 #2
0
        public ActionResult Export(int PerformId, int ClassId, string SearchText)
        {
            using (var db = new XkSystem.Models.DbContext())
            {
                var vm          = new Models.PerformData.List();
                var file        = System.IO.Path.GetTempFileName();
                var PerformList = Perform.Controllers.PerformController.SelectList();
                if (PerformId == 0 && PerformList.Count > 0)
                {
                    PerformId = PerformList.FirstOrDefault().Value.ConvertToInt();
                }
                var ClassList = SelectOrgList(PerformId);

                if (ClassList.Count > 0 && ClassId > 0)
                {
                    if (ClassList.Where(d => d.Value.ConvertToInt() == ClassId).Count() == decimal.Zero)
                    {
                        ClassId = ClassList.FirstOrDefault().Value.ConvertToInt();
                    }
                }

                if (ClassId == 0 && ClassList.Count > 0)
                {
                    ClassId = ClassList.FirstOrDefault().Value.ConvertToInt();
                }

                if (ClassList.Count() == decimal.Zero)
                {
                    ClassId = 0;
                }

                var tbOrg = (from p in db.Table <Course.Entity.tbOrg>()
                             .Include(d => d.tbClass)
                             .Include(d => d.tbYear)
                             .Include(d => d.tbCourse)
                             where p.Id == ClassId
                             select p).FirstOrDefault();

                if (tbOrg == null)
                {
                    return(View(vm));
                }
                var tbPerformGroupIds = (from p in db.Table <Perform.Entity.tbPerformCourse>()
                                         where p.tbCourse.Id == tbOrg.tbCourse.Id &&
                                         p.tbPerformGroup.tbPerform.Id == PerformId &&
                                         p.tbCourse.IsDeleted == false &&
                                         p.tbPerformGroup.IsDeleted == false
                                         select p.tbPerformGroup.Id).ToList();

                var PerformItemList = (from p in db.Table <Perform.Entity.tbPerformItem>()
                                       where tbPerformGroupIds.Contains(p.tbPerformGroup.Id) &&
                                       p.tbPerformGroup.tbPerform.Id == PerformId &&
                                       p.tbPerformGroup.IsDeleted == false
                                       orderby p.No
                                       select new Dto.PerformItem.List
                {
                    Id = p.Id,
                    Rate = p.Rate,
                    ScoreMax = p.ScoreMax,
                    PerformItemName = p.PerformItemName
                }).ToList();

                var PerformDataAllList = (from p in db.Table <Perform.Entity.tbPerformData>()
                                          where p.tbPerformItem.tbPerformGroup.tbPerform.Id == PerformId &&
                                          p.tbPerformItem.IsDeleted == false &&
                                          p.tbPerformItem.tbPerformGroup.IsDeleted == false &&
                                          p.tbStudent.IsDeleted == false &&
                                          p.tbCourse.IsDeleted == false
                                          select new Dto.PerformData.List
                {
                    PerformItemId = p.tbPerformItem.Id,
                    Score = p.Score,
                    StudentId = p.tbStudent.Id,
                    CourseId = p.tbCourse.Id
                }).ToList();

                if (tbOrg != null)
                {
                    var orgStudentList = new List <Dto.PerformData.List>();
                    if (tbOrg.IsClass)
                    {
                        if (tbOrg.tbClass != null)
                        {
                            orgStudentList = (from p in db.Table <Basis.Entity.tbClassStudent>()
                                              where p.tbClass.Id == tbOrg.tbClass.Id &&
                                              p.tbStudent.IsDeleted == false &&
                                              p.tbClass.IsDeleted == false
                                              orderby p.No, p.tbStudent.StudentCode
                                              select new Dto.PerformData.List
                            {
                                No = p.No.ToString(),
                                StudentId = p.tbStudent.Id,
                                StudentCode = p.tbStudent.StudentCode,
                                StudentName = p.tbStudent.StudentName,
                                CourseId = tbOrg.tbCourse.Id,
                            }).ToList();
                        }
                    }
                    else
                    {
                        orgStudentList = (from p in db.Table <Course.Entity.tbOrgStudent>()
                                          where p.tbOrg.Id == ClassId &&
                                          p.tbStudent.IsDeleted == false &&
                                          p.tbOrg.IsDeleted == false
                                          orderby p.No, p.tbStudent.StudentCode
                                          select new Dto.PerformData.List
                        {
                            No = p.No.ToString(),
                            StudentId = p.tbStudent.Id,
                            StudentCode = p.tbStudent.StudentCode,
                            StudentName = p.tbStudent.StudentName,
                            CourseId = tbOrg.tbCourse.Id
                        }).ToList();
                    }

                    if (string.IsNullOrEmpty(SearchText) == false)
                    {
                        orgStudentList = (from p in orgStudentList
                                          where p.StudentCode.Contains(SearchText) || p.StudentName.Contains(SearchText)
                                          select p).ToList();
                    }

                    var PerformDataList = (from p in orgStudentList
                                           select new Dto.PerformData.List
                    {
                        No = p.No.ToString(),
                        StudentCode = p.StudentCode.ToString(),
                        StudentName = p.StudentName.ToString(),
                        StudentId = p.StudentId,
                        CourseId = p.CourseId,
                        PerformItemList = PerformItemList
                    }).ToList();

                    var PerformTotalList = (from p in db.Table <Perform.Entity.tbPerformTotal>()
                                            where p.tbPerform.Id == PerformId &&
                                            p.tbCourse.Id == tbOrg.tbCourse.Id &&
                                            p.tbStudent.IsDeleted == false &&
                                            p.tbCourse.IsDeleted == false &&
                                            p.tbPerform.IsDeleted == false
                                            select new Dto.PerformTotal.List
                    {
                        Id = p.Id,
                        PerformId = p.tbPerform.Id,
                        CourseId = p.tbCourse.Id,
                        PerformName = p.tbPerform.PerformName,
                        CourseName = p.tbCourse.CourseName,
                        StudentId = p.tbStudent.Id,
                        StudentName = p.tbStudent.StudentName,
                        TotalScore = p.TotalScore
                    }).ToList();

                    var      countL     = PerformItemList.Count;
                    var      countR     = 2;
                    string[] arrColumns = new string[countL * 2 + 4];

                    for (int i = 0; i < arrColumns.Length; i++)
                    {
                        arrColumns[i] = (i + 1).ToString();
                    }

                    List <NPOI.SS.Util.CellRangeAddress> regions = new List <NPOI.SS.Util.CellRangeAddress>();
                    #region 表头
                    DataTable dt = Code.Common.ArrayToDataTable(arrColumns);

                    string[] weekArr   = new string[countL * 2 + 3];
                    string[] weekIdArr = new string[countL * 2 + 3];
                    string[] periodArr = new string[countL * 2 + 3];

                    for (int i = 0; i < countL; i++)
                    {
                        for (int j = 0; j < countR; j++)
                        {
                            if (j == 0)
                            {
                                weekArr[i * countR + j + 3]   = PerformItemList[i].PerformItemName;
                                weekIdArr[i * countR + j + 3] = PerformItemList[i].Id.ToString();
                                periodArr[i * countR + j + 3] = "满分值:" + PerformItemList[i].ScoreMax.ToString();
                            }
                            else
                            {
                                weekArr[i * countR + j + 3]   = PerformItemList[i].PerformItemName;
                                weekIdArr[i * countR + j + 3] = PerformItemList[i].Id.ToString();
                                periodArr[i * countR + j + 3] = "比例:" + PerformItemList[i].Rate.ToString() + "%";
                            }
                        }
                        regions.Add(new NPOI.SS.Util.CellRangeAddress(1, 1, i * countR + 3, (i + 2) * countR));
                    }
                    dt.Rows.Add(weekIdArr);
                    dt.Rows.Add(weekArr);
                    dt.Rows.Add(periodArr);
                    #endregion

                    for (int i = 0; i < PerformDataList.Count; i++)
                    {
                        string[] tempArr = new string[countL * 2 + 4];
                        tempArr[0] = PerformDataList[i].No;
                        tempArr[1] = PerformDataList[i].StudentCode;
                        tempArr[2] = PerformDataList[i].StudentName;
                        for (int j = 3; j < dt.Columns.Count - 1; j++)
                        {
                            var scodeL = PerformDataAllList.Where(d => d.StudentId == PerformDataList[i].StudentId && d.PerformItemId == Convert.ToInt32(dt.Rows[0][j]) && d.CourseId == PerformDataList[i].CourseId);
                            if (scodeL.Count() > 0)
                            {
                                tempArr[j] = scodeL.FirstOrDefault().Score.ToString();
                            }
                            else
                            {
                                tempArr[j] = "";
                            }
                        }
                        for (int n = 0; n < countL; n++)
                        {
                            regions.Add(new NPOI.SS.Util.CellRangeAddress(i + 2 + 1, i + 2 + 1, n * countR + 3, (n + 2) * countR));
                        }
                        var totalScode = PerformTotalList.Where(d => d.PerformId == PerformId && d.CourseId == PerformDataList[i].CourseId && d.StudentId == PerformDataList[i].StudentId);
                        if (totalScode.Count() > 0)
                        {
                            tempArr[tempArr.Length - 1] = totalScode.FirstOrDefault().TotalScore.ToString();
                        }
                        else
                        {
                            tempArr[tempArr.Length - 1] = "";
                        }
                        dt.Rows.Add(tempArr);
                    }
                    dt.Rows.RemoveAt(0);

                    dt.Rows[0][0] = "座位号";
                    regions.Add(new NPOI.SS.Util.CellRangeAddress(1, 2, 0, 0));
                    dt.Rows[0][1] = "学号";
                    regions.Add(new NPOI.SS.Util.CellRangeAddress(1, 2, 1, 1));
                    dt.Rows[0][2] = "姓名";
                    regions.Add(new NPOI.SS.Util.CellRangeAddress(1, 2, 2, 2));
                    dt.Rows[0][(countL * 2 + 4) - 1] = "评价总分";
                    var s = countL * 2 + 4 - 1;
                    regions.Add(new NPOI.SS.Util.CellRangeAddress(1, 2, s, s));

                    Code.NpoiHelper.DataTableToExcel(file, dt, false, regions, "评价数据");
                }
                if (string.IsNullOrEmpty(file) == false)
                {
                    return(File(file, Code.Common.DownloadType, Code.Common.ExportByExcel));
                }
                else
                {
                    return(View());
                }
            }
        }
コード例 #3
0
        public ActionResult Save(Models.PerformData.List vm)
        {
            using (var db = new XkSystem.Models.DbContext())
            {
                string strTxtId      = "";
                string strStudentId  = "";
                string strTotalId    = ""; //总分Id
                string strTotalScode = ""; //总分数据
                try
                {
                    strTxtId      = Request["txtId"].ToString();
                    strStudentId  = Request["txtStudentId"].ToString();
                    strTotalScode = Request["txtTotalScode"].ToString();
                    strTotalId    = Request["txtTotalId"].ToString();
                }
                catch
                {
                    return(Code.MvcHelper.Post(null, Url.Action("List"), "暂无数据!"));
                }

                var txtId         = strTxtId.Split(',');
                var txtStudentId  = strStudentId.Split(',');
                var arrStudentIds = txtStudentId.Select(d => d.ConvertToInt()).ToList();
                var txtTotalScode = strTotalScode.Split(',');
                var txtTotalId    = strTotalId.Split(',');

                var tbOrg = (from p in db.Table <Course.Entity.tbOrg>()
                             .Include(d => d.tbClass)
                             .Include(d => d.tbYear)
                             .Include(d => d.tbCourse)
                             where p.Id == vm.ClassId
                             select p).FirstOrDefault();

                var tbPerformGroupIds = (from p in db.Table <Perform.Entity.tbPerformCourse>()
                                         where p.tbCourse.Id == tbOrg.tbCourse.Id &&
                                         p.tbPerformGroup.tbPerform.Id == vm.PerformId &&
                                         p.tbCourse.IsDeleted == false &&
                                         p.tbPerformGroup.IsDeleted == false
                                         select p.tbPerformGroup.Id).ToList();


                var PerformItemList = (from p in db.Table <Perform.Entity.tbPerformItem>()
                                       where tbPerformGroupIds.Contains(p.tbPerformGroup.Id) &&
                                       p.tbPerformGroup.tbPerform.Id == vm.PerformId &&
                                       p.tbPerformGroup.IsDeleted == false &&
                                       p.IsMany == false &&
                                       p.IsSelect == false
                                       orderby p.No
                                       select new Dto.PerformItem.List
                {
                    Id = p.Id,
                    PerformItemName = p.PerformItemName
                }
                                       ).ToList();

                var list = (from p in db.Table <Perform.Entity.tbPerformData>()
                            where p.tbPerformItem.tbPerformGroup.tbPerform.Id == vm.PerformId &&
                            p.tbPerformItem.IsDeleted == false &&
                            p.tbPerformItem.tbPerformGroup.IsDeleted == false &&
                            p.tbStudent.IsDeleted == false &&
                            p.tbCourse.IsDeleted == false &&
                            p.tbPerformItem.IsMany == false &&
                            p.tbPerformItem.IsSelect == false
                            select p).ToList();

                foreach (var item in PerformItemList)
                {
                    var txtPerformItemScode = Request["txt_" + item.Id].Split(',');
                    for (var i = 0; i < txtStudentId.Count(); i++)
                    {
                        if (string.IsNullOrEmpty(txtStudentId[i]))
                        {
                            //输入内容为空,判断是否存在Id
                            if (string.IsNullOrEmpty(txtId[i]) == false)
                            {
                                //如果是有id的,那就是数据库中记录的,应该做删除
                                var tf = list.Where(d => d.Id == txtId[i].ConvertToInt()).FirstOrDefault();
                                XkSystem.Areas.Sys.Controllers.SysUserLogController.Insert("删除评价数据");
                                tf.IsDeleted = true;
                            }
                        }
                        else
                        {
                            var courseid = (from p in db.Table <Course.Entity.tbOrg>().Where(d => d.Id == vm.ClassId)
                                            select p.tbCourse.Id).ToList().FirstOrDefault();
                            var studengid        = txtStudentId[i].ConvertToInt();
                            var performitemscode = txtPerformItemScode[i].ConvertToDecimal();
                            //输入内容不为空,判断是否存在id并执行对应的操作
                            var countList = (from p in db.Table <Perform.Entity.tbPerformData>()
                                             where p.tbStudent.Id == studengid &&
                                             p.tbCourse.Id == courseid &&
                                             p.tbPerformItem.Id == item.Id
                                             select p).ToList();
                            if (countList.Count() > 0)
                            {
                                //如果有id的,执行更新操作
                                var tf = countList.FirstOrDefault();
                                XkSystem.Areas.Sys.Controllers.SysUserLogController.Insert("修改评价数据");
                                tf.InputDate = DateTime.Now;
                                tf.Score     = txtPerformItemScode[i].ConvertToDecimal();
                                if (string.IsNullOrEmpty(txtPerformItemScode[i].Trim()))
                                {
                                    tf.Score     = txtPerformItemScode[i].ConvertToDecimal();
                                    tf.IsDeleted = true;
                                }
                                tf.tbSysUser = db.Set <Sys.Entity.tbSysUser>().Find(Code.Common.UserId);
                            }
                            else
                            {
                                if (!string.IsNullOrEmpty(txtPerformItemScode[i].Trim()))
                                {
                                    //没有id的,执行插入操作
                                    var tf = new Perform.Entity.tbPerformData();
                                    tf.InputDate     = DateTime.Now;
                                    tf.Score         = txtPerformItemScode[i].ConvertToDecimal();
                                    tf.tbStudent     = db.Set <Student.Entity.tbStudent>().Find(txtStudentId[i].ConvertToInt());
                                    tf.tbCourse      = db.Set <Course.Entity.tbCourse>().Find(courseid);
                                    tf.tbPerformItem = db.Set <Perform.Entity.tbPerformItem>().Find(item.Id);
                                    tf.tbSysUser     = db.Set <Sys.Entity.tbSysUser>().Find(Code.Common.UserId);
                                    db.Set <Perform.Entity.tbPerformData>().Add(tf);
                                    XkSystem.Areas.Sys.Controllers.SysUserLogController.Insert("添加评价数据");
                                }
                            }
                        }
                    }
                }
                #region 保存总分
                var oldTotalList = (from p in db.Table <Perform.Entity.tbPerformTotal>()
                                    where p.tbPerform.Id == vm.PerformId &&
                                    p.tbCourse.Id == tbOrg.tbCourse.Id &&
                                    arrStudentIds.Contains(p.tbStudent.Id) &&
                                    p.tbStudent.IsDeleted == false &&
                                    p.tbCourse.IsDeleted == false &&
                                    p.tbPerform.IsDeleted == false
                                    select p).ToList();

                foreach (var a in oldTotalList)
                {
                    a.IsDeleted  = true;
                    a.UpdateTime = DateTime.Now;
                }

                var studentSumScore = (from p in db.Table <Entity.tbPerformData>()
                                       where p.tbCourse.Id == tbOrg.tbCourse.Id &&
                                       arrStudentIds.Contains(p.tbStudent.Id) &&
                                       p.tbPerformItem.tbPerformGroup.tbPerform.Id == vm.PerformId &&
                                       p.tbPerformItem.IsMany == false &&
                                       p.tbPerformItem.IsSelect == false
                                       select new
                {
                    studentId = p.tbStudent.Id,
                    sum = p.Score * p.tbPerformItem.Rate / 100,
                }).ToList();

                studentSumScore = (from p in studentSumScore
                                   group p by p.studentId into g
                                   select new
                {
                    studentId = g.Key,
                    sum = g.Select(d => d.sum).Sum()
                }).ToList();

                var studentDaySumScore = (from p in db.Table <Entity.tbPerformData>()
                                          where p.tbCourse.Id == tbOrg.tbCourse.Id &&
                                          arrStudentIds.Contains(p.tbStudent.Id) &&
                                          p.tbPerformItem.tbPerformGroup.tbPerform.Id == vm.PerformId &&
                                          ((p.tbPerformItem.IsSelect == true && p.tbPerformItem.IsMany == true) || (p.tbPerformItem.IsMany == true && p.tbPerformItem.IsSelect == false))
                                          group p by new { p.tbStudent.Id } into g
                                          select new
                {
                    studentId = g.Key.Id,
                    sum = g.Select(d => d.Score).Sum()
                }).ToList();

                studentSumScore = studentSumScore.Union(studentDaySumScore).ToList();

                var sumStudentScore = (from p in studentSumScore
                                       group p by p.studentId into g
                                       select new
                {
                    studentId = g.Key,
                    sum = g.Select(d => d.sum).Sum()
                }).ToList();

                var entityAddTotal = new List <Entity.tbPerformTotal>();
                foreach (var studentId in arrStudentIds)
                {
                    var tfTotal     = new Perform.Entity.tbPerformTotal();
                    var allSumScore = sumStudentScore.Where(d => d.studentId == studentId).FirstOrDefault();
                    if (allSumScore == null)
                    {
                        continue;
                    }
                    else
                    {
                        tfTotal.TotalScore = sumStudentScore.Where(d => d.studentId == studentId).FirstOrDefault().sum;
                        tfTotal.tbPerform  = db.Set <Perform.Entity.tbPerform>().Find(vm.PerformId);
                        tfTotal.tbStudent  = db.Set <Student.Entity.tbStudent>().Find(studentId);
                        tfTotal.tbCourse   = db.Set <Course.Entity.tbCourse>().Find(tbOrg.tbCourse.Id);
                        entityAddTotal.Add(tfTotal);
                    }
                }
                db.Set <Perform.Entity.tbPerformTotal>().AddRange(entityAddTotal);
                if (db.SaveChanges() > decimal.Zero)
                {
                    XkSystem.Areas.Sys.Controllers.SysUserLogController.Insert("新增学习表现总分");
                }
                #endregion
                return(Code.MvcHelper.Post(null, Url.Action("List", new { searchText = vm.SearchText, performId = vm.PerformId, classId = vm.ClassId }), "提交成功!"));
            }
        }