zhouj1203@hotmail.com 1 年之前
父節點
當前提交
cb03cdeae5

+ 3 - 3
TEAMModelOS.SDK/Models/Cosmos/Common/ArtEvaluation.cs

@@ -55,6 +55,9 @@ namespace TEAMModelOS.SDK.Models.Cosmos.Common
         public string topic { get; set; }
         public long startTime { get; set; }
         public long endTime { get; set; }
+        public long uploadSTime { get; set; }
+        public long uploadETime { get; set; }
+        public string uploadProgress { get; set; }
         public string address { get; set; }
         //培训内容
         public string desc { get; set; }
@@ -88,9 +91,6 @@ namespace TEAMModelOS.SDK.Models.Cosmos.Common
     public class Tasks {
         public string id { get; set; }
         public string quotaname { get; set; }
-        public long start { get; set; }
-        public long end { get; set; }
-        public string progress { get; set; }              
         public List<string> path { get; set; } = new List<string>();
         public List<Acs> task { get; set; } = new List<Acs>();
     }

+ 101 - 5
TEAMModelOS/Controllers/Client/AClassONEController.cs

@@ -1,6 +1,8 @@
 using Azure.Cosmos;
 using Azure.Storage.Blobs.Models;
 using DocumentFormat.OpenXml.Drawing.Charts;
+using DocumentFormat.OpenXml.Office2010.Excel;
+using DocumentFormat.OpenXml.Spreadsheet;
 using HTEXLib.COMM.Helpers;
 using Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Http;
@@ -310,9 +312,12 @@ namespace TEAMModelOS.Controllers
         /// <returns></returns>
         [ProducesDefaultResponseType]
         [HttpPost("find-children-activity")]
+#if !DEBUG
+        [Authorize(Roles = "AClassONE")]
+#endif
         public async Task<IActionResult> getActivity(JsonElement request) {
             try {
-                //if (!request.TryGetProperty("studentId", out JsonElement stuId)) return BadRequest();
+                if (!request.TryGetProperty("studentId", out JsonElement stuId)) return BadRequest();
                 if (!request.TryGetProperty("classId", out JsonElement classId)) return BadRequest();
                 if (!request.TryGetProperty("code", out JsonElement code)) return BadRequest();//学校编码
 
@@ -326,11 +331,9 @@ namespace TEAMModelOS.Controllers
                 }             
                 stringBuilder.Append("order by c.createTime desc");
                 //是否需要进行分页查询,默认不分页
-                bool iscontinuation = false;
                 if (request.TryGetProperty("token", out JsonElement token_1))
                 {
                     token = token_1.GetString();
-                    iscontinuation = true;
                 };
                 //默认不指定返回大小
                 int? topcout = null;
@@ -365,14 +368,107 @@ namespace TEAMModelOS.Controllers
                 //        break;
                 //    }
                 //}
-               // arts = arts.Where((x, i) => arts.FindIndex(z => z.id == x.id) == i).ToList();
-                return Ok(new { arts ,token});
+                // arts = arts.Where((x, i) => arts.FindIndex(z => z.id == x.id) == i).ToList();
+                List<(string artId, double count)> attachments = new();
+                foreach (ArtEvaluation art in arts) {
+                    List<StudentArtResult> artResults = new();
+                    string stu = string.Format("{0}{1}{2}", code.GetString(), "-", stuId.GetString());
+                    string sql = $"select value(c) from c where c.artId = '{art.id}' and c.id = '{stu}' and c.pk = 'ArtResult'";
+                    await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "Student").GetItemQueryStreamIterator(
+                    queryText: sql))
+                    {
+                        using var json = await JsonDocument.ParseAsync(item.ContentStream);
+                        if (json.RootElement.TryGetProperty("_count", out JsonElement count) && count.GetUInt16() > 0)
+                        {
+                            foreach (var obj in json.RootElement.GetProperty("Documents").EnumerateArray())
+                            {
+                                artResults.Add(obj.ToObject<StudentArtResult>());
+                            }
+                        }
+                    }
+                    if (artResults.Count > 0)
+                    {
+                        var attCount = artResults[0].results.Where(z => z.files != null).SelectMany(c => c.files).ToList().Count;
+                        attachments.Add((art.id, attCount));
+                    }
+                    else {
+                        attachments.Add((art.id, 0));
+                    }
+                   
+                }
+                var newArts = arts.Select(c => new { 
+                
+                    c.id,
+                    c.name,
+                    c.school,
+                    c.createTime,
+                    c.type,
+                    c.classes,
+                    c.progress,
+                    c.scope,
+                    c.areaId,
+                    c.pId,
+                    c.topic,
+                    c.startTime,
+                    c.endTime,
+                    c.uploadSTime,
+                    c.uploadETime,
+                    c.publish,c.subjects,
+                    c.period,
+                    c.periodType,
+                    c.zymusicstds,c.code,
+                    attachments.Where(z => z.artId.Equals(c.id))?.FirstOrDefault().count
+
+                });
+                return Ok(new { arts = newArts ,token});
             } catch (Exception e) {
                 await _dingDing.SendBotMsg($"OS,{_option.Location},art/find-children-activity()\n{e.Message}\n{e.StackTrace}\n", GroupNames.醍摩豆服務運維群組);
                 return BadRequest("500错误");
             }
         }
 
