Explorar o código

统计包含必须修 选修的,

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

+ 13 - 4
TEAMModelOS.SDK/Models/Cosmos/Research/TeacherFile.cs

@@ -20,15 +20,24 @@ namespace TEAMModelOS.SDK.Models
         /// </summary>
         public string hash { get; set; }
         /// <summary>
-        /// 花费时间
+        /// 文件大小
         /// </summary>
-        public long cost { get; set; }
         public long size { get; set; }
+        /// <summary>
+        /// 视频的时长
+        /// </summary>
         public long duration { get; set; }
         /// <summary>
+        /// 观看时长
+        /// </summary>
+        public long view { get; set; }
+        /// <summary>
         /// video ,doc,
         /// </summary>
         public string type { get; set; }
+        /// <summary>
+        /// 文件位置
+        /// </summary>
         public List<FileAbility> files { get; set; }= new List<FileAbility> { };
     }
     public class FileAbility { 
@@ -44,11 +53,11 @@ namespace TEAMModelOS.SDK.Models
         /// <summary>
         /// 章节id
         /// </summary>
-        //public string taskId { get; set; }
+        public string taskId { get; set; }
         /// <summary>
         /// 分支节点id
         /// </summary>
-        //public string nodeId { get; set; }
+        public string nodeId { get; set; }
         /// <summary>
         /// 资源节点id
         /// </summary>

+ 46 - 32
TEAMModelOS.SDK/Models/Cosmos/Research/TeacherTrain.cs

@@ -6,6 +6,10 @@ namespace TEAMModelOS.SDK.Models
 {
     public class TeacherTrain : CosmosEntity
     {
+        /// <summary>
+        /// 总学时
+        /// </summary>
+        public int totalTime { get; set; }
         ///id= "tmdid"
         ///code= "TeacherTrain-hbcn"
         /// <summary>
@@ -17,10 +21,7 @@ namespace TEAMModelOS.SDK.Models
         /// </summary>
         public string school { get; set; }
         //code:"TeacherTrain:hbcn-tmdid"
-        /// <summary>
-        /// 总学时
-        /// </summary>
-        public int totalTime { get; set; }
+       
         /// <summary>
         /// 线上观看视频的学时
         /// </summary>
@@ -33,19 +34,20 @@ namespace TEAMModelOS.SDK.Models
         /// 线下研修学时
         /// </summary>
         public int offlineTime { get; set; }
-        /// <summary>
-        /// 认证材料学时
-        /// </summary>
-        public int submitTime { get; set; }
+        
         /// <summary>
         /// 课堂实录学时
         /// </summary>
         public int classTime { get; set; }
+       
         /// <summary>
-        /// 教师能力点情况
+        /// 必修的
         /// </summary>
-        public List<TeacherAility> teacherAilities { get; set; } = new List<TeacherAility>();
-
+        public Currency currency { get; set; }= new Currency();
+        /// <summary>
+        /// 包含选修的
+        /// </summary>
+        public Currency currencyAll { get; set; }= new Currency();
         public List<OfflineRecord> offlineRecords { get; set; } = new List<OfflineRecord>();
         /// <summary>
         /// 教师课堂实录
@@ -56,26 +58,7 @@ namespace TEAMModelOS.SDK.Models
         /// 300字以内的总结
         /// </summary>
         public string summary { get; set; }
-        /// <summary>
-        /// 已学能力点, 是勾选了,还是有观看视频的,还是
-        /// </summary>
-        //public int learnAbility { get; set; }
-        /// <summary>
-        /// 已通过自测的能力点数量
-        /// </summary>
-        public int exerciseAbility { get; set; }
-        /// <summary>
-        /// 需要上传的总数
-        /// </summary>
-        public int uploadTotal { get; set; }
-        /// <summary>
-        /// 完成上传的数量
-        /// </summary>
-        public int uploadDone { get; set; }
-        /// <summary>
-        /// 订阅数量
-        /// </summary>
-        public int subCount { get; set; }
+       
         /// <summary>
         /// 校级问卷参与数
         /// </summary>
@@ -130,7 +113,38 @@ namespace TEAMModelOS.SDK.Models
         /// </summary>
         public HashSet<string>updateProperty{get;set;}
     }
-     
+
+    public class Currency {
+       
+        /// <summary>
+        /// 认证材料学时
+        /// </summary>
+        public int submitTime { get; set; }
+        /// <summary>
+        /// 教师能力点情况
+        /// </summary>
+        public List<TeacherAility> teacherAilities { get; set; } = new List<TeacherAility>();
+        /// <summary>
+        /// 已学能力点, 是勾选了,还是有观看视频的,还是
+        /// </summary>
+        public int learnAbility { get; set; }
+        /// <summary>
+        /// 已通过自测的能力点数量
+        /// </summary>
+        public int exerciseAbility { get; set; }
+        /// <summary>
+        /// 需要上传的总数
+        /// </summary>
+        public int uploadTotal { get; set; }
+        /// <summary>
+        /// 完成上传的数量
+        /// </summary>
+        public int uploadDone { get; set; }
+        /// <summary>
+        /// 订阅数量
+        /// </summary>
+        public int subCount { get; set; }
+    }
     public class TeacherAility {
         /// <summary>
         /// 默认未设置0 必修1 通识2 选修3

+ 81 - 57
TEAMModelOS.SDK/Models/Service/StatisticsService.cs

@@ -106,7 +106,7 @@ namespace TEAMModelOS.SDK
             }
             //每次都统计活动相关的数据。
             train= await DoActivity(train, setting, area, client, _school, _tmdid);
-            train.totalTime = train.onlineTime + train.classTime + train.submitTime + train.offlineTime;
+            train.totalTime = train.onlineTime + train.classTime + train.currency.submitTime + train.offlineTime;
             return train;
         }
         private static async IAsyncEnumerable<TeacherTrain> DoProperty(HashSet<string> updateProperty, AreaSetting setting, Area area, CosmosClient client, TeacherTrain train  )
@@ -352,7 +352,7 @@ namespace TEAMModelOS.SDK
             }
             if (file != null)
             {
-                train.videoTime = file.fileRecords.Where(x => x.type.Equals("video")).Select(y => y.duration).Sum();
+                train.videoTime = file.fileRecords.Where(x => x.type.Equals("video")).Select(y => y.view).Sum();
             }
             train.onlineTime = (int)train.videoTime / setting.lessonMinutes;
             return train;
