Exemplo n.º 1
0
        public ActionResult Import(Models.ExamSegmentMark.Import vm)
        {
            var error = new List <string>();

            if (error.Count == decimal.Zero)
            {
                var file     = Request.Files[nameof(vm.UploadFile)];
                var fileSave = System.IO.Path.GetTempFileName();
                file.SaveAs(fileSave);

                using (var db = new XkSystem.Models.DbContext())
                {
                    try
                    {
                        var ExList = new List <string>()
                        {
                            ".xlsx"
                        };
                        if (!ExList.Contains(System.IO.Path.GetExtension(file.FileName)))
                        {
                            error.AddError("上传的文件不是正确的EXCLE文件!");
                        }
                        else
                        {
                            var dt = Code.NpoiHelper.ExcelToDataTable(fileSave, System.IO.Path.GetExtension(file.FileName), string.Empty);
                            if (dt == null)
                            {
                                error.AddError("无法读取上传的文件,请检查文件格式是否正确!");
                            }
                            else
                            {
                                var tbList = new List <string>()
                                {
                                    "排序", "年级", "科目", "分数段", "比例", "最低百分数", "最高百分数", "分数段分组", "是否优秀", "是否良好", "是否及格", "是否总分段"
                                };

                                var Text = string.Empty;
                                foreach (var a in tbList)
                                {
                                    if (!dt.Columns.Contains(a.ToString()))
                                    {
                                        Text += a + ",";
                                    }
                                }

                                if (!string.IsNullOrEmpty(Text))
                                {
                                    error.AddError("上传的EXCEL内容与预期不一致!错误详细:" + Text);
                                }
                                var subjectList = (from p in db.Table <Course.Entity.tbSubject>()
                                                   orderby p.No
                                                   select new
                                {
                                    SubjectId = p.Id,
                                    SubjectName = p.SubjectName
                                }).ToList();

                                var gradeList = (from p in db.Table <Basis.Entity.tbGrade>()
                                                 orderby p.No
                                                 select new
                                {
                                    GradeName = p.GradeName,
                                    GradeId = p.Id
                                }).ToList();

                                var segmentGroupList = (from p in db.Table <Entity.tbExamSegmentGroup>()
                                                        orderby p.No
                                                        select new
                                {
                                    ExamSegmentGroupName = p.ExamSegmentGroupName,
                                    SegmentGroupId = p.Id
                                }).ToList();

                                var segmentList = from p in db.Table <Exam.Entity.tbExamSegmentMark>()
                                                  where p.tbGrade.IsDeleted == false &&
                                                  p.tbSubject.IsDeleted == false
                                                  select p;

                                foreach (DataRow dr in dt.Rows)
                                {
                                    var No           = dr["排序"].ToString().Trim();
                                    var grade        = dr["年级"].ToString().Trim();
                                    var subject      = dr["科目"].ToString().Trim();
                                    var segmentName  = dr["分数段"].ToString();
                                    var rate         = dr["比例"].ToString();
                                    var mixMark      = dr["最低百分数"].ToString().Trim();
                                    var maxMark      = dr["最高百分数"].ToString().Trim();
                                    var segmentGroup = dr["分数段分组"].ToString().Trim();
                                    var isGood       = dr["是否优秀"].ToString().Trim();
                                    var isNormal     = dr["是否良好"].ToString().Trim();
                                    var isPass       = dr["是否及格"].ToString().Trim();
                                    var isTotal      = dr["是否总分段"].ToString().Trim();
                                    if (string.IsNullOrEmpty(grade) || string.IsNullOrEmpty(segmentName))
                                    {
                                        continue;
                                    }
                                    if (gradeList.Where(d => d.GradeName == grade).Count() == decimal.Zero)
                                    {
                                        var strmes = string.Format("年级不存在({0})", grade);
                                        error.AddError(strmes);
                                    }
                                    if (!string.IsNullOrEmpty(subject))
                                    {
                                        if (subjectList.Where(d => d.SubjectName == subject).Count() == decimal.Zero)
                                        {
                                            var strmes = string.Format("科目不存在({0})", subject);
                                            error.AddError(strmes);
                                        }
                                    }
                                    if (!string.IsNullOrEmpty(segmentGroup))
                                    {
                                        if (segmentGroupList.Where(d => d.ExamSegmentGroupName == segmentGroup).Count() == decimal.Zero)
                                        {
                                            var strmes = string.Format("分数段分组不存在({0})", segmentGroup);
                                            error.AddError(strmes);
                                        }
                                    }
                                    var tb = (from p in segmentList
                                              where p.tbGrade.GradeName == grade &&
                                              p.tbSubject.SubjectName == subject &&
                                              p.SegmentName == segmentName &&
                                              p.tbExamSegmentGroup.ExamSegmentGroupName == segmentGroup
                                              select p).FirstOrDefault();
                                    if (tb == null)
                                    {
                                        var tf = new Exam.Entity.tbExamSegmentMark();
                                        tf.No                 = No.ConvertToIntWithNull();
                                        tf.tbGrade            = db.Table <Basis.Entity.tbGrade>().Where(d => d.GradeName == grade).FirstOrDefault();
                                        tf.tbSubject          = db.Set <Course.Entity.tbSubject>().Where(d => d.SubjectName == subject).FirstOrDefault();
                                        tf.tbExamSegmentGroup = db.Set <Entity.tbExamSegmentGroup>().Where(d => d.ExamSegmentGroupName == segmentGroup).FirstOrDefault();
                                        tf.SegmentName        = segmentName;
                                        tf.Rate               = rate.ConvertToDecimal();
                                        tf.MinMark            = mixMark.ConvertToDecimal();
                                        tf.MaxMark            = maxMark.ConvertToDecimal();
                                        tf.IsGood             = isGood == "是"?true:false;
                                        tf.IsNormal           = isNormal == "是" ? true : false;
                                        tf.IsPass             = isPass == "是" ? true : false;
                                        tf.IsTotal            = isTotal == "是" ? true : false;
                                        tf.IsGenerate         = false;
                                        db.Set <Exam.Entity.tbExamSegmentMark>().Add(tf);
                                    }
                                    else
                                    {
                                        tb.Rate     = rate.ConvertToDecimal();
                                        tb.No       = No.ConvertToIntWithNull();
                                        tb.MinMark  = mixMark.ConvertToDecimal();
                                        tb.MaxMark  = maxMark.ConvertToDecimal();
                                        tb.IsGood   = isGood == "是" ? true : false;
                                        tb.IsPass   = isPass == "是" ? true : false;
                                        tb.IsNormal = isNormal == "是" ? true : false;
                                        tb.IsTotal  = isTotal == "是" ? true : false;
                                    }
                                }

                                if (db.SaveChanges() > decimal.Zero)
                                {
                                    error.AddError("导入成功!");
                                    vm.Status = true;
                                    XkSystem.Areas.Sys.Controllers.SysUserLogController.Insert("批量添加分数段");
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        error.AddError("上传的EXCEL内容与预期不一致!错误详细:" + ex.Message);
                    }
                }
            }

            return(this.Import(vm, error));
        }
Exemplo n.º 2
0
        public ActionResult Edit(Models.ExamSegmentMark.Edit vm)
        {
            using (var db = new XkSystem.Models.DbContext())
            {
                var error = new List <string>();
                if (error.Count == decimal.Zero)
                {
                    if (db.Table <Exam.Entity.tbExamSegmentMark>().Where(d => d.SegmentName == vm.ExamSegmentMarkEdit.SegmentName && d.tbExamSegmentGroup.Id == vm.ExamSegmentMarkEdit.SegmentGroupId &&
                                                                         !string.IsNullOrEmpty(vm.ExamSegmentMarkEdit.SegmentName) && d.tbGrade.Id == vm.ExamSegmentMarkEdit.GradeId && d.tbSubject.Id == vm.ExamSegmentMarkEdit.SubjectId && d.Id != vm.ExamSegmentMarkEdit.Id).Any())
                    {
                        error.AddError("该分数段分组年级科目分数段已存在!");
                    }
                    else
                    {
                        if (vm.ExamSegmentMarkEdit.Id == 0)
                        {
                            var tb = new Exam.Entity.tbExamSegmentMark();
                            tb.No = vm.ExamSegmentMarkEdit.No == null?db.Table <Exam.Entity.tbExamSegmentMark>().Select(d => d.No).DefaultIfEmpty(0).Max() + 1 : (int)vm.ExamSegmentMarkEdit.No;

                            tb.SegmentName        = vm.ExamSegmentMarkEdit.SegmentName;
                            tb.tbExamSegmentGroup = db.Set <Entity.tbExamSegmentGroup>().Find(vm.ExamSegmentMarkEdit.SegmentGroupId);
                            tb.tbSubject          = db.Set <Course.Entity.tbSubject>().Find(vm.ExamSegmentMarkEdit.SubjectId);
                            tb.tbGrade            = db.Set <Basis.Entity.tbGrade>().Find(vm.ExamSegmentMarkEdit.GradeId);
                            tb.MinMark            = vm.ExamSegmentMarkEdit.MinMark;
                            tb.MaxMark            = vm.ExamSegmentMarkEdit.MaxMark;
                            tb.IsGood             = vm.ExamSegmentMarkEdit.IsGood;
                            tb.IsPass             = vm.ExamSegmentMarkEdit.IsPass;
                            tb.IsNormal           = vm.ExamSegmentMarkEdit.IsNormal;
                            tb.IsTotal            = vm.ExamSegmentMarkEdit.IsTotal;
                            tb.Rate       = vm.ExamSegmentMarkEdit.Rate;
                            tb.IsGenerate = vm.ExamSegmentMarkEdit.IsGenerate;
                            db.Set <Exam.Entity.tbExamSegmentMark>().Add(tb);
                            if (db.SaveChanges() > 0)
                            {
                                XkSystem.Areas.Sys.Controllers.SysUserLogController.Insert("添加分数段");
                            }
                        }
                        else
                        {
                            var tb = (from p in db.Table <Exam.Entity.tbExamSegmentMark>().Include(d => d.tbSubject).Include(d => d.tbExamSegmentGroup)
                                      where p.Id == vm.ExamSegmentMarkEdit.Id
                                      select p).FirstOrDefault();
                            if (tb != null)
                            {
                                tb.No = vm.ExamSegmentMarkEdit.No == null?db.Table <Exam.Entity.tbExamSegmentMark>().Select(d => d.No).DefaultIfEmpty(0).Max() + 1 : (int)vm.ExamSegmentMarkEdit.No;

                                tb.SegmentName        = vm.ExamSegmentMarkEdit.SegmentName;
                                tb.tbExamSegmentGroup = db.Set <Entity.tbExamSegmentGroup>().Find(vm.ExamSegmentMarkEdit.SegmentGroupId);
                                tb.tbSubject          = db.Set <Course.Entity.tbSubject>().Find(vm.ExamSegmentMarkEdit.SubjectId);
                                tb.tbGrade            = db.Set <Basis.Entity.tbGrade>().Find(vm.ExamSegmentMarkEdit.GradeId);
                                tb.MinMark            = vm.ExamSegmentMarkEdit.MinMark;
                                tb.MaxMark            = vm.ExamSegmentMarkEdit.MaxMark;
                                tb.IsGood             = vm.ExamSegmentMarkEdit.IsGood;
                                tb.IsPass             = vm.ExamSegmentMarkEdit.IsPass;
                                tb.IsNormal           = vm.ExamSegmentMarkEdit.IsNormal;
                                tb.IsTotal            = vm.ExamSegmentMarkEdit.IsTotal;
                                tb.Rate       = vm.ExamSegmentMarkEdit.Rate;
                                tb.IsGenerate = vm.ExamSegmentMarkEdit.IsGenerate;
                                if (db.SaveChanges() > 0)
                                {
                                    XkSystem.Areas.Sys.Controllers.SysUserLogController.Insert("修改分数段");
                                }
                            }
                            else
                            {
                                error.AddError(Resources.LocalizedText.MsgNotFound);
                            }
                        }
                    }
                }

                return(Code.MvcHelper.Post(error, Url.Action("List")));
            }
        }