+
+        [ProducesDefaultResponseType]
+        [HttpPost("find-summary-activity")]
+#if !DEBUG
+        [Authorize(Roles = "AClassONE")]
+#endif
+        public async Task<IActionResult> findSummaryActivity(JsonElement request)
+        {
+            try
+            {
+                if (!request.TryGetProperty("studentId", out JsonElement stuId)) return BadRequest();
+                if (!request.TryGetProperty("artId", out JsonElement artId)) return BadRequest();
+                //if (!request.TryGetProperty("acId", out JsonElement taskId)) return BadRequest();
+                if (!request.TryGetProperty("code", out JsonElement code)) return BadRequest();//学校编码
+
+                var client = _azureCosmos.GetCosmosClient();
+                StudentArtResult result = new();
+                ArtEvaluation art = new(); 
+                string stu = string.Format("{0}{1}{2}", code.GetString(), "-", stuId.GetString());
+                var res = await client.GetContainer(Constant.TEAMModelOS, "Student").ReadItemStreamAsync(stu.ToString(), new PartitionKey($"ArtResult-{artId}"));
+                if (res.Status == 200)
+                {
+                    using var json = await JsonDocument.ParseAsync(res.ContentStream);
+                    result = json.ToObject<StudentArtResult>();                 
+                  
+                }
+                var resArt = await client.GetContainer(Constant.TEAMModelOS, "Common").ReadItemStreamAsync(artId.ToString(), new PartitionKey($"Art-{code}"));
+                if (resArt.Status == 200)
+                {
+                    using var json = await JsonDocument.ParseAsync(res.ContentStream);
+                    art = json.ToObject<ArtEvaluation>();
+
+                }
+                return Ok(new { result,art });
+            }
+            catch (Exception e)
+            {
+                await _dingDing.SendBotMsg($"OS,{_option.Location},art/find-summary-activity()\n{e.Message}\n{e.StackTrace}\n", GroupNames.醍摩豆服務運維群組);
+                return BadRequest("500错误");
+            }
+        }
+
         [ProducesDefaultResponseType]
         [HttpPost("upload-all")]
 #if !DEBUG

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

@@ -1079,7 +1079,7 @@ namespace TEAMModelOS.Controllers.Common
                         x.artId,
                         isAnswer = string.IsNullOrWhiteSpace(x.zyanswer.thirdAnswerId) ? 0 : 1,
                         attachments = x.results.Where(c => c.taskId.Equals(taskId.GetString())).FirstOrDefault().files,
-                        zyUrl.Where(c => c.stuId.Equals(x.studentId)).FirstOrDefault().url
+                        url = x.results.Where(c => c.taskId.Equals(taskId.GetString())).FirstOrDefault().quotaId.Equals("quota_22") ? zyUrl.Where(c => c.stuId.Equals(x.studentId)).FirstOrDefault().url : ""
                     });
                     return Ok(new { works, code = 200 });
                 }