Переглянути джерело

处理中间表信息更新问题,知识点算法问题,以及已结束的评测自动0分的处理

zhouj1203@hotmail.com 3 роки тому
батько
коміт
35c3b0984b

+ 13 - 2
TEAMModelOS.FunctionV4/CosmosDB/TriggerExam.cs

@@ -464,11 +464,22 @@ namespace TEAMModelOS.FunctionV4
                     int index = 0;
                     int index = 0;
                     foreach (var ans in classResult.studentAnswers) {
                     foreach (var ans in classResult.studentAnswers) {
                         //该学生缺考
                         //该学生缺考
-                        if (ans.Count == 0) {
-                            for (int i =0; i < classResult.studentScores[index].Count; i++) {
+                        if (ans.Count == 0)
+                        {
+                            for (int i = 0; i < classResult.studentScores[index].Count; i++)
+                            {
                                 classResult.studentScores[index][i] = 0;
                                 classResult.studentScores[index][i] = 0;
                             }
                             }
                         }
                         }
+                        else {
+                            for (int i = 0; i < classResult.studentScores[index].Count; i++)
+                            {
+                                if (classResult.studentScores[index][i] == -1)
+                                {
+                                    classResult.studentScores[index][i] = 0;
+                                }
+                            }
+                        }                        
                         index++;
                         index++;
                     }
                     }
                     foreach (List<double> sc in classResult.studentScores)
                     foreach (List<double> sc in classResult.studentScores)

+ 6 - 14
TEAMModelOS.SDK/Models/Service/ActivityService.cs

@@ -105,7 +105,7 @@ namespace TEAMModelOS.SDK
                     //stujoin新加入名单的
                     //stujoin新加入名单的
                     foreach (Member member in groupChange.stujoin)
                     foreach (Member member in groupChange.stujoin)
                     {
                     {
-                        ExamInfo info =  await updateClassResulte(client, classResults, standerAnswers, member, groupChange);
+                        ExamInfo info =  await updateClassResulte(client, classResults, standerAnswers, member, groupChange,activity);
                         var stucourse = new StuActivity
                         var stucourse = new StuActivity
                         {
                         {
                             id = activity.id,
                             id = activity.id,
@@ -134,7 +134,7 @@ namespace TEAMModelOS.SDK
                     //tmdjoin新加入的
                     //tmdjoin新加入的
                     foreach (Member member in groupChange.tmdjoin)
                     foreach (Member member in groupChange.tmdjoin)
                     {
                     {
-                        ExamInfo info =  await updateClassResulte(client, classResults, standerAnswers, member, groupChange);
+                        ExamInfo info =  await updateClassResulte(client, classResults, standerAnswers, member, groupChange,activity);
                         var stucourse = new StuActivity
                         var stucourse = new StuActivity
                         {
                         {
                             id = activity.id,
                             id = activity.id,
@@ -189,7 +189,7 @@ namespace TEAMModelOS.SDK
                     {
                     {
                         try
                         try
                         {
                         {
-                            await updateClassResulte(client, classResults, standerAnswers, member, groupChange);
+                            await updateClassResulte(client, classResults, standerAnswers, member, groupChange,activity);
                             StuActivity stuActivity = await client.GetContainer(Constant.TEAMModelOS, "Student").ReadItemAsync<StuActivity>(activity.id, new PartitionKey($"Activity-{member.code.Replace("Base-", "")}-{member.id}"));
                             StuActivity stuActivity = await client.GetContainer(Constant.TEAMModelOS, "Student").ReadItemAsync<StuActivity>(activity.id, new PartitionKey($"Activity-{member.code.Replace("Base-", "")}-{member.id}"));
                             stuActivity.classIds.Remove(groupChange.listid);
                             stuActivity.classIds.Remove(groupChange.listid);
                             if (stuActivity.classIds.IsNotEmpty())
                             if (stuActivity.classIds.IsNotEmpty())
@@ -212,7 +212,7 @@ namespace TEAMModelOS.SDK
                     {
                     {
                         try
                         try
                         {
                         {
-                            await updateClassResulte(client, classResults, standerAnswers, member, groupChange);
+                            await updateClassResulte(client, classResults, standerAnswers, member, groupChange,activity);
                             StuActivity stuActivity = await client.GetContainer(Constant.TEAMModelOS, "Student").ReadItemAsync<StuActivity>(activity.id, new PartitionKey($"Activity-{member.id}"));
                             StuActivity stuActivity = await client.GetContainer(Constant.TEAMModelOS, "Student").ReadItemAsync<StuActivity>(activity.id, new PartitionKey($"Activity-{member.id}"));
                             stuActivity.classIds.Remove(groupChange.listid);
                             stuActivity.classIds.Remove(groupChange.listid);
                             if (stuActivity.classIds.IsNotEmpty())
                             if (stuActivity.classIds.IsNotEmpty())
@@ -447,22 +447,14 @@ namespace TEAMModelOS.SDK
                 await Task.WhenAll(tasks);
                 await Task.WhenAll(tasks);
             }
             }
         }
         }
-        public static async Task<ExamInfo> updateClassResulte(CosmosClient client, List<ExamClassResult> classResults, List<PaperSimple> standerAnswers, Member member ,GroupChange change)
+        public static async Task<ExamInfo> updateClassResulte(CosmosClient client, List<ExamClassResult> classResults, List<PaperSimple> standerAnswers, Member member ,GroupChange change,MQActivity activity)
         {
         {
             ExamInfo info = new();
             ExamInfo info = new();
             try
             try
             {
             {
                 if (classResults.Count > 0)
                 if (classResults.Count > 0)
                 {
                 {
-                    if (classResults[0].scope.Equals("school"))
-                    {
-                        info = await client.GetContainer(Constant.TEAMModelOS, "Common").ReadItemAsync<ExamInfo>(classResults[0].examId, new PartitionKey($"Exam-{classResults[0].school}"));
-                    }
-                    else
-                    {
-                        string code = classResults[0].code.Replace("ExamClassResult-", "");
-                        info = await client.GetContainer(Constant.TEAMModelOS, "Common").ReadItemAsync<ExamInfo>(classResults[0].examId, new PartitionKey($"Exam-{code}"));
-                    }
+                    info = await client.GetContainer(Constant.TEAMModelOS, "Common").ReadItemAsync<ExamInfo>(classResults[0].examId, new PartitionKey($"{activity.code}"));                                       
                     foreach (var item in classResults)
                     foreach (var item in classResults)
                     {
                     {
                         if (item.info.id.Equals(change.listid))
                         if (item.info.id.Equals(change.listid))

+ 1 - 1
TEAMModelOS/Controllers/Common/ExamController.cs

@@ -1654,7 +1654,7 @@ namespace TEAMModelOS.Controllers
                                     {
                                     {
                                         if (result.studentScores[index].Count > 0)
                                         if (result.studentScores[index].Count > 0)
                                         {
                                         {
-                                            score += result.studentScores[index][n] == -1 ? 0 : result.studentScores[index][n];
+                                            score += result.studentScores[index][n] == -1 ? 0 : result.studentScores[index][n] * itemPersent;
                                         }
                                         }
                                     }
                                     }
                                 }
                                 }