CrazyIter_Bin 2 年之前
父節點
當前提交
a7e50d2304

+ 82 - 1
TEAMModelOS/Controllers/School/ArtReviewController.cs

@@ -1,10 +1,12 @@
 using Azure;
 using Azure.Cosmos;
 using DinkToPdf.Contracts;
+using DocumentFormat.OpenXml.Office2010.Excel;
 using DocumentFormat.OpenXml.Office2013.Excel;
 using DocumentFormat.OpenXml.Spreadsheet;
 using HTEXLib.COMM.Helpers;
 using HTEXLib.Helpers.ShapeHelpers;
+using MathNet.Numerics;
 using Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Http;
 using Microsoft.AspNetCore.Mvc;
@@ -79,9 +81,88 @@ namespace TEAMModelOS.Controllers
             {
                 return BadRequest();
             }
-            var (userid, name, _, school) = HttpContext.GetAuthTokenInfo();
+            if (!request.TryGetProperty("schoolId", out JsonElement _schoolId))
+            {
+                return BadRequest();
+            }
+            if (!request.TryGetProperty("reaId", out JsonElement _areaId))
+            {
+                return BadRequest();
+            }
+            var client = _azureCosmos.GetCosmosClient();
+            string query = $" select value c from c where c.school  = '{_schoolId}' ";
+            List<StudentArtResult > artResults = new List<StudentArtResult>();
+            ArtEvaluation art = await client.GetContainer(Constant.TEAMModelOS, "Common").ReadItemAsync<ArtEvaluation>($"{_artId}", new PartitionKey($"Art-{_schoolId}"));
+            ArtSetting artSetting = await client.GetContainer(Constant.TEAMModelOS, Constant.Normal).ReadItemAsync<ArtSetting>($"{_areaId}", new PartitionKey($"ArtSetting"));
+            await foreach (var item in client.GetContainer(Constant.TEAMModelOS, Constant.Student).GetItemQueryIterator<StudentArtResult>
+                (queryText: query, requestOptions: new QueryRequestOptions { PartitionKey = new PartitionKey($"ArtResult-{_artId}") }))
+            {
+                artResults.Add(item);
+            }
+            var a =art.subjects;
+            artResults.ForEach(x => {
+                
+                var allSubject= x.results.GroupBy(g => g.quotaId).Select(s => new { key = s.Key, list = s.ToList() }).ToList();
+                var groupSubject = x.results.GroupBy(g => $"{g.quotaId}-{g.subjectId}").Select(s => new { key = s.Key, list = s.ToList() }).ToList();
+                allSubject.ForEach(a =>
+                {
+                    var quota = a.key.Substring(0,7);
+
+                    ArtPdf  artPdf = new ArtPdf();
+                    var noneScore =  a.list.FindAll(x => x.score == -1);
+                    if (noneScore.IsNotEmpty())
+                    {
+                        //全部未打分。
+                        if (noneScore.Count >= art.subjects.Count)
+                        {
+                            artPdf.quotaId = a.key;
+                            artPdf.score = "-";
+                            artPdf.percent = "-";
+                            artPdf.level = "-";
+                        }
+                        else {
+                            //有一部分打分的,只算有分的平均分。
+                            var hasScore =  a.list.FindAll(x => x.score >=0 );
+                            if (hasScore.IsNotEmpty()) {
+                                var avgScore = hasScore.Sum(x => x.score) * 1.0 / hasScore.Count;
+                                var avg=decimal.Round(decimal.Parse($"{avgScore}"), 2);
+                                artPdf.quotaId = a.key;
+                                artPdf.score = $"{avg}";
+                                artPdf.percent = "-";
+                                artPdf.level = "-";
+                            }
+                            else {
+                                artPdf.quotaId = a.key;
+                                artPdf.score = "-";
+                                artPdf.percent = "-";
+                                artPdf.level = "-";
+                            }
+                        }
+                    }
+                    else {
+                        artPdf.quotaId = a.key;
+                        artPdf.score = "-";
+                        artPdf.percent = "-";
+                        artPdf.level = "-";
+                    }
+                });
+            });
             return Ok();
         }
+
+
+        public List<ArtQuota> GetArtQuotas(List<ArtQuota> quotas, string rootId ) {
+            var a = quotas.Find(x => x.id.Equals(rootId));
+            return null;
+        }
+        public class ArtPdf
+        {
+            public string quotaId { get; set; }
+            public string score { get; set; }
+            public string percent { get; set; }
+            public string level { get; set;}
+
+        }
         /// <summary>
         /// 
         /// </summary>

+ 19 - 0
TEAMModelOS/Controllers/Third/Sc/ScDataInitController.cs

@@ -176,6 +176,25 @@ namespace TEAMModelOS.Controllers.Third
             return Ok(new { projectsSave });
         }
 
+        /// <summary>
+        /// 3. 处理 省平台最新的教师以及 反向更新没有绑定醍摩豆id 的账号。
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [ProducesDefaultResponseType]
+        [HttpPost("get-unbind-teacher")]
+        [AllowAnonymous]
+        public async Task<IActionResult> getUnBindTeacher(JsonElement request) {
+            if (!request.TryGetProperty("accessConfig", out JsonElement accessConfig)) return BadRequest();
+            if (!request.TryGetProperty("city", out JsonElement city)) return BadRequest();
+            if (!request.TryGetProperty("dist", out JsonElement dist)) return BadRequest();
+            if (!request.TryGetProperty("areaId", out JsonElement areaId)) return BadRequest();
+            if (!request.TryGetProperty("standard", out JsonElement standard)) return BadRequest();
+            var table = _azureStorage.GetCloudTableClient().GetTableReference("ScYxpt");
+            var ScTeachers = await table.FindListByDict<ScTeacher>(new Dictionary<string, object>() { { "PartitionKey", "ScTeacher" }, { "areaId", $"{areaId}" } });
+            var unbind = ScTeachers.Where(x => string.IsNullOrWhiteSpace(x.tmdid));
+            return Ok(unbind);
+        }
         /// <summary>
         /// 3. 处理 省平台最新的教师以及 反向更新没有绑定醍摩豆id 的账号。
         /// </summary>