CrazyIter_Bin %!s(int64=3) %!d(string=hai) anos
pai
achega
738b2725bc

+ 9 - 5
TEAMModelOS.SDK/Models/Service/StatisticsService.cs

@@ -436,13 +436,17 @@ namespace TEAMModelOS.SDK
             {
                 studyRecords.Add(item);
             }
-            string rcdsql  = $" where c.id in ({string.Join(",", studies.FindAll(x=>!string.IsNullOrEmpty(x.workId)).Select(o => $"'{o.workId}'"))})";
             List<HomeworkRecord> homeworkRecords = new List<HomeworkRecord>();
-            await foreach (var item in client.GetContainer("TEAMModelOS", "Teacher")
-            .GetItemQueryIterator<HomeworkRecord>(queryText: $"select value(c) from c {rcdsql} ", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"HomeworkRecord-{_tmdid}") }))
-            {
-                homeworkRecords.Add(item);
+            List<Study> workids= studies.FindAll(x => !string.IsNullOrEmpty(x.workId));
+            if (workids.IsNotEmpty()) {
+                string rcdsql = $" where c.id in ({string.Join(",", workids.Select(o => $"'{o.workId}'"))})";
+                await foreach (var item in client.GetContainer("TEAMModelOS", "Teacher")
+                .GetItemQueryIterator<HomeworkRecord>(queryText: $"select value(c) from c {rcdsql} ", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"HomeworkRecord-{_tmdid}") }))
+                {
+                    homeworkRecords.Add(item);
+                }
             }
+           
             List<OfflineRecord> offlines = new List<OfflineRecord>();
             activities.ForEach(item => {
                 Study study = studies.Find(y=>y.id.Equals(item.id));

+ 18 - 1
TEAMModelOS/Controllers/Research/AbilitySubController.cs

@@ -925,15 +925,32 @@ namespace TEAMModelOS.Controllers
                     case "ReadSelfFileRcd":
                         //获取视文件学习记录
                         List<dynamic> files = new List<dynamic>();
+                        List<dynamic> abilityFiles = new List<dynamic>();
                         try {
                             TeacherFile teacherFilercd = await client.GetContainer("TEAMModelOS", "Teacher").ReadItemAsync<TeacherFile>($"{_tmdid}", new PartitionKey($"TeacherFile-{_school}"));
+                            HashSet<string> abilityIds= teacherFilercd.fileRecords.SelectMany(x => x.files).Select(x => x.abilityId).ToHashSet() ;
                             teacherFilercd.fileRecords.ForEach(x => {
                                 var file = x.files.FindAll(y => y.abilityId.Equals($"{_abilityId}"));
                                 if (file.IsNotEmpty()) {
                                     files.Add(new { ability =file,view=x.view,hash=x.hash,done=x.done });
                                 }
                             });
-                            return Ok(new { status, files  });
+
+                            foreach (var abid in abilityIds) {
+                               var record= teacherFilercd.fileRecords.FindAll(x => x.files.Where(y => y.abilityId.Equals(abid)).Count() > 0);
+                                long  view = 0;
+                                List<dynamic> urls = new List<dynamic>();
+                                record.ForEach(x => {
+                                    var file= x.files.FindAll(y => y.abilityId.Equals($"{abid}"));
+                                    if (file.IsNotEmpty())
+                                    {
+                                        view += x.view;
+                                        urls.Add(new { ability = file, view = x.view, hash = x.hash, done = x.done });
+                                    }
+                                });
+                                abilityFiles.Add(new { view, urls , abilityId= abid });
+                            }
+                            return Ok(new { status, files, abilityFiles });
                         } catch (Exception ex) { 
                         
                         }