Example #1
0
        public static string SignExamUser(Guid examId)
        {
            var examPapers       = GetExamPapersList(d => d.ExamId == examId); //考试试卷
            var paperDetailsTemp = new Dictionary <Guid, List <Exam_StudentPaperDetail> >();

            foreach (var paper in examPapers)
            {
                var paperJson    = JsonConvert.DeserializeObject <PaperJson>(paper.PaperFormJson);
                var paperDetails = new List <Exam_StudentPaperDetail>();
                foreach (var questionJson in paperJson.PaperQuestionJsons)
                {
                    var paperDetail = new Exam_StudentPaperDetail()
                    {
                        DeleteStatus      = false,
                        QuestionId        = questionJson.PaperQuestion.QuestionId,
                        QuestionJson      = JsonConvert.SerializeObject(questionJson),
                        QuestionType      = questionJson.PaperQuestion.QuestionType,
                        Score             = questionJson.PaperQuestion._QuestionStrategyScore,
                        Status            = 10,
                        StudentAnswerText = "",
                    };
                    paperDetails.Add(paperDetail);
                }
                paperDetailsTemp.Add(paper.PaperId, paperDetails);
            }

            var users = GetUserTotal();

            List <Exam_StudentPapers>      resultPapers       = new List <Exam_StudentPapers>(users.Count);                                                      //要保存的试卷
            List <Exam_StudentPaperDetail> resultPaperDetails = new List <Exam_StudentPaperDetail>(users.Count * paperDetailsTemp.FirstOrDefault().Value.Count); //要保存的答题记录
            int    lastExamNum = 100000;
            Random random      = new Random(Guid.NewGuid().GetHashCode());

            foreach (var user in users)
            {
                var selectExamPaper = examPapers[random.Next(0, examPapers.Count)];
                var studentPaper    = CreateStudentPaperFromPaperJson(examId, Guid.Parse(user.UserId), selectExamPaper, lastExamNum++); //创建考生试卷
                resultPapers.Add(studentPaper);
                foreach (var paperDetail in paperDetailsTemp[selectExamPaper.PaperId])
                {
                    var studentPaperDetail = CreateStudentPaperDetailFromDetail(studentPaper.StudentPaperId, paperDetail); //答题记录
                    resultPaperDetails.Add(studentPaperDetail);
                }
            }

            var       eduContext = new eduEntities();
            Stopwatch stopwatch  = new Stopwatch();

            stopwatch.Start();

            eduContext.BulkInsert(resultPapers);
            stopwatch.Stop();

            var time1 = stopwatch.ElapsedMilliseconds;

            stopwatch.Restart();
            eduContext.BulkInsert(resultPaperDetails);
            stopwatch.Stop();
            var time2 = stopwatch.ElapsedMilliseconds;

            return($"耗时:{time1}_{time2}");
        }
Example #2
0
 /// <summary>
 /// 创建答题记录
 /// </summary>
 /// <param name="studentPaperId"></param>
 /// <param name="studentPaperDetail"></param>
 /// <returns></returns>
 public static Exam_StudentPaperDetail CreateStudentPaperDetailFromDetail(Guid studentPaperId, Exam_StudentPaperDetail studentPaperDetail)
 {
     return(new Exam_StudentPaperDetail()
     {
         StudentPaperDetailId = Guid.NewGuid(),
         DeleteStatus = studentPaperDetail.DeleteStatus,
         QuestionId = studentPaperDetail.QuestionId,
         QuestionJson = studentPaperDetail.QuestionJson,
         QuestionType = studentPaperDetail.QuestionType,
         Score = studentPaperDetail.Score,
         Status = studentPaperDetail.Status,
         StudentPaperId = studentPaperId,
         CreatedDate = DateTime.Now
     });
 }