Browse Source

Merge branch 'develop' of http://52.130.252.100:10000/TEAMMODEL/TEAMModelOS into develop

XW 9 months ago
parent
commit
3af71cc3d6
1 changed files with 24 additions and 20 deletions
  1. 24 20
      TEAMModelOS/Controllers/Analysis/ArtAnalysisController.cs

+ 24 - 20
TEAMModelOS/Controllers/Analysis/ArtAnalysisController.cs

@@ -134,8 +134,8 @@ namespace TEAMModelOS.Controllers.Analysis
                 double min = subjectScore.name.Min(s => Math.Abs(s));
                 double total = subjectScore.name.Sum();
                 double average = Math.Round(total / stus.Count, 2);
-                double excellent = Math.Round(subjectScore.name.Where(s => s >= 80).Count() * 1.0 / stus.Count, 2);
-                double pass = Math.Round(subjectScore.name.Where(s => s >= 60).Count() * 1.0 / stus.Count, 2);
+                double excellent = Math.Round(subjectScore.name.Where(s => s >= 80).Count() * 1.0 / stus.Count, 4);
+                double pass = Math.Round(subjectScore.name.Where(s => s >= 60).Count() * 1.0 / stus.Count, 4);
                 double powSum = 0;
                 foreach (var sc in subjectScore.name)
                 {
@@ -249,7 +249,7 @@ namespace TEAMModelOS.Controllers.Analysis
                 {
                     x.name,
                     x.score,
-                    persent = Math.Round(x.score > 0 ? x.av / x.score : 0, 2),
+                    persent = Math.Round(x.score > 0 ? x.av / x.score : 0, 4),
                     dimension = setting.dimensions.Where(s => s.blocks.Contains(x.name)).Select(x => x.dimension)
                 });
                 //获取维度得分率
@@ -295,7 +295,7 @@ namespace TEAMModelOS.Controllers.Analysis
                         persent =
                              blockScore.Where(z => z.name.Equals(c)).Sum(v => v.score) > 0 ?
                              blockScore.Where(z => z.name.Equals(c)).Sum(v => v.av) / blockScore.Where(z => z.name.Equals(c)).Sum(v => v.score) : 0
-                    }).Sum(o => o.persent) / x.blocks.Count, 2)
+                    }).Sum(o => o.persent) / x.blocks.Count, 4)
                 });
 
 
@@ -316,22 +316,22 @@ namespace TEAMModelOS.Controllers.Analysis
                     examResults[0].classes.Where(c => c.id.Equals(s.cd)).FirstOrDefault()?.gradeId,
                     //key.Value.Where(c => c.id.Equals(s.sIds))?.FirstOrDefault().sta,
                     //key.Value.Where(c => c.id.Equals(s.sIds))?.FirstOrDefault().pass,
-                   // key.Value.Where(c => c.id.Equals(s.sIds))?.FirstOrDefault().stu,
+                    // key.Value.Where(c => c.id.Equals(s.sIds))?.FirstOrDefault().stu,
                     kno = key6.Value.Where(c => c.sId.Equals(s.sIds))?.Select(z => new
                     {
                         z.name,
-                        persent = z.point > 0 ? Math.Round(z.score / z.point, 2) : 0,
+                        persent = z.point > 0 ? Math.Round(z.score / z.point, 4) : 0,
                         block = knos.Where(v => null != v.kno && v.kno.Contains(z.name))?.Select(x => x.name)
                     }),
                     block = stuBlock.Where(c => c.Key.Equals(s.sIds)).FirstOrDefault()?.block.Select(x => new
                     {
                         name = x.Key,
-                        persent = x.point > 0 ? Math.Round(x.score / x.point, 2) : 0
+                        persent = x.point > 0 ? Math.Round(x.score / x.point, 4) : 0
                     }),
                     dim = stuDims.Where(c => c.stuId.Equals(s.sIds))?.Select(z => new
                     {
                         name = z.dim,
-                        persent = z.point > 0 ? Math.Round(z.score / z.point, 2) : 0
+                        persent = z.point > 0 ? Math.Round(z.score / z.point, 4) : 0
                     })
                 });
                 List<(string cId, double sc, double max, double min, double excellent, double pass, double count)> clsInfo = new();
@@ -341,24 +341,24 @@ namespace TEAMModelOS.Controllers.Analysis
                     name = x.Key.className,
                     max = x.ToList().Where(p => p.score > 0).Select(z => z.score).ToList().Count > 0 ? x.ToList().Where(p => p.score > 0).Select(z => z.score).ToList().Max(s => Math.Abs((double)s)) : 0,
                     min = x.ToList().Where(p => p.score > 0).Select(z => z.score).ToList().Count > 0 ? x.ToList().Where(p => p.score > 0).Select(z => z.score).ToList().Min(s => Math.Abs((double)s)) : 0,
