CrazyIter преди 4 години
родител
ревизия
ac218445a7

+ 8 - 2
TEAMModelOS.SDK/DI/AzureCosmos/AzureCosmosExtensions.cs

@@ -57,8 +57,14 @@ namespace TEAMModelOS.SDK.DI
         public static async Task<T> FindByIdPk<T>(this AzureCosmosFactory azureCosmosFactory, string id, string pk) where T : ID
         {
             AzureCosmosModel container = azureCosmosFactory.GetCosmosModel(typeof(T).Name);
-            ItemResponse<T> response = await container.container.ReadItemAsync<T>(id: id, partitionKey: new PartitionKey(pk));
-            return response.Value;
+            try
+            {
+                ItemResponse<T> response = await container.container.ReadItemAsync<T>(id: id, partitionKey: new PartitionKey(pk));
+                return response.Value;
+            }
+            catch (Exception x){
+                return default(T);
+            }
         }
         public static async Task<List<T>> FindByIds<T>(this AzureCosmosFactory azureCosmosFactory, List<string> ids) where T : ID
         {

+ 1 - 1
TEAMModelOS.Service/Models/TeacherInfo/CoursePlan.cs

@@ -1,4 +1,4 @@
-using Newtonsoft.Json;
+using Newtonsoft.Json;
 using System;
 using System.Collections.Generic;
 using System.ComponentModel.DataAnnotations;

+ 43 - 21
TEAMModelOS/Controllers/School/CourseController.cs

@@ -1,4 +1,4 @@
-using System;
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Threading.Tasks;
@@ -96,42 +96,64 @@ namespace TEAMModelOS.Controllers
         {
             ResponseBuilder builder = ResponseBuilder.custom();
             List<CoursePlan> coursePlans = new List<CoursePlan>();
-            foreach (IGrouping<dynamic, CoursePlanDto> group in request.@params.GroupBy(c => new { c.courseId, c.code })) {
-                List<CoursePlan> datas = await _cosmos.FindByDict<CoursePlan>(new Dictionary<string, object> 
-                { { "id",group.Key.courseId }, { "code", group.Key.code } });
-                var list = request.@params.Where(x => x.code == group.Key.code  && x.courseId == group.Key.courseId).ToList();
-                if (datas.IsNotEmpty())
+            var codeCourses= request.@params.GroupBy(x => x.code+"::"+ x.courseId);
+            foreach (var codeCourse in codeCourses) {
+                string[] val= codeCourse.Key.Split("::");
+                var codeabc =new  { code=val[0], courseId = val[1]} ;
+                var list = codeCourse.ToList();
+                CoursePlan  datas = await _cosmos.FindByIdPk<CoursePlan>(codeabc.courseId,codeabc.code );
+                if (datas!=null)
                 {
-                    CoursePlan data = datas[0];
-                    
-                    foreach (IGrouping<string, CoursePlanDto> groupClass in list.GroupBy(c => c.classroomCode)) {
-                        var listclass = request.@params.Where(x => x.code == group.Key.code &&x.classroomCode==groupClass.Key  && x.courseId == group.Key.courseId).ToList();
+                    CoursePlan data = datas;
+                    var groupClasses = list.GroupBy(x => x.classroomCode);
+                    foreach (var groupClass in groupClasses)
+                    {
+                        var listclass = groupClass.ToList();
                         if (listclass.IsNotEmpty()) {
                             List<CourseTime> courseTimes = new List<CourseTime>();
                             listclass.ForEach(x => {
-                                if (data.classes.Select(m=>m.classroomCode).Contains(x.classroomCode)) {
+                                ///如果不相同则可以继续设置
+                                if (!data.classes.Select(m => m.classroomCode).Contains(x.classroomCode))
+                                {
                                     courseTimes.Add(x.courseTime);
+                                }//如果相同则判断是否在同一个时间段
+                                else {
+                                    data.classes.ForEach(y => {
+                                        if (y.classroomCode == x.classroomCode) {
+                                            //判断当天课时段是否一致 ,如果一致则false,则不能重复添加
+                                            bool flag = true;
+                                            y.courseTimes.ForEach(z => {
+                                                if (z.time == x.courseTime.time && z.day==x.courseTime.day) {
+                                                    flag = false;
+                                                }
+                                            });
+                                            if (flag) {
+                                                courseTimes.Add(x.courseTime);
+                                            }
+                                        }
+                                    });
                                 }
                             });
-                            if (courseTimes.IsNotEmpty()) {
+                            if (courseTimes.IsNotEmpty())
+                            {
                                 data.classes.Add(new CourseClass { classroomCode = groupClass.Key, courseTimes = courseTimes });
                                 coursePlans.Add(data);
                             }
-                            
                         }
                     }
                 }
-                else {
+                else
+                {
 
-                    CoursePlan data = new CoursePlan { 
-                        id = group.Key.courseId, 
-                        code = group.Key.code, 
-                       // courseId = group.Key.courseId ,
-                         
+                    CoursePlan data = new CoursePlan
+                    {
+                        id = codeabc.courseId,
+                        code = codeabc.code,
                     };
-                    foreach (IGrouping<string, CoursePlanDto> groupClass in list.GroupBy(c => c.classroomCode))
+                    var groupClasses = list.GroupBy(x => x.classroomCode);
+                    foreach (var groupClass in groupClasses)
                     {
-                        var listclass = request.@params.Where(x => x.code == group.Key.code && x.classroomCode == groupClass.Key && x.courseId == group.Key.courseId).ToList();
+                        var listclass = groupClass.ToList();
                         if (listclass.IsNotEmpty())
                         {
                             List<CourseTime> courseTimes = new List<CourseTime>();

+ 1 - 1
TEAMModelOS/Properties/launchSettings.json

@@ -19,7 +19,7 @@
     },
     "TEAMModelOS": {
       "commandName": "Project",
-      "launchBrowser": true,
+      "launchBrowser": false,
       //"launchUrl": "login",
       "applicationUrl": "https://localhost:5001;http://localhost:5000",
       "environmentVariables": {