@@ -383,80 +383,104 @@ namespace TEAMModelOS.SDK
                 }
                
                 if (currency == 1) {
-                    train.uploadTotal += ability.stds.FindAll(x=> x.task.IsNotEmpty()).Select(y=>y.task).Count();
-                    if (item.uploads.IsNotEmpty())
+                    train.currency.subCount += 1;
+                    train.currency.uploadTotal += ability.stds.FindAll(x => x.task.IsNotEmpty()).Select(y => y.task).Count();
+                }
+                train.currencyAll.subCount += 1;
+                train.currencyAll.uploadTotal += ability.stds.FindAll(x => x.task.IsNotEmpty()).Select(y => y.task).Count();
+
+                if (item.uploads.IsNotEmpty())
+                {
+                    if (currency == 1)
                     {
-                        train.uploadDone += item.uploads.Count;
+                        train.currency.uploadDone += item.uploads.Count;
                     }
-                    train.subCount += 1;
-                    if (item.exerciseScore > 0)
-                    {
-                        train.exerciseAbility += 1;
+                    train.currencyAll.uploadDone += item.uploads.Count;
+                }
+               
+
+                if (item.exerciseScore > 0)
+                {
+                    if (currency == 1) {
+                        train.currency.exerciseAbility += 1;
+                        train.currency.learnAbility += item.abilityCount;
                     }
-                    List<TeacherHprecord> hprecords = new List<TeacherHprecord>();
-                    TeacherAility teacherAility = new Models.TeacherAility 
+                    train.currencyAll.exerciseAbility += 1;
+                    train.currencyAll.learnAbility += item.abilityCount;
+                }
+                List<TeacherHprecord> hprecords = new List<TeacherHprecord>();
+                TeacherAility teacherAility = new Models.TeacherAility
+                {
+                    id = ability.id,
+                    currency = currency,
+                    no = ability.no,
+                    dimension = ability.dimension,
+                    zpscore = item.self,
+                    hprecord = hprecords,
+                    uploadHas = item.uploads.Count
+                };
+                if (item.otherScore.IsNotEmpty())
+                {
+                    var schoolScore = item.otherScore.Where(x => x.roleType.Equals("school")).FirstOrDefault();
+                    if (schoolScore != null && schoolScore.score > 0)
                     {
-                        id = ability.id, 
-                        currency = currency, 
-                        no = ability.no, 
-                        dimension = ability.dimension, 
-                        zpscore = item.self, 
-                        hprecord = hprecords,
-                        uploadHas = item.uploads.Count 
-                    };
-                    //train.learnAbility += item.abilityCount;
-                    if (item.otherScore.IsNotEmpty())
+                        teacherAility.xzscore = schoolScore.score;
+
+                    }
+                    var hprecord = item.otherScore.FindAll(x => x.roleType.Equals("member")).Select(y => new TeacherHprecord { tmdid = y.tmdid, tmdname = y.tmdname, score = y.score });
+                    if (hprecord != null)
                     {
-                        var schoolScore = item.otherScore.Where(x => x.roleType.Equals("school")).FirstOrDefault();
-                        if (schoolScore != null && schoolScore.score > 0)
+                        var no = hprecord.Where(x => x.score == 0) != null ? hprecord.Where(x => x.score == 0).Count() : 0;
+                        var hg = hprecord.Where(x => x.score == 1) != null ? hprecord.Where(x => x.score == 1).Count() : 0;
+                        var yx = hprecord.Where(x => x.score == 2) != null ? hprecord.Where(x => x.score == 2).Count() : 0;
+                        if (no == hg && hg == yx && no == 0)
+                        {
+                            teacherAility.hpscore = -1;
+                        }
+                        else if (no == hg && hg == yx && no != 0)
                         {
-                            teacherAility.xzscore = schoolScore.score;
-                          
+                            teacherAility.hpscore = 2;
                         }
-                        var hprecord= item.otherScore.FindAll(x => x.roleType.Equals("member")).Select(y => new TeacherHprecord { tmdid = y.tmdid,tmdname=y.tmdname,score=y.score });
-                        if (hprecord != null) {
-                            var no = hprecord.Where(x => x.score == 0) != null ? hprecord.Where(x => x.score == 0).Count() : 0;
-                            var hg = hprecord.Where(x => x.score == 1) != null ? hprecord.Where(x => x.score == 1).Count() : 0;
-                            var yx = hprecord.Where(x => x.score == 2) != null ? hprecord.Where(x => x.score == 2).Count() : 0;
-                            if (no == hg && hg == yx && no == 0)
+                        else
+                        {
+                            bool ok = false;
+                            List<int> arr = new List<int>() { yx, hg, no };
+                            int max = arr.Max();
+                            if (max == yx && !ok)
                             {
-                                teacherAility.hpscore = -1;
+                                teacherAility.hpscore = 2;
+                                ok = true;
                             }
-                            else if (no == hg && hg == yx && no != 0)
+                            if (max == hg && !ok)
                             {
-                                teacherAility.hpscore = 2;
+                                teacherAility.hpscore = 1;
+                                ok = true;
                             }
-                            else {
-                                bool ok = false;
-                                List<int> arr = new List<int>() { yx,hg,no};
-                                int max =  arr.Max();
-                                if (max == yx && !ok) {
-                                    teacherAility.hpscore = 2;
-                                    ok = true;
-                                }
-                                if (max == hg && !ok)
-                                {
-                                    teacherAility.hpscore = 1;
-                                    ok = true;
-                                }
-                                if (max == no && !ok)
-                                {
-                                    teacherAility.hpscore = 0;
-                                    ok = true;
-                                }
+                            if (max == no && !ok)
+                            {
+                                teacherAility.hpscore = 0;
+                                ok = true;
                             }
-                            teacherAility.hprecord.AddRange(hprecord);
                         }
+                        teacherAility.hprecord.AddRange(hprecord);
                     }
-                    train.teacherAilities.Add(teacherAility);
                 }
+                if (currency == 1)
+                {
+                    train.currency.teacherAilities.Add(teacherAility);
+                }
+                train.currencyAll.teacherAilities.Add(teacherAility);
             }
-            var bhg = train.teacherAilities.FindAll(x => x.xzscore <= 0);
-            if (bhg.IsEmpty()) {
+            var bhg = train.currency.teacherAilities.FindAll(x => x.xzscore <= 0);
+            if (bhg.IsEmpty())
+            {
                 ///要全部合格才能获得学时。
-                train.submitTime = setting.submitTime;
+                train.currency.submitTime = setting.submitTime;
+                train.currencyAll.submitTime = setting.submitTime;
             }
             return train;
         }
+
+         
     }
 }

+ 1 - 0
TEAMModelOS/Controllers/Research/AbilityStatisticsController.cs

@@ -46,6 +46,7 @@ namespace TEAMModelOS.Controllers
         [HttpPost("statistics-teacher")]
         [AuthToken(Roles = "teacher,admin,area")]
         public async Task<IActionResult> StatisticsTeacher(JsonElement request) {
+            //{"tmdid":"1595321354","school":"hbcn"}
             var (userid, _, _, school) = HttpContext.GetAuthTokenInfo();
             if (!HttpContext.Items.TryGetValue("Standard", out object standard)) return BadRequest();
             var client = _azureCosmos.GetCosmosClient();