Kaynağa Gözat

处理分数结算(移除缺考人数)

zhouj1203@hotmail.com 2 yıl önce
ebeveyn
işleme
c7c59d6faa
1 değiştirilmiş dosya ile 13 ekleme ve 8 silme
  1. 13 8
      TEAMModelOS.FunctionV4/CosmosDB/TriggerExam.cs

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

@@ -452,7 +452,8 @@ namespace TEAMModelOS.FunctionV4
                 //标准差
                 double sPowSum = 0;
                 List<double> newSumScore = new List<double>();
-                var scount = classResult.studentIds.Count;
+                int lostStu = classResult.status.Where(c => c == 1).ToList().Count;
+                var scount = classResult.studentIds.Count - lostStu;
                 int index = 0;
                 if (classResult.status.Count > 0)
                 {
@@ -629,7 +630,7 @@ namespace TEAMModelOS.FunctionV4
                 }
                 info.standard = Math.Round(total > 0 ? Math.Pow(powSum / total, 0.5) : 0, 2);
                 double NewsRate = allScore > 0 ? Math.Round(NewsRateScore / allScore * 100, 2) : 0;
-                double qrate = Math.Round(total >0?qk / total * 100:0, 2);
+                double qrate = Math.Round(total  > 0 ? qk / total * 100:0, 2);
                 settlement.rate = NewsRate;
                 settlement.score = NewsRateScore;
                 settlement.stus = losStu;
@@ -967,6 +968,7 @@ namespace TEAMModelOS.FunctionV4
                             List<int> pl = new List<int>();
                             List<int> pc = new List<int>();
                             List<double> persent = new List<double>();
+                            int lostStu = classResult.status.Where(c => c == 1).ToList().Count;
                             for (int i = 0; i < knowledgeName.Count; i++)
                             {
                                 //初始化单个知识点得分
@@ -1022,7 +1024,7 @@ namespace TEAMModelOS.FunctionV4
                                 pc.Add(pCount);
                                 ph.Add(phCount);
                                 pl.Add(plCount);
-                                double per = classResult.studentIds.Count > 0 ? Math.Round(score / classResult.studentIds.Count, 2) : 0;
+                                double per = classResult.studentIds.Count - lostStu > 0 ? Math.Round(score / (classResult.studentIds.Count - lostStu), 2) : 0;
                                 persent.Add(allScore > 0 ? Math.Round(per / allScore,2) : 0);
                             }
                             classResult.phc = ph;
@@ -1064,7 +1066,7 @@ namespace TEAMModelOS.FunctionV4
                                 count += result.studentIds.Count;
                             }
                         }
-                        double per = count > 0 ? Math.Round(score / count, 2) : 0;
+                        double per = count - info.lostStu.Count > 0 ? Math.Round(score / (count - info.lostStu.Count), 2) : 0;
                         akp.Add(allScore > 0 ? Math.Round(per / allScore, 2) : 0);
                     }
                 }
@@ -1102,6 +1104,7 @@ namespace TEAMModelOS.FunctionV4
                         List<int> pl = new List<int>();
                         List<int> pc = new List<int>();
                         List<double> persent = new List<double>();
+                        int lostStu = classResult.status.Where(c => c == 1).ToList().Count;
                         for (int i = 0; i < knowledgeName.Count; i++)
                         {
                             //初始化单个知识点得分
@@ -1158,7 +1161,7 @@ namespace TEAMModelOS.FunctionV4
                                 pc.Add(pCount);
                                 ph.Add(phCount);
                                 pl.Add(plCount);
-                                double per = classResult.studentIds.Count > 0 ? Math.Round(score / classResult.studentIds.Count, 2) : 0;
+                                double per = classResult.studentIds.Count - lostStu > 0 ? Math.Round(score / (classResult.studentIds.Count - lostStu), 2) : 0;
                                 persent.Add(allScore > 0 ? Math.Round(per / allScore, 2) : 0);
                             }
                         }
@@ -1202,7 +1205,7 @@ namespace TEAMModelOS.FunctionV4
                         }
                     }
 
-                    double per = count > 0 ? Math.Round(score / count, 2) : 0;
+                    double per = count - info.lostStu.Count > 0 ? Math.Round(score / (count - info.lostStu.Count), 2) : 0;
                     afp.Add(allScore > 0 ? Math.Round(per / allScore, 2) : 0);
                 }
                 return afp;
@@ -1315,6 +1318,8 @@ namespace TEAMModelOS.FunctionV4
                     range.gradeId = classResult.gradeId;
                     List<int> ran = new List<int>();
                     int stuCount = classResult.studentIds.Count;
+                    //todo 与实际的缺考人数比较
+                    int lostStus = classResult.status.Where(c => c == 1).ToList().Count;
                     Count += stuCount;
                     if (m == 0)
                     {
@@ -1336,7 +1341,7 @@ namespace TEAMModelOS.FunctionV4
                     }
                     if (allScore > 0)
                     {
-                        csRate.Add(classResult.studentIds.Count > 0 ? Math.Round(classSrate * 1.0 / classResult.studentIds.Count, 2) : 0 / allScore);
+                        csRate.Add(classResult.studentIds.Count - lostStus > 0 ? Math.Round(classSrate * 1.0 / (classResult.studentIds.Count - lostStus), 2) : 0 / allScore);
 
                     }
                     else
@@ -1367,7 +1372,7 @@ namespace TEAMModelOS.FunctionV4
             }
            
             result.record = getMore(info, no, opt);
-            result.average = result.studentIds.Count > 0 ? Math.Round(score * 1.0 / result.studentIds.Count, 2) : 0;
+            result.average = result.studentIds.Count - result.lostStus.Count > 0 ? Math.Round(score * 1.0 / (result.studentIds.Count - result.lostStus.Count), 2) : 0;
             double stand = 0;
             int sco = 0;
             List<Task<ItemResponse<ExamClassResult>>> tasks = new();