Преглед изворни кода

Merge branch 'develop5.0-tmd' of http://106.12.23.251:10080/TEAMMODEL/TEAMModelOS into develop5.0-tmd

CrazyIter_Bin пре 4 година
родитељ
комит
70a1c229bd

+ 5 - 5
TEAMModelOS/ClientApp/src/components/student-analysis/total/BaseKnowledgeRadar.vue

@@ -31,6 +31,10 @@
                             return results
                         }
                     },
+					gird:{
+						height:420,
+						bottom:'10%'
+					},
                     radar: {
                         triggerEvent: true,
                         name: {
@@ -41,10 +45,7 @@
                                 padding: [13, 15]
                             }
                         },
-                        center: ['50%', '50%'],
-                        tooltip: {
-
-                        },
+                        center: ['45%', '60%'],
                         indicator: indicator,
                         splitArea: {
                             areaStyle: {
@@ -162,7 +163,6 @@
         width: 100%;
         height: 450px;
         margin: 30px auto 0 auto;
-        padding: 30px;
         display: block;
     }
 </style>

+ 4 - 2
TEAMModelOS/ClientApp/src/components/student-analysis/total/BaseMyTable.vue

@@ -83,6 +83,7 @@
 				subjectSelectVal: 0,
 				tableData: [],
 				firstData: [],
+				propsData:[],
 				originData: [],
 				tableColumns: [],
 				subjectList: [],
@@ -145,11 +146,12 @@
 						})
 						break
 					case 'normal':
-						this.originData = this.firstData
+						this.originData = JSON.parse(JSON.stringify(this.propsData))
 						break
 					default:
 						break
 				}
+				console.log(this.propsData[0].standardDeviation)
 				this.pageChange(1)
 			},
 
@@ -477,7 +479,7 @@
 				handler(data,oldData){
 					this.originData = JSON.parse(JSON.stringify(data))
 					this.firstData = JSON.parse(JSON.stringify(data))
-					// if (this.isFirst) this.firstData = JSON.parse(JSON.stringify(data))
+					if (this.isFirst) this.propsData = JSON.parse(JSON.stringify(data))
 					// 获取当前测评班级数据
 					this.subjectList = this.$store.state.totalAnalysis.subjectList
 					// this.subjectList = ['全部'].concat(this.$store.state.totalAnalysis.subjectList)

+ 127 - 96
TEAMModelOS/Controllers/Analysis/AchievementController.cs

@@ -3825,123 +3825,154 @@ namespace TEAMModelOS.Controllers.Analysis
                     examClassResults.Add(item);
 
                 }
