CrazyIter_Bin há 1 ano atrás
pai
commit
be071567b4

+ 118 - 14
TEAMModelOS.SDK/Models/Service/SchoolService.cs

@@ -169,13 +169,50 @@ namespace TEAMModelOS.SDK
         /// </summary>
         /// <param name="semesterList"></param>
         /// <returns></returns>
-        public static (List<KeyValuePair<int, int>> gradeYear, HashSet<int> years) GetYears(School school, string periodId, IEnumerable<int> grades, long time = 0) {
+        public static (List<KeyValuePair<int, int>> gradeYear, HashSet<int> years) GetYears(School school, string periodId, IEnumerable<int> grades,long timestamp=0, string time = null) {
             var date = DateTimeOffset.UtcNow;
             //2001-09-09 09:46:40
-            if (time > 1000000000000)
+
+            bool hasData = false;
+            if (timestamp > 1000000000)
             {
-                date = DateTimeOffset.FromUnixTimeMilliseconds(time);
+                //毫秒级
+                if (timestamp > 1000000000000)
+                {
+                    date = DateTimeOffset.FromUnixTimeMilliseconds(timestamp);
+                    hasData = true;
+                }
+                //秒级
+                else
+                {
+                    date = DateTimeOffset.FromUnixTimeSeconds(timestamp);
+                    hasData =true;
+                }
             }
+            if (hasData==false)
+            {
+                if (!string.IsNullOrWhiteSpace(time))
+                {
+
+                    if (DateTimeOffset.TryParse(time, out date))
+                    {
+                        if (date.ToUnixTimeMilliseconds()<1514736000000)
+                        {
+                            date = DateTimeOffset.UtcNow;
+                        }
+                    }
+                    else
+                    {
+                        date = DateTimeOffset.UtcNow;
+                    }
+                }
+                else
+                {
+                    date = DateTimeOffset.UtcNow;
+                }
+            }
+
+
             //年级算法
             var period = school.period.Find(x => x.id.Equals(periodId));
           
@@ -224,23 +261,50 @@ namespace TEAMModelOS.SDK
         /// </summary>
         /// <param name="semesterList"></param>
         /// <returns></returns>
-        public static (List<KeyValuePair<int, string>> yearGrade,HashSet<string> grades) GetGrades(School school,string periodId , IEnumerable<int> years,long time =0) {
+        public static (List<KeyValuePair<int, string>> yearGrade,HashSet<string> grades) GetGrades(School school,string periodId , IEnumerable<int> years,long timestamp = 0,string time =null) {
             
             var date = DateTimeOffset.UtcNow;
             //2001-09-09 09:46:40
-            if (time > 1000000000)
+
+            bool hasData = false;
+            if (timestamp > 1000000000)
             {
                 //毫秒级
-                if (time > 1000000000000)
+                if (timestamp > 1000000000000)
                 {
-                    date = DateTimeOffset.FromUnixTimeMilliseconds(time);
+                    date = DateTimeOffset.FromUnixTimeMilliseconds(timestamp);
+                    hasData = true;
                 }
                 //秒级
                 else
                 {
-                    date = DateTimeOffset.FromUnixTimeSeconds(time);
+                    date = DateTimeOffset.FromUnixTimeSeconds(timestamp);
+                    hasData =true;
+                }
+            }
+            if (hasData==false)
+            {
+                if (!string.IsNullOrWhiteSpace(time))
+                {
+
+                    if (DateTimeOffset.TryParse(time, out date))
+                    {
+                        if (date.ToUnixTimeMilliseconds()<1514736000000)
+                        {
+                            date = DateTimeOffset.UtcNow;
+                        }
+                    }
+                    else
+                    {
+                        date = DateTimeOffset.UtcNow;
+                    }
+                }
+                else
+                {
+                    date = DateTimeOffset.UtcNow;
                 }
             }
+
             //年级算法
             var period = school.period.Find(x => x.id.Equals(periodId));
             int? Count = period?.grades?.Count;
@@ -292,24 +356,43 @@ namespace TEAMModelOS.SDK
         {
             //string time = "2023/05-11";
             DateTimeOffset date = DateTimeOffset.Now;
+            bool hasData = false;
             if (timestamp > 1000000000)
             {
                 //毫秒级
                 if (timestamp > 1000000000000)
                 {
                     date = DateTimeOffset.FromUnixTimeMilliseconds(timestamp);
+                    hasData = true;
                 }
                 //秒级
                 else
                 {
                     date = DateTimeOffset.FromUnixTimeSeconds(timestamp);
+                    hasData =true;
                 }
             }
-            if (!(!string.IsNullOrWhiteSpace(time) && DateTimeOffset.TryParse(time, out date)))
+            if (hasData==false)
             {
-                date = DateTimeOffset.UtcNow;
-            }
+                if (!string.IsNullOrWhiteSpace(time))
+                {
 
+                    if (DateTimeOffset.TryParse(time, out date))
+                    {
+                        if (date.ToUnixTimeMilliseconds()<1514736000000) {
+                            date = DateTimeOffset.UtcNow;
+                        }
+                    }
+                    else
+                    {
+                        date = DateTimeOffset.UtcNow;
+                    }
+                }
+                else
+                {
+                    date = DateTimeOffset.UtcNow;
+                }
+            }
 
             int Day = date.Day;
             int Month = date.Month;
@@ -401,21 +484,42 @@ namespace TEAMModelOS.SDK
         public static (Semester currSemester,  int studyYear, DateTimeOffset currSemesterDate, DateTimeOffset date, DateTimeOffset nextSemester) GetSemester(  Period period, long timestamp = 0,  string time =null) {
             //string time = "2023/05-11";
             DateTimeOffset date = default;
+            bool  hasData=false;
             if (timestamp > 1000000000) {
                 //毫秒级
                 if (timestamp > 1000000000000)
                 {
                     date = DateTimeOffset.FromUnixTimeMilliseconds(timestamp);
+                    hasData=true;
                 }
                 //秒级
                 else {
                     date = DateTimeOffset.FromUnixTimeSeconds(timestamp);
+                    hasData=true;
                 }
             }
-            if (!(!string.IsNullOrWhiteSpace(time) && DateTimeOffset.TryParse(time, out date)))
-            {
-               date = DateTimeOffset.UtcNow;
+            if (hasData==false) {
+                if (!string.IsNullOrWhiteSpace(time))
+                {
+
+                    if (DateTimeOffset.TryParse(time, out date))
+                    {
+                        if (date.ToUnixTimeMilliseconds()<1514736000000)
+                        {
+                            date = DateTimeOffset.UtcNow;
+                        }
+                    }
+                    else
+                    {
+                        date = DateTimeOffset.UtcNow;
+                    }
+                }
+                else
+                {
+                    date = DateTimeOffset.UtcNow;
+                }
             }
+           
             //年级算法
             //var period = school.period.Find(x => x.id.Equals(periodId));
             List<KeyValuePair<int, string>> yearGrades = new List<KeyValuePair<int, string>>();

+ 78 - 2
TEAMModelOS/Controllers/Both/GroupListController.cs

@@ -1656,11 +1656,87 @@ namespace TEAMModelOS.Controllers
             string sqlschool = "select value c from c ";
             var resultSchool = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).GetList<School>(sqlschool, "Base");
             List<School> schools = resultSchool.list;
+            List<GroupListSemester> listSemesters= new List<GroupListSemester>();
             foreach (var school in schools) {
-                string sqlclass = $"select value c from c ";
+                string sqlclass = $"select value c from c where c.year<2023 ";
                 var resultClass = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).GetList<School>(sqlclass, $"Class-{school.id}");
+                if (resultClass.list.IsNotEmpty()) {
+                    var data = await GroupListService.GetMemberByListids(_coreAPIHttpService, _azureCosmos.GetCosmosClient(), _dingDing, resultClass.list.Select(z=>z.id).ToList(), school.id);
+                    if (data.groups.IsNotEmpty()) { 
+                        foreach(var group in data.groups) 
+                        {
+                            if(group.members.IsNotEmpty())
+                            {
+                                var period = school.period.Find(z => z.id.Equals(group.periodId));
+                                if (period != null)
+                                {
+                                    {
+                                        //2023-06-01
+                                        var dataSemester = SchoolService.GetSemester(period, 1688140800000);
+                                        string id = $"{dataSemester.studyYear}-{dataSemester.currSemester.id}-{group.id}";
+                                        string code = $"GroupListSemester-{school.id}";
+                                        GroupListSemester groupListSemester = group.ToJsonString().ToObject<GroupListSemester>();
+                                        groupListSemester.id = id;
+                                        groupListSemester.code = code;
+                                        groupListSemester.pk="GroupListSemester";
+                                        groupListSemester.semesterId=dataSemester.currSemester.id;
+                                        groupListSemester.groupListId=group.id;
+                                        groupListSemester.studyYear=dataSemester.studyYear;
+                                        await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).UpsertItemAsync<GroupListSemester>(groupListSemester, new PartitionKey(groupListSemester.code));
+                                        listSemesters.Add(groupListSemester);
+                                    }
+                                    {
+                                        //2022-11-01
+                                        var dataSemester = SchoolService.GetSemester(period, 1667232000000);
+                                        string id = $"{dataSemester.studyYear}-{dataSemester.currSemester.id}-{group.id}";
+                                        string code = $"GroupListSemester-{school.id}";
+                                        GroupListSemester groupListSemester = group.ToJsonString().ToObject<GroupListSemester>();
+                                        groupListSemester.id = id;
+                                        groupListSemester.code = code;
+                                        groupListSemester.pk="GroupListSemester";
+                                        groupListSemester.semesterId=dataSemester.currSemester.id;
+                                        groupListSemester.groupListId=group.id;
+                                        groupListSemester.studyYear=dataSemester.studyYear;
+                                        await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).UpsertItemAsync<GroupListSemester>(groupListSemester, new PartitionKey(groupListSemester.code));
+                                        listSemesters.Add(groupListSemester);
+                                    }
+                                    //{
+                                    //    //2022-06-01
+                                    //    var dataSemester = SchoolService.GetSemester(period, 1654012800000);
+                                    //    string id = $"{dataSemester.studyYear}-{dataSemester.currSemester.id}-{group.id}";
+                                    //    string code = $"GroupListSemester-{school.id}";
+                                    //    GroupListSemester groupListSemester = group.ToJsonString().ToObject<GroupListSemester>();
+                                    //    groupListSemester.id = id;
+                                    //    groupListSemester.code = code;
+                                    //    groupListSemester.pk="GroupListSemester";
+                                    //    groupListSemester.semesterId=dataSemester.currSemester.id;
+                                    //    groupListSemester.groupListId=group.id;
+                                    //    groupListSemester.studyYear=dataSemester.studyYear;
+                                    //    await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).UpsertItemAsync<GroupListSemester>(groupListSemester, new PartitionKey(groupListSemester.code));
+                                    //    listSemesters.Add(groupListSemester);
+                                    //}
+                                    //{
+                                    //    //2021-11-01
+                                    //    var dataSemester = SchoolService.GetSemester(period, 1635696000000);
+                                    //    string id = $"{dataSemester.studyYear}-{dataSemester.currSemester.id}-{group.id}";
+                                    //    string code = $"GroupListSemester-{school.id}";
+                                    //    GroupListSemester groupListSemester = group.ToJsonString().ToObject<GroupListSemester>();
+                                    //    groupListSemester.id = id;
+                                    //    groupListSemester.code = code;
+                                    //    groupListSemester.pk="GroupListSemester";
+                                    //    groupListSemester.semesterId=dataSemester.currSemester.id;
+                                    //    groupListSemester.groupListId=group.id;
+                                    //    groupListSemester.studyYear=dataSemester.studyYear;
+                                    //    await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).UpsertItemAsync<GroupListSemester>(groupListSemester, new PartitionKey(groupListSemester.code));
+                                    //    listSemesters.Add(groupListSemester);
+                                    //}
+                                }
+                            }
+                        }
+                    }
+                }
             }
-            return Ok();
+            return Ok(listSemesters.Count);
         }
 
         /// <

+ 0 - 1
TEAMModelOS/Controllers/School/SchoolController.cs

@@ -2574,6 +2574,5 @@ namespace TEAMModelOS.Controllers
         /// 学期即将结束
         /// </summary>
         public int semesterEnding { get; set; }
-
     }
 }