|
@@ -22,6 +22,7 @@ using static TEAMModelOS.SDK.Models.Cosmos.Student.StudentAnalysis;
|
|
|
using TEAMModelOS.SDK.Models.Cosmos.School;
|
|
|
using static TEAMModelOS.SDK.Models.Cosmos.School.ClassAnalysis;
|
|
|
using static TEAMModelOS.SDK.Models.Cosmos.School.GradeAnalysis;
|
|
|
+using System.Text;
|
|
|
|
|
|
namespace TEAMModelOS.Controllers.Analysis
|
|
|
{
|
|
@@ -87,7 +88,8 @@ namespace TEAMModelOS.Controllers.Analysis
|
|
|
"PL",
|
|
|
"X",
|
|
|
"Y",
|
|
|
- "knowledge"
|
|
|
+ "knowledge",
|
|
|
+ "examScoreRate"
|
|
|
};
|
|
|
ExamInfo info = null;
|
|
|
List<KeyValuePair<string, List<List<string>>>> subjectPaperDatas = new List<KeyValuePair<string, List<List<string>>>>();
|
|
@@ -353,11 +355,11 @@ namespace TEAMModelOS.Controllers.Analysis
|
|
|
|
|
|
private static (KeyValuePair<string,List<List<string>>>, KeyValuePair<string, List<KeyValuePair<string, List<string>>>>) DoExerciseScatteres(ExamResult e, List<string > paperKey)
|
|
|
{
|
|
|
- List<double> gradeAnswer = new List<double>();
|
|
|
- List<string> grasdepersent = new List<string>();
|
|
|
+ List<double> examAnswer = new List<double>();
|
|
|
+ List<string> examPersent = new List<string>();
|
|
|
for (int n = 0; n < e.paper.point.Count; n++)
|
|
|
{
|
|
|
- gradeAnswer.Add(0);
|
|
|
+ examAnswer.Add(0);
|
|
|
}
|
|
|
//参考人数
|
|
|
double Qnum = 0;
|
|
@@ -370,7 +372,9 @@ namespace TEAMModelOS.Controllers.Analysis
|
|
|
});
|
|
|
|
|
|
List<List<string>> datas = new List<List<string>>();
|
|
|
- List<string[]> itemAnalysis = new List<string[]>();
|
|
|
+ List<string[]> itemAnalysis = new List<string[]>();
|
|
|
+ Dictionary<string,List<int>> gradeItemScore = new Dictionary<string, List<int>>();
|
|
|
+ Dictionary<string, int > gradeItemStuCount = new Dictionary<string, int>();
|
|
|
List<KeyValuePair<string, List<string>>> classdatas = new List<KeyValuePair<string, List<string>>>();
|
|
|
try
|
|
|
{
|
|
@@ -379,7 +383,7 @@ namespace TEAMModelOS.Controllers.Analysis
|
|
|
//初始化每题得分情况
|
|
|
List<int> answerCount = new List<int>();
|
|
|
List<string> persent = new List<string>();
|
|
|
- double peopleCount = 0;
|
|
|
+ int peopleCount = 0;
|
|
|
for (int n = 0; n < e.paper.point.Count; n++)
|
|
|
{
|
|
|
answerCount.Add(0);
|
|
@@ -397,7 +401,7 @@ namespace TEAMModelOS.Controllers.Analysis
|
|
|
//记录班级每题得分数
|
|
|
answerCount[j] = answerCount[j] + 1;
|
|
|
//记录年级每题得分数
|
|
|
- gradeAnswer[j] = gradeAnswer[j] + 1;
|
|
|
+ examAnswer[j] = examAnswer[j] + 1;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -413,7 +417,18 @@ namespace TEAMModelOS.Controllers.Analysis
|
|
|
persent.Add(t.ToString());
|
|
|
}
|
|
|
classdatas.Add(new KeyValuePair<string, List<string>>(c.id, persent));
|
|
|
+ if (gradeItemScore.ContainsKey(c.gradeId))
|
|
|
+ {
|
|
|
+ int index = 0;
|
|
|
+ gradeItemScore[c.gradeId].ForEach(x => { x = x + answerCount[index]; index += 1; });
|
|
|
+ gradeItemStuCount[c.gradeId]= gradeItemStuCount[c.gradeId] + peopleCount;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ gradeItemScore.Add(c.gradeId, answerCount);
|
|
|
+ gradeItemStuCount.Add(c.gradeId, peopleCount);
|
|
|
+ }
|
|
|
});
|
|
|
+
|
|
|
double[] point = StringHelper.ListTodouble(e.paper.point);
|
|
|
double[,] result = StringHelper.ListToDouble(e.studentScores);
|
|
|
var cdm = new ClouDASMatrix(result, point);
|
|
@@ -432,10 +447,10 @@ namespace TEAMModelOS.Controllers.Analysis
|
|
|
ex = ss.Split(",");
|
|
|
itemAnalysis.Add(ex);
|
|
|
}
|
|
|
- foreach (int p in gradeAnswer)
|
|
|
+ foreach (int p in examAnswer)
|
|
|
{
|
|
|
var t = Math.Round(p * 1.0 / Qnum * 100,2);
|
|
|
- grasdepersent.Add(t.ToString());
|
|
|
+ examPersent.Add(t.ToString());
|
|
|
}
|
|
|
for (int k = 0; k < e.paper.point.Count; k++)
|
|
|
{
|
|
@@ -474,13 +489,28 @@ namespace TEAMModelOS.Controllers.Analysis
|
|
|
values[18] = "-";
|
|
|
values[19] = "-";
|
|
|
}
|
|
|
- values[7] = grasdepersent[k];
|
|
|
- values[8] = grasdepersent[k];
|
|
|
+ Dictionary<string,string> its = new Dictionary<string, string>();
|
|
|
+ classdatas.ForEach(cls => { its.Add(cls.Key, cls.Value[k]); });
|
|
|
+ StringBuilder classBuilder = new StringBuilder();
|
|
|
+ foreach (var key in its.Keys) {
|
|
|
+ classBuilder.Append(key+":"+ its[key]+",");
|
|
|
+ }
|
|
|
+ var cstr = classBuilder.ToString();
|
|
|
+ values[7] = cstr.Substring(0, cstr.Length-1);
|
|
|
+ StringBuilder gradeBuilder = new StringBuilder();
|
|
|
+ //处理年级的这个题的得分
|
|
|
+ foreach (var key in gradeItemScore.Keys) {
|
|
|
+ var data = Math.Round(gradeItemScore[key][k] * 1.0 / gradeItemStuCount[key] * 100, 2);
|
|
|
+ gradeBuilder.Append(key + ":" + data + ",");
|
|
|
+ }
|
|
|
+ var gstr = gradeBuilder.ToString();
|
|
|
+ values[8] = gstr.Substring(0,gstr.Length-1);
|
|
|
values[20] = quality[k].ToString();
|
|
|
values[21] = answer[k].ToString();
|
|
|
string pointName = "";
|
|
|
|
|
|
values[22] = pointName;
|
|
|
+ values[23] = examPersent[k];
|
|
|
datas.Add(values);
|
|
|
}
|
|
|
KeyValuePair<string, List<List<string>>> keyValue = new KeyValuePair<string, List<List<string>>>(e.subjectId, datas);
|