-                foreach (ExamClassResultDto e in examClassResultDto)
+                ExamInfo info = await client.GetContainer("TEAMModelOS", "Common").ReadItemAsync<ExamInfo>(id.ToString(), new PartitionKey($"Exam-{code}"));
+                if (info == null)
                 {
-                    foreach (ExamClassResult ex in examClassResults)
+                    return Ok(new { code = 404, msg = "请先录入评测数据" });
+                }
+                else {
+                    foreach (ExamClassResultDto e in examClassResultDto)
                     {
-                        if (e.subject.Equals(ex.subjectId))
+                        int no = 0;
+                        foreach (ExamSubject sub in info.subjects)
                         {
-                            foreach (ClassResults examClass in e.examClassResult)
+                            if (!sub.id.Equals(e.subject))
                             {
-                                if (examClass.classInfo.id.Equals(ex.info.id))
+                                no++;
+                            }
+                        }
+                        //获取标准答案
+                        List<List<string>> standard = new();
+                        standard = info.papers[no].answers;
+
+                        foreach (ExamClassResult ex in examClassResults)
+                        {
+                            if (e.subject.Equals(ex.subjectId))
+                            {                               
+                                foreach (ClassResults examClass in e.examClassResult)
                                 {
-                                    ex.studentIds = examClass.studentIds;
-                                    List<List<double>> newScores = new List<List<double>>();
-                                    examClass.studentScores.ForEach(sc =>
+                                    if (examClass.classInfo.id.Equals(ex.info.id))
                                     {
-                                        List<double> scores = new List<double>();
-                                        if (sc.Count == 0)
+                                        ex.studentIds = examClass.studentIds;
+                                        List<List<double>> newScores = new List<List<double>>();
+                                        examClass.studentScores.ForEach(sc =>
                                         {
-                                            for (int i = 0; i < ex.studentScores[0].Count; i++)
+                                            List<double> scores = new List<double>();
+                                            if (sc.Count == 0)
                                             {
-                                                scores.Add(0);
-                                            }
-                                        }
-                                        else
-                                        {
-                                            sc.ForEach(s =>
-                                            {
-                                                scores.Add(double.Parse(s));
-                                            });
-                                        }
-                                        newScores.Add(scores);
-                                    });
-                                    ex.studentScores = newScores;
-                                    int index = 0;
-                                    List<Task<string>> tasks = new List<Task<string>>();
-                                    foreach (List<string> an in examClass.studentAnswers)
-                                    {
-                                        List<List<string>> answers = new List<List<string>>();
-                                        //List<List<string>> stuAns = new List<List<string>>();
-                                        an.ForEach(aa =>
-                                        {
-                                            List<string> ans = new List<string>();
-                                            if (aa.Length > 1)
-                                            {
-                                                char[] str = aa.ToCharArray();
-                                                foreach (char a in aa)
+                                                for (int i = 0; i < ex.studentScores[0].Count; i++)
                                                 {
-                                                    switch (a)
-                                                    {
-                                                        case '1':
-                                                            ans.Add("A");
-                                                            break;
-                                                        case '2':
-                                                            ans.Add("B");
-                                                            break;
-                                                        case '3':
-                                                            ans.Add("C");
-                                                            break;
-                                                        case '4':
-                                                            ans.Add("D");
-                                                            break;
-                                                        case '5':
-                                                            ans.Add("E");
-                                                            break;
-                                                        case '6':
-                                                            ans.Add("F");
-                                                            break;
-                                                        default:
-                                                            ans.Add("");
-                                                            break;
-                                                    }
+                                                    scores.Add(0);
                                                 }
-                                                answers.Add(ans);
                                             }
                                             else
                                             {
-                                                switch (aa)
+                                                sc.ForEach(s =>
                                                 {
-                                                    case "1":
-                                                        ans.Add("A");
-                                                        break;
-                                                    case "2":
-                                                        ans.Add("B");
-                                                        break;
-                                                    case "3":
-                                                        ans.Add("C");
-                                                        break;
-                                                    case "4":
-                                                        ans.Add("D");
-                                                        break;
-                                                    case "5":
-                                                        ans.Add("E");
-                                                        break;
-                                                    case "6":
-                                                        ans.Add("F");
-                                                        break;
-                                                    default:
-                                                        ans.Add("");
-                                                        break;
-                                                }
-                                                answers.Add(ans);
+                                                    scores.Add(double.Parse(s));
+                                                });
                                             }
-                                            //answers.Add(stuAns);                                          
+                                            newScores.Add(scores);
                                         });
-                                        ex.ans[index] = answers;
-                                        string FileName = ex.examId + "/" + ex.subjectId + "/" + examClass.studentIds[index];
-                                        string blob = FileName + "/" + "ans.json";
-                                        tasks.Add(_azureStorage.UploadFileByContainer(ex.school.ToString(), answers.ToJsonString(), "exam", FileName + "/" + "ans.json"));
-                                        ex.studentAnswers[index].Clear();
-                                        ex.studentAnswers[index].Add(blob);
-                                        index++;
+                                        ex.studentScores = newScores;
+                                        int index = 0;
+                                        List<Task<string>> tasks = new List<Task<string>>();
+                                        foreach (List<string> an in examClass.studentAnswers)
+                                        {
+
+                                            List<List<string>> answers = new List<List<string>>();
+                                            //存放客观题答案
+                                            List<List<string>> objective = new List<List<string>>();
+                                            //判断此题是否为主观题作答
+                                            if (standard[index].Count == 0)
+                                            {
+                                                answers.Add(an);
+                                            }
+                                            else
+                                            {
+                                                an.ForEach(aa =>
+                                                {
+                                                    List<string> ans = new List<string>();
+                                                    if (aa.Length > 1)
+                                                    {
+                                                        char[] str = aa.ToCharArray();
+                                                        foreach (char a in aa)
+                                                        {
+                                                            switch (a)
+                                                            {
+                                                                case '1':
+                                                                    ans.Add("A");
+                                                                    break;
+                                                                case '2':
+                                                                    ans.Add("B");
+                                                                    break;
+                                                                case '3':
+                                                                    ans.Add("C");
+                                                                    break;
+                                                                case '4':
+                                                                    ans.Add("D");
+                                                                    break;
+                                                                case '5':
+                                                                    ans.Add("E");
+                                                                    break;
+                                                                case '6':
+                                                                    ans.Add("F");
+                                                                    break;
+                                                                default:
+                                                                    ans.Add("");
+                                                                    break;
+                                                            }
+                                                        }
+                                                        objective.Add(ans);
+                                                        answers.Add(ans);
+                                                    }
+                                                    else
+                                                    {
+                                                        switch (aa)
+                                                        {
+                                                            case "1":
+                                                                ans.Add("A");
+                                                                break;
+                                                            case "2":
+                                                                ans.Add("B");
+                                                                break;
+                                                            case "3":
+                                                                ans.Add("C");
+                                                                break;
+                                                            case "4":
+                                                                ans.Add("D");
+                                                                break;
+                                                            case "5":
+                                                                ans.Add("E");
+                                                                break;
+                                                            case "6":
+                                                                ans.Add("F");
+                                                                break;
+                                                            default:
+                                                                ans.Add("");
+                                                                break;
+                                                        }
+                                                        objective.Add(ans);
+                                                        answers.Add(ans);
+                                                    }
+                                                    //answers.Add(stuAns);                                          
+                                                });
+                                            }                                            
+                                            ex.ans[index] = objective;
+                                            string FileName = ex.examId + "/" + ex.subjectId + "/" + examClass.studentIds[index];
+                                            string blob = FileName + "/" + "ans.json";
+                                            tasks.Add(_azureStorage.UploadFileByContainer(ex.school.ToString(), answers.ToJsonString(), "exam", FileName + "/" + "ans.json"));
+                                            ex.studentAnswers[index].Clear();
+                                            ex.studentAnswers[index].Add(blob);
+                                            index++;
+                                        }
+                                        await Task.WhenAll(tasks);
                                     }
-                                    await Task.WhenAll(tasks);
                                 }
                             }
                         }
                     }
-                }
+                }                
                 foreach (ExamClassResult result in examClassResults)
                 {
                     result.progress = true;

+ 2 - 2
TEAMModelOS/Controllers/Analysis/AnalysisController.cs

@@ -283,7 +283,7 @@ namespace TEAMModelOS.Controllers.Analysis
                                 fieldPoint = fieldStuPerDatas.Where(x => x.Key == examResult.subjectId).SelectMany(va => va.Value).Where(stu => stu.Key == stuid).Select(pi => pi.Value).First()
                             };
                             subject.score = score;
-                            //subject.sRate = Math.Round(examResult.paper.point.Sum() > 0 ? score / examResult.paper.point.Sum() * 100 : 0, 2);
+                            subject.sRate = Math.Round(examResult.paper.point.Sum() > 0 ? score / examResult.paper.point.Sum() * 100 : 0, 2);
                             student.subjects.Add(subject);
                         }
                     }
@@ -568,7 +568,7 @@ namespace TEAMModelOS.Controllers.Analysis
                             //处理阵列的索引1的班级名称
                             data[1] = stu.className;
                             sc.scatter = data;
-                            sc.sRate = double.Parse(data[3]);
+                            //sc.sRate = double.Parse(data[3]);
                         });
                     });
                 });