123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- using Microsoft.AspNetCore.Authorization;
- using Microsoft.AspNetCore.Http;
- using Microsoft.AspNetCore.Mvc;
- using Newtonsoft.Json.Linq;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Threading.Tasks;
- using TEAMModelOS.Model.Core.Models;
- using TEAMModelOS.Model.EvaluaTion.Dtos;
- using TEAMModelOS.Model.EvaluaTion.Models;
- using TEAMModelOS.SDK.Extension.DataResult.JsonRpcRequest;
- using TEAMModelOS.SDK.Extension.DataResult.JsonRpcResponse;
- using TEAMModelOS.SDK.Extension.JsonPath;
- using TEAMModelOS.SDK.Helper.Common.JsonHelper;
- using TEAMModelOS.SDK.Helper.Security.Md5Hash;
- using TEAMModelOS.Service.Core.Interfaces;
- using TEAMModelOS.Service.EvaluaTion.Interfaces;
- namespace TEAMModelOS.Controllers.Core
- {
- [Route("api/[controller]")]
- [ApiController]
- [Authorize]
- public class ExamController :BaseController
- {
- private readonly IPaperService _PaperService;
- private readonly IExamInfoService _examInfoService;
- private readonly IAnswerInfoService _answerInfoService;
- private readonly IItemBankService _itemBankService;
- private readonly IOptionService _optionService;
- public ExamController(IPaperService paperService, IExamInfoService examInfoService, IAnswerInfoService answerInfoService,
- IItemBankService itemBankService, IOptionService optionService)
- {
- _PaperService = paperService;
- _examInfoService = examInfoService;
- _answerInfoService = answerInfoService;
- _itemBankService = itemBankService;
- _optionService = optionService;
- }
-
- [HttpPost("SaveOrUpdateExam")]
- public async Task<BaseJosnRPCResponse> SaveOrUpdateExam(JosnRPCRequest<object> request)
- {
- JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
- string json = request.@params.ToString();
- //试卷信息
- string query = "$.testpaper.info"; // we should get a list of all titles
- //选项信息
- string queryOption = "$.testpaper.item[*].option[*]";
- //题库信息
- string queryItem = "$.testpaper.item[*]";
- //考试信息
- string queryExam = "$.testpaper.exercise[*].info[*]";
- //学生学号信息
- //string queryStuId = "$.testpaper.exercise[*].member[*].info";
- //作答信息
- string queryAnswer = "$.testpaper.exercise[*].member[*]";
- //RowKey 学校某次考试唯一标识
- string RowKey = "";
- JObject parsedJson = JObject.Parse(json);
- JsonPathContext context = new JsonPathContext
- { ValueSystem = new JsonNetValueSystem() };
- Paper paper = new Paper();
- ItemBank item = null;
- Option option = null;
- ExamInfo examInfo = null;
- AnswerInfo answerInfo = null;
- //试卷信息
- List<dynamic> papers = context.SelectNodes(parsedJson,
- query).Select(node => node.Value).ToList();
- List<TestPaperInfo> paperInfo = papers.ToJson().FromJson<List<TestPaperInfo>>();
- List<Paper> paperList = new List<Paper>();
- paperInfo.ForEach( p => {
- paper.Name = p.Name;
- paper.Subject = p.Subject;
- RowKey = Md5Hash.Encrypt(p.Name +"-"+ p.Subject);
- paper.RowKey = RowKey;
- paperList.Add(paper);
- });
-
- //题库信息
- List<dynamic> itemBanks = context.SelectNodes(parsedJson,
- queryItem).Select(node => node.Value).ToList();
- List<dynamic> options = context.SelectNodes(parsedJson,
- queryOption).Select(node => node.Value).ToList();
- List<Item> ItemInfo = itemBanks.ToJson().FromJson<List<Item>>();
- List<ItemOption> optionInfo = options.ToJson().FromJson<List<ItemOption>>();
- List<ItemBank> itemBanksList = new List<ItemBank>();
- List<Option> optionsList = new List<Option>();
- ItemInfo.ForEach(i => {
- string type = i.Type;
- item = new ItemBank();
- item.RowKey = RowKey;
- item.Index = i.Itemindex;
- item.Question = i.Question;
- item.Type = type;
- //i.TryGetValue();
- item.Objective = i.Objective;
- item.Point = i.Point;
- item.Answer = i.Answer;
- item.ConceptSubject = i.Concept_subject;
- item.ConceptArea = i.Concept_area;
- item.Concept = i.Concept;
- itemBanksList.Add(item);
- //处理选项数据
- if (type.Equals("0") || type.Equals("1")) {
- optionInfo.ForEach(p => {
- option = new Option();
- option.RowKey = RowKey;
- option.Data = p.Data;
- option.ItemId = i.Itemindex;
- optionsList.Add(option);
- //new Option().data = p.get();
- });
- }
-
- });
- //作答记录
- List<dynamic> exams = context.SelectNodes(parsedJson,
- queryExam).Select(node => node.Value).ToList();
- List<ExerciseInfo> membersInfo = itemBanks.ToJson().FromJson<List<ExerciseInfo>>();
- List<ExamInfo> examInfosList = new List<ExamInfo>();
- membersInfo.ForEach(p => {
- examInfo = new ExamInfo();
- examInfo.RowKey = RowKey;
- examInfo.ExName = p.Ex_name;
- examInfo.ExTime = p.Ex_time;
- examInfo.CouseName = p.Course_name;
- examInfo.StuCount = p.Stucount;
- examInfosList.Add(examInfo);
- });
- //学生得分记录
- List<dynamic> answers = context.SelectNodes(parsedJson,
- queryAnswer).Select(node => node.Value).ToList();
- List<MemberAnswer> memberAnswers = itemBanks.ToJson().FromJson<List<MemberAnswer>>();
- List<AnswerInfo> answerInfos = new List<AnswerInfo>();
- memberAnswers.ForEach(p => {
- answerInfo = new AnswerInfo() {
- RowKey = RowKey,
- Index = p.Itemindex,
- Selection = p.Selection,
- Point = p.Point
-
- //exId =
- //studentId =
- };
- answerInfos.Add(answerInfo);
- });
- await _PaperService.SaveOrUpdate(paperList);
- await _itemBankService.SaveOrUpdateAll(itemBanksList);
- await _optionService.SaveOrUpdateAll(optionsList);
- await _examInfoService.SaveOrUpdateAll(examInfosList);
- await _answerInfoService.SaveOrUpdateAll(answerInfos);
- return builder.Data("over").build();
- //SchoolGrade data = await _GradeSeservice.SaveOrUpdate<SchoolGrade>(request.@params);
- //return builder.Data(data).build();
- }
- }
- }
|