-                    excellent = x.ToList().Where(p => p.score > 0).Select(z => z.score).ToList().Count > 0 ? Math.Round(x.ToList().Where(p => p.score > 0).Select(z => z.score).ToList().Where(s => s >= 80).Count() * 1.0 / x.ToList().Count, 2) : 0,
-                    pass = x.ToList().Where(p => p.score > 0).Select(z => z.score).ToList().Count > 0 ? Math.Round(x.ToList().Where(p => p.score > 0).Select(z => z.score).ToList().Where(s => s >= 60).Count() * 1.0 / x.ToList().Count, 2) : 0,
+                    excellent = x.ToList().Where(p => p.score > 0).Select(z => z.score).ToList().Count > 0 ? Math.Round(x.ToList().Where(p => p.score > 0).Select(z => z.score).ToList().Where(s => s >= 80).Count() * 1.0 / x.ToList().Count, 4) : 0,
+                    pass = x.ToList().Where(p => p.score > 0).Select(z => z.score).ToList().Count > 0 ? Math.Round(x.ToList().Where(p => p.score > 0).Select(z => z.score).ToList().Where(s => s >= 60).Count() * 1.0 / x.ToList().Count, 4) : 0,
                     score = x.ToList().Count > 0 ? Math.Round((double)x.ToList().Sum(z => z.score) * 1.0 / x.ToList().Count, 2) : 0,
                     kno = key5.Value.Where(c => c.cId.Equals(x.Key.classId)).Select(z => new
                     {
                         z.name,
-                        persent = Math.Round(z.point > 0 ? z.score / x.ToList().Count / z.point : 0, 2),
+                        persent = Math.Round(z.point > 0 ? z.score / x.ToList().Count / z.point : 0, 4),
                         block = knos.Where(v => null != v.kno && v.kno.Contains(z.name)).Select(x => x.name)
                     }),
                     block = claBlock.Count() > 0 ? claBlock.Where(c => c.Key.Equals(x.Key.classId))?.FirstOrDefault().block.Select(z => new
                     {
                         name = z.Key,
-                        persent = Math.Round(z.point > 0 ? z.score / x.ToList().Count / z.point : 0, 2)
+                        persent = Math.Round(z.point > 0 ? z.score / x.ToList().Count / z.point : 0, 4)
                     }) : null,
                     dim = claDims.Where(c => c.claId.Equals(x.Key.classId)).Select(z => new
                     {
                         name = z.dim,
-                        persent = Math.Round(z.point > 0 ? z.score / x.ToList().Count / z.point : 0, 2)
+                        persent = Math.Round(z.point > 0 ? z.score / x.ToList().Count / z.point : 0, 4)
                     }),
                     examResults[0].classes.Where(c => c.id.Equals(x.Key.classId))?.FirstOrDefault().gradeId
                 });
@@ -371,8 +371,8 @@ namespace TEAMModelOS.Controllers.Analysis
                     score = x.list.Any() ? Math.Round((double)(x.list.Sum() / x.list.Count()), 2) : 0,
                     max = x.list.Any() ? x.list.Max(s => Math.Abs((double)s)) : 0,
                     min = x.list.Any() ? x.list.Min(s => Math.Abs((double)s)) : 0,
-                    excellent = x.list.Any() ? Math.Round(x.list.Where(s => s >= 80).Count() * 1.0 / x.list.Count(), 2) : 0,
-                    pass = x.list.Any() ? Math.Round(x.list.Where(s => s >= 60).Count() * 1.0 / x.list.Count(), 2) : 0
+                    excellent = x.list.Any() ? Math.Round(x.list.Where(s => s >= 80).Count() * 1.0 / x.list.Count(), 4) : 0,
+                    pass = x.list.Any() ? Math.Round(x.list.Where(s => s >= 60).Count() * 1.0 / x.list.Count(), 4) : 0
                 });
                 //获奖次数
                 List<ArtAttachment> artAttachments = new();
@@ -405,14 +405,18 @@ namespace TEAMModelOS.Controllers.Analysis
                      url = _azureStorage.GetBlobContainerClient($"{code}").GetBlobClient($"/art/{id}/{subjectId}.json").Uri.ToString();
                  }*/
                 var realCount = stus.Count - info.lostStu.Count;
-                /*if (classIds.Count == 1)
+                if (classIds.Count == 1)
+                {
+                    return Ok(new { count = tchList.Count, scount = realCount, max, min, average, excellent, pass, pow, blk, kno, dim, optCount, students, cInfo, gscore });
+                }
+                else if (classIds.Count == 0)
                 {
-                    return Ok(new { count = tchList.Count, scount = realCount, max, min, average, excellent, pass, pow, blk, kno, dim, optCount, students, cInfo , gscore });
+                    return Ok(new { count = tchList.Count, scount = realCount, max, min, average, excellent, pass, pow, blk, kno, dim, optCount });
                 }
                 else {
-                    return Ok(new { count = tchList.Count, scount = realCount, max, min, average, excellent, pass, pow, blk, kno, dim, optCount, cInfo  });
-                }*/
-                return Ok(new { count = tchList.Count, scount = realCount, max, min, average, excellent, pass, pow, blk, kno, dim, optCount, students, cInfo, gscore });
+                    return Ok(new { count = tchList.Count, scount = realCount, max, min, average, excellent, pass, pow, blk, kno, dim, optCount,cInfo });
+                }
+                //return Ok(new { count = tchList.Count, scount = realCount, max, min, average, excellent, pass, pow, blk, kno, dim, optCount, gscore });
             }
             catch (Exception e)
             {