示例#1
0
 public ActionResult Import(Models.ExamSegmentMark.Import vm, List <string> error = null)
 {
     using (var db = new XkSystem.Models.DbContext())
     {
         if (error != null && error.Count > decimal.Zero)
         {
             ModelState.AddModelError("", error[0]);
         }
         return(View(vm));
     }
 }
示例#2
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));
        }